aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2018-10-02 17:27:07 +0200
committerUros Bizjak <uros@gcc.gnu.org>2018-10-02 17:27:07 +0200
commit8dc5696fcdc151cceb643a4f58bbd66266643f6a (patch)
tree5f34f2c16aaf23499505cfe1abe94226359626ce
parent34c77d0b2fb7325c1b318b2de755b588cb7179ce (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md75
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"))]