[llvm-bugs] [Bug 29124] New: [InstCombine] reduce insertelements of constants to shufflevector
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Aug 24 10:53:02 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=29124
Bug ID: 29124
Summary: [InstCombine] reduce insertelements of constants to
shufflevector
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P
Component: Scalar Optimizations
Assignee: unassignedbugs at nondot.org
Reporter: spatel+llvm at rotateright.com
CC: llvm-bugs at lists.llvm.org
Classification: Unclassified
If we're inserting more than one constant into a vector:
define <4 x float> @foo(<4 x float> %x) {
%ins1 = insertelement <4 x float> %x, float 1.0, i32 1
%ins2 = insertelement <4 x float> %ins1, float 2.0, i32 2
ret <4 x float> %ins2
}
InstCombine could reduce that to a shufflevector:
define <4 x float> @goo(<4 x float> %x) {
%shuf = shufflevector <4 x float> %x, <4 x float> <float undef, float 1.0,
float 2.0, float undef>, <4 x i32><i32 0, i32 5, i32 6, i32 3>
ret <4 x float> %shuf
}
This can improve codegen (possibly a separate bug that the backend doesn't do
this too?):
$ ./llc -o - min.ll -mattr=avx
LCPI0_0:
.long 1065353216 ## float 1
LCPI0_1:
.long 1073741824 ## float 2
## BB#0:
vinsertps $16, LCPI0_0(%rip), %xmm0, %xmm0
vinsertps $32, LCPI0_1(%rip), %xmm0, %xmm0
retq
LCPI1_0:
.space 4
.long 1065353216 ## float 1
.long 1073741824 ## float 2
.space 4
## BB#0:
vblendps $6, LCPI1_0(%rip), %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/20160824/f2c5caf8/attachment.html>
More information about the llvm-bugs
mailing list