https://llvm.org/bugs/show_bug.cgi?id=29162
Bug ID: 29162
Summary: LLVM 3.8.1 compiles VMOVSD on Intel Skylake using EVEX
Product: new-bugs
Version: 3.8
Hardware: PC
OS: other
Status: NEW
Severity: release blocker
Priority: P
Component: new bugs
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Classification: Unclassified
I've written most of the details down here:
http://stackoverflow.com/questions/39149605/whats-the-proper-way-of-calling-a-win32-64-function-from-llvm/39190281
To cut to the conclusion, here's what's basically happening: The moment you
compile a program that uses floating point (f.ex. call an external method and
load a floating point constant) using the MCJIT on an Intel Skylake, it will
generate a VMOVSD instruction (which is correct).
VMOVSD is actually an AVX instruction, and encoded with VEX, will give:
C5 FB 10 08 vmovsd xmm1,qword ptr [rax]
On Intel Skylake, the emitter incorrectly assumes that EVEX is supported,
generating the corresponding EVEX encoding:
62 f1 FF 08 ... vmovsd xmm1,qword ptr [rax]
However, EVEX won't be supported until Skylake Purley in 2017, so this will
crash the program.
If you fix the issue, please let me know what code is affected.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs