* config/i386/i386.md (*fop_?f_comm_{,sse,nosse},
authorUros Bizjak <uros@kss-loka.si>
Thu, 16 Dec 2004 06:35:57 +0000 (07:35 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 16 Dec 2004 06:35:57 +0000 (07:35 +0100)
*fop_?f_1_{,sse,nosse}, *fop_{d,x}f_{2,3,4,5,6}): Unify enable
constraint with respect to TARGET_80387, TARGET_SSE, TARGET_SSE2,
TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
(*fop_?f_{comm,1}): Rename to *fop_?f_{comm,1}_mixed.
(*fop_?f_{comm,1}_nosse): Rename to *fop_?f_{comm,1}_i387.
(*fop_{d,x}f_{2,3,4,5,6}): Rename to *fop_{d,x}f_{2,3,4,5,6}_i387.

From-SVN: r92246

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

index 1cdc056bd6c6e0d8f7850074160457fa97a6adea..0cda2c6a061a5767d515e4462f90431b70d9ab31 100644 (file)
@@ -1,3 +1,13 @@
+2004-12-16  Uros Bizjak  <uros@kss-loka.si>
+
+       * config/i386/i386.md (*fop_?f_comm_{,sse,nosse},
+       *fop_?f_1_{,sse,nosse}, *fop_{d,x}f_{2,3,4,5,6}): Unify enable
+       constraint with respect to TARGET_80387, TARGET_SSE, TARGET_SSE2,
+       TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
+       (*fop_?f_{comm,1}): Rename to *fop_?f_{comm,1}_mixed.
+       (*fop_?f_{comm,1}_nosse): Rename to *fop_?f_{comm,1}_i387.
+       (*fop_{d,x}f_{2,3,4,5,6}): Rename to *fop_{d,x}f_{2,3,4,5,6}_i387.
+
 2004-12-15  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/18153
index fba30b268a8557832fa2ceb11373e9d0e915f580..b98159f7e8f26a2199e40b0b314e9599b69ef301 100644 (file)
 
 ;; Gcc is slightly more smart about handling normal two address instructions
 ;; so use special patterns for add and mull.
-(define_insn "*fop_sf_comm_nosse"
-  [(set (match_operand:SF 0 "register_operand" "=f")
-       (match_operator:SF 3 "binary_fp_operator"
-                       [(match_operand:SF 1 "nonimmediate_operand" "%0")
-                        (match_operand:SF 2 "nonimmediate_operand" "fm")]))]
-  "TARGET_80387 && !TARGET_SSE_MATH
-   && COMMUTATIVE_ARITH_P (operands[3])
-   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
-  "* return output_387_binary_op (insn, operands);"
-  [(set (attr "type") 
-       (if_then_else (match_operand:SF 3 "mult_operator" "") 
-          (const_string "fmul")
-          (const_string "fop")))
-   (set_attr "mode" "SF")])
 
-(define_insn "*fop_sf_comm"
+(define_insn "*fop_sf_comm_mixed"
   [(set (match_operand:SF 0 "register_operand" "=f#x,x#f")
        (match_operator:SF 3 "binary_fp_operator"
                        [(match_operand:SF 1 "nonimmediate_operand" "%0,0")
                         (match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))]
-  "TARGET_80387 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387
+  "TARGET_MIX_SSE_I387
    && COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
        (match_operator:SF 3 "binary_fp_operator"
                        [(match_operand:SF 1 "nonimmediate_operand" "%0")
                         (match_operand:SF 2 "nonimmediate_operand" "xm")]))]
-  "TARGET_SSE_MATH && COMMUTATIVE_ARITH_P (operands[3])
+  "TARGET_SSE_MATH
+   && COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
   [(set (attr "type") 
           (const_string "sseadd")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_df_comm_nosse"
-  [(set (match_operand:DF 0 "register_operand" "=f")
-       (match_operator:DF 3 "binary_fp_operator"
-                       [(match_operand:DF 1 "nonimmediate_operand" "%0")
-                        (match_operand:DF 2 "nonimmediate_operand" "fm")]))]
-  "TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
+(define_insn "*fop_sf_comm_i387"
+  [(set (match_operand:SF 0 "register_operand" "=f")
+       (match_operator:SF 3 "binary_fp_operator"
+                       [(match_operand:SF 1 "nonimmediate_operand" "%0")
+                        (match_operand:SF 2 "nonimmediate_operand" "fm")]))]
+  "TARGET_80387
    && COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
        (if_then_else (match_operand:SF 3 "mult_operator" "") 
           (const_string "fmul")
           (const_string "fop")))
-   (set_attr "mode" "DF")])
-
-(define_insn "*fop_df_comm"
-  [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f")
-       (match_operator:DF 3 "binary_fp_operator"
-                       [(match_operand:DF 1 "nonimmediate_operand" "%0,0")
-                        (match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))]
-  "TARGET_80387 && TARGET_SSE_MATH && TARGET_SSE2 && TARGET_MIX_SSE_I387
-   && COMMUTATIVE_ARITH_P (operands[3])
-   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
-  "* return output_387_binary_op (insn, operands);"
-  [(set (attr "type") 
-       (if_then_else (eq_attr "alternative" "1")
-          (if_then_else (match_operand:SF 3 "mult_operator" "") 
-             (const_string "ssemul")
-             (const_string "sseadd"))
-          (if_then_else (match_operand:SF 3 "mult_operator" "") 
-             (const_string "fmul")
-             (const_string "fop"))))
-   (set_attr "mode" "DF")])
-
-(define_insn "*fop_df_comm_sse"
-  [(set (match_operand:DF 0 "register_operand" "=Y")
-       (match_operator:DF 3 "binary_fp_operator"
-                       [(match_operand:DF 1 "nonimmediate_operand" "%0")
-                        (match_operand:DF 2 "nonimmediate_operand" "Ym")]))]
-  "TARGET_SSE2 && TARGET_SSE_MATH
-   && COMMUTATIVE_ARITH_P (operands[3])
-   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
-  "* return output_387_binary_op (insn, operands);"
-  [(set (attr "type") 
-        (if_then_else (match_operand:SF 3 "mult_operator" "") 
-          (const_string "ssemul")
-          (const_string "sseadd")))
-   (set_attr "mode" "DF")])
-
-(define_insn "*fop_xf_comm"
-  [(set (match_operand:XF 0 "register_operand" "=f")
-       (match_operator:XF 3 "binary_fp_operator"
-                       [(match_operand:XF 1 "register_operand" "%0")
-                        (match_operand:XF 2 "register_operand" "f")]))]
-  "TARGET_80387
-   && COMMUTATIVE_ARITH_P (operands[3])"
-  "* return output_387_binary_op (insn, operands);"
-  [(set (attr "type") 
-        (if_then_else (match_operand:XF 3 "mult_operator" "") 
-           (const_string "fmul")
-           (const_string "fop")))
-   (set_attr "mode" "XF")])
-
-(define_insn "*fop_sf_1_nosse"
-  [(set (match_operand:SF 0 "register_operand" "=f,f")
-       (match_operator:SF 3 "binary_fp_operator"
-                       [(match_operand:SF 1 "nonimmediate_operand" "0,fm")
-                        (match_operand:SF 2 "nonimmediate_operand" "fm,0")]))]
-  "TARGET_80387 && !TARGET_SSE_MATH
-   && !COMMUTATIVE_ARITH_P (operands[3])
-   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
-  "* return output_387_binary_op (insn, operands);"
-  [(set (attr "type") 
-        (cond [(match_operand:SF 3 "mult_operator" "") 
-                 (const_string "fmul")
-               (match_operand:SF 3 "div_operator" "") 
-                 (const_string "fdiv")
-              ]
-              (const_string "fop")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_sf_1"
+(define_insn "*fop_sf_1_mixed"
   [(set (match_operand:SF 0 "register_operand" "=f,f,x")
        (match_operator:SF 3 "binary_fp_operator"
                        [(match_operand:SF 1 "nonimmediate_operand" "0,fm,0")
                         (match_operand:SF 2 "nonimmediate_operand" "fm,0,xm#f")]))]
-  "TARGET_80387 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387
+  "TARGET_MIX_SSE_I387
    && !COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
               (const_string "sseadd")))
    (set_attr "mode" "SF")])
 
+(define_insn "*fop_sf_1_i387"
+  [(set (match_operand:SF 0 "register_operand" "=f,f")
+       (match_operator:SF 3 "binary_fp_operator"
+                       [(match_operand:SF 1 "nonimmediate_operand" "0,fm")
+                        (match_operand:SF 2 "nonimmediate_operand" "fm,0")]))]
+  "TARGET_80387
+   && !COMMUTATIVE_ARITH_P (operands[3])
+   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+  "* return output_387_binary_op (insn, operands);"
+  [(set (attr "type") 
+        (cond [(match_operand:SF 3 "mult_operator" "") 
+                 (const_string "fmul")
+               (match_operand:SF 3 "div_operator" "") 
+                 (const_string "fdiv")
+              ]
+              (const_string "fop")))
+   (set_attr "mode" "SF")])
+
+
 ;; ??? Add SSE splitters for these!
-(define_insn "*fop_sf_2"
+(define_insn "*fop_sf_2_i387"
   [(set (match_operand:SF 0 "register_operand" "=f,f")
        (match_operator:SF 3 "binary_fp_operator"
          [(float:SF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
    (set_attr "fp_int_src" "true")
    (set_attr "mode" "SI")])
 
-(define_insn "*fop_sf_3"
+(define_insn "*fop_sf_3_i387"
   [(set (match_operand:SF 0 "register_operand" "=f,f")
        (match_operator:SF 3 "binary_fp_operator"
          [(match_operand:SF 1 "register_operand" "0,0")
    (set_attr "fp_int_src" "true")
    (set_attr "mode" "SI")])
 
-(define_insn "*fop_df_1_nosse"
-  [(set (match_operand:DF 0 "register_operand" "=f,f")
+(define_insn "*fop_df_comm_mixed"
+  [(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f")
        (match_operator:DF 3 "binary_fp_operator"
-                       [(match_operand:DF 1 "nonimmediate_operand" "0,fm")
-                        (match_operand:DF 2 "nonimmediate_operand" "fm,0")]))]
-  "TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
-   && !COMMUTATIVE_ARITH_P (operands[3])
+                       [(match_operand:DF 1 "nonimmediate_operand" "%0,0")
+                        (match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))]
+  "TARGET_SSE2 && TARGET_MIX_SSE_I387
+   && COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
   [(set (attr "type") 
-        (cond [(match_operand:DF 3 "mult_operator" "") 
-                 (const_string "fmul")
-               (match_operand:DF 3 "div_operator" "")
-                 (const_string "fdiv")
-              ]
-              (const_string "fop")))
+       (if_then_else (eq_attr "alternative" "1")
+          (if_then_else (match_operand:SF 3 "mult_operator" "") 
+             (const_string "ssemul")
+             (const_string "sseadd"))
+          (if_then_else (match_operand:SF 3 "mult_operator" "") 
+             (const_string "fmul")
+             (const_string "fop"))))
+   (set_attr "mode" "DF")])
+
+(define_insn "*fop_df_comm_sse"
+  [(set (match_operand:DF 0 "register_operand" "=Y")
+       (match_operator:DF 3 "binary_fp_operator"
+                       [(match_operand:DF 1 "nonimmediate_operand" "%0")
+                        (match_operand:DF 2 "nonimmediate_operand" "Ym")]))]
+  "TARGET_SSE2 && TARGET_SSE_MATH
+   && COMMUTATIVE_ARITH_P (operands[3])
+   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+  "* return output_387_binary_op (insn, operands);"
+  [(set (attr "type") 
+        (if_then_else (match_operand:SF 3 "mult_operator" "") 
+          (const_string "ssemul")
+          (const_string "sseadd")))
    (set_attr "mode" "DF")])
 
+(define_insn "*fop_df_comm_i387"
+  [(set (match_operand:DF 0 "register_operand" "=f")
+       (match_operator:DF 3 "binary_fp_operator"
+                       [(match_operand:DF 1 "nonimmediate_operand" "%0")
+                        (match_operand:DF 2 "nonimmediate_operand" "fm")]))]
+  "TARGET_80387
+   && COMMUTATIVE_ARITH_P (operands[3])
+   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+  "* return output_387_binary_op (insn, operands);"
+  [(set (attr "type") 
+       (if_then_else (match_operand:SF 3 "mult_operator" "") 
+          (const_string "fmul")
+          (const_string "fop")))
+   (set_attr "mode" "DF")])
 
-(define_insn "*fop_df_1"
+(define_insn "*fop_df_1_mixed"
   [(set (match_operand:DF 0 "register_operand" "=f#Y,f#Y,Y#f")
        (match_operator:DF 3 "binary_fp_operator"
                        [(match_operand:DF 1 "nonimmediate_operand" "0,fm,0")
                         (match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym#f")]))]
-  "TARGET_80387 && TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387
+  "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387
    && !COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
               ]
               (const_string "sseadd")))])
 
+(define_insn "*fop_df_1_i387"
+  [(set (match_operand:DF 0 "register_operand" "=f,f")
+       (match_operator:DF 3 "binary_fp_operator"
+                       [(match_operand:DF 1 "nonimmediate_operand" "0,fm")
+                        (match_operand:DF 2 "nonimmediate_operand" "fm,0")]))]
+  "TARGET_80387
+   && !COMMUTATIVE_ARITH_P (operands[3])
+   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
+  "* return output_387_binary_op (insn, operands);"
+  [(set (attr "type") 
+        (cond [(match_operand:DF 3 "mult_operator" "") 
+                 (const_string "fmul")
+               (match_operand:DF 3 "div_operator" "")
+                 (const_string "fdiv")
+              ]
+              (const_string "fop")))
+   (set_attr "mode" "DF")])
+
 ;; ??? Add SSE splitters for these!
-(define_insn "*fop_df_2"
+(define_insn "*fop_df_2_i387"
   [(set (match_operand:DF 0 "register_operand" "=f,f")
        (match_operator:DF 3 "binary_fp_operator"
           [(float:DF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
    (set_attr "fp_int_src" "true")
    (set_attr "mode" "SI")])
 
-(define_insn "*fop_df_3"
+(define_insn "*fop_df_3_i387"
   [(set (match_operand:DF 0 "register_operand" "=f,f")
        (match_operator:DF 3 "binary_fp_operator"
           [(match_operand:DF 1 "register_operand" "0,0")
    (set_attr "fp_int_src" "true")
    (set_attr "mode" "SI")])
 
-(define_insn "*fop_df_4"
+(define_insn "*fop_df_4_i387"
   [(set (match_operand:DF 0 "register_operand" "=f,f")
        (match_operator:DF 3 "binary_fp_operator"
           [(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,0"))
            (match_operand:DF 2 "register_operand" "0,f")]))]
-  "TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
+  "TARGET_80387 && !(TARGET_SSE2 && TARGET_SSE_MATH)
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
   [(set (attr "type") 
               (const_string "fop")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_df_5"
+(define_insn "*fop_df_5_i387"
   [(set (match_operand:DF 0 "register_operand" "=f,f")
        (match_operator:DF 3 "binary_fp_operator"
          [(match_operand:DF 1 "register_operand" "0,f")
               (const_string "fop")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_df_6"
+(define_insn "*fop_df_6_i387"
   [(set (match_operand:DF 0 "register_operand" "=f,f")
        (match_operator:DF 3 "binary_fp_operator"
          [(float_extend:DF
               (const_string "fop")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_xf_1"
+(define_insn "*fop_xf_comm_i387"
+  [(set (match_operand:XF 0 "register_operand" "=f")
+       (match_operator:XF 3 "binary_fp_operator"
+                       [(match_operand:XF 1 "register_operand" "%0")
+                        (match_operand:XF 2 "register_operand" "f")]))]
+  "TARGET_80387
+   && COMMUTATIVE_ARITH_P (operands[3])"
+  "* return output_387_binary_op (insn, operands);"
+  [(set (attr "type") 
+        (if_then_else (match_operand:XF 3 "mult_operator" "") 
+           (const_string "fmul")
+           (const_string "fop")))
+   (set_attr "mode" "XF")])
+
+(define_insn "*fop_xf_1_i387"
   [(set (match_operand:XF 0 "register_operand" "=f,f")
        (match_operator:XF 3 "binary_fp_operator"
                        [(match_operand:XF 1 "register_operand" "0,f")
               (const_string "fop")))
    (set_attr "mode" "XF")])
 
-(define_insn "*fop_xf_2"
+(define_insn "*fop_xf_2_i387"
   [(set (match_operand:XF 0 "register_operand" "=f,f")
        (match_operator:XF 3 "binary_fp_operator"
           [(float:XF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
    (set_attr "fp_int_src" "true")
    (set_attr "mode" "SI")])
 
-(define_insn "*fop_xf_3"
+(define_insn "*fop_xf_3_i387"
   [(set (match_operand:XF 0 "register_operand" "=f,f")
        (match_operator:XF 3 "binary_fp_operator"
          [(match_operand:XF 1 "register_operand" "0,0")
    (set_attr "fp_int_src" "true")
    (set_attr "mode" "SI")])
 
-(define_insn "*fop_xf_4"
+(define_insn "*fop_xf_4_i387"
   [(set (match_operand:XF 0 "register_operand" "=f,f")
        (match_operator:XF 3 "binary_fp_operator"
           [(float_extend:XF (match_operand 1 "nonimmediate_operand" "fm,0"))
               (const_string "fop")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_xf_5"
+(define_insn "*fop_xf_5_i387"
   [(set (match_operand:XF 0 "register_operand" "=f,f")
        (match_operator:XF 3 "binary_fp_operator"
          [(match_operand:XF 1 "register_operand" "0,f")
               (const_string "fop")))
    (set_attr "mode" "SF")])
 
-(define_insn "*fop_xf_6"
+(define_insn "*fop_xf_6_i387"
   [(set (match_operand:XF 0 "register_operand" "=f,f")
        (match_operator:XF 3 "binary_fp_operator"
          [(float_extend:XF