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:
parent
55d83cdf23
commit
ab95fe61fe
@ -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;
|
||||
})
|
||||
|
||||
|
@ -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;
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user