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]

i386 constraint cleanup



Hi
If the last regclass patch get accepted, installing this would bring me
great feeling of satisfaction. I've measured notable improvements on SSE
code, but also some improvements w/o it due to improved fp/integer register
allocation. The purpose is that regclass now sees that if it places reg
A in SSE unit, then all registers used together with reg A should be
in SSE too.

If some other port want to do the same, here is the script:

/match_operand/ s/\#[^",]*,/,/g
/match_operand/ s/\#[^",]*"/"/g

Honza

Thu Feb 15 13:52:54 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fp patterns): Remove the '#' register allocator garbage.

Index: i386.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.md,v
retrieving revision 1.217
diff -c -3 -p -r1.217 i386.md
*** i386.md	2001/02/15 09:57:21	1.217
--- i386.md	2001/02/15 12:48:52
***************
*** 1514,1521 ****
  
  (define_insn "*cmpfp_i_sse"
    [(set (reg:CCFP 17)
! 	(compare:CCFP (match_operand 0 "register_operand" "f#x,x#f")
! 		      (match_operand 1 "nonimmediate_operand" "f#x,xm#f")))]
    "TARGET_80387
     && SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
     && GET_MODE (operands[0]) == GET_MODE (operands[0])"
--- 1514,1521 ----
  
  (define_insn "*cmpfp_i_sse"
    [(set (reg:CCFP 17)
! 	(compare:CCFP (match_operand 0 "register_operand" "f,x")
! 		      (match_operand 1 "nonimmediate_operand" "f,xm")))]
    "TARGET_80387
     && SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
     && GET_MODE (operands[0]) == GET_MODE (operands[0])"
***************
*** 1550,1557 ****
  
  (define_insn "*cmpfp_iu_sse"
    [(set (reg:CCFPU 17)
! 	(compare:CCFPU (match_operand 0 "register_operand" "f#x,x#f")
! 		       (match_operand 1 "nonimmediate_operand" "f#x,xm#f")))]
    "TARGET_80387
     && SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
     && GET_MODE (operands[0]) == GET_MODE (operands[1])"
--- 1550,1557 ----
  
  (define_insn "*cmpfp_iu_sse"
    [(set (reg:CCFPU 17)
! 	(compare:CCFPU (match_operand 0 "register_operand" "f,x")
! 		       (match_operand 1 "nonimmediate_operand" "f,xm")))]
    "TARGET_80387
     && SSE_FLOAT_MODE_P (GET_MODE (operands[0]))
     && GET_MODE (operands[0]) == GET_MODE (operands[1])"
***************
*** 2149,2155 ****
  
  (define_insn "*pushsf"
    [(set (match_operand:SF 0 "push_operand" "=<,<,<")
! 	(match_operand:SF 1 "general_no_elim_operand" "f#rx,rFm#fx,x#rf"))]
    ""
    "*
  {
--- 2149,2155 ----
  
  (define_insn "*pushsf"
    [(set (match_operand:SF 0 "push_operand" "=<,<,<")
! 	(match_operand:SF 1 "general_no_elim_operand" "f,rFm,x"))]
    ""
    "*
  {
***************
*** 2198,2205 ****
     (set (mem:SF (reg:SI 7)) (match_dup 1))])
  
  (define_insn "*movsf_1"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=f#xr,m,f#xr,r#xf,m,x#rf,m")
! 	(match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,xm#rf,x#rf"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && (reload_in_progress || reload_completed
         || GET_CODE (operands[1]) != CONST_DOUBLE
--- 2198,2205 ----
     (set (mem:SF (reg:SI 7)) (match_dup 1))])
  
  (define_insn "*movsf_1"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=f,m,f,r,m,x,m")
! 	(match_operand:SF 1 "general_operand" "fm,f,G,rmF,Fr,xm,x"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && (reload_in_progress || reload_completed
         || GET_CODE (operands[1]) != CONST_DOUBLE
***************
*** 2293,2299 ****
  
  (define_insn "*pushdf_nointeger"
    [(set (match_operand:DF 0 "push_operand" "=<,<,<,<")
! 	(match_operand:DF 1 "general_no_elim_operand" "f#Y,Fo#fY,*r#fY,Y#f"))]
    "!TARGET_INTEGER_DFMODE_MOVES"
    "*
  {
--- 2293,2299 ----
  
  (define_insn "*pushdf_nointeger"
    [(set (match_operand:DF 0 "push_operand" "=<,<,<,<")
! 	(match_operand:DF 1 "general_no_elim_operand" "f,Fo,*r,Y"))]
    "!TARGET_INTEGER_DFMODE_MOVES"
    "*
  {
***************
*** 2323,2329 ****
  
  (define_insn "*pushdf_integer"
    [(set (match_operand:DF 0 "push_operand" "=<,<,<")
! 	(match_operand:DF 1 "general_no_elim_operand" "f#rY,rFo#fY,Y#rf"))]
    "TARGET_INTEGER_DFMODE_MOVES"
    "*
  {
--- 2323,2329 ----
  
  (define_insn "*pushdf_integer"
    [(set (match_operand:DF 0 "push_operand" "=<,<,<")
! 	(match_operand:DF 1 "general_no_elim_operand" "f,rFo,Y"))]
    "TARGET_INTEGER_DFMODE_MOVES"
    "*
  {
***************
*** 2371,2378 ****
  ;; when optimizing for size.
  
  (define_insn "*movdf_nointeger"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,m,f#Y,*r,o,Y#f,m")
! 	(match_operand:DF 1 "general_operand" "fm#Y,f#Y,G,*roF,F*r,Ym#f,Y#f"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && (optimize_size || !TARGET_INTEGER_DFMODE_MOVES)
     && (reload_in_progress || reload_completed
--- 2371,2378 ----
  ;; when optimizing for size.
  
  (define_insn "*movdf_nointeger"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,f,*r,o,Y,m")
! 	(match_operand:DF 1 "general_operand" "fm,f,G,*roF,F*r,Ym,Y"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && (optimize_size || !TARGET_INTEGER_DFMODE_MOVES)
     && (reload_in_progress || reload_completed
***************
*** 2422,2429 ****
     (set_attr "mode" "DF,DF,DF,SI,SI,DF,DF")])
  
  (define_insn "*movdf_integer"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Yr,m,f#Yr,r#Yf,o,Y#rf,m")
! 	(match_operand:DF 1 "general_operand" "fm#Yr,f#Yr,G,roF#Yf,Fr#Yf,Ym#rf,Y#rf"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && !optimize_size && TARGET_INTEGER_DFMODE_MOVES
     && (reload_in_progress || reload_completed
--- 2422,2429 ----
     (set_attr "mode" "DF,DF,DF,SI,SI,DF,DF")])
  
  (define_insn "*movdf_integer"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,f,r,o,Y,m")
! 	(match_operand:DF 1 "general_operand" "fm,f,G,roF,Fr,Ym,Y"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && !optimize_size && TARGET_INTEGER_DFMODE_MOVES
     && (reload_in_progress || reload_completed
***************
*** 2597,2603 ****
  
  (define_insn "*pushxf_integer"
    [(set (match_operand:XF 0 "push_operand" "=<,<")
! 	(match_operand:XF 1 "general_no_elim_operand" "f#r,rFo#f"))]
    "!optimize_size"
    "*
  {
--- 2597,2603 ----
  
  (define_insn "*pushxf_integer"
    [(set (match_operand:XF 0 "push_operand" "=<,<")
! 	(match_operand:XF 1 "general_no_elim_operand" "f,rFo"))]
    "!optimize_size"
    "*
  {
***************
*** 2625,2631 ****
  
  (define_insn "*pushtf_integer"
    [(set (match_operand:TF 0 "push_operand" "=<,<")
! 	(match_operand:TF 1 "general_no_elim_operand" "f#r,rFo#f"))]
    "!optimize_size"
    "*
  {
--- 2625,2631 ----
  
  (define_insn "*pushtf_integer"
    [(set (match_operand:TF 0 "push_operand" "=<,<")
! 	(match_operand:TF 1 "general_no_elim_operand" "f,rFo"))]
    "!optimize_size"
    "*
  {
***************
*** 2772,2779 ****
     (set_attr "mode" "XF,XF,XF,SI,SI")])
  
  (define_insn "*movxf_integer"
!   [(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,m,f#r,r#f,o")
! 	(match_operand:XF 1 "general_operand" "fm#r,f#r,G,roF#f,Fr#f"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && !optimize_size
     && (reload_in_progress || reload_completed
--- 2772,2779 ----
     (set_attr "mode" "XF,XF,XF,SI,SI")])
  
  (define_insn "*movxf_integer"
!   [(set (match_operand:XF 0 "nonimmediate_operand" "=f,m,f,r,o")
! 	(match_operand:XF 1 "general_operand" "fm,f,G,roF,Fr"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && !optimize_size
     && (reload_in_progress || reload_completed
***************
*** 2819,2826 ****
     (set_attr "mode" "XF,XF,XF,SI,SI")])
  
  (define_insn "*movtf_integer"
!   [(set (match_operand:TF 0 "nonimmediate_operand" "=f#r,m,f#r,r#f,o")
! 	(match_operand:TF 1 "general_operand" "fm#r,f#r,G,roF#f,Fr#f"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && !optimize_size
     && (reload_in_progress || reload_completed
--- 2819,2826 ----
     (set_attr "mode" "XF,XF,XF,SI,SI")])
  
  (define_insn "*movtf_integer"
!   [(set (match_operand:TF 0 "nonimmediate_operand" "=f,m,f,r,o")
! 	(match_operand:TF 1 "general_operand" "fm,f,G,roF,Fr"))]
    "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
     && !optimize_size
     && (reload_in_progress || reload_completed
***************
*** 3366,3373 ****
  }")
  
  (define_insn "*extendsfdf2_1"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,mf#Y,Y#f")
!         (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm#Y,f#Y,mY#f")))]
    "(TARGET_80387 || TARGET_SSE2)
     && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
    "*
--- 3366,3373 ----
  }")
  
  (define_insn "*extendsfdf2_1"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,mf,Y")
!         (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,f,mY")))]
    "(TARGET_80387 || TARGET_SSE2)
     && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
    "*
***************
*** 7148,7154 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negsf2_if"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(neg:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, SFmode, operands)"
--- 7148,7154 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negsf2_if"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=f,rm")
  	(neg:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, SFmode, operands)"
***************
*** 7203,7209 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negdf2_if"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(neg:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, DFmode, operands)"
--- 7203,7209 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negdf2_if"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,rm")
  	(neg:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, DFmode, operands)"
***************
*** 7246,7252 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negxf2_if"
!   [(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(neg:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, XFmode, operands)"
--- 7246,7252 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negxf2_if"
!   [(set (match_operand:XF 0 "nonimmediate_operand" "=f,rm")
  	(neg:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, XFmode, operands)"
***************
*** 7275,7281 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negtf2_if"
!   [(set (match_operand:TF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(neg:TF (match_operand:TF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, TFmode, operands)"
--- 7275,7281 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*negtf2_if"
!   [(set (match_operand:TF 0 "nonimmediate_operand" "=f,rm")
  	(neg:TF (match_operand:TF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (NEG, TFmode, operands)"
***************
*** 7402,7408 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*abssf2_if"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(abs:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, SFmode, operands)"
--- 7402,7408 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*abssf2_if"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=f,rm")
  	(abs:SF (match_operand:SF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, SFmode, operands)"
***************
*** 7457,7463 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*absdf2_if"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(abs:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, DFmode, operands)"
--- 7457,7463 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*absdf2_if"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,rm")
  	(abs:DF (match_operand:DF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, DFmode, operands)"
***************
*** 7500,7506 ****
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*absxf2_if"
!   [(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(abs:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, XFmode, operands)"
--- 7500,7506 ----
  ;; because of secondary memory needed to reload from class FLOAT_INT_REGS
  ;; to itself.
  (define_insn "*absxf2_if"
!   [(set (match_operand:XF 0 "nonimmediate_operand" "=f,rm")
  	(abs:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, XFmode, operands)"
***************
*** 7526,7532 ****
     operands[0] = gen_rtx_REG (SImode, true_regnum (operands[0]) + 2);")
  
  (define_insn "*abstf2_if"
!   [(set (match_operand:TF 0 "nonimmediate_operand" "=f#r,rm#f")
  	(abs:TF (match_operand:TF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, TFmode, operands)"
--- 7526,7532 ----
     operands[0] = gen_rtx_REG (SImode, true_regnum (operands[0]) + 2);")
  
  (define_insn "*abstf2_if"
!   [(set (match_operand:TF 0 "nonimmediate_operand" "=f,rm")
  	(abs:TF (match_operand:TF 1 "nonimmediate_operand" "0,0")))
     (clobber (reg:CC 17))]
    "TARGET_80387 && ix86_unary_operator_ok (ABS, TFmode, operands)"
***************
*** 9522,9529 ****
  (define_insn "*fp_jcc_1_sse"
    [(set (pc)
  	(if_then_else (match_operator 0 "comparison_operator"
! 			[(match_operand 1 "register_operand" "f#x,x#f")
! 			 (match_operand 2 "nonimmediate_operand" "f#x,xm#f")])
  	  (label_ref (match_operand 3 "" ""))
  	  (pc)))
     (clobber (reg:CCFP 18))
--- 9522,9529 ----
  (define_insn "*fp_jcc_1_sse"
    [(set (pc)
  	(if_then_else (match_operator 0 "comparison_operator"
! 			[(match_operand 1 "register_operand" "f,x")
! 			 (match_operand 2 "nonimmediate_operand" "f,xm")])
  	  (label_ref (match_operand 3 "" ""))
  	  (pc)))
     (clobber (reg:CCFP 18))
***************
*** 9564,9571 ****
  (define_insn "*fp_jcc_2_sse"
    [(set (pc)
  	(if_then_else (match_operator 0 "comparison_operator"
! 			[(match_operand 1 "register_operand" "f#x,x#f")
! 			 (match_operand 2 "nonimmediate_operand" "f#x,xm#f")])
  	  (pc)
  	  (label_ref (match_operand 3 "" ""))))
     (clobber (reg:CCFP 18))
--- 9564,9571 ----
  (define_insn "*fp_jcc_2_sse"
    [(set (pc)
  	(if_then_else (match_operator 0 "comparison_operator"
! 			[(match_operand 1 "register_operand" "f,x")
! 			 (match_operand 2 "nonimmediate_operand" "f,xm")])
  	  (pc)
  	  (label_ref (match_operand 3 "" ""))))
     (clobber (reg:CCFP 18))
***************
*** 10340,10349 ****
  ;; Gcc is slightly more smart about handling normal two address instructions
  ;; so use special patterns for add and mull.
  (define_insn "*fop_sf_comm"
!   [(set (match_operand:SF 0 "register_operand" "=f#x,x#f")
  	(match_operator:SF 3 "binary_fp_operator"
  			[(match_operand:SF 1 "register_operand" "%0,0")
! 			 (match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))]
    "TARGET_80387 && (!TARGET_SSE || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
    "* return output_387_binary_op (insn, operands);"
--- 10340,10349 ----
  ;; Gcc is slightly more smart about handling normal two address instructions
  ;; so use special patterns for add and mull.
  (define_insn "*fop_sf_comm"
!   [(set (match_operand:SF 0 "register_operand" "=f,x")
  	(match_operator:SF 3 "binary_fp_operator"
  			[(match_operand:SF 1 "register_operand" "%0,0")
! 			 (match_operand:SF 2 "nonimmediate_operand" "fm,xm")]))]
    "TARGET_80387 && (!TARGET_SSE || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
    "* return output_387_binary_op (insn, operands);"
***************
*** 10366,10375 ****
     (set_attr "mode" "SF")])
  
  (define_insn "*fop_df_comm"
!   [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f")
  	(match_operator:DF 3 "binary_fp_operator"
  			[(match_operand:DF 1 "register_operand" "%0,0")
! 			 (match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))]
    "TARGET_80387 && (!TARGET_SSE2 || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
    "* return output_387_binary_op (insn, operands);"
--- 10366,10375 ----
     (set_attr "mode" "SF")])
  
  (define_insn "*fop_df_comm"
!   [(set (match_operand:DF 0 "register_operand" "=f,Y")
  	(match_operator:DF 3 "binary_fp_operator"
  			[(match_operand:DF 1 "register_operand" "%0,0")
! 			 (match_operand:DF 2 "nonimmediate_operand" "fm,Ym")]))]
    "TARGET_80387 && (!TARGET_SSE2 || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
    "* return output_387_binary_op (insn, operands);"
***************
*** 10422,10428 ****
    [(set (match_operand:SF 0 "register_operand" "=f,f,x")
  	(match_operator:SF 3 "binary_fp_operator"
  			[(match_operand:SF 1 "nonimmediate_operand" "0,fm,0")
! 			 (match_operand:SF 2 "nonimmediate_operand" "fm,0,xm#f")]))]
    "TARGET_80387 && (!TARGET_SSE || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'
     && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
--- 10422,10428 ----
    [(set (match_operand:SF 0 "register_operand" "=f,f,x")
  	(match_operator:SF 3 "binary_fp_operator"
  			[(match_operand:SF 1 "nonimmediate_operand" "0,fm,0")
! 			 (match_operand:SF 2 "nonimmediate_operand" "fm,0,xm")]))]
    "TARGET_80387 && (!TARGET_SSE || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'
     && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
***************
*** 10487,10496 ****
     (set_attr "mode" "SI")])
  
  (define_insn "*fop_df_1"
!   [(set (match_operand:DF 0 "register_operand" "=f#Y,f#Y,Y#f")
  	(match_operator:DF 3 "binary_fp_operator"
  			[(match_operand:DF 1 "nonimmediate_operand" "0,fm,0")
! 			 (match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym#f")]))]
    "TARGET_80387 && (!TARGET_SSE2 || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'
     && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
--- 10487,10496 ----
     (set_attr "mode" "SI")])
  
  (define_insn "*fop_df_1"
!   [(set (match_operand:DF 0 "register_operand" "=f,f,Y")
  	(match_operator:DF 3 "binary_fp_operator"
  			[(match_operand:DF 1 "nonimmediate_operand" "0,fm,0")
! 			 (match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym")]))]
    "TARGET_80387 && (!TARGET_SSE2 || TARGET_MIX_SSE_I387)
     && GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'
     && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
***************
*** 10880,10887 ****
  }")
  
  (define_insn "sqrtsf2_1"
!   [(set (match_operand:SF 0 "register_operand" "=f#x,x#f")
! 	(sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0#x,xm#f")))]
    "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
     && (TARGET_SSE && TARGET_MIX_SSE_I387)"
    "@
--- 10880,10887 ----
  }")
  
  (define_insn "sqrtsf2_1"
!   [(set (match_operand:SF 0 "register_operand" "=f,x")
! 	(sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0,xm")))]
    "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
     && (TARGET_SSE && TARGET_MIX_SSE_I387)"
    "@
***************
*** 10921,10928 ****
  }")
  
  (define_insn "sqrtdf2_1"
!   [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f")
! 	(sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0#Y,Ym#f")))]
    "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
     && (TARGET_SSE2 && TARGET_MIX_SSE_I387)"
    "@
--- 10921,10928 ----
  }")
  
  (define_insn "sqrtdf2_1"
!   [(set (match_operand:DF 0 "register_operand" "=f,Y")
! 	(sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0,Ym")))]
    "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
     && (TARGET_SSE2 && TARGET_MIX_SSE_I387)"
    "@


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