OSDN Git Service

Add 64-bit MTCTR so that indirect calls work.
authorChris Lattner <sabre@nondot.org>
Tue, 27 Jun 2006 18:36:44 +0000 (18:36 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 27 Jun 2006 18:36:44 +0000 (18:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28931 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCInstr64Bit.td
lib/Target/PowerPC/PPCInstrInfo.td

index 42b0029..bfb6a08 100644 (file)
@@ -60,6 +60,10 @@ def HI48_64 : SDNodeXForm<imm, [{
 def IMPLICIT_DEF_G8RC : Pseudo<(ops G8RC:$rD), "; $rD = IMPLICIT_DEF_G8RC",
                               [(set G8RC:$rD, (undef))]>;
 
+let Pattern = [(PPCmtctr G8RC:$rS)] in {
+def MTCTR8 : XFXForm_7_ext<31, 467, 9, (ops G8RC:$rS), "mtctr $rS", SprMTSPR>,
+            PPC970_DGroup_First, PPC970_Unit_FXU;
+}
 
 //===----------------------------------------------------------------------===//
 // Fixed point instructions.
index 4fd4533..911d966 100644 (file)
@@ -71,7 +71,7 @@ def PPCstd_32     : SDNode<"PPCISD::STD_32"    , SDTStore, [SDNPHasChain]>;
 def callseq_start : SDNode<"ISD::CALLSEQ_START", SDT_PPCCallSeq,[SDNPHasChain]>;
 def callseq_end   : SDNode<"ISD::CALLSEQ_END",   SDT_PPCCallSeq,[SDNPHasChain]>;
 
-def SDT_PPCCall   : SDTypeProfile<0, -1, [SDTCisVT<0, i32>]>;
+def SDT_PPCCall   : SDTypeProfile<0, -1, [SDTCisInt<0>]>;
 def PPCcall       : SDNode<"PPCISD::CALL", SDT_PPCCall,
                            [SDNPHasChain, SDNPOptInFlag, SDNPOutFlag]>;
 def PPCmtctr      : SDNode<"PPCISD::MTCTR", SDT_PPCCall,
@@ -323,7 +323,7 @@ let isCall = 1, noResults = 1, PPC970_Unit = 7,
   def BL  : IForm<18, 0, 1, (ops calltarget:$func, variable_ops), 
                             "bl $func", BrB, []>;  // See Pat patterns below.
   def BLA : IForm<18, 1, 1, (ops aaddr:$func, variable_ops),
-                            "bla $func", BrB, [(PPCcall imm:$func)]>;
+                            "bla $func", BrB, [(PPCcall (i32 imm:$func))]>;
   def BCTRL : XLForm_2_ext<19, 528, 20, 0, 1, (ops variable_ops), "bctrl", BrB,
                            [(PPCbctrl)]>;
 }