diff options
author | Hartmut Penner <hpenner@de.ibm.com> | 2002-09-13 09:46:57 +0000 |
---|---|---|
committer | Hartmut Penner <hpenner@gcc.gnu.org> | 2002-09-13 09:46:57 +0000 |
commit | 4456530dac41a092820e996fe25250edbad2b1ad (patch) | |
tree | 733dcee6d7277aa34841dc1094e512cc4486da50 /gcc | |
parent | 8764acde96192cbe2a6a720dd94afdfcfb82ec5b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 34 |
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. |