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: unassignedb...@nondot.org Reporter: spatel+l...@rotateright.com CC: llvm-bugs@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.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs