summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1997-05-20 01:12:04 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1997-05-20 01:12:04 +0000
commit0e5f101c89609c5e3f643c7eac445c77ff87b80f (patch)
tree12c9ad25b8604688a409e23d5b49c7a3c2fa6888
parent2c806cfdced9eb397dd34023c060e92193eb7fc3 (diff)
downloadgcc-0e5f101c89609c5e3f643c7eac445c77ff87b80f.tar.gz
(scc0_di, scc_di, seq, sne, sgt, sgtu, slt, sltu, sge, sgeu,
sle, sleu): Add coldfire support. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14106 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/config/m68k/m68k.md155
1 files changed, 139 insertions, 16 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 68f2b0b4f45..3dc3dabf576 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -5249,7 +5249,17 @@
[(set (match_operand:QI 0 "general_operand" "=dm")
(match_operator 1 "valid_dbcc_comparison_p"
[(match_operand:DI 2 "general_operand" "ro") (const_int 0)]))]
- ""
+ "! TARGET_5200"
+ "*
+{
+ return output_scc_di (operands[1], operands[2], const0_rtx, operands[0]);
+} ")
+
+(define_insn "scc0_di_5200"
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (match_operator 1 "valid_dbcc_comparison_p"
+ [(match_operand:DI 2 "general_operand" "ro") (const_int 0)]))]
+ "TARGET_5200"
"*
{
return output_scc_di (operands[1], operands[2], const0_rtx, operands[0]);
@@ -5260,7 +5270,18 @@
(match_operator 1 "valid_dbcc_comparison_p"
[(match_operand:DI 2 "general_operand" "ro,r")
(match_operand:DI 3 "general_operand" "r,ro")]))]
- ""
+ "! TARGET_5200"
+ "*
+{
+ return output_scc_di (operands[1], operands[2], operands[3], operands[0]);
+} ")
+
+(define_insn "scc_di_5200"
+ [(set (match_operand:QI 0 "general_operand" "=d,d")
+ (match_operator 1 "valid_dbcc_comparison_p"
+ [(match_operand:DI 2 "general_operand" "ro,r")
+ (match_operand:DI 3 "general_operand" "r,ro")]))]
+ "TARGET_5200"
"*
{
return output_scc_di (operands[1], operands[2], operands[3], operands[0]);
@@ -5282,7 +5303,16 @@
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=dm")
(eq:QI (cc0) (const_int 0)))]
- ""
+ "! TARGET_5200"
+ "*
+ cc_status = cc_prev_status;
+ OUTPUT_JUMP (\"seq %0\", \"fseq %0\", \"seq %0\");
+")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (eq:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
"*
cc_status = cc_prev_status;
OUTPUT_JUMP (\"seq %0\", \"fseq %0\", \"seq %0\");
@@ -5304,7 +5334,16 @@
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=dm")
(ne:QI (cc0) (const_int 0)))]
- ""
+ "! TARGET_5200"
+ "*
+ cc_status = cc_prev_status;
+ OUTPUT_JUMP (\"sne %0\", \"fsne %0\", \"sne %0\");
+")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (ne:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
"*
cc_status = cc_prev_status;
OUTPUT_JUMP (\"sne %0\", \"fsne %0\", \"sne %0\");
@@ -5326,16 +5365,38 @@
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=dm")
(gt:QI (cc0) (const_int 0)))]
- ""
+ "! TARGET_5200"
"*
cc_status = cc_prev_status;
OUTPUT_JUMP (\"sgt %0\", \"fsgt %0\", 0);
")
-(define_insn "sgtu"
- [(set (match_operand:QI 0 "general_operand" "=dm")
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (gt:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
+ "*
+ cc_status = cc_prev_status;
+ OUTPUT_JUMP (\"sgt %0\", \"fsgt %0\", 0);
+")
+
+(define_expand "sgtu"
+ [(set (match_operand:QI 0 "general_operand" "")
(gtu:QI (cc0) (const_int 0)))]
""
+ "")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=dm")
+ (gtu:QI (cc0) (const_int 0)))]
+ "! TARGET_5200"
+ "* cc_status = cc_prev_status;
+ return \"shi %0\"; ")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (gtu:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
"* cc_status = cc_prev_status;
return \"shi %0\"; ")
@@ -5355,14 +5416,34 @@
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=dm")
(lt:QI (cc0) (const_int 0)))]
- ""
+ "! TARGET_5200"
"* cc_status = cc_prev_status;
OUTPUT_JUMP (\"slt %0\", \"fslt %0\", \"smi %0\"); ")
-(define_insn "sltu"
- [(set (match_operand:QI 0 "general_operand" "=dm")
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (lt:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
+ "* cc_status = cc_prev_status;
+ OUTPUT_JUMP (\"slt %0\", \"fslt %0\", \"smi %0\"); ")
+
+(define_expand "sltu"
+ [(set (match_operand:QI 0 "general_operand" "")
(ltu:QI (cc0) (const_int 0)))]
""
+ "")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=dm")
+ (ltu:QI (cc0) (const_int 0)))]
+ "! TARGET_5200"
+ "* cc_status = cc_prev_status;
+ return \"scs %0\"; ")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (ltu:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
"* cc_status = cc_prev_status;
return \"scs %0\"; ")
@@ -5382,14 +5463,34 @@
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=dm")
(ge:QI (cc0) (const_int 0)))]
- ""
+ "! TARGET_5200"
"* cc_status = cc_prev_status;
OUTPUT_JUMP (\"sge %0\", \"fsge %0\", \"spl %0\"); ")
-(define_insn "sgeu"
- [(set (match_operand:QI 0 "general_operand" "=dm")
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (ge:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
+ "* cc_status = cc_prev_status;
+ OUTPUT_JUMP (\"sge %0\", \"fsge %0\", \"spl %0\"); ")
+
+(define_expand "sgeu"
+ [(set (match_operand:QI 0 "general_operand" "")
(geu:QI (cc0) (const_int 0)))]
""
+ "")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=dm")
+ (geu:QI (cc0) (const_int 0)))]
+ "! TARGET_5200"
+ "* cc_status = cc_prev_status;
+ return \"scc %0\"; ")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (geu:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
"* cc_status = cc_prev_status;
return \"scc %0\"; ")
@@ -5409,16 +5510,38 @@
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=dm")
(le:QI (cc0) (const_int 0)))]
- ""
+ "! TARGET_5200"
"*
cc_status = cc_prev_status;
OUTPUT_JUMP (\"sle %0\", \"fsle %0\", 0);
")
-(define_insn "sleu"
- [(set (match_operand:QI 0 "general_operand" "=dm")
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (le:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
+ "*
+ cc_status = cc_prev_status;
+ OUTPUT_JUMP (\"sle %0\", \"fsle %0\", 0);
+")
+
+(define_expand "sleu"
+ [(set (match_operand:QI 0 "general_operand" "")
(leu:QI (cc0) (const_int 0)))]
""
+ "")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=dm")
+ (leu:QI (cc0) (const_int 0)))]
+ "! TARGET_5200"
+ "* cc_status = cc_prev_status;
+ return \"sls %0\"; ")
+
+(define_insn ""
+ [(set (match_operand:QI 0 "general_operand" "=d")
+ (leu:QI (cc0) (const_int 0)))]
+ "TARGET_5200"
"* cc_status = cc_prev_status;
return \"sls %0\"; ")