diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/InstCombine/2007-01-27-AndICmp.ll | 4 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/and.ll | 6 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/icmp.ll | 40 |
3 files changed, 45 insertions, 5 deletions
diff --git a/llvm/test/Transforms/InstCombine/2007-01-27-AndICmp.ll b/llvm/test/Transforms/InstCombine/2007-01-27-AndICmp.ll index 4d1b982f676..6298a072333 100644 --- a/llvm/test/Transforms/InstCombine/2007-01-27-AndICmp.ll +++ b/llvm/test/Transforms/InstCombine/2007-01-27-AndICmp.ll @@ -1,8 +1,8 @@ ; RUN: opt < %s -instcombine -S | grep "ugt.*, 1" define i1 @test(i32 %tmp1030) { - %tmp1037 = icmp ne i32 %tmp1030, 40 ; <i1> [#uses=1] - %tmp1039 = icmp ne i32 %tmp1030, 41 ; <i1> [#uses=1] + %tmp1037 = icmp ne i32 %tmp1030, 39 ; <i1> [#uses=1] + %tmp1039 = icmp ne i32 %tmp1030, 40 ; <i1> [#uses=1] %tmp1042 = and i1 %tmp1037, %tmp1039 ; <i1> [#uses=1] ret i1 %tmp1042 } diff --git a/llvm/test/Transforms/InstCombine/and.ll b/llvm/test/Transforms/InstCombine/and.ll index 8492df9a120..3d36bfb404d 100644 --- a/llvm/test/Transforms/InstCombine/and.ll +++ b/llvm/test/Transforms/InstCombine/and.ll @@ -186,9 +186,9 @@ define i1 @test25(i32 %A) { } define i1 @test26(i32 %A) { - %B = icmp ne i32 %A, 50 ; <i1> [#uses=1] - %C = icmp ne i32 %A, 51 ; <i1> [#uses=1] - ;; (A-50) > 1 + %B = icmp ne i32 %A, 49 ; <i1> [#uses=1] + %C = icmp ne i32 %A, 50 ; <i1> [#uses=1] + ;; (A-49) > 1 %D = and i1 %B, %C ; <i1> [#uses=1] ret i1 %D } diff --git a/llvm/test/Transforms/InstCombine/icmp.ll b/llvm/test/Transforms/InstCombine/icmp.ll index cf8305df2a9..aaac9b64939 100644 --- a/llvm/test/Transforms/InstCombine/icmp.ll +++ b/llvm/test/Transforms/InstCombine/icmp.ll @@ -1123,3 +1123,43 @@ define i1 @icmp_add_ult_2(i32 %X) { %cmp = icmp ult i32 %add, 2 ret i1 %cmp } + +; CHECK: @icmp_add_X_-14_ult_2 +; CHECK-NEXT: [[AND:%[a-z0-9]+]] = and i32 %X, -2 +; CHECK-NEXT: [[CMP:%[a-z0-9]+]] = icmp eq i32 [[AND]], 14 +; CHECK-NEXT: ret i1 [[CMP]] +define i1 @icmp_add_X_-14_ult_2(i32 %X) { + %add = add i32 %X, -14 + %cmp = icmp ult i32 %add, 2 + ret i1 %cmp +} + +; CHECK: @icmp_sub_3_X_ult_2 +; CHECK-NEXT: [[OR:%[a-z0-9]+]] = or i32 %X, 1 +; CHECK-NEXT: [[CMP:%[a-z0-9]+]] = icmp eq i32 [[OR]], 3 +; CHECK-NEXT: ret i1 [[CMP]] +define i1 @icmp_sub_3_X_ult_2(i32 %X) { + %add = sub i32 3, %X + %cmp = icmp ult i32 %add, 2 + ret i1 %cmp +} + +; CHECK: @icmp_add_X_-14_uge_2 +; CHECK-NEXT: [[AND:%[a-z0-9]+]] = and i32 %X, -2 +; CHECK-NEXT: [[CMP:%[a-z0-9]+]] = icmp ne i32 [[AND]], 14 +; CHECK-NEXT: ret i1 [[CMP]] +define i1 @icmp_add_X_-14_uge_2(i32 %X) { + %add = add i32 %X, -14 + %cmp = icmp uge i32 %add, 2 + ret i1 %cmp +} + +; CHECK: @icmp_sub_3_X_uge_2 +; CHECK-NEXT: [[OR:%[a-z0-9]+]] = or i32 %X, 1 +; CHECK-NEXT: [[CMP:%[a-z0-9]+]] = icmp ne i32 [[OR]], 3 +; CHECK-NEXT: ret i1 [[CMP]] +define i1 @icmp_sub_3_X_uge_2(i32 %X) { + %add = sub i32 3, %X + %cmp = icmp uge i32 %add, 2 + ret i1 %cmp +} |