mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
[X86] Replace some if statements in isel address matching that should never be true with asserts. And move them earlier before we looked through operands that don't change size. NFC
These ifs were ensuring we don't have to handle types larger than 64 bits probably because we use getZExtValue in several places below them. None of the callers of this code pass types larger than 64-bits so we can just assert instead of branching in release code. I've also moved them earlier since we're just looking through operations that don't effect bit width. This is prep work for some refactoring I plan to do to the (and (shl)) handling code. llvm-svn: 358123
This commit is contained in:
parent
5f7163f972
commit
ce0fba0dd6
@ -1690,14 +1690,15 @@ bool X86DAGToDAGISel::matchAddressRecursively(SDValue N, X86ISelAddressMode &AM,
|
||||
// Scale must not be used already.
|
||||
if (AM.IndexReg.getNode() != nullptr || AM.Scale != 1) break;
|
||||
|
||||
// We only handle up to 64-bit values here as those are what matter for
|
||||
// addressing mode optimizations.
|
||||
assert(N.getSimpleValueType().getSizeInBits() <= 64 &&
|
||||
"Unexpected value size!");
|
||||
|
||||
SDValue And = N.getOperand(0);
|
||||
if (And.getOpcode() != ISD::AND) break;
|
||||
SDValue X = And.getOperand(0);
|
||||
|
||||
// We only handle up to 64-bit values here as those are what matter for
|
||||
// addressing mode optimizations.
|
||||
if (X.getSimpleValueType().getSizeInBits() > 64) break;
|
||||
|
||||
// The mask used for the transform is expected to be post-shift, but we
|
||||
// found the shift first so just apply the shift to the mask before passing
|
||||
// it down.
|
||||
@ -1845,14 +1846,15 @@ bool X86DAGToDAGISel::matchAddressRecursively(SDValue N, X86ISelAddressMode &AM,
|
||||
// Scale must not be used already.
|
||||
if (AM.IndexReg.getNode() != nullptr || AM.Scale != 1) break;
|
||||
|
||||
// We only handle up to 64-bit values here as those are what matter for
|
||||
// addressing mode optimizations.
|
||||
assert(N.getSimpleValueType().getSizeInBits() <= 64 &&
|
||||
"Unexpected value size!");
|
||||
|
||||
SDValue Shift = N.getOperand(0);
|
||||
if (Shift.getOpcode() != ISD::SRL && Shift.getOpcode() != ISD::SHL) break;
|
||||
SDValue X = Shift.getOperand(0);
|
||||
|
||||
// We only handle up to 64-bit values here as those are what matter for
|
||||
// addressing mode optimizations.
|
||||
if (X.getSimpleValueType().getSizeInBits() > 64) break;
|
||||
|
||||
if (!isa<ConstantSDNode>(N.getOperand(1)))
|
||||
break;
|
||||
uint64_t Mask = N.getConstantOperandVal(1);
|
||||
|
Loading…
Reference in New Issue
Block a user