summaryrefslogtreecommitdiff
path: root/test/tools/llvm-readobj/relocations.test
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-04-11 15:10:09 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-04-11 15:10:09 +0000
commitc37cb66e6ee256bcb3ba138383e4cb9aab55ddb9 (patch)
treeca0f4e97518092abe898964097539a8ccc364b06 /test/tools/llvm-readobj/relocations.test
parent765afbc4ca8a936fe563d1970d6bde43bdfc2528 (diff)
downloadllvm-c37cb66e6ee256bcb3ba138383e4cb9aab55ddb9.tar.gz
llvm-c37cb66e6ee256bcb3ba138383e4cb9aab55ddb9.tar.bz2
llvm-c37cb66e6ee256bcb3ba138383e4cb9aab55ddb9.tar.xz
Fix for wrong instcombine on vector insert/extract
When trying to collapse sequences of insertelement/extractelement instructions into single shuffle instructions, there is one specific case where the Instruction Combiner wrongly updates the resulting Mask of shuffle indexes. The problem is in function CollectShuffleElments. If we have a sequence of insert/extract element instructions like the one below: %tmp1 = extractelement <4 x float> %LHS, i32 0 %tmp2 = insertelement <4 x float> %RHS, float %tmp1, i32 1 %tmp3 = extractelement <4 x float> %RHS, i32 2 %tmp4 = insertelement <4 x float> %tmp2, float %tmp3, i32 3 Where: . %RHS will have a mask of [4,5,6,7] . %LHS will have a mask of [0,1,2,3] The Mask of shuffle indexes is wrongly computed to [4,1,6,7] instead of [4,0,6,7]. When analyzing %tmp2 in order to compute the Mask for the resulting shuffle instruction, the algorithm forgets to update the mask index at position 1 with the index associated to the element extracted from %LHS by instruction %tmp1. Patch by Andrea DiBiagio! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179291 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tools/llvm-readobj/relocations.test')
0 files changed, 0 insertions, 0 deletions