diff options
| author | Hal Finkel <hfinkel@anl.gov> | 2012-08-04 14:10:46 +0000 | 
|---|---|---|
| committer | Hal Finkel <hfinkel@anl.gov> | 2012-08-04 14:10:46 +0000 | 
| commit | 70381a7b1877e17eddf2ef80122005a8ac02d783 (patch) | |
| tree | d557d26e04c24c3c61f61142ec985b9153a2a2c3 /llvm/lib | |
| parent | ef731edf530059ed8a1324043b5934ee4f59aa70 (diff) | |
| download | bcm5719-llvm-70381a7b1877e17eddf2ef80122005a8ac02d783.tar.gz bcm5719-llvm-70381a7b1877e17eddf2ef80122005a8ac02d783.zip  | |
Add readcyclecounter lowering on PPC64.
On PPC64, this can be done with a simple TableGen pattern.
To enable this, I've added the (otherwise missing) readcyclecounter
SDNode definition to TargetSelectionDAG.td.
llvm-svn: 161302
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstr64Bit.td | 5 | 
2 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp index 13250b33eaa..aa819eeb30a 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -394,8 +394,10 @@ PPCTargetLowering::PPCTargetLowering(PPCTargetMachine &TM)      setOperationAction(ISD::BUILD_VECTOR, MVT::v4f32, Custom);    } -  if (Subtarget->has64BitSupport()) +  if (Subtarget->has64BitSupport()) {      setOperationAction(ISD::PREFETCH, MVT::Other, Legal); +    setOperationAction(ISD::READCYCLECOUNTER, MVT::i64, Legal); +  }    setOperationAction(ISD::ATOMIC_LOAD,  MVT::i32, Expand);    setOperationAction(ISD::ATOMIC_STORE, MVT::i32, Expand); diff --git a/llvm/lib/Target/PowerPC/PPCInstr64Bit.td b/llvm/lib/Target/PowerPC/PPCInstr64Bit.td index 91c5366e5c2..92a50516546 100644 --- a/llvm/lib/Target/PowerPC/PPCInstr64Bit.td +++ b/llvm/lib/Target/PowerPC/PPCInstr64Bit.td @@ -265,6 +265,11 @@ def MTCTR8 : XFXForm_7_ext<31, 467, 9, (outs), (ins G8RC:$rS),               PPC970_DGroup_First, PPC970_Unit_FXU;  } +let Pattern = [(set G8RC:$rT, readcyclecounter)] in +def MFTB8 : XFXForm_1_ext<31, 371, 268, (outs G8RC:$rT), (ins), +                          "mftb $rT", SprMFTB>, +            PPC970_DGroup_First, PPC970_Unit_FXU; +  let Defs = [X1], Uses = [X1] in  def DYNALLOC8 : Pseudo<(outs G8RC:$result), (ins G8RC:$negsize, memri:$fpsi),"",                         [(set G8RC:$result,  | 

