[X86] matchAddressRecursively - support zext(and(shl(x,c1)),c2) -> shl(zext(and(x...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 12 Mar 2023 09:48:40 +0000 (09:48 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 12 Mar 2023 09:49:11 +0000 (09:49 +0000)
commit47208f8d343791d47a487f0139743d607b8bb965
tree121be37eb15f1b5bc3de1a57b6057e3746b9fa69
parent6628767e477fbc9d71dedb1ee510da72c713cac3
[X86] matchAddressRecursively - support zext(and(shl(x,c1)),c2) -> shl(zext(and(x, c2 >> c1),c1)

This came about while investigating ways to handle D145468 in a more generic manner, which involves trying harder to fold and(zext(x),c) -> zext(and(x,c))

Alive2: https://alive2.llvm.org/ce/z/7fXtDt (generic fold)

Differential Revision: https://reviews.llvm.org/D145855
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
llvm/test/CodeGen/X86/lea-dagdag.ll