Commit fa77b251 by Adrian Straetling Committed by Ulrich Weigand

s390.md: ("COMPARE"): New mode macro.

2005-05-09  Adrian Straetling  <straetling@de.ibm.com>

	* 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
parent 342cf42b
2005-05-09 Adrian Straetling <straetling@de.ibm.com> 2005-05-09 Adrian Straetling <straetling@de.ibm.com>
* 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 <straetling@de.ibm.com>
* config/s390/s390.md: ("INT"): New mode macro. * config/s390/s390.md: ("INT"): New mode macro.
("one_cmpldi2", "one_cmplsi2", "one_cmplhi2", "one_cmplqi2"): ("one_cmpldi2", "one_cmplsi2", "one_cmplhi2", "one_cmplqi2"):
Merge. Merge.
......
...@@ -251,6 +251,10 @@ ...@@ -251,6 +251,10 @@
;; same template. ;; same template.
(define_mode_macro INT [(DI "TARGET_64BIT") SI HI QI]) (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 ;; ICM mask required to load MODE value into the highest subreg
;; of a SImode register. ;; of a SImode register.
...@@ -6846,113 +6850,15 @@ ...@@ -6846,113 +6850,15 @@
;; Branch instruction patterns. ;; Branch instruction patterns.
;; ;;
(define_expand "beq" (define_expand "b<code>"
[(match_operand 0 "" "")] [(set (pc)
"" (if_then_else (COMPARE (match_operand 0 "" "")
"s390_emit_jump (operands[0], (const_int 0))
s390_emit_compare (EQ, s390_compare_op0, s390_compare_op1)); DONE;") (match_dup 0)
(pc)))]
(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 "" "")]
"" ""
"s390_emit_jump (operands[0], "s390_emit_jump (operands[0],
s390_emit_compare (LTGT, s390_compare_op0, s390_compare_op1)); DONE;") s390_emit_compare (<CODE>, s390_compare_op0, s390_compare_op1)); DONE;")
;; ;;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment