[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