mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[DAGCombiner] Updated bswap byte offset variable names to be more descriptive. NFC
As discussed on D32039, use MaskByteOffset to describe the variable and also pull out repeated getOpcode() calls. llvm-svn: 301193
This commit is contained in:
parent
837e80758c
commit
f059a49a99
@ -3878,27 +3878,29 @@ static bool isBSwapHWordElement(SDValue N, MutableArrayRef<SDNode *> Parts) {
|
||||
if (Opc != ISD::AND && Opc != ISD::SHL && Opc != ISD::SRL)
|
||||
return false;
|
||||
|
||||
SDValue N0 = N.getOperand(0);
|
||||
unsigned Opc0 = N0.getOpcode();
|
||||
|
||||
ConstantSDNode *N1C = dyn_cast<ConstantSDNode>(N.getOperand(1));
|
||||
if (!N1C)
|
||||
return false;
|
||||
|
||||
unsigned Num;
|
||||
unsigned MaskByteOffset;
|
||||
switch (N1C->getZExtValue()) {
|
||||
default:
|
||||
return false;
|
||||
case 0xFF: Num = 0; break;
|
||||
case 0xFF00: Num = 1; break;
|
||||
case 0xFF0000: Num = 2; break;
|
||||
case 0xFF000000: Num = 3; break;
|
||||
case 0xFF: MaskByteOffset = 0; break;
|
||||
case 0xFF00: MaskByteOffset = 1; break;
|
||||
case 0xFF0000: MaskByteOffset = 2; break;
|
||||
case 0xFF000000: MaskByteOffset = 3; break;
|
||||
}
|
||||
|
||||
// Look for (x & 0xff) << 8 as well as ((x << 8) & 0xff00).
|
||||
SDValue N0 = N.getOperand(0);
|
||||
if (Opc == ISD::AND) {
|
||||
if (Num == 0 || Num == 2) {
|
||||
if (MaskByteOffset == 0 || MaskByteOffset == 2) {
|
||||
// (x >> 8) & 0xff
|
||||
// (x >> 8) & 0xff0000
|
||||
if (N0.getOpcode() != ISD::SRL)
|
||||
if (Opc0 != ISD::SRL)
|
||||
return false;
|
||||
ConstantSDNode *C = dyn_cast<ConstantSDNode>(N0.getOperand(1));
|
||||
if (!C || C->getZExtValue() != 8)
|
||||
@ -3906,7 +3908,7 @@ static bool isBSwapHWordElement(SDValue N, MutableArrayRef<SDNode *> Parts) {
|
||||
} else {
|
||||
// (x << 8) & 0xff00
|
||||
// (x << 8) & 0xff000000
|
||||
if (N0.getOpcode() != ISD::SHL)
|
||||
if (Opc0 != ISD::SHL)
|
||||
return false;
|
||||
ConstantSDNode *C = dyn_cast<ConstantSDNode>(N0.getOperand(1));
|
||||
if (!C || C->getZExtValue() != 8)
|
||||
@ -3915,7 +3917,7 @@ static bool isBSwapHWordElement(SDValue N, MutableArrayRef<SDNode *> Parts) {
|
||||
} else if (Opc == ISD::SHL) {
|
||||
// (x & 0xff) << 8
|
||||
// (x & 0xff0000) << 8
|
||||
if (Num != 0 && Num != 2)
|
||||
if (MaskByteOffset != 0 && MaskByteOffset != 2)
|
||||
return false;
|
||||
ConstantSDNode *C = dyn_cast<ConstantSDNode>(N.getOperand(1));
|
||||
if (!C || C->getZExtValue() != 8)
|
||||
@ -3923,17 +3925,17 @@ static bool isBSwapHWordElement(SDValue N, MutableArrayRef<SDNode *> Parts) {
|
||||
} else { // Opc == ISD::SRL
|
||||
// (x & 0xff00) >> 8
|
||||
// (x & 0xff000000) >> 8
|
||||
if (Num != 1 && Num != 3)
|
||||
if (MaskByteOffset != 1 && MaskByteOffset != 3)
|
||||
return false;
|
||||
ConstantSDNode *C = dyn_cast<ConstantSDNode>(N.getOperand(1));
|
||||
if (!C || C->getZExtValue() != 8)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Parts[Num])
|
||||
if (Parts[MaskByteOffset])
|
||||
return false;
|
||||
|
||||
Parts[Num] = N0.getOperand(0).getNode();
|
||||
Parts[MaskByteOffset] = N0.getOperand(0).getNode();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user