[llvm-bugs] [Bug 29162] New: LLVM 3.8.1 compiles VMOVSD on Intel Skylake using EVEX
via llvm-bugs
llvm-bugs at lists.llvm.org
Sun Aug 28 03:21:44 PDT 2016
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: unassignedbugs at nondot.org
Reporter: atlaste at yahoo.com
CC: llvm-bugs at lists.llvm.org
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160828/5d7b2381/attachment.html>
More information about the llvm-bugs
mailing list