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]

Patch to delete unconstrained i386 conditional move alternatives


This patch deletes the unconstrained i386 conditional move alternatives
so that regmove has a chance to work its magic.

ChangeLog:

Wed Jan 27 22:49:53 EST 1999  John Wehle  (john@feith.com)

	* i386.md (movsicc, movhicc, movsfcc, movdfcc,
	movxfcc, movdicc): Delete unconstrained alternatives.
	* i386.c (output_fp_conditional_move,
	output_int_conditional_move): Delete unused case.

Enjoy!

-- John Wehle
------------------8<------------------------8<------------------------
*** gcc/config/i386/i386.md.ORIGINAL	Wed Jan 27 22:24:06 1999
--- gcc/config/i386/i386.md	Wed Jan 27 22:38:33 1999
*************** byte_xor_operation:
*** 7151,7182 ****
  }")
  
  (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,&r,&r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
! 	      (match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
! 	      (match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
    "TARGET_CMOVE"
    "#")
  
  (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,&r,&r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
! 	      (match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
! 	      (match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
    "#")
  
  (define_split
!   [(set (match_operand:SI 0 "register_operand" "=r,r,&r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:SI 3 "nonimmediate_operand" "rm,0,rm")
! 		      (match_operand:SI 4 "nonimmediate_operand" "0,rm,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
--- 7151,7182 ----
  }")
  
  (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
! 	      (match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0")
! 	      (match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm")))]
    "TARGET_CMOVE"
    "#")
  
  (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
! 	      (match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0")
! 	      (match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
    "#")
  
  (define_split
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:SI 3 "nonimmediate_operand" "rm,0")
! 		      (match_operand:SI 4 "nonimmediate_operand" "0,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
*************** byte_xor_operation:
*** 7186,7197 ****
    "")
  
  (define_split
!   [(set (match_operand:SI 0 "register_operand" "=r,r,&r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:SI 4 "nonimmediate_operand" "rm,0,rm")
! 		      (match_operand:SI 5 "nonimmediate_operand" "0,rm,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
--- 7186,7197 ----
    "")
  
  (define_split
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:SI 4 "nonimmediate_operand" "rm,0")
! 		      (match_operand:SI 5 "nonimmediate_operand" "0,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
*************** byte_xor_operation:
*** 7200,7210 ****
    "")
  
  (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r,r,&r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:SI 2 "nonimmediate_operand" "rm,0,rm")
! 		      (match_operand:SI 3 "nonimmediate_operand" "0,rm,rm")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_int_conditional_move (which_alternative, operands);")
  
--- 7200,7210 ----
    "")
  
  (define_insn ""
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(if_then_else:SI (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:SI 2 "nonimmediate_operand" "rm,0")
! 		      (match_operand:SI 3 "nonimmediate_operand" "0,rm")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_int_conditional_move (which_alternative, operands);")
  
*************** byte_xor_operation:
*** 7225,7256 ****
  }")
  
  (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,&r,&r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
! 	      (match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
! 	      (match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
    "TARGET_CMOVE"
    "#")
  
  (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r,&r,&r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
! 	      (match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
! 	      (match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
    "#")
  
  (define_split
!   [(set (match_operand:HI 0 "register_operand" "=r,r,&r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:HI 3 "nonimmediate_operand" "rm,0,rm")
! 		      (match_operand:HI 4 "nonimmediate_operand" "0,rm,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
--- 7225,7256 ----
  }")
  
  (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
! 	      (match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0")
! 	      (match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm")))]
    "TARGET_CMOVE"
    "#")
  
  (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
! 	      (match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0")
! 	      (match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
    "#")
  
  (define_split
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:HI 3 "nonimmediate_operand" "rm,0")
! 		      (match_operand:HI 4 "nonimmediate_operand" "0,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
*************** byte_xor_operation:
*** 7260,7271 ****
    "")
  
  (define_split
!   [(set (match_operand:HI 0 "register_operand" "=r,r,&r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:HI 4 "nonimmediate_operand" "rm,0,rm")
! 		      (match_operand:HI 5 "nonimmediate_operand" "0,rm,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(compare (match_dup 2) (match_dup 3)))
--- 7260,7271 ----
    "")
  
  (define_split
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:HI 4 "nonimmediate_operand" "rm,0")
! 		      (match_operand:HI 5 "nonimmediate_operand" "0,rm")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(compare (match_dup 2) (match_dup 3)))
*************** byte_xor_operation:
*** 7275,7285 ****
    "")
  
  (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r,r,&r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:HI 2 "nonimmediate_operand" "rm,0,rm")
! 		      (match_operand:HI 3 "nonimmediate_operand" "0,rm,rm")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_int_conditional_move (which_alternative, operands);")
  
--- 7275,7285 ----
    "")
  
  (define_insn ""
!   [(set (match_operand:HI 0 "register_operand" "=r,r")
  	(if_then_else:HI (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:HI 2 "nonimmediate_operand" "rm,0")
! 		      (match_operand:HI 3 "nonimmediate_operand" "0,rm")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_int_conditional_move (which_alternative, operands);")
  
*************** byte_xor_operation:
*** 7324,7359 ****
  }")
  
  (define_insn ""
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f,f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
! 	      (match_operand:SF 4 "register_operand" "f,f,0,0,f,f")
! 	      (match_operand:SF 5 "register_operand" "0,0,f,f,f,f")))]
    "TARGET_CMOVE
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_insn ""
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f,f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
! 		[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
! 		 (match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
! 	      (match_operand:SF 4 "register_operand" "f,f,0,0,f,f")
! 	      (match_operand:SF 5 "register_operand" "0,0,f,f,f,f")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_split
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:SF 3 "register_operand" "f,0,f")
! 		      (match_operand:SF 4 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
--- 7324,7359 ----
  }")
  
  (define_insn ""
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
! 	      (match_operand:SF 4 "register_operand" "f,f,0,0")
! 	      (match_operand:SF 5 "register_operand" "0,0,f,f")))]
    "TARGET_CMOVE
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_insn ""
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
! 		[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
! 		 (match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
! 	      (match_operand:SF 4 "register_operand" "f,f,0,0")
! 	      (match_operand:SF 5 "register_operand" "0,0,f,f")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_split
!   [(set (match_operand:SF 0 "register_operand" "=f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:SF 3 "register_operand" "f,0")
! 		      (match_operand:SF 4 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
*************** byte_xor_operation:
*** 7363,7374 ****
    "")
  
  (define_split
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:SF 4 "register_operand" "f,0,f")
! 		      (match_operand:SF 5 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
--- 7363,7374 ----
    "")
  
  (define_split
!   [(set (match_operand:SF 0 "register_operand" "=f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:SF 4 "register_operand" "f,0")
! 		      (match_operand:SF 5 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
*************** byte_xor_operation:
*** 7377,7387 ****
    "")
  
  (define_insn ""
!   [(set (match_operand:SF 0 "register_operand" "=f,f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:SF 2 "register_operand" "f,0,f")
! 		      (match_operand:SF 3 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_fp_conditional_move (which_alternative, operands);")
  
--- 7377,7387 ----
    "")
  
  (define_insn ""
!   [(set (match_operand:SF 0 "register_operand" "=f,f")
  	(if_then_else:SF (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:SF 2 "register_operand" "f,0")
! 		      (match_operand:SF 3 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_fp_conditional_move (which_alternative, operands);")
  
*************** byte_xor_operation:
*** 7426,7461 ****
  }")
  
  (define_insn ""
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f,f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
! 	      (match_operand:DF 4 "register_operand" "f,f,0,0,f,f")
! 	      (match_operand:DF 5 "register_operand" "0,0,f,f,f,f")))]
    "TARGET_CMOVE
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_insn ""
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f,f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
! 	      (match_operand:DF 4 "register_operand" "f,f,0,0,f,f")
! 	      (match_operand:DF 5 "register_operand" "0,0,f,f,f,f")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_split
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:DF 3 "register_operand" "f,0,f")
! 		      (match_operand:DF 4 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
--- 7426,7461 ----
  }")
  
  (define_insn ""
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
! 	      (match_operand:DF 4 "register_operand" "f,f,0,0")
! 	      (match_operand:DF 5 "register_operand" "0,0,f,f")))]
    "TARGET_CMOVE
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_insn ""
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
! 	      (match_operand:DF 4 "register_operand" "f,f,0,0")
! 	      (match_operand:DF 5 "register_operand" "0,0,f,f")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_split
!   [(set (match_operand:DF 0 "register_operand" "=f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:DF 3 "register_operand" "f,0")
! 		      (match_operand:DF 4 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
*************** byte_xor_operation:
*** 7465,7476 ****
    "")
  
  (define_split
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:DF 4 "register_operand" "f,0,f")
! 		      (match_operand:DF 5 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
--- 7465,7476 ----
    "")
  
  (define_split
!   [(set (match_operand:DF 0 "register_operand" "=f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:DF 4 "register_operand" "f,0")
! 		      (match_operand:DF 5 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
*************** byte_xor_operation:
*** 7479,7489 ****
    "")
  
  (define_insn ""
!   [(set (match_operand:DF 0 "register_operand" "=f,f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:DF 2 "register_operand" "f,0,f")
! 		      (match_operand:DF 3 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_fp_conditional_move (which_alternative, operands);")
  
--- 7479,7489 ----
    "")
  
  (define_insn ""
!   [(set (match_operand:DF 0 "register_operand" "=f,f")
  	(if_then_else:DF (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:DF 2 "register_operand" "f,0")
! 		      (match_operand:DF 3 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_fp_conditional_move (which_alternative, operands);")
  
*************** byte_xor_operation:
*** 7528,7563 ****
  }")
  
  (define_insn ""
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f,f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
! 	      (match_operand:XF 4 "register_operand" "f,f,0,0,f,f")
! 	      (match_operand:XF 5 "register_operand" "0,0,f,f,f,f")))]
    "TARGET_CMOVE
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_insn ""
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f,f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
! 	      (match_operand:XF 4 "register_operand" "f,f,0,0,f,f")
! 	      (match_operand:XF 5 "register_operand" "0,0,f,f,f,f")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_split
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:XF 3 "register_operand" "f,0,f")
! 		      (match_operand:XF 4 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
--- 7528,7563 ----
  }")
  
  (define_insn ""
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
! 	      (match_operand:XF 4 "register_operand" "f,f,0,0")
! 	      (match_operand:XF 5 "register_operand" "0,0,f,f")))]
    "TARGET_CMOVE
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_insn ""
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
! 	      (match_operand:XF 4 "register_operand" "f,f,0,0")
! 	      (match_operand:XF 5 "register_operand" "0,0,f,f")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
      && GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
      && GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
    "#")
  
  (define_split
!   [(set (match_operand:XF 0 "register_operand" "=f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:XF 3 "register_operand" "f,0")
! 		      (match_operand:XF 4 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
*************** byte_xor_operation:
*** 7567,7578 ****
    "")
  
  (define_split
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:XF 4 "register_operand" "f,0,f")
! 		      (match_operand:XF 5 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
--- 7567,7578 ----
    "")
  
  (define_split
!   [(set (match_operand:XF 0 "register_operand" "=f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:XF 4 "register_operand" "f,0")
! 		      (match_operand:XF 5 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
*************** byte_xor_operation:
*** 7581,7591 ****
    "")
  
  (define_insn ""
!   [(set (match_operand:XF 0 "register_operand" "=f,f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:XF 2 "register_operand" "f,0,f")
! 		      (match_operand:XF 3 "register_operand" "0,f,f")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_fp_conditional_move (which_alternative, operands);")
  
--- 7581,7591 ----
    "")
  
  (define_insn ""
!   [(set (match_operand:XF 0 "register_operand" "=f,f")
  	(if_then_else:XF (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:XF 2 "register_operand" "f,0")
! 		      (match_operand:XF 3 "register_operand" "0,f")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_fp_conditional_move (which_alternative, operands);")
  
*************** byte_xor_operation:
*** 7606,7637 ****
  }")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
! 	      (match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0,ro,ro")
! 	      (match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro,ro,ro")))]
    "TARGET_CMOVE"
    "#")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
! 	      (match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0,ro,ro")
! 	      (match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro,ro,ro")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
    "#")
  
  (define_split
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:DI 3 "nonimmediate_operand" "ro,0,ro")
! 		      (match_operand:DI 4 "nonimmediate_operand" "0,ro,ro")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
--- 7606,7637 ----
  }")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
! 	      [(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
! 		(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
! 	      (match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0")
! 	      (match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro")))]
    "TARGET_CMOVE"
    "#")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
! 	      [(match_operand 2 "nonimmediate_operand" "r,m,r,m")
! 		(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
! 	      (match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0")
! 	      (match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro")))]
    "TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
    "#")
  
  (define_split
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (const_int 0)])
! 		      (match_operand:DI 3 "nonimmediate_operand" "ro,0")
! 		      (match_operand:DI 4 "nonimmediate_operand" "0,ro")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0)
  	(match_dup 2))
*************** byte_xor_operation:
*** 7641,7652 ****
    "")
  
  (define_split
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:DI 4 "nonimmediate_operand" "ro,0,ro")
! 		      (match_operand:DI 5 "nonimmediate_operand" "0,ro,ro")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
--- 7641,7652 ----
    "")
  
  (define_split
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
  				[(match_operand 2 "nonimmediate_operand" "")
  				 (match_operand 3 "general_operand" "")])
! 		      (match_operand:DI 4 "nonimmediate_operand" "ro,0")
! 		      (match_operand:DI 5 "nonimmediate_operand" "0,ro")))]
    "TARGET_CMOVE && reload_completed"
    [(set (cc0) (compare (match_dup 2) (match_dup 3)))
     (set (match_dup 0)
*************** byte_xor_operation:
*** 7655,7665 ****
    "")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:DI 2 "nonimmediate_operand" "ro,0,ro")
! 		      (match_operand:DI 3 "nonimmediate_operand" "0,ro,ro")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_int_conditional_move (which_alternative, operands);")
  
--- 7655,7665 ----
    "")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=&r,&r")
  	(if_then_else:DI (match_operator 1 "comparison_operator" 
  				[(cc0) (const_int 0)])
! 		      (match_operand:DI 2 "nonimmediate_operand" "ro,0")
! 		      (match_operand:DI 3 "nonimmediate_operand" "0,ro")))]
    "TARGET_CMOVE && reload_completed"
    "* return output_int_conditional_move (which_alternative, operands);")
  
*** gcc/config/i386/i386.c.ORIGINAL	Wed Jan 27 22:23:31 1999
--- gcc/config/i386/i386.c	Wed Jan 27 22:40:07 1999
*************** output_fp_conditional_move (which_altern
*** 5443,5454 ****
        output_asm_insn (AS2 (fcmov%f1,%3,%0), operands);
        break;
  
-     case 2:
-       /* r <- cond ? r : arg */
-       output_asm_insn (AS2 (fcmov%F1,%2,%0), operands);
-       output_asm_insn (AS2 (fcmov%f1,%3,%0), operands);
-       break;
- 
      default:
        abort ();
      }
--- 5443,5448 ----
*************** output_int_conditional_move (which_alter
*** 5506,5522 ****
        output_asm_insn (AS2 (cmov%c1,%3,%0), operands);
        if (mode == DImode)
  	output_asm_insn (AS2 (cmov%c1,%3,%0), xops);
-       break;
- 
-     case 2:
-       /* rm <- cond ? arg1 : arg2 */
-       output_asm_insn (AS2 (cmov%C1,%2,%0), operands);
-       output_asm_insn (AS2 (cmov%c1,%3,%0), operands);
-       if (mode == DImode)
- 	{
- 	  output_asm_insn (AS2 (cmov%C1,%2,%0), xops);
- 	  output_asm_insn (AS2 (cmov%c1,%3,%0), xops);
- 	}
        break;
  
      default:
--- 5500,5505 ----
-------------------------------------------------------------------------
|   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
|    John Wehle    |     Fax: 1-215-540-5495  |                         |
-------------------------------------------------------------------------



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