mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Fix type of shuffle resulted from shuffle merge.
This fix resolves PR19730. llvm-svn: 208666
This commit is contained in:
parent
f1a7be20bf
commit
978a422aed
@ -1114,12 +1114,10 @@ Instruction *InstCombiner::visitShuffleVectorInst(ShuffleVectorInst &SVI) {
|
||||
|
||||
// If the result mask is an identity, replace uses of this instruction with
|
||||
// corresponding argument.
|
||||
if (VWidth == LHSWidth) {
|
||||
bool isLHSID, isRHSID;
|
||||
RecognizeIdentityMask(newMask, isLHSID, isRHSID);
|
||||
if (isLHSID) return ReplaceInstUsesWith(SVI, newLHS);
|
||||
if (isRHSID) return ReplaceInstUsesWith(SVI, newRHS);
|
||||
}
|
||||
bool isLHSID, isRHSID;
|
||||
RecognizeIdentityMask(newMask, isLHSID, isRHSID);
|
||||
if (isLHSID && VWidth == LHSOp0Width) return ReplaceInstUsesWith(SVI, newLHS);
|
||||
if (isRHSID && VWidth == RHSOp0Width) return ReplaceInstUsesWith(SVI, newRHS);
|
||||
|
||||
return MadeChange ? &SVI : nullptr;
|
||||
}
|
||||
|
@ -386,3 +386,11 @@ define <4 x i16> @pr19717a(<8 x i16> %in0, <8 x i16> %in1) {
|
||||
%mul = mul <4 x i16> %shuffle, %shuffle1
|
||||
ret <4 x i16> %mul
|
||||
}
|
||||
|
||||
define <8 x i8> @pr19730(<16 x i8> %in0) {
|
||||
; CHECK-LABEL: @pr19730(
|
||||
; CHECK: shufflevector
|
||||
%shuffle = shufflevector <16 x i8> %in0, <16 x i8> undef, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
|
||||
%shuffle1 = shufflevector <8 x i8> %shuffle, <8 x i8> undef, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
|
||||
ret <8 x i8> %shuffle1
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user