This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [s390] macros patch 4/11


Hi,

Here is the fourth patch merging all branch patterns.


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.


Index: gcc/config/s390/s390.md
===================================================================
*** gcc/config/s390/s390.md.orig	2005-05-04 18:14:46.371486453 +0200
--- gcc/config/s390/s390.md	2005-05-04 18:15:14.491486453 +0200
***************
*** 251,256 ****
--- 251,260 ----
  ;; same template
  (define_mode_macro INT [(DI "TARGET_64BIT") SI HI QI])
  
+ ;; This macro allows to unify all 'sXXX' 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,6958 ****
  ;; 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 "" "")]
    ""
    "s390_emit_jump (operands[0],
!     s390_emit_compare (LTGT, s390_compare_op0, s390_compare_op1)); DONE;")
  
  
  ;;
--- 6850,6864 ----
  ;; Branch instruction patterns.
  ;;
  
! (define_expand "b<code>"
!   [(set (pc)
!         (if_then_else (COMPARE (match_operand 0 "" "")
!                                (const_int 0))
!                       (match_dup 0)
!                       (pc)))]
    ""
    "s390_emit_jump (operands[0],
!     s390_emit_compare (<CODE>, s390_compare_op0, s390_compare_op1)); DONE;")
  
  
  ;;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]