[PATCH] D108049: [InstCombine] Extend canonicalizeClampLike to handle truncated inputs

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 15 07:19:25 PDT 2021


lebedev.ri added inline comments.


================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp:1427
+  Value *MaybeReplacedLow = Builder.CreateSelect(
+      ShouldReplaceLow, Builder.CreateSExt(ReplacementLow, X->getType()), X);
+
----------------
We didn't need `sext` originally. Why do we always need one now? Should this use `CreateSExtOrBitCast()`?


================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp:1431-1438
+  if (X->getType() == Sel0.getType())
+    return SelectInst::Create(ShouldReplaceHigh, ReplacementHigh,
+                              MaybeReplacedLow);
+
+  Value *MaybeReplacedHigh = Builder.CreateSelect(
+      ShouldReplaceHigh, Builder.CreateSExt(ReplacementHigh, X->getType()),
+      MaybeReplacedLow);
----------------
I would recommend something along the lines of using `CreateSExtOrBitCast()`,
only calling `CreateSelect` in a single place, and returning through `CreateTruncOrBitCast()`.


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

https://reviews.llvm.org/D108049



More information about the llvm-commits mailing list