[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 14:09:16 PDT 2023


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:5644
+    // during lowering.
+    if (OpVT.isScalarInteger() && OpVT.getScalarSizeInBits() > 8 &&
+        isa<ConstantSDNode>(N1) && !isNullConstant(N1) &&
----------------
OpVT.isScalarInteger() should always bee true for X86ISD::CMP I think. The isa<ConstantSDNode>(N1) would guarantee it too.


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:5646
+        isa<ConstantSDNode>(N1) && !isNullConstant(N1) &&
+        hasNoSignFlagUses(SDValue(Node, 0))) {
+      const APInt &C = cast<ConstantSDNode>(N1)->getAPIntValue();
----------------
Do we need to check overflow flag uses too?


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:5650
+      // cause LCP stalls in the frontend.
+      // TODO: Enable imm16 transform aswell if -Os is set?
+      if (C.getSignificantBits() <= 8) {
----------------
aswell -> as well


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:5653
+          MVT NewVT;
+          if(CurDAG->MaskedValueIsZero(
+                 N0, APInt::getBitsSetFrom(OpVT.getScalarSizeInBits(), 8)))
----------------
Space after if


================
Comment at: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:5656
+              NewVT = MVT::i8;
+          else if(CurDAG->MaskedValueIsZero(
+                 N0, APInt::getBitsSetFrom(OpVT.getScalarSizeInBits(), 16)))
----------------
space after if


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