From fa77b2518acb7ae2f5a82ac599e04d9744aba088 Mon Sep 17 00:00:00 2001 From: Adrian Straetling Date: Mon, 9 May 2005 17:11:23 +0000 Subject: [PATCH] s390.md: ("COMPARE"): New mode macro. 2005-05-09 Adrian Straetling * config/s390/s390.md: ("COMPARE"): New mode macro. ("beq", "bne", "bgt", "bgtu", "blt", "bltu", "bge", "bgeu", "ble", "bleu", "bunordered", "bordered", "buneq", "bunlt", "bungt", "bunle", "bunge", "bltgt"): Merge. From-SVN: r99452 --- gcc/ChangeLog | 7 +++ gcc/config/s390/s390.md | 116 +++++------------------------------------------- 2 files changed, 18 insertions(+), 105 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abc2104..00a9f52 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2005-05-09 Adrian Straetling + * config/s390/s390.md: ("COMPARE"): New mode macro. + ("beq", "bne", "bgt", "bgtu", "blt", "bltu", "bge", "bgeu", + "ble", "bleu", "bunordered", "bordered", "buneq", "bunlt", + "bungt", "bunle", "bunge", "bltgt"): Merge. + +2005-05-09 Adrian Straetling + * config/s390/s390.md: ("INT"): New mode macro. ("one_cmpldi2", "one_cmplsi2", "one_cmplhi2", "one_cmplqi2"): Merge. diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 5a258e4..f502990 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -251,6 +251,10 @@ ;; same template. (define_mode_macro INT [(DI "TARGET_64BIT") SI HI QI]) +;; This macro allows to unify all 'bCOND' expander patterns. +(define_code_macro COMPARE [eq ne gt gtu lt ltu ge geu le leu unordered + ordered uneq unlt ungt unle unge ltgt]) + ;; ICM mask required to load MODE value into the highest subreg ;; of a SImode register. @@ -6846,113 +6850,15 @@ ;; Branch instruction patterns. ;; -(define_expand "beq" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (EQ, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bne" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (NE, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bgt" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (GT, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bgtu" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (GTU, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "blt" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (LT, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bltu" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (LTU, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bge" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (GE, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bgeu" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (GEU, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "ble" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (LE, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bleu" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (LEU, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bunordered" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (UNORDERED, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bordered" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (ORDERED, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "buneq" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (UNEQ, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bunlt" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (UNLT, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bungt" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (UNGT, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bunle" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (UNLE, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bunge" - [(match_operand 0 "" "")] - "" - "s390_emit_jump (operands[0], - s390_emit_compare (UNGE, s390_compare_op0, s390_compare_op1)); DONE;") - -(define_expand "bltgt" - [(match_operand 0 "" "")] +(define_expand "b" + [(set (pc) + (if_then_else (COMPARE (match_operand 0 "" "") + (const_int 0)) + (match_dup 0) + (pc)))] "" "s390_emit_jump (operands[0], - s390_emit_compare (LTGT, s390_compare_op0, s390_compare_op1)); DONE;") + s390_emit_compare (, s390_compare_op0, s390_compare_op1)); DONE;") ;; -- 2.7.4