[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