Hi Jakob,
Ooops, I had missed your reply, thank you!
Replicating the bot's configuration didn't help, however I found what
the problem was yesterday and it appears to be a bug in the x64
backend. If anyone can confirm it that would be great as I'm not
familiar with x64.
The test was crashing is generated code, when performing a Simd128 slot
swap. In this case we emit the following:
~~~
// Use the XOR trick to swap without a temporary. The xorps may read
// from or write to an unaligned address, causing a slowdown, but swaps
// between slots should be rare.
__ Movups(kScratchDoubleReg, src);
__ Xorps(kScratchDoubleReg, dst); // scratch contains src ^ dst.
__ Movups(src, kScratchDoubleReg);
__ Xorps(kScratchDoubleReg, dst); // scratch contains src.
__ Movups(dst, kScratchDoubleReg);
__ Xorps(kScratchDoubleReg, src); // scratch contains dst.
__ Movups(src, kScratchDoubleReg);
~~~
However, if one disables AVX (--no-enable-avx), the above causes a
crash. The reason seems to be that if AVX is not supported, we fallback
to using the SSE "xorps" instruction instead of "vxorps". And the former
doesn't allow for unaligned addresses:
~~~
void TurboAssembler::Xorps(XMMRegister dst, XMMRegister src) {
if (CpuFeatures::IsSupported(AVX)) {
CpuFeatureScope scope(this, AVX);
vxorps(dst, dst, src);
} else {
xorps(dst, src);
}
}
~~~
Can anybody confirm this?
Thanks,
Pierre
>> email to
v8-users+u...@googlegroups.com.
> --