[llvm] [AArch64][GlobalISel] Push ADD/SUB through Extend Instructions (PR #90964)
Thorsten Schütt via llvm-commits
llvm-commits at lists.llvm.org
Thu May 23 09:32:30 PDT 2024
================
@@ -52,14 +52,31 @@ def ext_uaddv_to_uaddlv : GICombineRule<
(apply [{ applyExtUaddvToUaddlv(*${root}, MRI, B, Observer, ${matchinfo}); }])
>;
+class push_opcode_through_ext<Instruction opcode, Instruction extOpcode> : GICombineRule <
+ (defs root:$root),
+ (match (extOpcode $ext1, $src1):$ExtMI,
+ (extOpcode $ext2, $src2),
+ (opcode $dst, $ext1, $ext2):$root,
+ [{ return matchPushAddSubExt(*${root}, MRI, ${dst}.getReg(), ${src1}.getReg(), ${src2}.getReg()); }]),
+ (apply [{ applyPushAddSubExt(*${root}, MRI, B, ${ExtMI}->getOpcode() == TargetOpcode::G_SEXT, ${dst}.getReg(), ${src1}.getReg(), ${src2}.getReg()); }])>;
+
+def push_sub_through_zext : push_opcode_through_ext<G_SUB, G_ZEXT>;
+def push_add_through_zext : push_opcode_through_ext<G_ADD, G_ZEXT>;
+def push_sub_through_sext : push_opcode_through_ext<G_SUB, G_SEXT>;
+def push_add_through_sext : push_opcode_through_ext<G_ADD, G_SEXT>;
----------------
tschuett wrote:
Nice!
https://github.com/llvm/llvm-project/pull/90964
More information about the llvm-commits
mailing list