* 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. From-SVN: r92246
This commit is contained in:
parent
035e8f0149
commit
cfa185b8ac
@ -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>
|
2004-12-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR target/18153
|
PR target/18153
|
||||||
|
@ -14136,27 +14136,13 @@
|
|||||||
|
|
||||||
;; Gcc is slightly more smart about handling normal two address instructions
|
;; Gcc is slightly more smart about handling normal two address instructions
|
||||||
;; so use special patterns for add and mull.
|
;; 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")
|
[(set (match_operand:SF 0 "register_operand" "=f#x,x#f")
|
||||||
(match_operator:SF 3 "binary_fp_operator"
|
(match_operator:SF 3 "binary_fp_operator"
|
||||||
[(match_operand:SF 1 "nonimmediate_operand" "%0,0")
|
[(match_operand:SF 1 "nonimmediate_operand" "%0,0")
|
||||||
(match_operand:SF 2 "nonimmediate_operand" "fm#x,xm#f")]))]
|
(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])
|
&& COMMUTATIVE_ARITH_P (operands[3])
|
||||||
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
@ -14175,7 +14161,8 @@
|
|||||||
(match_operator:SF 3 "binary_fp_operator"
|
(match_operator:SF 3 "binary_fp_operator"
|
||||||
[(match_operand:SF 1 "nonimmediate_operand" "%0")
|
[(match_operand:SF 1 "nonimmediate_operand" "%0")
|
||||||
(match_operand:SF 2 "nonimmediate_operand" "xm")]))]
|
(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)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
[(set (attr "type")
|
[(set (attr "type")
|
||||||
@ -14184,12 +14171,12 @@
|
|||||||
(const_string "sseadd")))
|
(const_string "sseadd")))
|
||||||
(set_attr "mode" "SF")])
|
(set_attr "mode" "SF")])
|
||||||
|
|
||||||
(define_insn "*fop_df_comm_nosse"
|
(define_insn "*fop_sf_comm_i387"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
[(set (match_operand:SF 0 "register_operand" "=f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:SF 3 "binary_fp_operator"
|
||||||
[(match_operand:DF 1 "nonimmediate_operand" "%0")
|
[(match_operand:SF 1 "nonimmediate_operand" "%0")
|
||||||
(match_operand:DF 2 "nonimmediate_operand" "fm")]))]
|
(match_operand:SF 2 "nonimmediate_operand" "fm")]))]
|
||||||
"TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
|
"TARGET_80387
|
||||||
&& COMMUTATIVE_ARITH_P (operands[3])
|
&& COMMUTATIVE_ARITH_P (operands[3])
|
||||||
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
@ -14197,80 +14184,14 @@
|
|||||||
(if_then_else (match_operand:SF 3 "mult_operator" "")
|
(if_then_else (match_operand:SF 3 "mult_operator" "")
|
||||||
(const_string "fmul")
|
(const_string "fmul")
|
||||||
(const_string "fop")))
|
(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")])
|
(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")
|
[(set (match_operand:SF 0 "register_operand" "=f,f,x")
|
||||||
(match_operator:SF 3 "binary_fp_operator"
|
(match_operator:SF 3 "binary_fp_operator"
|
||||||
[(match_operand:SF 1 "nonimmediate_operand" "0,fm,0")
|
[(match_operand:SF 1 "nonimmediate_operand" "0,fm,0")
|
||||||
(match_operand:SF 2 "nonimmediate_operand" "fm,0,xm#f")]))]
|
(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])
|
&& !COMMUTATIVE_ARITH_P (operands[3])
|
||||||
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
@ -14308,8 +14229,27 @@
|
|||||||
(const_string "sseadd")))
|
(const_string "sseadd")))
|
||||||
(set_attr "mode" "SF")])
|
(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!
|
;; ??? 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")
|
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||||
(match_operator:SF 3 "binary_fp_operator"
|
(match_operator:SF 3 "binary_fp_operator"
|
||||||
[(float:SF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
|
[(float:SF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
|
||||||
@ -14326,7 +14266,7 @@
|
|||||||
(set_attr "fp_int_src" "true")
|
(set_attr "fp_int_src" "true")
|
||||||
(set_attr "mode" "SI")])
|
(set_attr "mode" "SI")])
|
||||||
|
|
||||||
(define_insn "*fop_sf_3"
|
(define_insn "*fop_sf_3_i387"
|
||||||
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||||
(match_operator:SF 3 "binary_fp_operator"
|
(match_operator:SF 3 "binary_fp_operator"
|
||||||
[(match_operand:SF 1 "register_operand" "0,0")
|
[(match_operand:SF 1 "register_operand" "0,0")
|
||||||
@ -14343,31 +14283,61 @@
|
|||||||
(set_attr "fp_int_src" "true")
|
(set_attr "fp_int_src" "true")
|
||||||
(set_attr "mode" "SI")])
|
(set_attr "mode" "SI")])
|
||||||
|
|
||||||
(define_insn "*fop_df_1_nosse"
|
(define_insn "*fop_df_comm_mixed"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
[(set (match_operand:DF 0 "register_operand" "=f#Y,Y#f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(match_operand:DF 1 "nonimmediate_operand" "0,fm")
|
[(match_operand:DF 1 "nonimmediate_operand" "%0,0")
|
||||||
(match_operand:DF 2 "nonimmediate_operand" "fm,0")]))]
|
(match_operand:DF 2 "nonimmediate_operand" "fm#Y,Ym#f")]))]
|
||||||
"TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
|
"TARGET_SSE2 && TARGET_MIX_SSE_I387
|
||||||
&& !COMMUTATIVE_ARITH_P (operands[3])
|
&& COMMUTATIVE_ARITH_P (operands[3])
|
||||||
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
[(set (attr "type")
|
[(set (attr "type")
|
||||||
(cond [(match_operand:DF 3 "mult_operator" "")
|
(if_then_else (eq_attr "alternative" "1")
|
||||||
(const_string "fmul")
|
(if_then_else (match_operand:SF 3 "mult_operator" "")
|
||||||
(match_operand:DF 3 "div_operator" "")
|
(const_string "ssemul")
|
||||||
(const_string "fdiv")
|
(const_string "sseadd"))
|
||||||
]
|
(if_then_else (match_operand:SF 3 "mult_operator" "")
|
||||||
(const_string "fop")))
|
(const_string "fmul")
|
||||||
|
(const_string "fop"))))
|
||||||
(set_attr "mode" "DF")])
|
(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_1"
|
(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_mixed"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f#Y,f#Y,Y#f")
|
[(set (match_operand:DF 0 "register_operand" "=f#Y,f#Y,Y#f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(match_operand:DF 1 "nonimmediate_operand" "0,fm,0")
|
[(match_operand:DF 1 "nonimmediate_operand" "0,fm,0")
|
||||||
(match_operand:DF 2 "nonimmediate_operand" "fm,0,Ym#f")]))]
|
(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])
|
&& !COMMUTATIVE_ARITH_P (operands[3])
|
||||||
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
@ -14405,8 +14375,26 @@
|
|||||||
]
|
]
|
||||||
(const_string "sseadd")))])
|
(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!
|
;; ??? 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")
|
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(float:DF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
|
[(float:DF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
|
||||||
@ -14423,7 +14411,7 @@
|
|||||||
(set_attr "fp_int_src" "true")
|
(set_attr "fp_int_src" "true")
|
||||||
(set_attr "mode" "SI")])
|
(set_attr "mode" "SI")])
|
||||||
|
|
||||||
(define_insn "*fop_df_3"
|
(define_insn "*fop_df_3_i387"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(match_operand:DF 1 "register_operand" "0,0")
|
[(match_operand:DF 1 "register_operand" "0,0")
|
||||||
@ -14440,12 +14428,12 @@
|
|||||||
(set_attr "fp_int_src" "true")
|
(set_attr "fp_int_src" "true")
|
||||||
(set_attr "mode" "SI")])
|
(set_attr "mode" "SI")])
|
||||||
|
|
||||||
(define_insn "*fop_df_4"
|
(define_insn "*fop_df_4_i387"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,0"))
|
[(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,0"))
|
||||||
(match_operand:DF 2 "register_operand" "0,f")]))]
|
(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)"
|
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||||
"* return output_387_binary_op (insn, operands);"
|
"* return output_387_binary_op (insn, operands);"
|
||||||
[(set (attr "type")
|
[(set (attr "type")
|
||||||
@ -14457,7 +14445,7 @@
|
|||||||
(const_string "fop")))
|
(const_string "fop")))
|
||||||
(set_attr "mode" "SF")])
|
(set_attr "mode" "SF")])
|
||||||
|
|
||||||
(define_insn "*fop_df_5"
|
(define_insn "*fop_df_5_i387"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(match_operand:DF 1 "register_operand" "0,f")
|
[(match_operand:DF 1 "register_operand" "0,f")
|
||||||
@ -14474,7 +14462,7 @@
|
|||||||
(const_string "fop")))
|
(const_string "fop")))
|
||||||
(set_attr "mode" "SF")])
|
(set_attr "mode" "SF")])
|
||||||
|
|
||||||
(define_insn "*fop_df_6"
|
(define_insn "*fop_df_6_i387"
|
||||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||||
(match_operator:DF 3 "binary_fp_operator"
|
(match_operator:DF 3 "binary_fp_operator"
|
||||||
[(float_extend:DF
|
[(float_extend:DF
|
||||||
@ -14492,7 +14480,21 @@
|
|||||||
(const_string "fop")))
|
(const_string "fop")))
|
||||||
(set_attr "mode" "SF")])
|
(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")
|
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||||
(match_operator:XF 3 "binary_fp_operator"
|
(match_operator:XF 3 "binary_fp_operator"
|
||||||
[(match_operand:XF 1 "register_operand" "0,f")
|
[(match_operand:XF 1 "register_operand" "0,f")
|
||||||
@ -14509,7 +14511,7 @@
|
|||||||
(const_string "fop")))
|
(const_string "fop")))
|
||||||
(set_attr "mode" "XF")])
|
(set_attr "mode" "XF")])
|
||||||
|
|
||||||
(define_insn "*fop_xf_2"
|
(define_insn "*fop_xf_2_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||||
(match_operator:XF 3 "binary_fp_operator"
|
(match_operator:XF 3 "binary_fp_operator"
|
||||||
[(float:XF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
|
[(float:XF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
|
||||||
@ -14526,7 +14528,7 @@
|
|||||||
(set_attr "fp_int_src" "true")
|
(set_attr "fp_int_src" "true")
|
||||||
(set_attr "mode" "SI")])
|
(set_attr "mode" "SI")])
|
||||||
|
|
||||||
(define_insn "*fop_xf_3"
|
(define_insn "*fop_xf_3_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||||
(match_operator:XF 3 "binary_fp_operator"
|
(match_operator:XF 3 "binary_fp_operator"
|
||||||
[(match_operand:XF 1 "register_operand" "0,0")
|
[(match_operand:XF 1 "register_operand" "0,0")
|
||||||
@ -14543,7 +14545,7 @@
|
|||||||
(set_attr "fp_int_src" "true")
|
(set_attr "fp_int_src" "true")
|
||||||
(set_attr "mode" "SI")])
|
(set_attr "mode" "SI")])
|
||||||
|
|
||||||
(define_insn "*fop_xf_4"
|
(define_insn "*fop_xf_4_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||||
(match_operator:XF 3 "binary_fp_operator"
|
(match_operator:XF 3 "binary_fp_operator"
|
||||||
[(float_extend:XF (match_operand 1 "nonimmediate_operand" "fm,0"))
|
[(float_extend:XF (match_operand 1 "nonimmediate_operand" "fm,0"))
|
||||||
@ -14559,7 +14561,7 @@
|
|||||||
(const_string "fop")))
|
(const_string "fop")))
|
||||||
(set_attr "mode" "SF")])
|
(set_attr "mode" "SF")])
|
||||||
|
|
||||||
(define_insn "*fop_xf_5"
|
(define_insn "*fop_xf_5_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||||
(match_operator:XF 3 "binary_fp_operator"
|
(match_operator:XF 3 "binary_fp_operator"
|
||||||
[(match_operand:XF 1 "register_operand" "0,f")
|
[(match_operand:XF 1 "register_operand" "0,f")
|
||||||
@ -14576,7 +14578,7 @@
|
|||||||
(const_string "fop")))
|
(const_string "fop")))
|
||||||
(set_attr "mode" "SF")])
|
(set_attr "mode" "SF")])
|
||||||
|
|
||||||
(define_insn "*fop_xf_6"
|
(define_insn "*fop_xf_6_i387"
|
||||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||||
(match_operator:XF 3 "binary_fp_operator"
|
(match_operator:XF 3 "binary_fp_operator"
|
||||||
[(float_extend:XF
|
[(float_extend:XF
|
||||||
|
Loading…
Reference in New Issue
Block a user