"TARGET_VECTOR"
{})
-(define_expand "@pred_vnmsac_vx_<mode>"
+(define_expand "@pred_mul_minus_vx_<mode>"
[(set (match_operand:V_VLSI_QHS 0 "register_operand")
(if_then_else:V_VLSI_QHS
(unspec:<VM>
riscv_vector::prepare_ternary_operands (operands);
})
-(define_expand "@pred_vnmsac_vx_<mode>"
+(define_expand "@pred_mul_minus_vx_<mode>"
[(set (match_operand:V_VLSI_D 0 "register_operand")
(if_then_else:V_VLSI_D
(unspec:<VM>
[(set_attr "type" "vssegt<order>x")
(set_attr "mode" "<V32T:MODE>")])
-(define_insn "*pred_nmsac_<mode>_scalar_undef"
- [(set (match_operand:V_VLSI_QHS 0 "register_operand" "=vd, vr")
+(define_insn "*pred_mul_minus_vx<mode>_undef"
+ [(set (match_operand:V_VLSI_QHS 0 "register_operand" "=vd, vd, vr, vr")
(if_then_else:V_VLSI_QHS
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" " vm, Wc1")
- (match_operand 6 "vector_length_operand" "rvl, rvl")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
- (match_operand 9 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm, Wc1, Wc1")
+ (match_operand 6 "vector_length_operand" "rvl, rvl, rvl, rvl")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
+ (match_operand 9 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(minus:V_VLSI_QHS
- (match_operand:V_VLSI_QHS 5 "register_operand" " 0, 0")
+ (match_operand:V_VLSI_QHS 5 "register_operand" " vr, 0, vr, 0")
(mult:V_VLSI_QHS
(vec_duplicate:V_VLSI_QHS
- (match_operand:<VEL> 3 "reg_or_0_operand" " rJ, rJ"))
- (match_operand:V_VLSI_QHS 4 "register_operand" " vr, vr")))
+ (match_operand:<VEL> 3 "reg_or_0_operand" " rJ, rJ, rJ, rJ"))
+ (match_operand:V_VLSI_QHS 4 "register_operand" " 0, vr, 0, vr")))
(match_operand:V_VLSI_QHS 2 "vector_undef_operand")))]
"TARGET_VECTOR"
"@
+ vnmsub.vx\t%0,%z3,%5%p1
vnmsac.vx\t%0,%z3,%4%p1
+ vnmsub.vx\t%0,%z3,%5%p1
vnmsac.vx\t%0,%z3,%4%p1"
[(set_attr "type" "vimuladd")
(set_attr "mode" "<MODE>")])
-(define_insn "*pred_nmsac_<mode>_scalar_undef"
- [(set (match_operand:V_VLSI_D 0 "register_operand" "=vd, vr")
+(define_insn "*pred_mul_minus_vx<mode>_undef"
+ [(set (match_operand:V_VLSI_D 0 "register_operand" "=vd, vd, vr, vr")
(if_then_else:V_VLSI_D
(unspec:<VM>
- [(match_operand:<VM> 1 "vector_mask_operand" " vm, Wc1")
- (match_operand 6 "vector_length_operand" "rvl, rvl")
- (match_operand 7 "const_int_operand" " i, i")
- (match_operand 8 "const_int_operand" " i, i")
- (match_operand 9 "const_int_operand" " i, i")
+ [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm, Wc1, Wc1")
+ (match_operand 6 "vector_length_operand" "rvl, rvl, rvl, rvl")
+ (match_operand 7 "const_int_operand" " i, i, i, i")
+ (match_operand 8 "const_int_operand" " i, i, i, i")
+ (match_operand 9 "const_int_operand" " i, i, i, i")
(reg:SI VL_REGNUM)
(reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
(minus:V_VLSI_D
- (match_operand:V_VLSI_D 5 "register_operand" " 0, 0")
+ (match_operand:V_VLSI_D 5 "register_operand" " vr, 0, vr, 0")
(mult:V_VLSI_D
(vec_duplicate:V_VLSI_D
- (match_operand:<VEL> 3 "reg_or_0_operand" " rJ, rJ"))
- (match_operand:V_VLSI_D 4 "register_operand" " vr, vr")))
+ (match_operand:<VEL> 3 "reg_or_0_operand" " rJ, rJ, rJ, rJ"))
+ (match_operand:V_VLSI_D 4 "register_operand" " 0, vr, 0, vr")))
(match_operand:V_VLSI_D 2 "vector_undef_operand")))]
"TARGET_VECTOR && TARGET_64BIT"
"@
+ vnmsub.vx\t%0,%z3,%5%p1
vnmsac.vx\t%0,%z3,%4%p1
+ vnmsub.vx\t%0,%z3,%5%p1
vnmsac.vx\t%0,%z3,%4%p1"
[(set_attr "type" "vimuladd")
(set_attr "mode" "<MODE>")])