[llvm-bugs] [Bug 42025] New: [X86][AVX] v8i32 SETCC promotion causes unnecessary truncation/extensions
via llvm-bugs
llvm-bugs at lists.llvm.org
Sun May 26 06:34:08 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=42025
Bug ID: 42025
Summary: [X86][AVX] v8i32 SETCC promotion causes unnecessary
truncation/extensions
Product: libraries
Version: trunk
Hardware: PC
OS: Windows NT
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: llvm-dev at redking.me.uk
CC: craig.topper at gmail.com, lebedev.ri at gmail.com,
llvm-bugs at lists.llvm.org, llvm-dev at redking.me.uk,
nikita.ppv at gmail.com, spatel+llvm at rotateright.com
define i8 @v8i32_or_and(<8 x i32> %a, <8 x i32> %b, <8 x i32> %c, <8 x i32> %d,
<8 x i32> %e, <8 x i32> %f) {
%x0 = icmp sgt <8 x i32> %a, %b
%x1 = icmp slt <8 x i32> %c, %d
%x2 = icmp eq <8 x i32> %e, %f
%y = or <8 x i1> %x0, %x1
%z = and <8 x i1> %y, %x2
%res = bitcast <8 x i1> %z to i8
ret i8 %res
}
https://godbolt.org/z/Pn8KgQ
AVX2:
v8i32_or_and: # @v8i32_or_and
vpcmpgtd %ymm1, %ymm0, %ymm0
vpcmpgtd %ymm2, %ymm3, %ymm1
vpor %ymm1, %ymm0, %ymm0
vpcmpeqd %ymm5, %ymm4, %ymm1
vextracti128 $1, %ymm1, %xmm2
vpackssdw %xmm2, %xmm1, %xmm1
vextracti128 $1, %ymm0, %xmm2
vpackssdw %xmm2, %xmm0, %xmm0
vpand %xmm1, %xmm0, %xmm0
vpacksswb %xmm0, %xmm0, %xmm0
vpmovmskb %xmm0, %eax
vzeroupper
retq
But should simplify to:
v8i32_or_and: # @v8i32_or_and
vpcmpgtd %ymm1, %ymm0, %ymm0
vpcmpgtd %ymm2, %ymm3, %ymm1
vpor %ymm1, %ymm0, %ymm0
vpcmpeqd %ymm5, %ymm4, %ymm1
vpand %ymm0, %ymm0, %ymm0
vmovmskps %ymm0, %eax
vzeroupper
retq
AVX1 is trickier but should be able to simplify in a similar manner (but via
xmm PCMPGT/PCMPEQ ops):
v8i32_or_and: # @v8i32_or_and
vpcmpgtd %xmm1, %xmm0, %xmm6
vextractf128 $1, %ymm1, %xmm1
vextractf128 $1, %ymm0, %xmm0
vpcmpgtd %xmm1, %xmm0, %xmm0
vpcmpgtd %xmm2, %xmm3, %xmm1
vextractf128 $1, %ymm2, %xmm2
vextractf128 $1, %ymm3, %xmm3
vpcmpgtd %xmm2, %xmm3, %xmm2
vpor %xmm1, %xmm6, %xmm1
vpcmpeqd %xmm5, %xmm4, %xmm3
vpor %xmm2, %xmm0, %xmm0
vextractf128 $1, %ymm4, %xmm2
vpackssdw %xmm0, %xmm1, %xmm0
vextractf128 $1, %ymm5, %xmm1
vpcmpeqd %xmm1, %xmm2, %xmm1
vpackssdw %xmm1, %xmm3, %xmm1
vpand %xmm1, %xmm0, %xmm0
vpacksswb %xmm0, %xmm0, %xmm0
vpmovmskb %xmm0, %eax
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/20190526/3249e323/attachment-0001.html>
More information about the llvm-bugs
mailing list