diff options
author | Daniel Cederman <cederman@gaisler.com> | 2018-08-13 14:18:09 +0000 |
---|---|---|
committer | Daniel Cederman <cederman@gaisler.com> | 2018-08-13 14:18:09 +0000 |
commit | dc3e4c6d9570656c7ba22f4d858941c43d6e49e6 (patch) | |
tree | 3800cbc3e40f1920ac839a5347db89e6bbb3bc11 | |
parent | 4e1293b5e1b68fc2e3ca2bd85ade431350ab3c61 (diff) | |
download | bcm5719-llvm-dc3e4c6d9570656c7ba22f4d858941c43d6e49e6.tar.gz bcm5719-llvm-dc3e4c6d9570656c7ba22f4d858941c43d6e49e6.zip |
Revert "[Sparc] Add support for the cycle counter available in GR740"
It breaks when using EXPENSIVE_CHECKS with the error message
"Bad machine code: Using an undefined physical register".
llvm-svn: 339570
-rw-r--r-- | llvm/lib/Target/Sparc/LeonFeatures.td | 4 | ||||
-rw-r--r-- | llvm/lib/Target/Sparc/Sparc.td | 2 | ||||
-rw-r--r-- | llvm/lib/Target/Sparc/SparcISelLowering.cpp | 14 | ||||
-rw-r--r-- | llvm/lib/Target/Sparc/SparcSubtarget.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/Target/Sparc/SparcSubtarget.h | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/SPARC/readcycle.ll | 11 |
6 files changed, 2 insertions, 32 deletions
diff --git a/llvm/lib/Target/Sparc/LeonFeatures.td b/llvm/lib/Target/Sparc/LeonFeatures.td index 61e5f16e0a1..a7dea068cb1 100644 --- a/llvm/lib/Target/Sparc/LeonFeatures.td +++ b/llvm/lib/Target/Sparc/LeonFeatures.td @@ -58,7 +58,3 @@ def FixAllFDIVSQRT : SubtargetFeature< "true", "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store" >; - -def LeonCycleCounter - : SubtargetFeature<"leoncyclecounter", "HasLeonCycleCounter", "true", - "Use the Leon cycle counter register">; diff --git a/llvm/lib/Target/Sparc/Sparc.td b/llvm/lib/Target/Sparc/Sparc.td index 0c69605fd7b..2f9b57f7604 100644 --- a/llvm/lib/Target/Sparc/Sparc.td +++ b/llvm/lib/Target/Sparc/Sparc.td @@ -159,7 +159,7 @@ def : Processor<"leon4", LEON4Itineraries, // LEON 4 FT (GR740) // TO DO: Place-holder: Processor specific features will be added *very* soon here. def : Processor<"gr740", LEON4Itineraries, - [FeatureLeon, UMACSMACSupport, LeonCASA, LeonCycleCounter]>; + [FeatureLeon, UMACSMACSupport, LeonCASA]>; //===----------------------------------------------------------------------===// // Declare the target which we are implementing diff --git a/llvm/lib/Target/Sparc/SparcISelLowering.cpp b/llvm/lib/Target/Sparc/SparcISelLowering.cpp index 420eba36f96..b04c6b11268 100644 --- a/llvm/lib/Target/Sparc/SparcISelLowering.cpp +++ b/llvm/lib/Target/Sparc/SparcISelLowering.cpp @@ -1841,9 +1841,6 @@ SparcTargetLowering::SparcTargetLowering(const TargetMachine &TM, setOperationAction(ISD::FMUL, MVT::f32, Promote); } - if (Subtarget->hasLeonCycleCounter()) - setOperationAction(ISD::READCYCLECOUNTER, MVT::i64, Custom); - setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom); setMinFunctionAlignment(2); @@ -3590,16 +3587,7 @@ void SparcTargetLowering::ReplaceNodeResults(SDNode *N, getLibcallName(libCall), 1)); return; - case ISD::READCYCLECOUNTER: { - assert(Subtarget->hasLeonCycleCounter()); - SDValue Lo = DAG.getCopyFromReg(N->getOperand(0), dl, SP::ASR23, MVT::i32); - SDValue Hi = DAG.getCopyFromReg(Lo, dl, SP::G0, MVT::i32); - SDValue Ops[] = { Lo, Hi }; - SDValue Pair = DAG.getNode(ISD::BUILD_PAIR, dl, MVT::i64, Ops); - Results.push_back(Pair); - Results.push_back(N->getOperand(0)); - return; - } + case ISD::SINT_TO_FP: case ISD::UINT_TO_FP: // Custom lower only if it involves f128 or i64. diff --git a/llvm/lib/Target/Sparc/SparcSubtarget.cpp b/llvm/lib/Target/Sparc/SparcSubtarget.cpp index f3a2049ce38..40c5683f849 100644 --- a/llvm/lib/Target/Sparc/SparcSubtarget.cpp +++ b/llvm/lib/Target/Sparc/SparcSubtarget.cpp @@ -47,7 +47,6 @@ SparcSubtarget &SparcSubtarget::initializeSubtargetDependencies(StringRef CPU, InsertNOPLoad = false; FixAllFDIVSQRT = false; DetectRoundChange = false; - HasLeonCycleCounter = false; // Determine default and user specified characteristics std::string CPUName = CPU; diff --git a/llvm/lib/Target/Sparc/SparcSubtarget.h b/llvm/lib/Target/Sparc/SparcSubtarget.h index 65627f4f70f..588a6765bcd 100644 --- a/llvm/lib/Target/Sparc/SparcSubtarget.h +++ b/llvm/lib/Target/Sparc/SparcSubtarget.h @@ -50,7 +50,6 @@ class SparcSubtarget : public SparcGenSubtargetInfo { bool InsertNOPLoad; bool FixAllFDIVSQRT; bool DetectRoundChange; - bool HasLeonCycleCounter; SparcInstrInfo InstrInfo; SparcTargetLowering TLInfo; @@ -96,7 +95,6 @@ public: bool insertNOPLoad() const { return InsertNOPLoad; } bool fixAllFDIVSQRT() const { return FixAllFDIVSQRT; } bool detectRoundChange() const { return DetectRoundChange; } - bool hasLeonCycleCounter() const { return HasLeonCycleCounter; } /// ParseSubtargetFeatures - Parses features string setting specified /// subtarget options. Definition of function is auto generated by tblgen. diff --git a/llvm/test/CodeGen/SPARC/readcycle.ll b/llvm/test/CodeGen/SPARC/readcycle.ll deleted file mode 100644 index 5c330ea1dac..00000000000 --- a/llvm/test/CodeGen/SPARC/readcycle.ll +++ /dev/null @@ -1,11 +0,0 @@ -; RUN: llc < %s -march=sparc -mcpu=gr740 | FileCheck %s -; CHECK: rd %asr23, %o1 -; CHECK: mov %g0, %o0 - -define i64 @test() { -entry: - %0 = call i64 @llvm.readcyclecounter() - ret i64 %0 -} - -declare i64 @llvm.readcyclecounter() |