[PATCH] Reorder shuffle and binary operation.
Serge Pavlov
sepavloff at gmail.com
Thu May 1 11:29:30 PDT 2014
Updated patch, added new pattern.
With this patch instcombiner tries making transformation like:
BinOp(shuffle(v1), const1) -> shuffle(BinOp(V1, const2))
This reordering allows removal of extra shuffles, for instance the code:
%t1 = shufflevector <4 x i32> %v, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%t2 = mul <4 x i32> %t1, %t1
%r = shufflevector <4 x i32> %t2, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
transforms to:
%1 = mul <4 x i32> %v, %v
http://reviews.llvm.org/D3525
Files:
lib/Transforms/InstCombine/InstCombine.h
lib/Transforms/InstCombine/InstCombineAddSub.cpp
lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
lib/Transforms/InstCombine/InstCombineShifts.cpp
lib/Transforms/InstCombine/InstCombineVectorOps.cpp
lib/Transforms/InstCombine/InstructionCombining.cpp
test/Transforms/InstCombine/vec_shuffle.ll
test/Transforms/LoopVectorize/store-shuffle-bug.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3525.9016.patch
Type: text/x-patch
Size: 20925 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140501/02a32f93/attachment.bin>
More information about the llvm-commits
mailing list