[PATCH] D149027: [X86] Add peephole to convert `(Cmp Op32/Op64, Imm8)` -> `(Cmp Op16/Op8, Imm8)`

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 23 18:10:30 PDT 2023


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:5695
+      // TODO: Enable imm16 transform as well if -Os is set?
+      if (C.getSignificantBits() <= 8) {
+        EVT NewVT = OpVT;
----------------
goldstein.w.n wrote:
> craig.topper wrote:
> > craig.topper wrote:
> > > I think this can be `isInt<8>(C.getSExtValue())`
> > The alive proof is checking the constant is zero extended from 8 bits,  right? But this check is a signed checked.
> This is checking if `C` can be encoded as imm8.
So it needs to be uint<8> to make the transform valid and an sint<8> to make the transform profitable. But we only checked the sint<8> condition?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D149027/new/

https://reviews.llvm.org/D149027



More information about the llvm-commits mailing list