1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

X86: Simplify X86ISD::Wrapper operand checks. NFCI.

We only ever create TargetConstantPool, TargetJumpTable, TargetExternalSymbol,
TargetGlobalAddress, TargetGlobalTLSAddress, MCSymbol and TargetBlockAddress
nodes as operands of X86ISD::Wrapper nodes, so we can remove one check and
invert the other.

Also update the documentation comment for X86ISD::Wrapper.

Differential Revision: https://reviews.llvm.org/D26731

llvm-svn: 287160
This commit is contained in:
Peter Collingbourne 2016-11-16 21:48:59 +00:00
parent e106f9e78a
commit b5e975bf79
2 changed files with 8 additions and 18 deletions

View File

@ -1564,12 +1564,9 @@ bool X86DAGToDAGISel::selectMOV64Imm32(SDValue N, SDValue &Imm) {
"Unexpected node type for MOV32ri64");
N = N.getOperand(0);
if (N->getOpcode() != ISD::TargetConstantPool &&
N->getOpcode() != ISD::TargetJumpTable &&
N->getOpcode() != ISD::TargetGlobalAddress &&
N->getOpcode() != ISD::TargetExternalSymbol &&
N->getOpcode() != ISD::MCSymbol &&
N->getOpcode() != ISD::TargetBlockAddress)
// At least GNU as does not accept 'movl' for TPOFF relocations.
// FIXME: We could use 'movl' when we know we are targeting MC.
if (N->getOpcode() == ISD::TargetGlobalTLSAddress)
return false;
Imm = N;
@ -1715,16 +1712,8 @@ bool X86DAGToDAGISel::selectRelocImm(SDValue N, SDValue &Op) {
if (N.getOpcode() != X86ISD::Wrapper)
return false;
unsigned Opc = N.getOperand(0)->getOpcode();
if (Opc == ISD::TargetConstantPool || Opc == ISD::TargetJumpTable ||
Opc == ISD::TargetExternalSymbol || Opc == ISD::TargetGlobalAddress ||
Opc == ISD::TargetGlobalTLSAddress || Opc == ISD::MCSymbol ||
Opc == ISD::TargetBlockAddress) {
Op = N.getOperand(0);
return true;
}
return false;
Op = N.getOperand(0);
return true;
}
bool X86DAGToDAGISel::tryFoldLoad(SDNode *P, SDValue N,

View File

@ -139,8 +139,9 @@ namespace llvm {
/// at function entry, used for PIC code.
GlobalBaseReg,
/// A wrapper node for TargetConstantPool,
/// TargetExternalSymbol, and TargetGlobalAddress.
/// A wrapper node for TargetConstantPool, TargetJumpTable,
/// TargetExternalSymbol, TargetGlobalAddress, TargetGlobalTLSAddress,
/// MCSymbol and TargetBlockAddress.
Wrapper,
/// Special wrapper used under X86-64 PIC mode for RIP