diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2018-10-02 17:27:07 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2018-10-02 17:27:07 +0200 |
commit | 8dc5696fcdc151cceb643a4f58bbd66266643f6a (patch) | |
tree | 5f34f2c16aaf23499505cfe1abe94226359626ce | |
parent | 34c77d0b2fb7325c1b318b2de755b588cb7179ce (diff) | |
download | gcc-8dc5696fcdc151cceb643a4f58bbd66266643f6a.zip gcc-8dc5696fcdc151cceb643a4f58bbd66266643f6a.tar.gz gcc-8dc5696fcdc151cceb643a4f58bbd66266643f6a.tar.bz2 |
i386.md (fxam<mode>2_i387_with_temp): Remove.
* config/i386/i386.md (fxam<mode>2_i387_with_temp): Remove.
(isinfxf2): Ditto.
(isinf<mode>2): Ditto.
From-SVN: r264795
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 75 |
2 files changed, 6 insertions, 75 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fce5984..af0e08d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2018-10-02 Uros Bizjak <ubizjak@gmail.com> + * config/i386/i386.md (fxam<mode>2_i387_with_temp): Remove. + (isinfxf2): Ditto. + (isinf<mode>2): Ditto. + +2018-10-02 Uros Bizjak <ubizjak@gmail.com> + * config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode before emitting fxam. Perform calculations in XFmode. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 9194751..367e9bf 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -16456,81 +16456,6 @@ (set_attr "unit" "i387") (set_attr "mode" "<MODE>")]) -(define_insn_and_split "fxam<mode>2_i387_with_temp" - [(set (match_operand:HI 0 "register_operand") - (unspec:HI - [(match_operand:MODEF 1 "memory_operand")] - UNSPEC_FXAM_MEM))] - "TARGET_USE_FANCY_MATH_387 - && can_create_pseudo_p ()" - "#" - "&& 1" - [(set (match_dup 2)(match_dup 1)) - (set (match_dup 0) - (unspec:HI [(match_dup 2)] UNSPEC_FXAM))] -{ - operands[2] = gen_reg_rtx (<MODE>mode); - - MEM_VOLATILE_P (operands[1]) = 1; -} - [(set_attr "type" "multi") - (set_attr "unit" "i387") - (set_attr "mode" "<MODE>")]) - -(define_expand "isinfxf2" - [(use (match_operand:SI 0 "register_operand")) - (use (match_operand:XF 1 "register_operand"))] - "TARGET_USE_FANCY_MATH_387 - && ix86_libc_has_function (function_c99_misc)" -{ - rtx mask = GEN_INT (0x45); - rtx val = GEN_INT (0x05); - - rtx scratch = gen_reg_rtx (HImode); - rtx res = gen_reg_rtx (QImode); - - emit_insn (gen_fxamxf2_i387 (scratch, operands[1])); - - emit_insn (gen_andqi_ext_1 (scratch, scratch, mask)); - emit_insn (gen_cmpqi_ext_3 (scratch, val)); - ix86_expand_setcc (res, EQ, - gen_rtx_REG (CCmode, FLAGS_REG), const0_rtx); - emit_insn (gen_zero_extendqisi2 (operands[0], res)); - DONE; -}) - -(define_expand "isinf<mode>2" - [(use (match_operand:SI 0 "register_operand")) - (use (match_operand:MODEF 1 "nonimmediate_operand"))] - "TARGET_USE_FANCY_MATH_387 - && ix86_libc_has_function (function_c99_misc) - && !(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)" -{ - rtx mask = GEN_INT (0x45); - rtx val = GEN_INT (0x05); - - rtx scratch = gen_reg_rtx (HImode); - rtx res = gen_reg_rtx (QImode); - - /* Remove excess precision by forcing value through memory. */ - if (memory_operand (operands[1], VOIDmode)) - emit_insn (gen_fxam<mode>2_i387_with_temp (scratch, operands[1])); - else - { - rtx temp = assign_386_stack_local (<MODE>mode, SLOT_TEMP); - - emit_move_insn (temp, operands[1]); - emit_insn (gen_fxam<mode>2_i387_with_temp (scratch, temp)); - } - - emit_insn (gen_andqi_ext_1 (scratch, scratch, mask)); - emit_insn (gen_cmpqi_ext_3 (scratch, val)); - ix86_expand_setcc (res, EQ, - gen_rtx_REG (CCmode, FLAGS_REG), const0_rtx); - emit_insn (gen_zero_extendqisi2 (operands[0], res)); - DONE; -}) - (define_expand "signbittf2" [(use (match_operand:SI 0 "register_operand")) (use (match_operand:TF 1 "register_operand"))] |