summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/Module.cpp
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-08-16 00:29:44 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-08-16 00:29:44 +0000
commitb23bad11e792210b1c8d494941dbd85ca05bd943 (patch)
tree88798491c649101abbedceb80ee6783855bf49fb /lldb/source/Core/Module.cpp
parentac3997eb52022555af90d9be49e7e7fa4afa2672 (diff)
downloadbcm5719-llvm-b23bad11e792210b1c8d494941dbd85ca05bd943.tar.gz
bcm5719-llvm-b23bad11e792210b1c8d494941dbd85ca05bd943.zip
[DAGCombiner] Improve the folding of target independet shuffles to Undef.
When combining a pair of shuffle nodes, check if the combined shuffle mask is trivially Undef. In case, immediately fold that pair of shuffles to Undef. The lack of checks for undef masks was the root-cause of a poor-codegen bug in the dag combiner. Example: %1 = shufflevector <4 x i32> %A, <4 x i32> %B, <4 x i32> <i32 4, i32 1, i32 1, i32 6> %2 = shufflevector <4 x i32> %1, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 6> %3 = shufflevector <4 x i32> %2, <4 x i32> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 3> Before this patch, on x86 (with -mcpu=corei7) we failed to fold the entire sequence to Undef value and therefore we generated: shufps $-123, %xmm1, $xmm0 pshufd $-46, %xmm0, %xmm0 With this patch, the entire shuffle sequence is folded to Undef and no shuffles are generated in the output assembly. Added new test cases to test 'combine-vec-shuffle-5.ll'. llvm-svn: 215797
Diffstat (limited to 'lldb/source/Core/Module.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud