[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