summaryrefslogtreecommitdiff
path: root/lib/Target/Sparc/SparcInstrInfo.td
diff options
context:
space:
mode:
authorVenkatraman Govindaraju <venkatra@cs.wisc.edu>2011-01-21 22:00:00 +0000
committerVenkatraman Govindaraju <venkatra@cs.wisc.edu>2011-01-21 22:00:00 +0000
commitfc3faa75cbadd8a1020941ec85adfda1d2f49688 (patch)
treec9aa42076f7c52f339b282b98918bad113c98643 /lib/Target/Sparc/SparcInstrInfo.td
parent5d2e1889622cc20ada6146041e6d862a6588194f (diff)
downloadllvm-fc3faa75cbadd8a1020941ec85adfda1d2f49688.tar.gz
llvm-fc3faa75cbadd8a1020941ec85adfda1d2f49688.tar.bz2
llvm-fc3faa75cbadd8a1020941ec85adfda1d2f49688.tar.xz
Sparc backend:
Rename FLUSH to FLUSHW. Output "ta 3" instead of a "flushw" instruction if v8 instruction set is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123997 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc/SparcInstrInfo.td')
-rw-r--r--lib/Target/Sparc/SparcInstrInfo.td17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td
index 4f7b7c5768..ffeb8b55bd 100644
--- a/lib/Target/Sparc/SparcInstrInfo.td
+++ b/lib/Target/Sparc/SparcInstrInfo.td
@@ -127,7 +127,7 @@ def call : SDNode<"SPISD::CALL", SDT_SPCall,
def retflag : SDNode<"SPISD::RET_FLAG", SDTNone,
[SDNPHasChain, SDNPOptInGlue]>;
-def flush : SDNode<"SPISD::FLUSH", SDTNone,
+def flushw : SDNode<"SPISD::FLUSHW", SDTNone,
[SDNPHasChain]>;
def getPCX : Operand<i32> {
@@ -221,11 +221,16 @@ 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)]>;
+let hasSideEffects = 1, mayStore = 1 in {
+ let rd = 0, rs1 = 0, rs2 = 0 in
+ def FLUSHW : F3_1<0b10, 0b101011, (outs), (ins),
+ "flushw",
+ [(flushw)]>, Requires<[HasV9]>;
+ let rd = 0, rs1 = 1, simm13 = 3 in
+ def TA3 : F3_2<0b10, 0b111010, (outs), (ins),
+ "ta 3",
+ [(flushw)]>;
+}
// FpMOVD/FpNEGD/FpABSD - These are lowered to single-precision ops by the
// fpmover pass.