[llvm] [GlobalISel] Combine [a, s, z]ext of undef into 0 or undef (PR #117439)

Thorsten Schütt via llvm-commits llvm-commits at lists.llvm.org
Sun Nov 24 22:44:54 PST 2024


================
@@ -1857,6 +1857,27 @@ class integer_of_opcode<Instruction castOpcode> : GICombineRule <
 
 def integer_of_truncate : integer_of_opcode<G_TRUNC>;
 
+def anyext_undef: GICombineRule<
+   (defs root:$root),
+   (match (G_IMPLICIT_DEF $undef),
+          (G_ANYEXT $root, $undef):$Aext,
+   [{ return Helper.isUndefLegalOrBeforeLegalizer(MRI.getType(${Aext}->getOperand(0).getReg())); }]),
+   (apply [{ Helper.replaceInstWithUndef(*${Aext}); }])>;
----------------
tschuett wrote:

The law hasn't been written down yet and the legalizers disagree with that statement. For the moment, the legality is safer.

It would be really confusing if match returns true without any documentation or hints.

https://github.com/llvm/llvm-project/pull/117439


More information about the llvm-commits mailing list