i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
authorJan Hubicka <jh@suse.cz>
Wed, 14 Feb 2001 00:15:15 +0000 (01:15 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 14 Feb 2001 00:15:15 +0000 (00:15 +0000)
* i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
(sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
(sqrtsf2 patterns): Use 'x' instead of 'Y'.
(sqrtextendsfdf2): Disable for SSE2.

From-SVN: r39652

gcc/ChangeLog
gcc/config/i386/i386.md

index 1068c7598aea45a3a4efd92c479f49eaf683f3c7..006f4d25bb20d8faacaa9b2fa1cb8001af7ddd8b 100644 (file)
@@ -1,3 +1,17 @@
+Wed Feb 14 01:13:59 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
+       (sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
+       (sqrtsf2 patterns): Use 'x' instead of 'Y'.
+       (sqrtextendsfdf2): Disable for SSE2.
+
+Wed Feb 14 00:19:28 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
+       (sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
+       (sqrtsf2 patterns): Use 'x' instead of 'Y'.
+       (sqrtextendsfdf2): Disable for SSE2.
+
 Wed Feb 14 00:11:20 CET 2001  Jan Hubicka  <jh@suse.cz>
 
        * i386.md (movsfcc_1): Support integer cmove instruction.
index 8ebed23d6a3972fe3e95c34712b21e739ab67309..acd709ca678a7ad90f5cc736e646f9543bc43b4c 100644 (file)
 {
   if (TARGET_SSE2)
    {
-     rtx out = force_reg (SImode, operands[0]);
+     rtx out = REG_P (operands[0]) ? operands[0] : gen_reg_rtx (SImode);
      emit_insn (gen_fix_truncdfsi_sse (out, operands[1]));
      if (out != operands[0])
        emit_move_insn (operands[0], out);
 {
   if (TARGET_SSE2)
    {
-     rtx out = force_reg (SImode, operands[0]);
+     rtx out = REG_P (operands[0]) ? operands[0] : gen_reg_rtx (SImode);
      emit_insn (gen_fix_truncdfsi_sse (out, operands[1]));
      if (out != operands[0])
        emit_move_insn (operands[0], out);
   operands[4] = ix86_force_to_memory (GET_MODE (operands[2]), operands[2]);
   operands[4] = gen_rtx_FLOAT (GET_MODE (operands[0]), operands[4]);
   emit_insn (gen_rtx_SET (VOIDmode, operands[0],
-                         gen_rtx_fmt_ee (GET_CODE (operands[3]),
+                         gen_rtx_fmt_ee (GET_CODE (operands[5]),
                                          GET_MODE (operands[3]),
                                          operands[1],
                                          operands[4])));
 (define_expand "sqrtsf2"
   [(set (match_operand:SF 0 "register_operand" "")
        (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "")))]
-  "(! TARGET_NO_FANCY_MATH_387 && TARGET_80387) || TARGET_SSE2"
+  "(! TARGET_NO_FANCY_MATH_387 && TARGET_80387) || TARGET_SSE"
   "
 {
   if (!TARGET_SSE)
 }")
 
 (define_insn "sqrtsf2_1"
-  [(set (match_operand:SF 0 "register_operand" "=f#Y,Y#f")
-       (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "0#Y,Ym#f")))]
+  [(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)"
   "@
    (set_attr "athlon_decode" "direct,*")])
 
 (define_insn "sqrtsf2_1_sse_only"
-  [(set (match_operand:SF 0 "register_operand" "=Y")
-       (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "Ym")))]
+  [(set (match_operand:SF 0 "register_operand" "=x")
+       (sqrt:SF (match_operand:SF 1 "nonimmediate_operand" "xm")))]
   "TARGET_SSE && (!TARGET_80387 || !TARGET_MIX_SSE_I387)"
   "sqrtss\\t{%1, %0|%0, %1}"
   [(set_attr "type" "sse")
   [(set (match_operand:DF 0 "register_operand" "=f")
        (sqrt:DF (float_extend:DF
                  (match_operand:SF 1 "register_operand" "0"))))]
-  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387"
+  "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && !TARGET_SSE2"
   "fsqrt"
   [(set_attr "type" "fpspc")
    (set_attr "mode" "DF")