* i386.md (fop_*_comm_*): allow nonimmediate in the first operand.
authorJan Hubicka <jh@suse.cz>
Wed, 13 Feb 2002 10:09:16 +0000 (11:09 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 13 Feb 2002 10:09:16 +0000 (10:09 +0000)
From-SVN: r49725

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

index 18ff193..78f4449 100644 (file)
@@ -1,3 +1,7 @@
+Wed Feb 13 10:35:56 CET 2002  Jan Hubicka  <jh@suse.cz>
+
+       * i386.md (fop_*_comm_*): allow nonimmediate in the first operand.
+
 2002-02-12  Aldy Hernandez  <aldyh@redhat.com>
 
         * config/rs6000/rs6000.md: Use predicate altivec_register_operand
index db2f4f3..a6e0683 100644 (file)
 (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 "register_operand" "%0")
+                       [(match_operand:SF 1 "nonimmediate_operand" "%0")
                         (match_operand:SF 2 "nonimmediate_operand" "fm")]))]
   "TARGET_80387 && !TARGET_SSE_MATH
-   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
+   && (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" "") 
 (define_insn "*fop_sf_comm"
   [(set (match_operand:SF 0 "register_operand" "=f#x,x#f")
        (match_operator:SF 3 "binary_fp_operator"
-                       [(match_operand:SF 1 "register_operand" "%0,0")
+                       [(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
-   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
+   && (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")
 (define_insn "*fop_sf_comm_sse"
   [(set (match_operand:SF 0 "register_operand" "=x")
        (match_operator:SF 3 "binary_fp_operator"
-                       [(match_operand:SF 1 "register_operand" "%0")
+                       [(match_operand:SF 1 "nonimmediate_operand" "%0")
                         (match_operand:SF 2 "nonimmediate_operand" "xm")]))]
-  "TARGET_SSE_MATH && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+  "TARGET_SSE_MATH && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
+   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
   [(set_attr "type" "sse")
    (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 "register_operand" "%0")
+                       [(match_operand:DF 1 "nonimmediate_operand" "%0")
                         (match_operand:DF 2 "nonimmediate_operand" "fm")]))]
   "TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
-   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
+   && (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" "") 
 (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 "register_operand" "%0,0")
+                       [(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
-   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
+   && (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")
 (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 "register_operand" "%0")
+                       [(match_operand:DF 1 "nonimmediate_operand" "%0")
                         (match_operand:DF 2 "nonimmediate_operand" "Ym")]))]
   "TARGET_SSE2 && TARGET_SSE_MATH
-   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+   && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'
+   && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
   [(set_attr "type" "sse")
    (set_attr "mode" "DF")])