Lines 946-953
Link Here
|
946 |
|
946 |
|
947 |
(define_insn "*cmpfp_i_mixed" |
947 |
(define_insn "*cmpfp_i_mixed" |
948 |
[(set (reg:CCFP FLAGS_REG) |
948 |
[(set (reg:CCFP FLAGS_REG) |
949 |
(compare:CCFP (match_operand 0 "register_operand" "f#x,x#f") |
949 |
(compare:CCFP (match_operand 0 "register_operand" "f,x") |
950 |
(match_operand 1 "nonimmediate_operand" "f#x,xm#f")))] |
950 |
(match_operand 1 "nonimmediate_operand" "f,xm")))] |
951 |
"TARGET_MIX_SSE_I387 |
951 |
"TARGET_MIX_SSE_I387 |
952 |
&& SSE_FLOAT_MODE_P (GET_MODE (operands[0])) |
952 |
&& SSE_FLOAT_MODE_P (GET_MODE (operands[0])) |
953 |
&& GET_MODE (operands[0]) == GET_MODE (operands[1])" |
953 |
&& GET_MODE (operands[0]) == GET_MODE (operands[1])" |
Lines 995-1002
Link Here
|
995 |
|
995 |
|
996 |
(define_insn "*cmpfp_iu_mixed" |
996 |
(define_insn "*cmpfp_iu_mixed" |
997 |
[(set (reg:CCFPU FLAGS_REG) |
997 |
[(set (reg:CCFPU FLAGS_REG) |
998 |
(compare:CCFPU (match_operand 0 "register_operand" "f#x,x#f") |
998 |
(compare:CCFPU (match_operand 0 "register_operand" "f,x") |
999 |
(match_operand 1 "nonimmediate_operand" "f#x,xm#f")))] |
999 |
(match_operand 1 "nonimmediate_operand" "f,xm")))] |
1000 |
"TARGET_MIX_SSE_I387 |
1000 |
"TARGET_MIX_SSE_I387 |
1001 |
&& SSE_FLOAT_MODE_P (GET_MODE (operands[0])) |
1001 |
&& SSE_FLOAT_MODE_P (GET_MODE (operands[0])) |
1002 |
&& GET_MODE (operands[0]) == GET_MODE (operands[1])" |
1002 |
&& GET_MODE (operands[0]) == GET_MODE (operands[1])" |
Lines 2197-2203
Link Here
|
2197 |
|
2197 |
|
2198 |
(define_insn "*pushsf" |
2198 |
(define_insn "*pushsf" |
2199 |
[(set (match_operand:SF 0 "push_operand" "=<,<,<") |
2199 |
[(set (match_operand:SF 0 "push_operand" "=<,<,<") |
2200 |
(match_operand:SF 1 "general_no_elim_operand" "f#rx,rFm#fx,x#rf"))] |
2200 |
(match_operand:SF 1 "general_no_elim_operand" "f,rFm,x"))] |
2201 |
"!TARGET_64BIT" |
2201 |
"!TARGET_64BIT" |
2202 |
{ |
2202 |
{ |
2203 |
/* Anything else should be already split before reg-stack. */ |
2203 |
/* Anything else should be already split before reg-stack. */ |
Lines 2210-2216
Link Here
|
2210 |
|
2210 |
|
2211 |
(define_insn "*pushsf_rex64" |
2211 |
(define_insn "*pushsf_rex64" |
2212 |
[(set (match_operand:SF 0 "push_operand" "=X,X,X") |
2212 |
[(set (match_operand:SF 0 "push_operand" "=X,X,X") |
2213 |
(match_operand:SF 1 "nonmemory_no_elim_operand" "f#rx,rF#fx,x#rf"))] |
2213 |
(match_operand:SF 1 "nonmemory_no_elim_operand" "f,rF,x"))] |
2214 |
"TARGET_64BIT" |
2214 |
"TARGET_64BIT" |
2215 |
{ |
2215 |
{ |
2216 |
/* Anything else should be already split before reg-stack. */ |
2216 |
/* Anything else should be already split before reg-stack. */ |
Lines 2250-2258
Link Here
|
2250 |
|
2250 |
|
2251 |
(define_insn "*movsf_1" |
2251 |
(define_insn "*movsf_1" |
2252 |
[(set (match_operand:SF 0 "nonimmediate_operand" |
2252 |
[(set (match_operand:SF 0 "nonimmediate_operand" |
2253 |
"=f#xr,m ,f#xr,r#xf ,m ,x#rf,x#rf,x#rf ,m ,!*y,!rm,!*y") |
2253 |
"=f,m ,f,r,m ,x,x,x,m ,!*y,!rm,!*y") |
2254 |
(match_operand:SF 1 "general_operand" |
2254 |
(match_operand:SF 1 "general_operand" |
2255 |
"fm#rx,f#rx,G ,rmF#fx,Fr#fx,C ,x ,xm#rf,x#rf,rm ,*y ,*y"))] |
2255 |
"fm,f,G ,rmF,Fr,C ,x ,xm,x,rm ,*y ,*y"))] |
2256 |
"!(MEM_P (operands[0]) && MEM_P (operands[1])) |
2256 |
"!(MEM_P (operands[0]) && MEM_P (operands[1])) |
2257 |
&& (reload_in_progress || reload_completed |
2257 |
&& (reload_in_progress || reload_completed |
2258 |
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) |
2258 |
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) |
Lines 2365-2371
Link Here
|
2365 |
|
2365 |
|
2366 |
(define_insn "*pushdf_nointeger" |
2366 |
(define_insn "*pushdf_nointeger" |
2367 |
[(set (match_operand:DF 0 "push_operand" "=<,<,<,<") |
2367 |
[(set (match_operand:DF 0 "push_operand" "=<,<,<,<") |
2368 |
(match_operand:DF 1 "general_no_elim_operand" "f#Y,Fo#fY,*r#fY,Y#f"))] |
2368 |
(match_operand:DF 1 "general_no_elim_operand" "f,Fo,*r,Y"))] |
2369 |
"!TARGET_64BIT && !TARGET_INTEGER_DFMODE_MOVES" |
2369 |
"!TARGET_64BIT && !TARGET_INTEGER_DFMODE_MOVES" |
2370 |
{ |
2370 |
{ |
2371 |
/* This insn should be already split before reg-stack. */ |
2371 |
/* This insn should be already split before reg-stack. */ |
Lines 2377-2383
Link Here
|
2377 |
|
2377 |
|
2378 |
(define_insn "*pushdf_integer" |
2378 |
(define_insn "*pushdf_integer" |
2379 |
[(set (match_operand:DF 0 "push_operand" "=<,<,<") |
2379 |
[(set (match_operand:DF 0 "push_operand" "=<,<,<") |
2380 |
(match_operand:DF 1 "general_no_elim_operand" "f#rY,rFo#fY,Y#rf"))] |
2380 |
(match_operand:DF 1 "general_no_elim_operand" "f,rFo,Y"))] |
2381 |
"TARGET_64BIT || TARGET_INTEGER_DFMODE_MOVES" |
2381 |
"TARGET_64BIT || TARGET_INTEGER_DFMODE_MOVES" |
2382 |
{ |
2382 |
{ |
2383 |
/* This insn should be already split before reg-stack. */ |
2383 |
/* This insn should be already split before reg-stack. */ |
Lines 2417-2425
Link Here
|
2417 |
|
2417 |
|
2418 |
(define_insn "*movdf_nointeger" |
2418 |
(define_insn "*movdf_nointeger" |
2419 |
[(set (match_operand:DF 0 "nonimmediate_operand" |
2419 |
[(set (match_operand:DF 0 "nonimmediate_operand" |
2420 |
"=f#Y,m ,f#Y,*r ,o ,Y*x#f,Y*x#f,Y*x#f ,m ") |
2420 |
"=f,m ,f,*r ,o ,Y*x,Y*x,Y*x,m ") |
2421 |
(match_operand:DF 1 "general_operand" |
2421 |
(match_operand:DF 1 "general_operand" |
2422 |
"fm#Y,f#Y,G ,*roF,F*r,C ,Y*x#f,HmY*x#f,Y*x#f"))] |
2422 |
"fm,f,G ,*roF,F*r,C ,Y*x,HmY*x,Y*x"))] |
2423 |
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) |
2423 |
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) |
2424 |
&& ((optimize_size || !TARGET_INTEGER_DFMODE_MOVES) && !TARGET_64BIT) |
2424 |
&& ((optimize_size || !TARGET_INTEGER_DFMODE_MOVES) && !TARGET_64BIT) |
2425 |
&& (reload_in_progress || reload_completed |
2425 |
&& (reload_in_progress || reload_completed |
Lines 2537-2545
Link Here
|
2537 |
|
2537 |
|
2538 |
(define_insn "*movdf_integer" |
2538 |
(define_insn "*movdf_integer" |
2539 |
[(set (match_operand:DF 0 "nonimmediate_operand" |
2539 |
[(set (match_operand:DF 0 "nonimmediate_operand" |
2540 |
"=f#Yr,m ,f#Yr,r#Yf ,o ,Y*x#rf,Y*x#rf,Y*x#rf,m") |
2540 |
"=f,m ,f,r,o ,Y*x,Y*x,Y*x,m") |
2541 |
(match_operand:DF 1 "general_operand" |
2541 |
(match_operand:DF 1 "general_operand" |
2542 |
"fm#Yr,f#Yr,G ,roF#Yf,Fr#Yf,C ,Y*x#rf,m ,Y*x#rf"))] |
2542 |
"fm,f,G ,roF,Fr,C ,Y*x,m ,Y*x"))] |
2543 |
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) |
2543 |
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) |
2544 |
&& ((!optimize_size && TARGET_INTEGER_DFMODE_MOVES) || TARGET_64BIT) |
2544 |
&& ((!optimize_size && TARGET_INTEGER_DFMODE_MOVES) || TARGET_64BIT) |
2545 |
&& (reload_in_progress || reload_completed |
2545 |
&& (reload_in_progress || reload_completed |
Lines 2712-2718
Link Here
|
2712 |
|
2712 |
|
2713 |
(define_insn "*pushxf_integer" |
2713 |
(define_insn "*pushxf_integer" |
2714 |
[(set (match_operand:XF 0 "push_operand" "=<,<") |
2714 |
[(set (match_operand:XF 0 "push_operand" "=<,<") |
2715 |
(match_operand:XF 1 "general_no_elim_operand" "f#r,ro#f"))] |
2715 |
(match_operand:XF 1 "general_no_elim_operand" "f,ro"))] |
2716 |
"!optimize_size" |
2716 |
"!optimize_size" |
2717 |
{ |
2717 |
{ |
2718 |
/* This insn should be already split before reg-stack. */ |
2718 |
/* This insn should be already split before reg-stack. */ |
Lines 2784-2791
Link Here
|
2784 |
(set_attr "mode" "XF,XF,XF,SI,SI")]) |
2784 |
(set_attr "mode" "XF,XF,XF,SI,SI")]) |
2785 |
|
2785 |
|
2786 |
(define_insn "*movxf_integer" |
2786 |
(define_insn "*movxf_integer" |
2787 |
[(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,m,f#r,r#f,o") |
2787 |
[(set (match_operand:XF 0 "nonimmediate_operand" "=f,m,f,r,o") |
2788 |
(match_operand:XF 1 "general_operand" "fm#r,f#r,G,roF#f,Fr#f"))] |
2788 |
(match_operand:XF 1 "general_operand" "fm,f,G,roF,Fr"))] |
2789 |
"!optimize_size |
2789 |
"!optimize_size |
2790 |
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) |
2790 |
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) |
2791 |
&& (reload_in_progress || reload_completed |
2791 |
&& (reload_in_progress || reload_completed |
Lines 3508-3515
Link Here
|
3508 |
}) |
3508 |
}) |
3509 |
|
3509 |
|
3510 |
(define_insn "*extendsfdf2_mixed" |
3510 |
(define_insn "*extendsfdf2_mixed" |
3511 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,m#fY,Y#f") |
3511 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,Y") |
3512 |
(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm#Y,f#Y,mY#f")))] |
3512 |
(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,f,mY")))] |
3513 |
"TARGET_SSE2 && TARGET_MIX_SSE_I387 |
3513 |
"TARGET_SSE2 && TARGET_MIX_SSE_I387 |
3514 |
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" |
3514 |
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" |
3515 |
{ |
3515 |
{ |
Lines 3824-3830
Link Here
|
3824 |
}) |
3824 |
}) |
3825 |
|
3825 |
|
3826 |
(define_insn "*truncxfsf2_mixed" |
3826 |
(define_insn "*truncxfsf2_mixed" |
3827 |
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#rx,?r#fx,?x#rf") |
3827 |
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?r,?x") |
3828 |
(float_truncate:SF |
3828 |
(float_truncate:SF |
3829 |
(match_operand:XF 1 "register_operand" "f,f,f,f"))) |
3829 |
(match_operand:XF 1 "register_operand" "f,f,f,f"))) |
3830 |
(clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m"))] |
3830 |
(clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m"))] |
Lines 3851-3857
Link Here
|
3851 |
(set_attr "mode" "SF")]) |
3851 |
(set_attr "mode" "SF")]) |
3852 |
|
3852 |
|
3853 |
(define_insn "*truncxfsf2_i387" |
3853 |
(define_insn "*truncxfsf2_i387" |
3854 |
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#r,?r#f") |
3854 |
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?r") |
3855 |
(float_truncate:SF |
3855 |
(float_truncate:SF |
3856 |
(match_operand:XF 1 "register_operand" "f,f,f"))) |
3856 |
(match_operand:XF 1 "register_operand" "f,f,f"))) |
3857 |
(clobber (match_operand:SF 2 "memory_operand" "=X,m,m"))] |
3857 |
(clobber (match_operand:SF 2 "memory_operand" "=X,m,m"))] |
Lines 3922-3928
Link Here
|
3922 |
}) |
3922 |
}) |
3923 |
|
3923 |
|
3924 |
(define_insn "*truncxfdf2_mixed" |
3924 |
(define_insn "*truncxfdf2_mixed" |
3925 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#rY,?r#fY,?Y#rf") |
3925 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?r,?Y") |
3926 |
(float_truncate:DF |
3926 |
(float_truncate:DF |
3927 |
(match_operand:XF 1 "register_operand" "f,f,f,f"))) |
3927 |
(match_operand:XF 1 "register_operand" "f,f,f,f"))) |
3928 |
(clobber (match_operand:DF 2 "memory_operand" "=X,m,m,m"))] |
3928 |
(clobber (match_operand:DF 2 "memory_operand" "=X,m,m,m"))] |
Lines 3949-3955
Link Here
|
3949 |
(set_attr "mode" "DF")]) |
3949 |
(set_attr "mode" "DF")]) |
3950 |
|
3950 |
|
3951 |
(define_insn "*truncxfdf2_i387" |
3951 |
(define_insn "*truncxfdf2_i387" |
3952 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#r,?r#f") |
3952 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?r") |
3953 |
(float_truncate:DF |
3953 |
(float_truncate:DF |
3954 |
(match_operand:XF 1 "register_operand" "f,f,f"))) |
3954 |
(match_operand:XF 1 "register_operand" "f,f,f"))) |
3955 |
(clobber (match_operand:DF 2 "memory_operand" "=X,m,m"))] |
3955 |
(clobber (match_operand:DF 2 "memory_operand" "=X,m,m"))] |
Lines 4423-4429
Link Here
|
4423 |
"") |
4423 |
"") |
4424 |
|
4424 |
|
4425 |
(define_insn "*floatsisf2_mixed" |
4425 |
(define_insn "*floatsisf2_mixed" |
4426 |
[(set (match_operand:SF 0 "register_operand" "=f#x,?f#x,x#f,x#f") |
4426 |
[(set (match_operand:SF 0 "register_operand" "=f,?f,x,x") |
4427 |
(float:SF (match_operand:SI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4427 |
(float:SF (match_operand:SI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4428 |
"TARGET_MIX_SSE_I387" |
4428 |
"TARGET_MIX_SSE_I387" |
4429 |
"@ |
4429 |
"@ |
Lines 4466-4472
Link Here
|
4466 |
"") |
4466 |
"") |
4467 |
|
4467 |
|
4468 |
(define_insn "*floatdisf2_mixed" |
4468 |
(define_insn "*floatdisf2_mixed" |
4469 |
[(set (match_operand:SF 0 "register_operand" "=f#x,?f#x,x#f,x#f") |
4469 |
[(set (match_operand:SF 0 "register_operand" "=f,?f,x,x") |
4470 |
(float:SF (match_operand:DI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4470 |
(float:SF (match_operand:DI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4471 |
"TARGET_64BIT && TARGET_MIX_SSE_I387" |
4471 |
"TARGET_64BIT && TARGET_MIX_SSE_I387" |
4472 |
"@ |
4472 |
"@ |
Lines 4534-4540
Link Here
|
4534 |
"") |
4534 |
"") |
4535 |
|
4535 |
|
4536 |
(define_insn "*floatsidf2_mixed" |
4536 |
(define_insn "*floatsidf2_mixed" |
4537 |
[(set (match_operand:DF 0 "register_operand" "=f#Y,?f#Y,Y#f,Y#f") |
4537 |
[(set (match_operand:DF 0 "register_operand" "=f,?f,Y,Y") |
4538 |
(float:DF (match_operand:SI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4538 |
(float:DF (match_operand:SI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4539 |
"TARGET_SSE2 && TARGET_MIX_SSE_I387" |
4539 |
"TARGET_SSE2 && TARGET_MIX_SSE_I387" |
4540 |
"@ |
4540 |
"@ |
Lines 4577-4583
Link Here
|
4577 |
"") |
4577 |
"") |
4578 |
|
4578 |
|
4579 |
(define_insn "*floatdidf2_mixed" |
4579 |
(define_insn "*floatdidf2_mixed" |
4580 |
[(set (match_operand:DF 0 "register_operand" "=f#Y,?f#Y,Y#f,Y#f") |
4580 |
[(set (match_operand:DF 0 "register_operand" "=f,?f,Y,Y") |
4581 |
(float:DF (match_operand:DI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4581 |
(float:DF (match_operand:DI 1 "nonimmediate_operand" "m,r,r,mr")))] |
4582 |
"TARGET_64BIT && TARGET_SSE2 && TARGET_MIX_SSE_I387" |
4582 |
"TARGET_64BIT && TARGET_SSE2 && TARGET_MIX_SSE_I387" |
4583 |
"@ |
4583 |
"@ |
Lines 9383-9391
Link Here
|
9383 |
"ix86_expand_fp_absneg_operator (ABS, SFmode, operands); DONE;") |
9383 |
"ix86_expand_fp_absneg_operator (ABS, SFmode, operands); DONE;") |
9384 |
|
9384 |
|
9385 |
(define_insn "*absnegsf2_mixed" |
9385 |
(define_insn "*absnegsf2_mixed" |
9386 |
[(set (match_operand:SF 0 "nonimmediate_operand" "=x#f,x#f,f#x,rm") |
9386 |
[(set (match_operand:SF 0 "nonimmediate_operand" "=x,x,f,rm") |
9387 |
(match_operator:SF 3 "absneg_operator" |
9387 |
(match_operator:SF 3 "absneg_operator" |
9388 |
[(match_operand:SF 1 "nonimmediate_operand" "0 ,x#f,0 ,0")])) |
9388 |
[(match_operand:SF 1 "nonimmediate_operand" "0 ,x,0 ,0")])) |
9389 |
(use (match_operand:V4SF 2 "nonimmediate_operand" "xm ,0 ,X ,X")) |
9389 |
(use (match_operand:V4SF 2 "nonimmediate_operand" "xm ,0 ,X ,X")) |
9390 |
(clobber (reg:CC FLAGS_REG))] |
9390 |
(clobber (reg:CC FLAGS_REG))] |
9391 |
"TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
9391 |
"TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
Lines 9479-9487
Link Here
|
9479 |
"ix86_expand_fp_absneg_operator (ABS, DFmode, operands); DONE;") |
9479 |
"ix86_expand_fp_absneg_operator (ABS, DFmode, operands); DONE;") |
9480 |
|
9480 |
|
9481 |
(define_insn "*absnegdf2_mixed" |
9481 |
(define_insn "*absnegdf2_mixed" |
9482 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=Y#f,Y#f,f#Y,rm") |
9482 |
[(set (match_operand:DF 0 "nonimmediate_operand" "=Y,Y,f,rm") |
9483 |
(match_operator:DF 3 "absneg_operator" |
9483 |
(match_operator:DF 3 "absneg_operator" |
9484 |
[(match_operand:DF 1 "nonimmediate_operand" "0 ,Y#f,0 ,0")])) |
9484 |
[(match_operand:DF 1 "nonimmediate_operand" "0 ,Y,0 ,0")])) |
9485 |
(use (match_operand:V2DF 2 "nonimmediate_operand" "Ym ,0 ,X ,X")) |
9485 |
(use (match_operand:V2DF 2 "nonimmediate_operand" "Ym ,0 ,X ,X")) |
9486 |
(clobber (reg:CC FLAGS_REG))] |
9486 |
(clobber (reg:CC FLAGS_REG))] |
9487 |
"TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
9487 |
"TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
Lines 12723-12730
Link Here
|
12723 |
(define_insn "*fp_jcc_1_mixed" |
12723 |
(define_insn "*fp_jcc_1_mixed" |
12724 |
[(set (pc) |
12724 |
[(set (pc) |
12725 |
(if_then_else (match_operator 0 "comparison_operator" |
12725 |
(if_then_else (match_operator 0 "comparison_operator" |
12726 |
[(match_operand 1 "register_operand" "f#x,x#f") |
12726 |
[(match_operand 1 "register_operand" "f,x") |
12727 |
(match_operand 2 "nonimmediate_operand" "f#x,xm#f")]) |
12727 |
(match_operand 2 "nonimmediate_operand" "f,xm")]) |
12728 |
(label_ref (match_operand 3 "" "")) |
12728 |
(label_ref (match_operand 3 "" "")) |
12729 |
(pc))) |
12729 |
(pc))) |
12730 |
(clobber (reg:CCFP FPSR_REG)) |
12730 |
(clobber (reg:CCFP FPSR_REG)) |
Lines 12768-12775
Link Here
|
12768 |
(define_insn "*fp_jcc_2_mixed" |
12768 |
(define_insn "*fp_jcc_2_mixed" |
12769 |
[(set (pc) |
12769 |
[(set (pc) |
12770 |
(if_then_else (match_operator 0 "comparison_operator" |
12770 |
(if_then_else (match_operator 0 "comparison_operator" |
12771 |
[(match_operand 1 "register_operand" "f#x,x#f") |
12771 |
[(match_operand 1 "register_operand" "f,x") |
12772 |
(match_operand 2 "nonimmediate_operand" "f#x,xm#f")]) |
12772 |
(match_operand 2 "nonimmediate_operand" "f,xm")]) |
12773 |
(pc) |
12773 |
(pc) |
12774 |
(label_ref (match_operand 3 "" "")))) |
12774 |
(label_ref (match_operand 3 "" "")))) |
12775 |
(clobber (reg:CCFP FPSR_REG)) |
12775 |
(clobber (reg:CCFP FPSR_REG)) |
Lines 13906-13915
Link Here
|
13906 |
;; so use special patterns for add and mull. |
13906 |
;; so use special patterns for add and mull. |
13907 |
|
13907 |
|
13908 |
(define_insn "*fop_sf_comm_mixed" |
13908 |
(define_insn "*fop_sf_comm_mixed" |
13909 |
[(set (match_operand:SF 0 "register_operand" "=f#x,x#f") |
13909 |
[(set (match_operand:SF 0 "register_operand" "=f,x") |
13910 |
(match_operator:SF 3 "binary_fp_operator" |
13910 |
(match_operator:SF 3 "binary_fp_operator" |
13911 |
[(match_operand:SF 1 "nonimmediate_operand" "%0,0") |
13911 |
[(match_operand:SF 1 "nonimmediate_operand" "%0,0") |
13912 |
(match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))] |
13912 |
(match_operand:SF 2 "nonimmediate_operand" "fm,xm")]))] |
13913 |
"TARGET_MIX_SSE_I387 |
13913 |
"TARGET_MIX_SSE_I387 |
13914 |
&& COMMUTATIVE_ARITH_P (operands[3]) |
13914 |
&& COMMUTATIVE_ARITH_P (operands[3]) |
13915 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13915 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
Lines 13958-13964
Link Here
|
13958 |
[(set (match_operand:SF 0 "register_operand" "=f,f,x") |
13958 |
[(set (match_operand:SF 0 "register_operand" "=f,f,x") |
13959 |
(match_operator:SF 3 "binary_fp_operator" |
13959 |
(match_operator:SF 3 "binary_fp_operator" |
13960 |
[(match_operand:SF 1 "nonimmediate_operand" "0,fm,0") |
13960 |
[(match_operand:SF 1 "nonimmediate_operand" "0,fm,0") |
13961 |
(match_operand:SF 2 "nonimmediate_operand" "fm,0,xm#f")]))] |
13961 |
(match_operand:SF 2 "nonimmediate_operand" "fm,0,xm")]))] |
13962 |
"TARGET_MIX_SSE_I387 |
13962 |
"TARGET_MIX_SSE_I387 |
13963 |
&& !COMMUTATIVE_ARITH_P (operands[3]) |
13963 |
&& !COMMUTATIVE_ARITH_P (operands[3]) |
13964 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
13964 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
Lines 14052-14061
Link Here
|
14052 |
(set_attr "mode" "<MODE>")]) |
14052 |
(set_attr "mode" "<MODE>")]) |
14053 |
|
14053 |
|
14054 |
(define_insn "*fop_df_comm_mixed" |
14054 |
(define_insn "*fop_df_comm_mixed" |
14055 |
[(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") |
14055 |
[(set (match_operand:DF 0 "register_operand" "=f,Y") |
14056 |
(match_operator:DF 3 "binary_fp_operator" |
14056 |
(match_operator:DF 3 "binary_fp_operator" |
14057 |
[(match_operand:DF 1 "nonimmediate_operand" "%0,0") |
14057 |
[(match_operand:DF 1 "nonimmediate_operand" "%0,0") |
14058 |
(match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))] |
14058 |
(match_operand:DF 2 "nonimmediate_operand" "fm,Ym")]))] |
14059 |
"TARGET_SSE2 && TARGET_MIX_SSE_I387 |
14059 |
"TARGET_SSE2 && TARGET_MIX_SSE_I387 |
14060 |
&& COMMUTATIVE_ARITH_P (operands[3]) |
14060 |
&& COMMUTATIVE_ARITH_P (operands[3]) |
14061 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
14061 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
Lines 14101-14110
Link Here
|
14101 |
(set_attr "mode" "DF")]) |
14101 |
(set_attr "mode" "DF")]) |
14102 |
|
14102 |
|
14103 |
(define_insn "*fop_df_1_mixed" |
14103 |
(define_insn "*fop_df_1_mixed" |
14104 |
[(set (match_operand:DF 0 "register_operand" "=f#Y,f#Y,Y#f") |
14104 |
[(set (match_operand:DF 0 "register_operand" "=f,f,Y") |
14105 |
(match_operator:DF 3 "binary_fp_operator" |
14105 |
(match_operator:DF 3 "binary_fp_operator" |
14106 |
[(match_operand:DF 1 "nonimmediate_operand" "0,fm,0") |
14106 |
[(match_operand:DF 1 "nonimmediate_operand" "0,fm,0") |
14107 |
(match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym#f")]))] |
14107 |
(match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym")]))] |
14108 |
"TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
14108 |
"TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387 |
14109 |
&& !COMMUTATIVE_ARITH_P (operands[3]) |
14109 |
&& !COMMUTATIVE_ARITH_P (operands[3]) |
14110 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
14110 |
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)" |
Lines 14419-14426
Link Here
|
14419 |
}) |
14419 |
}) |
14420 |
|
14420 |
|
14421 |
(define_insn "*sqrtsf2_mixed" |
14421 |
(define_insn "*sqrtsf2_mixed" |
14422 |
[(set (match_operand:SF 0 "register_operand" "=f#x,x#f") |
14422 |
[(set (match_operand:SF 0 "register_operand" "=f,x") |
14423 |
(sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0#x,xm#f")))] |
14423 |
(sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0,xm")))] |
14424 |
"TARGET_USE_FANCY_MATH_387 && TARGET_MIX_SSE_I387" |
14424 |
"TARGET_USE_FANCY_MATH_387 && TARGET_MIX_SSE_I387" |
14425 |
"@ |
14425 |
"@ |
14426 |
fsqrt |
14426 |
fsqrt |
Lines 14457-14464
Link Here
|
14457 |
}) |
14457 |
}) |
14458 |
|
14458 |
|
14459 |
(define_insn "*sqrtdf2_mixed" |
14459 |
(define_insn "*sqrtdf2_mixed" |
14460 |
[(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f") |
14460 |
[(set (match_operand:DF 0 "register_operand" "=f,Y") |
14461 |
(sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0#Y,Ym#f")))] |
14461 |
(sqrt:DF (match_operand:DF 1 "nonimmediate_operand" "0,Ym")))] |
14462 |
"TARGET_USE_FANCY_MATH_387 && TARGET_SSE2 && TARGET_MIX_SSE_I387" |
14462 |
"TARGET_USE_FANCY_MATH_387 && TARGET_SSE2 && TARGET_MIX_SSE_I387" |
14463 |
"@ |
14463 |
"@ |
14464 |
fsqrt |
14464 |
fsqrt |
Lines 17921-17931
Link Here
|
17921 |
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;") |
17921 |
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;") |
17922 |
|
17922 |
|
17923 |
(define_insn "*movsfcc_1_387" |
17923 |
(define_insn "*movsfcc_1_387" |
17924 |
[(set (match_operand:SF 0 "register_operand" "=f#r,f#r,r#f,r#f") |
17924 |
[(set (match_operand:SF 0 "register_operand" "=f,f,r,r") |
17925 |
(if_then_else:SF (match_operator 1 "fcmov_comparison_operator" |
17925 |
(if_then_else:SF (match_operator 1 "fcmov_comparison_operator" |
17926 |
[(reg FLAGS_REG) (const_int 0)]) |
17926 |
[(reg FLAGS_REG) (const_int 0)]) |
17927 |
(match_operand:SF 2 "nonimmediate_operand" "f#r,0,rm#f,0") |
17927 |
(match_operand:SF 2 "nonimmediate_operand" "f,0,rm,0") |
17928 |
(match_operand:SF 3 "nonimmediate_operand" "0,f#r,0,rm#f")))] |
17928 |
(match_operand:SF 3 "nonimmediate_operand" "0,f,0,rm")))] |
17929 |
"TARGET_80387 && TARGET_CMOVE |
17929 |
"TARGET_80387 && TARGET_CMOVE |
17930 |
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" |
17930 |
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" |
17931 |
"@ |
17931 |
"@ |
Lines 17945-17955
Link Here
|
17945 |
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;") |
17945 |
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;") |
17946 |
|
17946 |
|
17947 |
(define_insn "*movdfcc_1" |
17947 |
(define_insn "*movdfcc_1" |
17948 |
[(set (match_operand:DF 0 "register_operand" "=f#r,f#r,&r#f,&r#f") |
17948 |
[(set (match_operand:DF 0 "register_operand" "=f,f,&r,&r") |
17949 |
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator" |
17949 |
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator" |
17950 |
[(reg FLAGS_REG) (const_int 0)]) |
17950 |
[(reg FLAGS_REG) (const_int 0)]) |
17951 |
(match_operand:DF 2 "nonimmediate_operand" "f#r,0,rm#f,0") |
17951 |
(match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0") |
17952 |
(match_operand:DF 3 "nonimmediate_operand" "0,f#r,0,rm#f")))] |
17952 |
(match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))] |
17953 |
"!TARGET_64BIT && TARGET_80387 && TARGET_CMOVE |
17953 |
"!TARGET_64BIT && TARGET_80387 && TARGET_CMOVE |
17954 |
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" |
17954 |
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" |
17955 |
"@ |
17955 |
"@ |
Lines 17961-17971
Link Here
|
17961 |
(set_attr "mode" "DF")]) |
17961 |
(set_attr "mode" "DF")]) |
17962 |
|
17962 |
|
17963 |
(define_insn "*movdfcc_1_rex64" |
17963 |
(define_insn "*movdfcc_1_rex64" |
17964 |
[(set (match_operand:DF 0 "register_operand" "=f#r,f#r,r#f,r#f") |
17964 |
[(set (match_operand:DF 0 "register_operand" "=f,f,r,r") |
17965 |
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator" |
17965 |
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator" |
17966 |
[(reg FLAGS_REG) (const_int 0)]) |
17966 |
[(reg FLAGS_REG) (const_int 0)]) |
17967 |
(match_operand:DF 2 "nonimmediate_operand" "f#r,0#r,rm#f,0#f") |
17967 |
(match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0") |
17968 |
(match_operand:DF 3 "nonimmediate_operand" "0#r,f#r,0#f,rm#f")))] |
17968 |
(match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))] |
17969 |
"TARGET_64BIT && TARGET_80387 && TARGET_CMOVE |
17969 |
"TARGET_64BIT && TARGET_80387 && TARGET_CMOVE |
17970 |
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" |
17970 |
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)" |
17971 |
"@ |
17971 |
"@ |