(define_insn "extendsfdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (float_extend:DF (match_operand:SF 1 "fr_register_operand" "f")))]
+ (float_extend:DF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fnorm.d %0 = %1"
+ "fnorm.d %0 = %F1"
[(set_attr "itanium_class" "fmac")])
(define_insn "extendsfxf2"
[(set (match_operand:XF 0 "fr_register_operand" "=f")
- (float_extend:XF (match_operand:SF 1 "fr_register_operand" "f")))]
+ (float_extend:XF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fnorm %0 = %1"
+ "fnorm %0 = %F1"
[(set_attr "itanium_class" "fmac")])
(define_insn "extenddfxf2"
[(set (match_operand:XF 0 "fr_register_operand" "=f")
- (float_extend:XF (match_operand:DF 1 "fr_register_operand" "f")))]
+ (float_extend:XF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fnorm %0 = %1"
+ "fnorm %0 = %F1"
[(set_attr "itanium_class" "fmac")])
(define_insn "truncdfsf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (float_truncate:SF (match_operand:DF 1 "fr_register_operand" "f")))]
+ (float_truncate:SF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fnorm.s %0 = %1"
+ "fnorm.s %0 = %F1"
[(set_attr "itanium_class" "fmac")])
(define_insn "truncxfsf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (float_truncate:SF (match_operand:XF 1 "fr_register_operand" "f")))]
+ (float_truncate:SF (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fnorm.s %0 = %1"
+ "fnorm.s %0 = %F1"
[(set_attr "itanium_class" "fmac")])
(define_insn "truncxfdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (float_truncate:DF (match_operand:XF 1 "fr_register_operand" "f")))]
+ (float_truncate:DF (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fnorm.d %0 = %1"
+ "fnorm.d %0 = %F1"
[(set_attr "itanium_class" "fmac")])
;; Convert between signed integer types and floating point.
(define_insn "floatdixf2"
[(set (match_operand:XF 0 "fr_register_operand" "=f")
- (float:XF (match_operand:DI 1 "fr_register_operand" "f")))]
+ (float:XF (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.xf %0 = %1"
+ "fcvt.xf %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fix_truncsfdi2"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (fix:DI (match_operand:SF 1 "fr_register_operand" "f")))]
+ (fix:DI (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.fx.trunc %0 = %1"
+ "fcvt.fx.trunc %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fix_truncdfdi2"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (fix:DI (match_operand:DF 1 "fr_register_operand" "f")))]
+ (fix:DI (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.fx.trunc %0 = %1"
+ "fcvt.fx.trunc %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fix_truncxfdi2"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (fix:DI (match_operand:XF 1 "fr_register_operand" "f")))]
+ (fix:DI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.fx.trunc %0 = %1"
+ "fcvt.fx.trunc %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fix_truncxfdi2_alts"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (fix:DI (match_operand:XF 1 "fr_register_operand" "f")))
+ (fix:DI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))
(use (match_operand:SI 2 "const_int_operand" ""))]
""
- "fcvt.fx.trunc.s%2 %0 = %1"
+ "fcvt.fx.trunc.s%2 %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
;; Convert between unsigned integer types and floating point.
(define_insn "floatunsdisf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (unsigned_float:SF (match_operand:DI 1 "fr_register_operand" "f")))]
+ (unsigned_float:SF (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.xuf.s %0 = %1"
+ "fcvt.xuf.s %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "floatunsdidf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (unsigned_float:DF (match_operand:DI 1 "fr_register_operand" "f")))]
+ (unsigned_float:DF (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.xuf.d %0 = %1"
+ "fcvt.xuf.d %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "floatunsdixf2"
[(set (match_operand:XF 0 "fr_register_operand" "=f")
- (unsigned_float:XF (match_operand:DI 1 "fr_register_operand" "f")))]
+ (unsigned_float:XF (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.xuf %0 = %1"
+ "fcvt.xuf %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fixuns_truncsfdi2"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (unsigned_fix:DI (match_operand:SF 1 "fr_register_operand" "f")))]
+ (unsigned_fix:DI (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.fxu.trunc %0 = %1"
+ "fcvt.fxu.trunc %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fixuns_truncdfdi2"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (unsigned_fix:DI (match_operand:DF 1 "fr_register_operand" "f")))]
+ (unsigned_fix:DI (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.fxu.trunc %0 = %1"
+ "fcvt.fxu.trunc %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fixuns_truncxfdi2"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (unsigned_fix:DI (match_operand:XF 1 "fr_register_operand" "f")))]
+ (unsigned_fix:DI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fcvt.fxu.trunc %0 = %1"
+ "fcvt.fxu.trunc %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
(define_insn "fixuns_truncxfdi2_alts"
[(set (match_operand:DI 0 "fr_register_operand" "=f")
- (unsigned_fix:DI (match_operand:XF 1 "fr_register_operand" "f")))
+ (unsigned_fix:DI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))
(use (match_operand:SI 2 "const_int_operand" ""))]
""
- "fcvt.fxu.trunc.s%2 %0 = %1"
+ "fcvt.fxu.trunc.s%2 %0 = %F1"
[(set_attr "itanium_class" "fcvtfx")])
\f
;; ::::::::::::::::::::
(define_insn_and_split "divsi3_internal"
[(set (match_operand:XF 0 "fr_register_operand" "=&f")
- (float:XF (div:SI (match_operand:XF 1 "fr_register_operand" "f")
- (match_operand:XF 2 "fr_register_operand" "f"))))
+ (float:XF (div:SI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:XF 2 "fr_reg_or_fp01_operand" "fG"))))
(clobber (match_scratch:XF 4 "=&f"))
(clobber (match_scratch:XF 5 "=&f"))
(clobber (match_scratch:BI 6 "=c"))
(truncate:DI
(lshiftrt:TI
(mult:TI (sign_extend:TI
- (match_operand:DI 1 "fr_register_operand" "f"))
+ (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG"))
(sign_extend:TI
- (match_operand:DI 2 "fr_register_operand" "f")))
+ (match_operand:DI 2 "fr_reg_or_fp01_operand" "fG")))
(const_int 64))))]
""
- "xmpy.h %0 = %1, %2"
+ "xmpy.h %0 = %F1, %F2"
[(set_attr "itanium_class" "xmpy")])
(define_insn "umuldi3_highpart"
(truncate:DI
(lshiftrt:TI
(mult:TI (zero_extend:TI
- (match_operand:DI 1 "fr_register_operand" "f"))
+ (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG"))
(zero_extend:TI
- (match_operand:DI 2 "fr_register_operand" "f")))
+ (match_operand:DI 2 "fr_reg_or_fp01_operand" "fG")))
(const_int 64))))]
""
- "xmpy.hu %0 = %1, %2"
+ "xmpy.hu %0 = %F1, %F2"
[(set_attr "itanium_class" "xmpy")])
(define_insn "negdi2"
;; Note the computation here is op0 = 63 - (exp - 0xffff).
(define_expand "clzdi2"
[(set (match_dup 2)
- (unsigned_float:XF (match_operand:DI 1 "fr_register_operand" "")))
+ (unsigned_float:XF (match_operand:DI 1 "fr_reg_or_fp01_operand" "")))
(set (match_dup 3)
(unspec:DI [(match_dup 2)] UNSPEC_GETF_EXP))
(set (match_dup 4) (const_int 65598))
(define_insn "*getf_exp_xf"
[(set (match_operand:DI 0 "gr_register_operand" "=r")
- (unspec:DI [(match_operand:XF 1 "fr_register_operand" "f")]
+ (unspec:DI [(match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")]
UNSPEC_GETF_EXP))]
""
- "getf.exp %0 = %1"
+ "getf.exp %0 = %F1"
[(set_attr "itanium_class" "frfr")])
(define_expand "divdi3"
(define_insn_and_split "divdi3_internal_lat"
[(set (match_operand:XF 0 "fr_register_operand" "=&f")
- (float:XF (div:SI (match_operand:XF 1 "fr_register_operand" "f")
- (match_operand:XF 2 "fr_register_operand" "f"))))
+ (float:XF (div:SI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:XF 2 "fr_reg_or_fp01_operand" "fG"))))
(clobber (match_scratch:XF 3 "=&f"))
(clobber (match_scratch:XF 4 "=&f"))
(clobber (match_scratch:XF 5 "=&f"))
(define_insn_and_split "divdi3_internal_thr"
[(set (match_operand:XF 0 "fr_register_operand" "=&f")
- (float:XF (div:SI (match_operand:XF 1 "fr_register_operand" "f")
- (match_operand:XF 2 "fr_register_operand" "f"))))
+ (float:XF (div:SI (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:XF 2 "fr_reg_or_fp01_operand" "fG"))))
(clobber (match_scratch:XF 3 "=&f"))
(clobber (match_scratch:XF 4 "=f"))
(clobber (match_scratch:BI 5 "=c"))]
(define_expand "mulditi3"
[(set (match_operand:TI 0 "fr_register_operand" "")
(mult:TI (sign_extend:TI
- (match_operand:DI 1 "fr_register_operand" ""))
+ (match_operand:DI 1 "fr_reg_or_fp01_operand" ""))
(sign_extend:TI
- (match_operand:DI 2 "fr_register_operand" ""))))]
+ (match_operand:DI 2 "fr_reg_or_fp01_operand" ""))))]
""
"")
(define_insn_and_split "*mulditi3_internal"
[(set (match_operand:TI 0 "fr_register_operand" "=&f")
(mult:TI (sign_extend:TI
- (match_operand:DI 1 "fr_register_operand" "%f"))
+ (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG"))
(sign_extend:TI
- (match_operand:DI 2 "fr_register_operand" "f"))))]
+ (match_operand:DI 2 "fr_reg_or_fp01_operand" "fG"))))]
""
"#"
"reload_completed"
(define_expand "umulditi3"
[(set (match_operand:TI 0 "fr_register_operand" "")
(mult:TI (zero_extend:TI
- (match_operand:DI 1 "fr_register_operand" ""))
+ (match_operand:DI 1 "fr_reg_or_fp01_operand" ""))
(zero_extend:TI
- (match_operand:DI 2 "fr_register_operand" ""))))]
+ (match_operand:DI 2 "fr_reg_or_fp01_operand" ""))))]
""
"")
(define_insn_and_split "*umulditi3_internal"
[(set (match_operand:TI 0 "fr_register_operand" "=&f")
(mult:TI (zero_extend:TI
- (match_operand:DI 1 "fr_register_operand" "%f"))
+ (match_operand:DI 1 "fr_reg_or_fp01_operand" "fG"))
(zero_extend:TI
- (match_operand:DI 2 "fr_register_operand" "f"))))]
+ (match_operand:DI 2 "fr_reg_or_fp01_operand" "fG"))))]
""
"#"
"reload_completed"
(define_insn "addsf3"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (plus:SF (match_operand:SF 1 "fr_register_operand" "%f")
+ (plus:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:SF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fadd.s %0 = %1, %F2"
+ "fadd.s %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "subsf3"
(define_insn "mulsf3"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (mult:SF (match_operand:SF 1 "fr_register_operand" "%f")
- (match_operand:SF 2 "fr_register_operand" "f")))]
+ (mult:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fmpy.s %0 = %1, %2"
+ "fmpy.s %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "abssf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (abs:SF (match_operand:SF 1 "fr_register_operand" "f")))]
+ (abs:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fabs %0 = %1"
+ "fabs %0 = %F1"
[(set_attr "itanium_class" "fmisc")])
(define_insn "negsf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (neg:SF (match_operand:SF 1 "fr_register_operand" "f")))]
+ (neg:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fneg %0 = %1"
+ "fneg %0 = %F1"
[(set_attr "itanium_class" "fmisc")])
(define_insn "*nabssf2"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (neg:SF (abs:SF (match_operand:SF 1 "fr_register_operand" "f"))))]
+ (neg:SF (abs:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fnegabs %0 = %1"
+ "fnegabs %0 = %F1"
[(set_attr "itanium_class" "fmisc")])
(define_insn "copysignsf3"
(define_insn "sminsf3"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (smin:SF (match_operand:SF 1 "fr_register_operand" "f")
+ (smin:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:SF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fmin %0 = %1, %F2"
+ "fmin %0 = %F1, %F2"
[(set_attr "itanium_class" "fmisc")])
(define_insn "smaxsf3"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (smax:SF (match_operand:SF 1 "fr_register_operand" "f")
+ (smax:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:SF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fmax %0 = %1, %F2"
+ "fmax %0 = %F1, %F2"
[(set_attr "itanium_class" "fmisc")])
(define_insn "*maddsf4"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (plus:SF (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
- (match_operand:SF 2 "fr_register_operand" "f"))
+ (plus:SF (mult:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "fG"))
(match_operand:SF 3 "fr_reg_or_fp01_operand" "fG")))]
""
- "fma.s %0 = %1, %2, %F3"
+ "fma.s %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*msubsf4"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (minus:SF (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
- (match_operand:SF 2 "fr_register_operand" "f"))
+ (minus:SF (mult:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "fG"))
(match_operand:SF 3 "fr_reg_or_fp01_operand" "fG")))]
""
- "fms.s %0 = %1, %2, %F3"
+ "fms.s %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmulsf3"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
- (neg:SF (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
- (match_operand:SF 2 "fr_register_operand" "f"))))]
+ (neg:SF (mult:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fnmpy.s %0 = %1, %2"
+ "fnmpy.s %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmaddsf4"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(minus:SF (match_operand:SF 3 "fr_reg_or_fp01_operand" "fG")
- (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
- (match_operand:SF 2 "fr_register_operand" "f"))))]
+ (mult:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fnma.s %0 = %1, %2, %F3"
+ "fnma.s %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmaddsf4_alts"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(minus:SF (match_operand:SF 3 "fr_reg_or_fp01_operand" "fG")
- (mult:SF (match_operand:SF 1 "fr_register_operand" "f")
- (match_operand:SF 2 "fr_register_operand" "f"))))
+ (mult:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "fG"))))
(use (match_operand:SI 4 "const_int_operand" ""))]
""
- "fnma.s.s%4 %0 = %1, %2, %F3"
+ "fnma.s.s%4 %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_expand "divsf3"
[(set (match_operand:SF 0 "fr_register_operand" "")
- (div:SF (match_operand:SF 1 "fr_register_operand" "")
- (match_operand:SF 2 "fr_register_operand" "")))]
+ (div:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "")
+ (match_operand:SF 2 "fr_reg_or_fp01_operand" "")))]
"TARGET_INLINE_FLOAT_DIV"
{
rtx insn;
(define_insn "*sqrt_approx"
[(set (match_operand:XF 0 "fr_register_operand" "=f")
(div:XF (const_int 1)
- (unspec:XF [(match_operand:XF 2 "fr_register_operand" "f")]
+ (unspec:XF [(match_operand:XF 2 "fr_reg_or_fp01_operand" "fG")]
UNSPEC_FR_SQRT_RECIP_APPROX_RES)))
(set (match_operand:BI 1 "register_operand" "=c")
(unspec:BI [(match_dup 2)] UNSPEC_FR_SQRT_RECIP_APPROX))
(define_expand "sqrtsf2"
[(set (match_operand:SF 0 "fr_register_operand" "=&f")
- (sqrt:SF (match_operand:SF 1 "fr_register_operand" "f")))]
+ (sqrt:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))]
"TARGET_INLINE_SQRT"
{
rtx insn;
(define_insn_and_split "sqrtsf2_internal_thr"
[(set (match_operand:SF 0 "fr_register_operand" "=&f")
- (sqrt:SF (match_operand:SF 1 "fr_register_operand" "f")))
+ (sqrt:SF (match_operand:SF 1 "fr_reg_or_fp01_operand" "fG")))
;; Register r2 in optimization guide.
(clobber (match_scratch:DI 2 "=r"))
;; Register f8 in optimization guide
(define_insn "adddf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (plus:DF (match_operand:DF 1 "fr_register_operand" "%f")
+ (plus:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fadd.d %0 = %1, %F2"
+ "fadd.d %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "*adddf3_trunc"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
- (plus:DF (match_operand:DF 1 "fr_register_operand" "%f")
+ (plus:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fadd.s %0 = %1, %F2"
+ "fadd.s %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "subdf3"
(define_insn "muldf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f")))]
+ (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fmpy.d %0 = %1, %2"
+ "fmpy.d %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "*muldf3_trunc"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
- (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))))]
+ (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fmpy.s %0 = %1, %2"
+ "fmpy.s %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "absdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (abs:DF (match_operand:DF 1 "fr_register_operand" "f")))]
+ (abs:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fabs %0 = %1"
+ "fabs %0 = %F1"
[(set_attr "itanium_class" "fmisc")])
(define_insn "negdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (neg:DF (match_operand:DF 1 "fr_register_operand" "f")))]
+ (neg:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
""
- "fneg %0 = %1"
+ "fneg %0 = %F1"
[(set_attr "itanium_class" "fmisc")])
(define_insn "*nabsdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (neg:DF (abs:DF (match_operand:DF 1 "fr_register_operand" "f"))))]
+ (neg:DF (abs:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fnegabs %0 = %1"
+ "fnegabs %0 = %F1"
[(set_attr "itanium_class" "fmisc")])
(define_insn "copysigndf3"
(define_insn "smindf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (smin:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (smin:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fmin %0 = %1, %F2"
+ "fmin %0 = %F1, %F2"
[(set_attr "itanium_class" "fmisc")])
(define_insn "smaxdf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (smax:DF (match_operand:DF 1 "fr_register_operand" "f")
+ (smax:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
(match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))]
""
- "fmax %0 = %1, %F2"
+ "fmax %0 = %F1, %F2"
[(set_attr "itanium_class" "fmisc")])
(define_insn "*madddf4"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (plus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))
+ (plus:DF (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))
(match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")))]
""
- "fma.d %0 = %1, %2, %F3"
+ "fma.d %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*madddf4_trunc"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
- (plus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))
+ (plus:DF (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))
(match_operand:DF 3 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fma.s %0 = %1, %2, %F3"
+ "fma.s %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*msubdf4"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (minus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))
+ (minus:DF (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))
(match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")))]
""
- "fms.d %0 = %1, %2, %F3"
+ "fms.d %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*msubdf4_trunc"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
- (minus:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))
+ (minus:DF (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))
(match_operand:DF 3 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fms.s %0 = %1, %2, %F3"
+ "fms.s %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmuldf3"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
- (neg:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))))]
+ (neg:DF (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fnmpy.d %0 = %1, %2"
+ "fnmpy.d %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmuldf3_trunc"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
- (neg:DF (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f")))))]
+ (neg:DF (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))))]
""
- "fnmpy.s %0 = %1, %2"
+ "fnmpy.s %0 = %F1, %F2"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmadddf4"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(minus:DF (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")
- (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))))]
+ (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))]
""
- "fnma.d %0 = %1, %2, %F3"
+ "fnma.d %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmadddf4_alts"
[(set (match_operand:DF 0 "fr_register_operand" "=f")
(minus:DF (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")
- (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f"))))
+ (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG"))))
(use (match_operand:SI 4 "const_int_operand" ""))]
""
- "fnma.d.s%4 %0 = %1, %2, %F3"
+ "fnma.d.s%4 %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmadddf4_truncsf"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
(minus:DF (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")
- (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f")))))]
+ (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))))]
""
- "fnma.s %0 = %1, %2, %F3"
+ "fnma.s %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_insn "*nmadddf4_truncsf_alts"
[(set (match_operand:SF 0 "fr_register_operand" "=f")
(float_truncate:SF
(minus:DF (match_operand:DF 3 "fr_reg_or_fp01_operand" "fG")
- (mult:DF (match_operand:DF 1 "fr_register_operand" "f")
- (match_operand:DF 2 "fr_register_operand" "f")))))
+ (mult:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "fG")))))
(use (match_operand:SI 4 "const_int_operand" ""))]
""
- "fnma.s.s%4 %0 = %1, %2, %F3"
+ "fnma.s.s%4 %0 = %F1, %F2, %F3"
[(set_attr "itanium_class" "fmac")])
(define_expand "divdf3"
[(set (match_operand:DF 0 "fr_register_operand" "")
- (div:DF (match_operand:DF 1 "fr_register_operand" "")
- (match_operand:DF 2 "fr_register_operand" "")))]
+ (div:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "")
+ (match_operand:DF 2 "fr_reg_or_fp01_operand" "")))]
"TARGET_INLINE_FLOAT_DIV"
{
rtx insn;
(define_expand "sqrtdf2"
[(set (match_operand:DF 0 "fr_register_operand" "=&f")
- (sqrt:DF (match_operand:DF 1 "fr_register_operand" "f")))]
+ (sqrt:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))]
"TARGET_INLINE_SQRT"
{
rtx insn;
(define_insn_and_split "sqrtdf2_internal_thr"
[(set (match_operand:DF 0 "fr_register_operand" "=&f")
- (sqrt:DF (match_operand:DF 1 "fr_register_operand" "f")))
+ (sqrt:DF (match_operand:DF 1 "fr_reg_or_fp01_operand" "fG")))
;; Register r2 in optimization guide.
(clobber (match_scratch:DI 2 "=r"))
;; Register f8 in optimization guide
(define_expand "divxf3"
[(set (match_operand:XF 0 "fr_register_operand" "")
- (div:XF (match_operand:XF 1 "fr_register_operand" "")
- (match_operand:XF 2 "fr_register_operand" "")))]
+ (div:XF (match_operand:XF 1 "fr_reg_or_fp01_operand" "")
+ (match_operand:XF 2 "fr_reg_or_fp01_operand" "")))]
"TARGET_INLINE_FLOAT_DIV"
{
/* There is only one divxf3 sequence, not two like for divsf and divdf. */
(define_expand "sqrtxf2"
[(set (match_operand:XF 0 "fr_register_operand" "=&f")
- (sqrt:XF (match_operand:XF 1 "fr_register_operand" "f")))]
+ (sqrt:XF (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))]
"TARGET_INLINE_SQRT"
{
rtx insn;
(define_insn_and_split "sqrtxf2_internal_thr"
[(set (match_operand:XF 0 "fr_register_operand" "=&f")
- (sqrt:XF (match_operand:XF 1 "fr_register_operand" "f")))
+ (sqrt:XF (match_operand:XF 1 "fr_reg_or_fp01_operand" "fG")))
;; Register r2 in optimization guide.
(clobber (match_scratch:DI 2 "=r"))
;; Register f8 in optimization guide
(define_insn "*recip_approx"
[(set (match_operand:XF 0 "fr_register_operand" "=f")
(unspec:XF [(const_int 1)
- (match_operand:XF 3 "fr_register_operand" "f")]
+ (match_operand:XF 3 "fr_reg_or_fp01_operand" "fG")]
UNSPEC_FR_RECIP_APPROX_RES))
(set (match_operand:BI 1 "register_operand" "=c")
- (unspec:BI [(match_operand:XF 2 "fr_register_operand" "f")
+ (unspec:BI [(match_operand:XF 2 "fr_reg_or_fp01_operand" "fG")
(match_dup 3)] UNSPEC_FR_RECIP_APPROX))
(use (match_operand:SI 4 "const_int_operand" ""))]
""
- "frcpa.s%4 %0, %1 = %2, %3"
+ "frcpa.s%4 %0, %1 = %F2, %F3"
[(set_attr "itanium_class" "fmisc")
(set_attr "predicable" "no")])
\f