[LLVMbugs] [Bug 11125] New: [AVX] incorrect code generated with AVX target (vxorps related?)

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Oct 13 13:10:26 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=11125

           Summary: [AVX] incorrect code generated with AVX target (vxorps
                    related?)
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: matt at pharr.org
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=7448)
 --> (http://llvm.org/bugs/attachment.cgi?id=7448)
bitcode

Attached is a test case that shows an AVX code generation regression. 
Unfortunately the test case is reasonably complex; attempts to simplify it down
further have led to the bug not manifesting itself any more.  (The good news is
that I have identified the checkin that introduced the regression--see below.)

To run the test case, do:

% llc -mattr=+avx noise.ll -filetype=obj -o noise.o && clang -m64 -O3 -Wall -o
noise noise.cpp noise.o && ./noise 
Mismatch on result 1: got 0.131250, should be 0.081250
Mismatch on result 2: got -0.075000, should be -0.175000
Mismatch on result 3: got -0.218750, should be -0.368750
Mismatch on result 4: got -0.300000, should be -0.500000
Mismatch on result 5: got -0.318750, should be -0.568750
Mismatch on result 6: got -0.275000, should be -0.575000
Mismatch on result 7: got -0.168750, should be -0.518750
%

If one compiles using the default SSE target, it runs without error:
% llc noise.ll -filetype=obj -o noise.o && clang -m64 -O3 -Wall -o noise
noise.cpp noise.o && ./noise
%             

I have done archeology in recent changes, and this checkin seems to have
introduced the regression.  I've also attached the assembly generated by the
version of LLVM immediately before that checkin (good.s) and the assembly
generated with that checkin (bad.s).  The changes are relatively minimal,
mostly some new vxorps instructions.  (I presume that these are part of the
problem, but I haven't worked through that yet.)

Author: Jakob Stoklund Olesen <stoklund at 2pi.dk>
Date:   Thu Sep 29 05:10:54 2011 +0000

    Expand the x86 V_SET0* pseudos right after register allocation.

    This also makes it possible to reduce the number of pseudo instructions
    and get rid of the encoding information.

    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140776
91177308-0d34-0410-b5e6-96231b3b80d8

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list