================ @@ -10716,6 +10716,21 @@ let Predicates = [HasCPA] in { // Scalar multiply-add/subtract def MADDPT : MulAccumCPA<0, "maddpt">; def MSUBPT : MulAccumCPA<1, "msubpt">; + + def : Pat<(ptradd GPR64sp:$Rn, GPR64sp:$Rm), + (ADDPT_shift GPR64sp:$Rn, GPR64sp:$Rm, (i32 0))>; + def : Pat<(ptradd GPR64sp:$Rn, (shl GPR64sp:$Rm, (i64 imm0_7:$imm))), + (ADDPT_shift GPR64sp:$Rn, GPR64sp:$Rm, + (i32 (trunc_imm imm0_7:$imm)))>; ---------------- davemgreen wrote:
Do you mind making the shift operand (lsl_imm3_shift_operand) an i64 as opposed to i32, to avoid the trunc_imm? Representing it as an i64 seems like a more natural type for something based on pointers, even if the exact type does not matter due to the range. https://github.com/llvm/llvm-project/pull/105669 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits