AArch64: use canonical ordering for complex mul, fma and fms

After the first patch in the series this updates the optabs to expect the
canonical sequence.

gcc/ChangeLog:

	PR tree-optimization/102819
	PR tree-optimization/103169
	* config/aarch64/aarch64-simd.md (cml<fcmac1><conj_op><mode>4): Use
	canonical order.
	* config/aarch64/aarch64-sve.md (cml<fcmac1><conj_op><mode>4): Likewise.
This commit is contained in:
Tamar Christina 2022-02-02 10:51:38 +00:00
parent 55d83cdf23
commit ab95fe61fe
2 changed files with 10 additions and 10 deletions

View File

@ -556,17 +556,17 @@
;; remainder. Because of this, expand early.
(define_expand "cml<fcmac1><conj_op><mode>4"
[(set (match_operand:VHSDF 0 "register_operand")
(plus:VHSDF (match_operand:VHSDF 1 "register_operand")
(unspec:VHSDF [(match_operand:VHSDF 2 "register_operand")
(match_operand:VHSDF 3 "register_operand")]
FCMLA_OP)))]
(plus:VHSDF (unspec:VHSDF [(match_operand:VHSDF 1 "register_operand")
(match_operand:VHSDF 2 "register_operand")]
FCMLA_OP)
(match_operand:VHSDF 3 "register_operand")))]
"TARGET_COMPLEX && !BYTES_BIG_ENDIAN"
{
rtx tmp = gen_reg_rtx (<MODE>mode);
emit_insn (gen_aarch64_fcmla<rotsplit1><mode> (tmp, operands[1],
operands[3], operands[2]));
emit_insn (gen_aarch64_fcmla<rotsplit1><mode> (tmp, operands[3],
operands[2], operands[1]));
emit_insn (gen_aarch64_fcmla<rotsplit2><mode> (operands[0], tmp,
operands[3], operands[2]));
operands[2], operands[1]));
DONE;
})

View File

@ -7278,11 +7278,11 @@
rtx tmp = gen_reg_rtx (<MODE>mode);
emit_insn
(gen_aarch64_pred_fcmla<sve_rot1><mode> (tmp, operands[4],
operands[3], operands[2],
operands[1], operands[5]));
operands[2], operands[1],
operands[3], operands[5]));
emit_insn
(gen_aarch64_pred_fcmla<sve_rot2><mode> (operands[0], operands[4],
operands[3], operands[2],
operands[2], operands[1],
tmp, operands[5]));
DONE;
})