summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine/and-or.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/InstCombine/and-or.ll')
-rw-r--r--test/Transforms/InstCombine/and-or.ll78
1 files changed, 47 insertions, 31 deletions
diff --git a/test/Transforms/InstCombine/and-or.ll b/test/Transforms/InstCombine/and-or.ll
index 0ae12a36c2b81..2ad90ad98e7c2 100644
--- a/test/Transforms/InstCombine/and-or.ll
+++ b/test/Transforms/InstCombine/and-or.ll
@@ -1,39 +1,55 @@
-; RUN: opt < %s -instcombine -S | grep "and i32 %a, 1" | count 4
-; RUN: opt < %s -instcombine -S | grep "or i32 %0, %b" | count 4
+; NOTE: Assertions have been autogenerated by update_test_checks.py
+; RUN: opt < %s -instcombine -S | FileCheck %s
-
-define i32 @func1(i32 %a, i32 %b) nounwind readnone {
-entry:
- %0 = or i32 %b, %a ; <i32> [#uses=1]
- %1 = and i32 %0, 1 ; <i32> [#uses=1]
- %2 = and i32 %b, -2 ; <i32> [#uses=1]
- %3 = or i32 %1, %2 ; <i32> [#uses=1]
- ret i32 %3
+define i32 @func1(i32 %a, i32 %b) {
+; CHECK-LABEL: @func1(
+; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, 1
+; CHECK-NEXT: [[TMP3:%.*]] = or i32 [[TMP1]], %b
+; CHECK-NEXT: ret i32 [[TMP3]]
+;
+ %tmp = or i32 %b, %a
+ %tmp1 = and i32 %tmp, 1
+ %tmp2 = and i32 %b, -2
+ %tmp3 = or i32 %tmp1, %tmp2
+ ret i32 %tmp3
}
-define i32 @func2(i32 %a, i32 %b) nounwind readnone {
-entry:
- %0 = or i32 %a, %b ; <i32> [#uses=1]
- %1 = and i32 1, %0 ; <i32> [#uses=1]
- %2 = and i32 -2, %b ; <i32> [#uses=1]
- %3 = or i32 %1, %2 ; <i32> [#uses=1]
- ret i32 %3
+define i32 @func2(i32 %a, i32 %b) {
+; CHECK-LABEL: @func2(
+; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, 1
+; CHECK-NEXT: [[TMP3:%.*]] = or i32 [[TMP1]], %b
+; CHECK-NEXT: ret i32 [[TMP3]]
+;
+ %tmp = or i32 %a, %b
+ %tmp1 = and i32 1, %tmp
+ %tmp2 = and i32 -2, %b
+ %tmp3 = or i32 %tmp1, %tmp2
+ ret i32 %tmp3
}
-define i32 @func3(i32 %a, i32 %b) nounwind readnone {
-entry:
- %0 = or i32 %b, %a ; <i32> [#uses=1]
- %1 = and i32 %0, 1 ; <i32> [#uses=1]
- %2 = and i32 %b, -2 ; <i32> [#uses=1]
- %3 = or i32 %2, %1 ; <i32> [#uses=1]
- ret i32 %3
+define i32 @func3(i32 %a, i32 %b) {
+; CHECK-LABEL: @func3(
+; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, 1
+; CHECK-NEXT: [[TMP3:%.*]] = or i32 [[TMP1]], %b
+; CHECK-NEXT: ret i32 [[TMP3]]
+;
+ %tmp = or i32 %b, %a
+ %tmp1 = and i32 %tmp, 1
+ %tmp2 = and i32 %b, -2
+ %tmp3 = or i32 %tmp2, %tmp1
+ ret i32 %tmp3
}
-define i32 @func4(i32 %a, i32 %b) nounwind readnone {
-entry:
- %0 = or i32 %a, %b ; <i32> [#uses=1]
- %1 = and i32 1, %0 ; <i32> [#uses=1]
- %2 = and i32 -2, %b ; <i32> [#uses=1]
- %3 = or i32 %2, %1 ; <i32> [#uses=1]
- ret i32 %3
+define i32 @func4(i32 %a, i32 %b) {
+; CHECK-LABEL: @func4(
+; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, 1
+; CHECK-NEXT: [[TMP3:%.*]] = or i32 [[TMP1]], %b
+; CHECK-NEXT: ret i32 [[TMP3]]
+;
+ %tmp = or i32 %a, %b
+ %tmp1 = and i32 1, %tmp
+ %tmp2 = and i32 -2, %b
+ %tmp3 = or i32 %tmp2, %tmp1
+ ret i32 %tmp3
}
+