aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>2012-12-13 20:57:10 +0000
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>2012-12-13 20:57:10 +0000
commit1e18b861920ad2fd1a63e006cac61a4e274e5fdf (patch)
treec35d5bfd6124f4cfe44d06a9d6838d98d9c4ea0e
parent009e1e21d4e4d26d4aeaeeb5063c0b4470572ef7 (diff)
This is another cleanup patch for 64-bit PowerPC TLS processing. I had
some hackery in place that hid my poor use of TblGen, which I've now sorted out and cleaned up. No change in observable behavior, so no new test cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170149 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/PowerPC/PPCISelDAGToDAG.cpp47
-rw-r--r--lib/Target/PowerPC/PPCISelLowering.cpp2
-rw-r--r--lib/Target/PowerPC/PPCInstr64Bit.td19
3 files changed, 11 insertions, 57 deletions
diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 806c444927..c7c265ce78 100644
--- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -1311,53 +1311,6 @@ SDNode *PPCDAGToDAGISel::Select(SDNode *N) {
return CurDAG->getMachineNode(PPC::ADDItocL, dl, MVT::i64,
SDValue(Tmp, 0), GA);
}
- case PPCISD::LD_GOT_TPREL: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::LDgotTPREL, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- // FIXME: Try without these. Doesn't seem necessary.
- case PPCISD::ADDIS_TLSGD_HA: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::ADDIStlsgdHA, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- case PPCISD::ADDI_TLSGD_L: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::ADDItlsgdL, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- case PPCISD::GET_TLS_ADDR: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::GETtlsADDR, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- case PPCISD::ADDIS_TLSLD_HA: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::ADDIStlsldHA, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- case PPCISD::ADDI_TLSLD_L: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::ADDItlsldL, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- case PPCISD::GET_TLSLD_ADDR: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::GETtlsldADDR, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
- case PPCISD::ADDIS_DTPREL_HA: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::ADDISdtprelHA, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1),
- N->getOperand(2));
- }
- case PPCISD::ADDI_DTPREL_L: {
- assert (PPCSubTarget.isPPC64() && "Only supported for 64-bit ABI");
- return CurDAG->getMachineNode(PPC::ADDIdtprelL, dl, MVT::i64,
- N->getOperand(0), N->getOperand(1));
- }
}
return SelectCode(N);
diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp
index 0748bd53a8..110ed6ef11 100644
--- a/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -1402,7 +1402,7 @@ SDValue PPCTargetLowering::LowerGlobalTLSAddress(SDValue Op,
// copies dissolve during subsequent transforms.
Chain = DAG.getCopyToReg(Chain, dl, PPC::X3, TLSAddr);
SDValue DtvOffsetHi = DAG.getNode(PPCISD::ADDIS_DTPREL_HA, dl, PtrVT,
- ParmReg, TGA, Chain);
+ Chain, ParmReg, TGA);
return DAG.getNode(PPCISD::ADDI_DTPREL_L, dl, PtrVT, DtvOffsetHi, TGA);
}
diff --git a/lib/Target/PowerPC/PPCInstr64Bit.td b/lib/Target/PowerPC/PPCInstr64Bit.td
index 429c60b742..06520b19f9 100644
--- a/lib/Target/PowerPC/PPCInstr64Bit.td
+++ b/lib/Target/PowerPC/PPCInstr64Bit.td
@@ -723,49 +723,50 @@ def ADDItocL: Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, tocentry:$disp),
def LDgotTPREL: Pseudo<(outs G8RC:$rD), (ins tlsaddr:$disp, G8RC:$reg),
"#LDgotTPREL",
[(set G8RC:$rD,
- (PPCldGotTprel G8RC:$reg, tglobaltlsaddr:$disp))]>,
+ (PPCldGotTprel tglobaltlsaddr:$disp, G8RC:$reg))]>,
isPPC64;
def : Pat<(PPCaddTls G8RC:$in, tglobaltlsaddr:$g),
(ADD8TLS G8RC:$in, tglobaltlsaddr:$g)>;
def ADDIStlsgdHA: Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, symbolHi64:$disp),
"#ADDIStlsgdHA",
[(set G8RC:$rD,
- (PPCaddisTlsgdHA G8RC:$reg, tglobaladdr:$disp))]>,
+ (PPCaddisTlsgdHA G8RC:$reg, tglobaltlsaddr:$disp))]>,
isPPC64;
def ADDItlsgdL : Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, symbolLo64:$disp),
"#ADDItlsgdL",
[(set G8RC:$rD,
- (PPCaddiTlsgdL G8RC:$reg, tglobaladdr:$disp))]>,
+ (PPCaddiTlsgdL G8RC:$reg, tglobaltlsaddr:$disp))]>,
isPPC64;
def GETtlsADDR : Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, tlsgd:$sym),
"#GETtlsADDR",
[(set G8RC:$rD,
- (PPCgetTlsAddr G8RC:$reg, tglobaladdr:$sym))]>,
+ (PPCgetTlsAddr G8RC:$reg, tglobaltlsaddr:$sym))]>,
isPPC64;
def ADDIStlsldHA: Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, symbolHi64:$disp),
"#ADDIStlsldHA",
[(set G8RC:$rD,
- (PPCaddisTlsldHA G8RC:$reg, tglobaladdr:$disp))]>,
+ (PPCaddisTlsldHA G8RC:$reg, tglobaltlsaddr:$disp))]>,
isPPC64;
def ADDItlsldL : Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, symbolLo64:$disp),
"#ADDItlsldL",
[(set G8RC:$rD,
- (PPCaddiTlsldL G8RC:$reg, tglobaladdr:$disp))]>,
+ (PPCaddiTlsldL G8RC:$reg, tglobaltlsaddr:$disp))]>,
isPPC64;
def GETtlsldADDR : Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, tlsgd:$sym),
"#GETtlsldADDR",
[(set G8RC:$rD,
- (PPCgetTlsldAddr G8RC:$reg, tglobaladdr:$sym))]>,
+ (PPCgetTlsldAddr G8RC:$reg, tglobaltlsaddr:$sym))]>,
isPPC64;
def ADDISdtprelHA: Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, symbolHi64:$disp),
"#ADDISdtprelHA",
[(set G8RC:$rD,
- (PPCaddisDtprelHA G8RC:$reg, tglobaladdr:$disp))]>,
+ (PPCaddisDtprelHA G8RC:$reg,
+ tglobaltlsaddr:$disp))]>,
isPPC64;
def ADDIdtprelL : Pseudo<(outs G8RC:$rD), (ins G8RC:$reg, symbolLo64:$disp),
"#ADDIdtprelL",
[(set G8RC:$rD,
- (PPCaddiDtprelL G8RC:$reg, tglobaladdr:$disp))]>,
+ (PPCaddiDtprelL G8RC:$reg, tglobaltlsaddr:$disp))]>,
isPPC64;
let PPC970_Unit = 2 in {