summaryrefslogtreecommitdiff
path: root/lib/Target/Sparc/SparcInstrInfo.td
diff options
context:
space:
mode:
authorVenkatraman Govindaraju <venkatra@cs.wisc.edu>2011-01-12 05:08:36 +0000
committerVenkatraman Govindaraju <venkatra@cs.wisc.edu>2011-01-12 05:08:36 +0000
commit860b64cb1efba110bf81bcc243a6fbaae4c655a4 (patch)
tree0fbcd6ecf3039ba4ef61992f15f573f5ad716211 /lib/Target/Sparc/SparcInstrInfo.td
parentc178308b23f796b6f5c15c8b3f742cc7b3336d6b (diff)
downloadllvm-860b64cb1efba110bf81bcc243a6fbaae4c655a4.tar.gz
llvm-860b64cb1efba110bf81bcc243a6fbaae4c655a4.tar.bz2
llvm-860b64cb1efba110bf81bcc243a6fbaae4c655a4.tar.xz
Implement RETURNADDR and FRAMEADDR lowering in SPARC backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123310 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc/SparcInstrInfo.td')
-rw-r--r--lib/Target/Sparc/SparcInstrInfo.td9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td
index 44b7e43360..7da86a1f5b 100644
--- a/lib/Target/Sparc/SparcInstrInfo.td
+++ b/lib/Target/Sparc/SparcInstrInfo.td
@@ -127,6 +127,9 @@ def call : SDNode<"SPISD::CALL", SDT_SPCall,
def retflag : SDNode<"SPISD::RET_FLAG", SDTNone,
[SDNPHasChain, SDNPOptInGlue]>;
+def flush : SDNode<"SPISD::FLUSH", SDTNone,
+ [SDNPHasChain]>;
+
def getPCX : Operand<i32> {
let PrintMethod = "printGetPCX";
}
@@ -218,6 +221,12 @@ def ADJCALLSTACKUP : Pseudo<(outs), (ins i32imm:$amt1, i32imm:$amt2),
[(callseq_end timm:$amt1, timm:$amt2)]>;
}
+let hasSideEffects = 1, mayStore = 1 in
+ let rs2 = 0 in
+ def FLUSH : F3_1<0b10, 0b101011, (outs), (ins),
+ "flushw",
+ [(flush)]>;
+
// FpMOVD/FpNEGD/FpABSD - These are lowered to single-precision ops by the
// fpmover pass.
let Predicates = [HasNoV9] in { // Only emit these in V8 mode.