diff options
author | Jan Hubicka <jh@suse.cz> | 2002-02-13 11:09:16 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-02-13 10:09:16 +0000 |
commit | aebfea10bedac8653e199c2d9cb6442184d2eb22 (patch) | |
tree | 8c84070bd62581b9c7ab0df18dc3d5a1024f77e3 /gcc | |
parent | 8e4949e7410cf4cff37d84d3dd725958d4796bf1 (diff) | |
download | gcc-aebfea10bedac8653e199c2d9cb6442184d2eb22.zip gcc-aebfea10bedac8653e199c2d9cb6442184d2eb22.tar.gz gcc-aebfea10bedac8653e199c2d9cb6442184d2eb22.tar.bz2 |
* i386.md (fop_*_comm_*): allow nonimmediate in the first operand.
From-SVN: r49725
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 30 |
2 files changed, 22 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 18ff193..78f4449 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index db2f4f3..a6e0683 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -13858,10 +13858,11 @@ (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" "") @@ -13872,10 +13873,11 @@ (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") @@ -13888,9 +13890,10 @@ (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")]) @@ -13898,10 +13901,11 @@ (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" "") @@ -13912,10 +13916,11 @@ (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") @@ -13928,10 +13933,11 @@ (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")]) |