mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
[x86] Make computing the zeroable elements slightly more powerful, at
least in theory. I don't actually have a test case that benefits from this, but theoretically, it could come up, and I don't want to try to think about whether this is the culprit or something else is, so I'd rather just make this code powerful. =/ Makes me sad that I can't really test it though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229298 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7cc2dbbdb1
commit
27acd682e0
@ -7735,6 +7735,11 @@ static SmallBitVector computeZeroableShuffleElements(ArrayRef<int> Mask,
|
||||
SDValue V1, SDValue V2) {
|
||||
SmallBitVector Zeroable(Mask.size(), false);
|
||||
|
||||
while (V1.getOpcode() == ISD::BITCAST)
|
||||
V1 = V1->getOperand(0);
|
||||
while (V2.getOpcode() == ISD::BITCAST)
|
||||
V2 = V2->getOperand(0);
|
||||
|
||||
bool V1IsZero = ISD::isBuildVectorAllZeros(V1.getNode());
|
||||
bool V2IsZero = ISD::isBuildVectorAllZeros(V2.getNode());
|
||||
|
||||
@ -7746,10 +7751,10 @@ static SmallBitVector computeZeroableShuffleElements(ArrayRef<int> Mask,
|
||||
continue;
|
||||
}
|
||||
|
||||
// If this is an index into a build_vector node, dig out the input value and
|
||||
// use it.
|
||||
// If this is an index into a build_vector node (which has the same number
|
||||
// of elements), dig out the input value and use it.
|
||||
SDValue V = M < Size ? V1 : V2;
|
||||
if (V.getOpcode() != ISD::BUILD_VECTOR)
|
||||
if (V.getOpcode() != ISD::BUILD_VECTOR || Size != (int)V.getNumOperands())
|
||||
continue;
|
||||
|
||||
SDValue Input = V.getOperand(M % Size);
|
||||
|
Loading…
Reference in New Issue
Block a user