aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisha Brukman <brukman+llvm@gmail.com>2004-10-14 22:32:49 +0000
committerMisha Brukman <brukman+llvm@gmail.com>2004-10-14 22:32:49 +0000
commit3df04c58fcaccb8bd792cf2794921ab7a4bb8dc7 (patch)
tree6d32fcf0e430d134c6636857b65d2607f01def2f
parent45a68268a40310dac90d751d40c74c5e81e15a01 (diff)
downloadexternal_llvm-3df04c58fcaccb8bd792cf2794921ab7a4bb8dc7.zip
external_llvm-3df04c58fcaccb8bd792cf2794921ab7a4bb8dc7.tar.gz
external_llvm-3df04c58fcaccb8bd792cf2794921ab7a4bb8dc7.tar.bz2
Synthetic instructions RET and RETL need to have all 3 parameters specified
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17002 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/Sparc/SparcInstrInfo.td10
-rw-r--r--lib/Target/SparcV8/SparcV8InstrInfo.td10
2 files changed, 12 insertions, 8 deletions
diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td
index af3c8bc..7725817 100644
--- a/lib/Target/Sparc/SparcInstrInfo.td
+++ b/lib/Target/Sparc/SparcInstrInfo.td
@@ -47,10 +47,12 @@ def FpMOVD : PseudoInstV8<"FpMOVD">; // pseudo 64-bit double move
// Section A.3 - Synthetic Instructions, p. 85
// special cases of JMPL:
-let isReturn = 1, isTerminator = 1, hasDelaySlot = 1, simm13 = 8 in
- def RET : F3_2<2, 0b111000, "ret">;
-let isReturn = 1, isTerminator = 1, hasDelaySlot = 1, simm13 = 8 in
- def RETL: F3_2<2, 0b111000, "retl">;
+let isReturn = 1, isTerminator = 1, hasDelaySlot = 1 in {
+ let rd = I7.Num, rs1 = G0.Num, simm13 = 8 in
+ def RET : F3_2<2, 0b111000, "ret">;
+ let rd = O7.Num, rs1 = G0.Num, simm13 = 8 in
+ def RETL: F3_2<2, 0b111000, "retl">;
+}
// CMP is a special case of SUBCC where destination is ignored, by setting it to
// %g0 (hardwired zero).
// FIXME: should keep track of the fact that it defs the integer condition codes
diff --git a/lib/Target/SparcV8/SparcV8InstrInfo.td b/lib/Target/SparcV8/SparcV8InstrInfo.td
index af3c8bc..7725817 100644
--- a/lib/Target/SparcV8/SparcV8InstrInfo.td
+++ b/lib/Target/SparcV8/SparcV8InstrInfo.td
@@ -47,10 +47,12 @@ def FpMOVD : PseudoInstV8<"FpMOVD">; // pseudo 64-bit double move
// Section A.3 - Synthetic Instructions, p. 85
// special cases of JMPL:
-let isReturn = 1, isTerminator = 1, hasDelaySlot = 1, simm13 = 8 in
- def RET : F3_2<2, 0b111000, "ret">;
-let isReturn = 1, isTerminator = 1, hasDelaySlot = 1, simm13 = 8 in
- def RETL: F3_2<2, 0b111000, "retl">;
+let isReturn = 1, isTerminator = 1, hasDelaySlot = 1 in {
+ let rd = I7.Num, rs1 = G0.Num, simm13 = 8 in
+ def RET : F3_2<2, 0b111000, "ret">;
+ let rd = O7.Num, rs1 = G0.Num, simm13 = 8 in
+ def RETL: F3_2<2, 0b111000, "retl">;
+}
// CMP is a special case of SUBCC where destination is ignored, by setting it to
// %g0 (hardwired zero).
// FIXME: should keep track of the fact that it defs the integer condition codes