From eccc11fbbbb661a1e31653512c9da2bfc6a6d91e Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Mon, 19 May 1997 18:12:04 -0700 Subject: [PATCH] (scc0_di, scc_di, seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu): Add coldfire support. From-SVN: r14106 --- gcc/config/m68k/m68k.md | 155 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 139 insertions(+), 16 deletions(-) diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 68f2b0b..3dc3dab 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\"; ") -- 2.7.4