mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Only access both operands of an INSERT_SUBVECTOR if it is an INSERT_SUBVECTOR.
Fixes PR10527. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136853 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7ce057983e
commit
456a925c61
@ -12298,16 +12298,17 @@ static bool CanFoldXORWithAllOnes(const SDNode *N) {
|
||||
|
||||
// Sometimes the operand may come from a insert_subvector building a 256-bit
|
||||
// allones vector
|
||||
SDValue V1 = N->getOperand(0);
|
||||
SDValue V2 = N->getOperand(1);
|
||||
|
||||
if (VT.getSizeInBits() == 256 &&
|
||||
N->getOpcode() == ISD::INSERT_SUBVECTOR &&
|
||||
V1.getOpcode() == ISD::INSERT_SUBVECTOR &&
|
||||
V1.getOperand(0).getOpcode() == ISD::UNDEF &&
|
||||
ISD::isBuildVectorAllOnes(V1.getOperand(1).getNode()) &&
|
||||
ISD::isBuildVectorAllOnes(V2.getNode()))
|
||||
return true;
|
||||
N->getOpcode() == ISD::INSERT_SUBVECTOR) {
|
||||
SDValue V1 = N->getOperand(0);
|
||||
SDValue V2 = N->getOperand(1);
|
||||
|
||||
if (V1.getOpcode() == ISD::INSERT_SUBVECTOR &&
|
||||
V1.getOperand(0).getOpcode() == ISD::UNDEF &&
|
||||
ISD::isBuildVectorAllOnes(V1.getOperand(1).getNode()) &&
|
||||
ISD::isBuildVectorAllOnes(V2.getNode()))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -341,3 +341,26 @@ CF77:
|
||||
br label %CF77
|
||||
}
|
||||
|
||||
; PR10527
|
||||
define void @pr10527() nounwind uwtable {
|
||||
entry:
|
||||
br label %"4"
|
||||
|
||||
"3":
|
||||
%0 = load <2 x i32>* null, align 8
|
||||
%1 = xor <2 x i32> zeroinitializer, %0
|
||||
%2 = and <2 x i32> %1, %6
|
||||
%3 = or <2 x i32> undef, %2
|
||||
%4 = and <2 x i32> %3, undef
|
||||
store <2 x i32> %4, <2 x i32>* undef
|
||||
%5 = load <2 x i32>* undef, align 1
|
||||
br label %"4"
|
||||
|
||||
"4":
|
||||
%6 = phi <2 x i32> [ %5, %"3" ], [ zeroinitializer, %entry ]
|
||||
%7 = icmp ult i32 undef, undef
|
||||
br i1 %7, label %"3", label %"5"
|
||||
|
||||
"5":
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user