[llvm-bugs] [Bug 27924] New: [x86, SSE] failed to eliminate unused instruction
via llvm-bugs
llvm-bugs at lists.llvm.org
Sat May 28 12:46:25 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=27924
Bug ID: 27924
Summary: [x86, SSE] failed to eliminate unused instruction
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: spatel+llvm at rotateright.com
CC: llvm-bugs at lists.llvm.org
Classification: Unclassified
declare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) #3
define <4 x i32> @maxmax(<4 x i32> %a, <4 x i32> %b) {
%cmp = icmp sgt <4 x i32> %a, %b
%max = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
%sse_max = tail call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a, <4 x i32>
%b)
%truth = icmp eq <4 x i32> %max, %sse_max
%ret = sext <4 x i1> %truth to <4 x i32>
ret <4 x i32> %ret
}
We match the compare+select as an 'smax', and we lower the SSE intrinsic to the
same 'smax' node, so we should know that the final comparison is all ones, but
the max instruction remains:
$ ./llc -o - smaxnode.ll -mattr=avx
...
vpmaxsd %xmm1, %xmm0, %xmm0
vpcmpeqd %xmm0, %xmm0, %xmm0
retq
--
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/20160528/19a584f8/attachment.html>
More information about the llvm-bugs
mailing list