diff options
author | Richard Henderson <rth@redhat.com> | 2004-12-22 11:07:44 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-12-22 11:07:44 -0800 |
commit | 5b1f1e63f9f28e7ad8ca1b65ab4b5464ae20ee46 (patch) | |
tree | 1435fbf93ed10ad785839f34c37c945a67a73012 /gcc/config | |
parent | ad50bc8d803c56fc9ec9a81b70877e74d61c7c14 (diff) | |
download | gcc-5b1f1e63f9f28e7ad8ca1b65ab4b5464ae20ee46.zip gcc-5b1f1e63f9f28e7ad8ca1b65ab4b5464ae20ee46.tar.gz gcc-5b1f1e63f9f28e7ad8ca1b65ab4b5464ae20ee46.tar.bz2 |
i386.md (truncdfsf2): Don't create stack temp when using sse math only.
* config/i386/i386.md (truncdfsf2): Don't create stack temp when
using sse math only. Use truncdfsf2_with_temp.
(truncdfsf2_with_temp): New.
(truncdfsf_fast_i387): Rename from truncdfsf2_noop. Add memory
output alternative.
(truncdfsf_mixed): Rename from truncdfsf2_1_sse. Compress duplicate
alternatives.
(truncdfsf_fast_sse): Rename from truncdfsf2_2. Remove f alternative.
(truncdfsf2_3, truncdfsf2_sse_only): Remove.
(truncdfsf_i387): Rename from truncdfsf2_1. Compress duplicates.
(truncdfsf_fast_mixed): New.
(truncdfsf splitters): Remove all except the 387 load/store split.
(truncxfsf2_1, truncxfdf2_1): Unify enable constraint with
respect to TARGET_SSE2, TARGET_80387, TARGET_SSE_MATH and
TARGET_MIX_SSE_I387.
(*truncxf{s,d}f2_1): Rename to *truncxf{s,d}f2_mixed.
(truncxf{s,d}f2_noop) Rename to truncxf{d,s}f2_i387_noop.
(*truncxf{s,d}f2_i387): New patterns.
(*truncxf{s,d}f2_2): Rename to *truncxf{s,d}f2_i387_1.
(truncxf{s,d}f2, fmod{s,d}f3, drem{s,d}f3, log1p{s,d}f2,
rint{s,d}f2, floor{s,d}f2, ceil{s,d}f2, btrunc{s,d}f2,
nearbyint{s,d}f2): Use renamed patterns.
Co-Authored-By: Uros Bizjak <uros@kss-loka.si>
From-SVN: r92498
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.md | 338 |
1 files changed, 178 insertions, 160 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 285df84..156e65f 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -3636,46 +3636,40 @@ ;; insn. So we pretend we can output to a reg in order to get better ;; register preferencing, but we really use a stack slot. -(define_expand "truncdfsf2" - [(parallel [(set (match_operand:SF 0 "nonimmediate_operand" "") - (float_truncate:SF - (match_operand:DF 1 "register_operand" ""))) - (clobber (match_dup 2))])] - "TARGET_80387 || TARGET_SSE2" - " - if (!TARGET_80387) - { - emit_insn (gen_truncdfsf2_sse_only (operands[0], operands[1])); - DONE; - } - else if (flag_unsafe_math_optimizations) - { - rtx reg = REG_P (operands[0]) ? operands[0] : gen_reg_rtx (SFmode); - emit_insn (gen_truncdfsf2_noop (reg, operands[1])); - if (reg != operands[0]) - emit_move_insn (operands[0], reg); - DONE; - } - else - operands[2] = assign_386_stack_local (SFmode, 0); -") +;; Conversion from DFmode to SFmode. -(define_insn "truncdfsf2_noop" - [(set (match_operand:SF 0 "register_operand" "=f") - (float_truncate:SF (match_operand:DF 1 "register_operand" "f")))] - "TARGET_80387 && flag_unsafe_math_optimizations" +(define_expand "truncdfsf2" + [(set (match_operand:SF 0 "nonimmediate_operand" "") + (float_truncate:SF + (match_operand:DF 1 "nonimmediate_operand" "")))] + "TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH)" { - return output_387_reg_move (insn, operands); -} - [(set_attr "type" "fmov") - (set_attr "mode" "SF")]) + if (MEM_P (operands[0]) && MEM_P (operands[1])) + operands[1] = force_reg (DFmode, operands[1]); -(define_insn "*truncdfsf2_1" - [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#rx,?r#fx,?x#rf") - (float_truncate:SF - (match_operand:DF 1 "register_operand" "f,f,f,f"))) - (clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m"))] - "TARGET_80387 && !TARGET_SSE2" + if (TARGET_SSE2 && TARGET_SSE_MATH && !TARGET_MIX_SSE_I387) + ; + else if (flag_unsafe_math_optimizations) + ; + else + { + rtx temp = assign_386_stack_local (SFmode, 0); + emit_insn (gen_truncdfsf2_with_temp (operands[0], operands[1], temp)); + DONE; + } +}) + +(define_expand "truncdfsf2_with_temp" + [(parallel [(set (match_operand:SF 0 "" "") + (float_truncate:SF (match_operand:DF 1 "" ""))) + (clobber (match_operand:SF 2 "" ""))])] + "") + +(define_insn "*truncdfsf_fast_mixed" + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,f,Y") + (float_truncate:SF + (match_operand:DF 1 "nonimmediate_operand" "f ,f,Ym")))] + "TARGET_SSE2 && TARGET_MIX_SSE_I387 && flag_unsafe_math_optimizations" { switch (which_alternative) { @@ -3684,19 +3678,43 @@ return "fstp%z0\t%y0"; else return "fst%z0\t%y0"; + case 1: + return output_387_reg_move (insn, operands); + case 2: + return "cvtsd2ss\t{%1, %0|%0, %1}"; default: abort (); } } - [(set_attr "type" "fmov,multi,multi,multi") - (set_attr "mode" "SF,SF,SF,SF")]) + [(set_attr "type" "fmov,fmov,ssecvt") + (set_attr "mode" "SF")]) + +;; Yes, this one doesn't depend on flag_unsafe_math_optimizations, +;; because nothing we do here is unsafe. +(define_insn "*truncdfsf_fast_sse" + [(set (match_operand:SF 0 "nonimmediate_operand" "=Y") + (float_truncate:SF + (match_operand:DF 1 "nonimmediate_operand" "Ym")))] + "TARGET_SSE2 && TARGET_SSE_MATH" + "cvtsd2ss\t{%1, %0|%0, %1}" + [(set_attr "type" "ssecvt") + (set_attr "mode" "SF")]) + +(define_insn "*truncdfsf_fast_i387" + [(set (match_operand:SF 0 "nonimmediate_operand" "=fm") + (float_truncate:SF + (match_operand:DF 1 "nonimmediate_operand" "f")))] + "TARGET_80387 && flag_unsafe_math_optimizations" + "* return output_387_reg_move (insn, operands);" + [(set_attr "type" "fmov") + (set_attr "mode" "SF")]) -(define_insn "*truncdfsf2_1_sse" - [(set (match_operand:SF 0 "nonimmediate_operand" "=*!m#fxr,?f#xr,?r#fx,?x#fr,Y#fr") +(define_insn "*truncdfsf_mixed" + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?fx*r,Y") (float_truncate:SF - (match_operand:DF 1 "nonimmediate_operand" "f#Y,f#Y,f#Y,f#Y,mY#f"))) - (clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m,X"))] - "TARGET_80387 && TARGET_SSE2" + (match_operand:DF 1 "nonimmediate_operand" "f ,f ,Ym"))) + (clobber (match_operand:SF 2 "memory_operand" "=X,m ,X"))] + "TARGET_MIX_SSE_I387" { switch (which_alternative) { @@ -3705,96 +3723,53 @@ return "fstp%z0\t%y0"; else return "fst%z0\t%y0"; - case 4: + case 1: return "#"; + case 2: + return "cvtsd2ss\t{%1, %0|%0, %1}"; default: abort (); } } - [(set_attr "type" "fmov,multi,multi,multi,ssecvt") - (set_attr "mode" "SF,SF,SF,SF,DF")]) + [(set_attr "type" "fmov,multi,ssecvt") + (set_attr "mode" "SF")]) -(define_insn "*truncdfsf2_2" - [(set (match_operand:SF 0 "nonimmediate_operand" "=Y,Y,!m") +(define_insn "*truncdfsf_i387" + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?fx*r") (float_truncate:SF - (match_operand:DF 1 "nonimmediate_operand" "Y,mY,f#Y")))] - "TARGET_80387 && TARGET_SSE2 - && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)" + (match_operand:DF 1 "nonimmediate_operand" "f,f"))) + (clobber (match_operand:SF 2 "memory_operand" "=X,m"))] + "TARGET_80387" { switch (which_alternative) { case 0: - case 1: - return "cvtsd2ss\t{%1, %0|%0, %1}"; - case 2: if (find_regno_note (insn, REG_DEAD, REGNO (operands[1]))) return "fstp%z0\t%y0"; else return "fst%z0\t%y0"; + case 1: + return "#"; default: abort (); } } - [(set_attr "type" "ssecvt,ssecvt,fmov") - (set_attr "athlon_decode" "vector,double,*") - (set_attr "mode" "SF,SF,SF")]) - -(define_insn "*truncdfsf2_3" - [(set (match_operand:SF 0 "memory_operand" "=m") - (float_truncate:SF - (match_operand:DF 1 "register_operand" "f")))] - "TARGET_80387" -{ - if (find_regno_note (insn, REG_DEAD, REGNO (operands[1]))) - return "fstp%z0\t%y0"; - else - return "fst%z0\t%y0"; -} - [(set_attr "type" "fmov") - (set_attr "mode" "SF")]) - -(define_insn "truncdfsf2_sse_only" - [(set (match_operand:SF 0 "register_operand" "=Y,Y") - (float_truncate:SF - (match_operand:DF 1 "nonimmediate_operand" "Y,mY")))] - "!TARGET_80387 && TARGET_SSE2" - "cvtsd2ss\t{%1, %0|%0, %1}" - [(set_attr "type" "ssecvt") - (set_attr "athlon_decode" "vector,double") + [(set_attr "type" "fmov,multi") (set_attr "mode" "SF")]) (define_split - [(set (match_operand:SF 0 "memory_operand" "") - (float_truncate:SF - (match_operand:DF 1 "register_operand" ""))) - (clobber (match_operand:SF 2 "memory_operand" ""))] - "TARGET_80387" - [(set (match_dup 0) (float_truncate:SF (match_dup 1)))] - "") - -(define_split [(set (match_operand:SF 0 "register_operand" "") (float_truncate:SF - (match_operand:DF 1 "nonimmediate_operand" ""))) + (match_operand:DF 1 "fp_register_operand" ""))) (clobber (match_operand 2 "" ""))] - "TARGET_80387 && reload_completed - && SSE_REG_P (operands[0]) - && !STACK_REG_P (operands[1])" - [(const_int 0)] + "reload_completed" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (match_dup 2))] { - emit_insn (gen_truncdfsf2_sse_only (operands[0], operands[1])); - DONE; + operands[1] = gen_rtx_REG (SFmode, true_regnum (operands[1])); }) -(define_split - [(set (match_operand:SF 0 "register_operand" "") - (float_truncate:SF - (match_operand:DF 1 "fp_register_operand" ""))) - (clobber (match_operand:SF 2 "memory_operand" ""))] - "TARGET_80387 && reload_completed" - [(set (match_dup 2) (float_truncate:SF (match_dup 1))) - (set (match_dup 0) (match_dup 2))] - "") +;; Conversion from XFmode to SFmode. (define_expand "truncxfsf2" [(parallel [(set (match_operand:SF 0 "nonimmediate_operand" "") @@ -3802,20 +3777,41 @@ (match_operand:XF 1 "register_operand" ""))) (clobber (match_dup 2))])] "TARGET_80387" - " +{ if (flag_unsafe_math_optimizations) { rtx reg = REG_P (operands[0]) ? operands[0] : gen_reg_rtx (SFmode); - emit_insn (gen_truncxfsf2_noop (reg, operands[1])); + emit_insn (gen_truncxfsf2_i387_noop (reg, operands[1])); if (reg != operands[0]) emit_move_insn (operands[0], reg); DONE; } else operands[2] = assign_386_stack_local (SFmode, 0); - ") +}) -(define_insn "truncxfsf2_noop" +(define_insn "*truncxfsf2_mixed" + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#rx,?r#fx,?x#rf") + (float_truncate:SF + (match_operand:XF 1 "register_operand" "f,f,f,f"))) + (clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m"))] + "TARGET_MIX_SSE_I387" +{ + switch (which_alternative) + { + case 0: + if (find_regno_note (insn, REG_DEAD, REGNO (operands[1]))) + return "fstp%z0\t%y0"; + else + return "fst%z0\t%y0"; + default: + abort(); + } +} + [(set_attr "type" "fmov,multi,multi,multi") + (set_attr "mode" "SF")]) + +(define_insn "truncxfsf2_i387_noop" [(set (match_operand:SF 0 "register_operand" "=f") (float_truncate:SF (match_operand:XF 1 "register_operand" "f")))] "TARGET_80387 && flag_unsafe_math_optimizations" @@ -3825,11 +3821,11 @@ [(set_attr "type" "fmov") (set_attr "mode" "SF")]) -(define_insn "*truncxfsf2_1" - [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#rx,?r#fx,?x#rf") +(define_insn "*truncxfsf2_i387" + [(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f#r,?r#f") (float_truncate:SF - (match_operand:XF 1 "register_operand" "f,f,f,f"))) - (clobber (match_operand:SF 2 "memory_operand" "=X,m,m,m"))] + (match_operand:XF 1 "register_operand" "f,f,f"))) + (clobber (match_operand:SF 2 "memory_operand" "=X,m,m"))] "TARGET_80387" { switch (which_alternative) @@ -3840,13 +3836,13 @@ else return "fst%z0\t%y0"; default: - abort(); + abort (); } } - [(set_attr "type" "fmov,multi,multi,multi") + [(set_attr "type" "fmov,multi,multi") (set_attr "mode" "SF")]) -(define_insn "*truncxfsf2_2" +(define_insn "*truncxfsf2_i387_1" [(set (match_operand:SF 0 "memory_operand" "=m") (float_truncate:SF (match_operand:XF 1 "register_operand" "f")))] @@ -3861,44 +3857,68 @@ (set_attr "mode" "SF")]) (define_split - [(set (match_operand:SF 0 "memory_operand" "") + [(set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_operand:XF 1 "register_operand" ""))) (clobber (match_operand:SF 2 "memory_operand" ""))] - "TARGET_80387" - [(set (match_dup 0) (float_truncate:SF (match_dup 1)))] + "TARGET_80387 && reload_completed" + [(set (match_dup 2) (float_truncate:SF (match_dup 1))) + (set (match_dup 0) (match_dup 2))] "") (define_split - [(set (match_operand:SF 0 "register_operand" "") + [(set (match_operand:SF 0 "memory_operand" "") (float_truncate:SF (match_operand:XF 1 "register_operand" ""))) (clobber (match_operand:SF 2 "memory_operand" ""))] - "TARGET_80387 && reload_completed" - [(set (match_dup 2) (float_truncate:SF (match_dup 1))) - (set (match_dup 0) (match_dup 2))] + "TARGET_80387" + [(set (match_dup 0) (float_truncate:SF (match_dup 1)))] "") +;; Conversion from XFmode to DFmode. + (define_expand "truncxfdf2" [(parallel [(set (match_operand:DF 0 "nonimmediate_operand" "") (float_truncate:DF (match_operand:XF 1 "register_operand" ""))) (clobber (match_dup 2))])] "TARGET_80387" - " +{ if (flag_unsafe_math_optimizations) { rtx reg = REG_P (operands[0]) ? operands[0] : gen_reg_rtx (DFmode); - emit_insn (gen_truncxfdf2_noop (reg, operands[1])); + emit_insn (gen_truncxfdf2_i387_noop (reg, operands[1])); if (reg != operands[0]) emit_move_insn (operands[0], reg); DONE; } else operands[2] = assign_386_stack_local (DFmode, 0); - ") +}) -(define_insn "truncxfdf2_noop" +(define_insn "*truncxfdf2_mixed" + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#rY,?r#fY,?Y#rf") + (float_truncate:DF + (match_operand:XF 1 "register_operand" "f,f,f,f"))) + (clobber (match_operand:DF 2 "memory_operand" "=X,m,m,m"))] + "TARGET_SSE2 && TARGET_MIX_SSE_I387" +{ + switch (which_alternative) + { + case 0: + if (find_regno_note (insn, REG_DEAD, REGNO (operands[1]))) + return "fstp%z0\t%y0"; + else + return "fst%z0\t%y0"; + default: + abort(); + } + abort (); +} + [(set_attr "type" "fmov,multi,multi,multi") + (set_attr "mode" "DF")]) + +(define_insn "truncxfdf2_i387_noop" [(set (match_operand:DF 0 "register_operand" "=f") (float_truncate:DF (match_operand:XF 1 "register_operand" "f")))] "TARGET_80387 && flag_unsafe_math_optimizations" @@ -3908,11 +3928,11 @@ [(set_attr "type" "fmov") (set_attr "mode" "DF")]) -(define_insn "*truncxfdf2_1" - [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#rY,?r#fY,?Y#rf") +(define_insn "*truncxfdf2_i387" + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f#r,?r#f") (float_truncate:DF - (match_operand:XF 1 "register_operand" "f,f,f,f"))) - (clobber (match_operand:DF 2 "memory_operand" "=X,m,m,m"))] + (match_operand:XF 1 "register_operand" "f,f,f"))) + (clobber (match_operand:DF 2 "memory_operand" "=X,m,m"))] "TARGET_80387" { switch (which_alternative) @@ -3923,14 +3943,13 @@ else return "fst%z0\t%y0"; default: - abort(); + abort (); } - abort (); } - [(set_attr "type" "fmov,multi,multi,multi") + [(set_attr "type" "fmov,multi,multi") (set_attr "mode" "DF")]) -(define_insn "*truncxfdf2_2" +(define_insn "*truncxfdf2_i387_1" [(set (match_operand:DF 0 "memory_operand" "=m") (float_truncate:DF (match_operand:XF 1 "register_operand" "f")))] @@ -3945,24 +3964,23 @@ (set_attr "mode" "DF")]) (define_split - [(set (match_operand:DF 0 "memory_operand" "") + [(set (match_operand:DF 0 "register_operand" "") (float_truncate:DF (match_operand:XF 1 "register_operand" ""))) (clobber (match_operand:DF 2 "memory_operand" ""))] - "TARGET_80387" - [(set (match_dup 0) (float_truncate:DF (match_dup 1)))] + "TARGET_80387 && reload_completed" + [(set (match_dup 2) (float_truncate:DF (match_dup 1))) + (set (match_dup 0) (match_dup 2))] "") (define_split - [(set (match_operand:DF 0 "register_operand" "") + [(set (match_operand:DF 0 "memory_operand" "") (float_truncate:DF (match_operand:XF 1 "register_operand" ""))) (clobber (match_operand:DF 2 "memory_operand" ""))] - "TARGET_80387 && reload_completed" - [(set (match_dup 2) (float_truncate:DF (match_dup 1))) - (set (match_dup 0) (match_dup 2))] + "TARGET_80387" + [(set (match_dup 0) (float_truncate:DF (match_dup 1)))] "") - ;; %%% Break up all these bad boys. @@ -14746,7 +14764,7 @@ emit_insn (gen_fpremxf4 (op1, op2, op1, op2)); ix86_emit_fp_unordered_jump (label); - emit_insn (gen_truncxfsf2_noop (operands[0], op1)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op1)); DONE; }) @@ -14770,7 +14788,7 @@ emit_insn (gen_fpremxf4 (op1, op2, op1, op2)); ix86_emit_fp_unordered_jump (label); - emit_insn (gen_truncxfdf2_noop (operands[0], op1)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op1)); DONE; }) @@ -14829,7 +14847,7 @@ emit_insn (gen_fprem1xf4 (op1, op2, op1, op2)); ix86_emit_fp_unordered_jump (label); - emit_insn (gen_truncxfsf2_noop (operands[0], op1)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op1)); DONE; }) @@ -14853,7 +14871,7 @@ emit_insn (gen_fprem1xf4 (op1, op2, op1, op2)); ix86_emit_fp_unordered_jump (label); - emit_insn (gen_truncxfdf2_noop (operands[0], op1)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op1)); DONE; }) @@ -15679,7 +15697,7 @@ emit_insn (gen_extendsfxf2 (op1, operands[1])); ix86_emit_i387_log1p (op0, op1); - emit_insn (gen_truncxfsf2_noop (operands[0], op0)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0)); DONE; }) @@ -15694,7 +15712,7 @@ emit_insn (gen_extenddfxf2 (op1, operands[1])); ix86_emit_i387_log1p (op0, op1); - emit_insn (gen_truncxfdf2_noop (operands[0], op0)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0)); DONE; }) @@ -16175,7 +16193,7 @@ emit_insn (gen_extenddfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2 (op0, op1)); - emit_insn (gen_truncxfdf2_noop (operands[0], op0)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0)); DONE; }) @@ -16191,7 +16209,7 @@ emit_insn (gen_extendsfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2 (op0, op1)); - emit_insn (gen_truncxfsf2_noop (operands[0], op0)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0)); DONE; }) @@ -16234,7 +16252,7 @@ emit_insn (gen_extenddfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_floor (op0, op1, op2, op3)); - emit_insn (gen_truncxfdf2_noop (operands[0], op0)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0)); DONE; }) @@ -16254,7 +16272,7 @@ emit_insn (gen_extendsfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_floor (op0, op1, op2, op3)); - emit_insn (gen_truncxfsf2_noop (operands[0], op0)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0)); DONE; }) @@ -16302,7 +16320,7 @@ emit_insn (gen_extenddfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_ceil (op0, op1, op2, op3)); - emit_insn (gen_truncxfdf2_noop (operands[0], op0)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0)); DONE; }) @@ -16322,7 +16340,7 @@ emit_insn (gen_extendsfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_ceil (op0, op1, op2, op3)); - emit_insn (gen_truncxfsf2_noop (operands[0], op0)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0)); DONE; }) @@ -16370,7 +16388,7 @@ emit_insn (gen_extenddfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_trunc (op0, op1, op2, op3)); - emit_insn (gen_truncxfdf2_noop (operands[0], op0)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0)); DONE; }) @@ -16390,7 +16408,7 @@ emit_insn (gen_extendsfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_trunc (op0, op1, op2, op3)); - emit_insn (gen_truncxfsf2_noop (operands[0], op0)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0)); DONE; }) @@ -16438,7 +16456,7 @@ emit_insn (gen_extenddfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_mask_pm (op0, op1, op2, op3)); - emit_insn (gen_truncxfdf2_noop (operands[0], op0)); + emit_insn (gen_truncxfdf2_i387_noop (operands[0], op0)); DONE; }) @@ -16458,7 +16476,7 @@ emit_insn (gen_extendsfxf2 (op1, operands[1])); emit_insn (gen_frndintxf2_mask_pm (op0, op1, op2, op3)); - emit_insn (gen_truncxfsf2_noop (operands[0], op0)); + emit_insn (gen_truncxfsf2_i387_noop (operands[0], op0)); DONE; }) |