[llvm] r306508 - [InstCombine] Add test case demonstrating that we don't handle icmp eq (trunc (lshr(X, cst1)), cst->icmp (and X, mask), cst when the shift type is larger than 64-bits. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 27 23:44:34 PDT 2017


Oops an extra testing change snuck in there. Reverted in r306509.

~Craig

On Tue, Jun 27, 2017 at 11:42 PM, Craig Topper via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: ctopper
> Date: Tue Jun 27 23:42:48 2017
> New Revision: 306508
>
> URL: http://llvm.org/viewvc/llvm-project?rev=306508&view=rev
> Log:
> [InstCombine] Add test case demonstrating that we don't handle icmp eq
> (trunc (lshr(X, cst1)), cst->icmp (and X, mask), cst when the shift type is
> larger than 64-bits. NFC
>
> Modified:
>     llvm/trunk/include/llvm/IR/PatternMatch.h
>     llvm/trunk/test/Transforms/InstCombine/icmp.ll
>
> Modified: llvm/trunk/include/llvm/IR/PatternMatch.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/
> llvm/IR/PatternMatch.h?rev=306508&r1=306507&r2=306508&view=diff
> ============================================================
> ==================
> --- llvm/trunk/include/llvm/IR/PatternMatch.h (original)
> +++ llvm/trunk/include/llvm/IR/PatternMatch.h Tue Jun 27 23:42:48 2017
> @@ -379,6 +379,7 @@ struct bind_const_intval_ty {
>    template <typename ITy> bool match(ITy *V) {
>      if (const auto *CV = dyn_cast<ConstantInt>(V))
>        if (CV->getBitWidth() <= 64) {
> +        return false;
>          VR = CV->getZExtValue();
>          return true;
>        }
>
> Modified: llvm/trunk/test/Transforms/InstCombine/icmp.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> Transforms/InstCombine/icmp.ll?rev=306508&r1=306507&r2=306508&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/Transforms/InstCombine/icmp.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/icmp.ll Tue Jun 27 23:42:48
> 2017
> @@ -762,6 +762,27 @@ define i1 @test52(i32 %x1) {
>    ret i1 %A
>  }
>
> +; TODO we have a 64-bit or less restriction in the handling for this
> pattern. We should remove that and do the same thing we do above.
> +define i1 @test52b(i128 %x1) {
> +; CHECK-LABEL: @test52b(
> +; CHECK-NEXT:    [[CONV:%.*]] = and i128 [[X1:%.*]], 255
> +; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i128 [[CONV]], 127
> +; CHECK-NEXT:    [[TMP2:%.*]] = lshr i128 [[X1]], 16
> +; CHECK-NEXT:    [[TMP3:%.*]] = trunc i128 [[TMP2]] to i8
> +; CHECK-NEXT:    [[CMP15:%.*]] = icmp eq i8 [[TMP3]], 76
> +; CHECK-NEXT:    [[A:%.*]] = and i1 [[CMP]], [[CMP15]]
> +; CHECK-NEXT:    ret i1 [[A]]
> +;
> +  %conv = and i128 %x1, 255
> +  %cmp = icmp eq i128 %conv, 127
> +  %tmp2 = lshr i128 %x1, 16
> +  %tmp3 = trunc i128 %tmp2 to i8
> +  %cmp15 = icmp eq i8 %tmp3, 76
> +
> +  %A = and i1 %cmp, %cmp15
> +  ret i1 %A
> +}
> +
>  ; PR9838
>  define i1 @test53(i32 %a, i32 %b) {
>  ; CHECK-LABEL: @test53(
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170627/2f302770/attachment.html>


More information about the llvm-commits mailing list