mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Fix type of shuffle obtained from reordering with binary operation
In transformation: BinOp(shuffle(v1,undef), shuffle(v2,undef)) -> shuffle(BinOp(v1, v2),undef) type of the undef argument must be same as type of BinOp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208531 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1e04540f6
commit
b1a6b91a1e
@ -1125,7 +1125,7 @@ Value *InstCombiner::SimplifyVectorOp(BinaryOperator &Inst) {
|
||||
BinaryOperator *NewBO = CreateBinOpAsGiven(Inst, LShuf->getOperand(0),
|
||||
RShuf->getOperand(0), Builder);
|
||||
Value *Res = Builder->CreateShuffleVector(NewBO,
|
||||
UndefValue::get(Inst.getType()), LShuf->getMask());
|
||||
UndefValue::get(NewBO->getType()), LShuf->getMask());
|
||||
return Res;
|
||||
}
|
||||
}
|
||||
|
@ -375,3 +375,14 @@ define <2 x i32> @pr19717(<4 x i32> %in0, <2 x i32> %in1) {
|
||||
%mul = mul <2 x i32> %shuffle, %shuffle4
|
||||
ret <2 x i32> %mul
|
||||
}
|
||||
|
||||
define <4 x i16> @pr19717a(<8 x i16> %in0, <8 x i16> %in1) {
|
||||
; CHECK-LABEL: @pr19717a(
|
||||
; CHECK: [[VAR1:%[a-zA-Z0-9.]+]] = mul <8 x i16> %in0, %in1
|
||||
; CHECK: [[VAR2:%[a-zA-Z0-9.]+]] = shufflevector <8 x i16> [[VAR1]], <8 x i16> undef, <4 x i32> <i32 5, i32 5, i32 5, i32 5>
|
||||
; CHECK: ret <4 x i16> [[VAR2]]
|
||||
%shuffle = shufflevector <8 x i16> %in0, <8 x i16> %in0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>
|
||||
%shuffle1 = shufflevector <8 x i16> %in1, <8 x i16> %in1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>
|
||||
%mul = mul <4 x i16> %shuffle, %shuffle1
|
||||
ret <4 x i16> %mul
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user