From 4456530dac41a092820e996fe25250edbad2b1ad Mon Sep 17 00:00:00 2001 From: Hartmut Penner Date: Fri, 13 Sep 2002 09:46:57 +0000 Subject: [PATCH] * config/s390/s390.md ("trap", "conditional_trap", "*trap"): New insns. From-SVN: r57102 --- gcc/ChangeLog | 5 +++++ gcc/config/s390/s390.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 09ee078265b..523f275a652 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-09-13 Hartmut Penner + + * config/s390/s390.md ("trap", "conditional_trap", "*trap"): New + insns. + 2002-09-12 Richard Henderson * Makefile.in (HOST_PRINT): Use print-rtl1.o diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 3974e21cfd4..418165c84ea 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.