aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHartmut Penner <hpenner@de.ibm.com>2002-09-13 09:46:57 +0000
committerHartmut Penner <hpenner@gcc.gnu.org>2002-09-13 09:46:57 +0000
commit4456530dac41a092820e996fe25250edbad2b1ad (patch)
tree733dcee6d7277aa34841dc1094e512cc4486da50 /gcc
parent8764acde96192cbe2a6a720dd94afdfcfb82ec5b (diff)
downloadgcc-4456530dac41a092820e996fe25250edbad2b1ad.zip
gcc-4456530dac41a092820e996fe25250edbad2b1ad.tar.gz
gcc-4456530dac41a092820e996fe25250edbad2b1ad.tar.bz2
* config/s390/s390.md ("trap", "conditional_trap", "*trap"): New insns.
From-SVN: r57102
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.md34
2 files changed, 39 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 09ee078..523f275 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-13 Hartmut Penner <hpenner@de.ibm.com>
+
+ * config/s390/s390.md ("trap", "conditional_trap", "*trap"): New
+ insns.
+
2002-09-12 Richard Henderson <rth@redhat.com>
* Makefile.in (HOST_PRINT): Use print-rtl1.o
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 3974e21..418165c 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -5970,6 +5970,40 @@
(const_string "RR") (const_string "RX")))
(set_attr "atype" "mem")])
+;;
+;;- Trap instructions.
+;;
+
+(define_insn "trap"
+ [(trap_if (const_int 1) (const_int 0))]
+ ""
+ "j\\t.+2"
+ [(set_attr "op_type" "RX")])
+
+(define_expand "conditional_trap"
+ [(set (match_dup 2) (match_dup 3))
+ (trap_if (match_operator 0 "comparison_operator"
+ [(match_dup 2) (const_int 0)])
+ (match_operand:SI 1 "general_operand" ""))]
+ ""
+ "
+{
+ enum machine_mode ccmode;
+
+ if (operands[1] != const0_rtx) FAIL;
+
+ ccmode = s390_select_ccmode (GET_CODE (operands[0]),
+ s390_compare_op0, s390_compare_op1);
+ operands[2] = gen_rtx_REG (ccmode, 33);
+ operands[3] = gen_rtx_COMPARE (ccmode, s390_compare_op0, s390_compare_op1);
+}")
+
+(define_insn "*trap"
+ [(trap_if (match_operator 0 "comparison_operator" [(reg 33) (const_int 0)])
+ (const_int 0))]
+ ""
+ "j%C0\\t.+2";
+ [(set_attr "op_type" "RX")])
;;
;;- Loop instructions.