[llvm] r336078 - [NFC] Test that shows unprofitability of instcombine with bit ranges

Max Kazantsev via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 1 23:55:00 PDT 2018


Author: mkazantsev
Date: Sun Jul  1 23:55:00 2018
New Revision: 336078

URL: http://llvm.org/viewvc/llvm-project?rev=336078&view=rev
Log:
[NFC] Test that shows unprofitability of instcombine with bit ranges

Added:
    llvm/trunk/test/Transforms/InstCombine/icmp_sdiv_with_and_without_range.ll

Added: llvm/trunk/test/Transforms/InstCombine/icmp_sdiv_with_and_without_range.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/icmp_sdiv_with_and_without_range.ll?rev=336078&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/icmp_sdiv_with_and_without_range.ll (added)
+++ llvm/trunk/test/Transforms/InstCombine/icmp_sdiv_with_and_without_range.ll Sun Jul  1 23:55:00 2018
@@ -0,0 +1,32 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -instcombine -S < %s | FileCheck %s
+
+; Test that presence of range does not cause unprofitable transforms with bit
+; arithmetics, and instcombine behaves exactly the same as without the range.
+
+define i1 @without_range(i32* %A) {
+; CHECK-LABEL: @without_range(
+; CHECK-NEXT:    [[A_VAL:%.*]] = load i32, i32* [[A:%.*]], align 8
+; CHECK-NEXT:    [[C:%.*]] = icmp slt i32 [[A_VAL]], 2
+; CHECK-NEXT:    ret i1 [[C]]
+;
+  %A.val = load i32, i32* %A, align 8
+  %B = sdiv i32 %A.val, 2
+  %C = icmp sge i32 0, %B
+  ret i1 %C
+}
+
+define i1 @with_range(i32* %A) {
+; CHECK-LABEL: @with_range(
+; CHECK-NEXT:    [[A_VAL:%.*]] = load i32, i32* [[A:%.*]], align 8, !range !0
+; CHECK-NEXT:    [[B_MASK:%.*]] = and i32 [[A_VAL]], 2147483646
+; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[B_MASK]], 0
+; CHECK-NEXT:    ret i1 [[C]]
+;
+  %A.val = load i32, i32* %A, align 8, !range !0
+  %B = sdiv i32 %A.val, 2
+  %C = icmp sge i32 0, %B
+  ret i1 %C
+}
+
+!0 = !{i32 0, i32 2147483647}




More information about the llvm-commits mailing list