Skip to content

Commit d228da4

Browse files
committed
Add pre-commit tests
1 parent 5e9166e commit d228da4

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3+
4+
declare void @use(i8)
5+
6+
define i1 @fold_sext_to_and(i8 %x) {
7+
; CHECK-LABEL: define i1 @fold_sext_to_and(
8+
; CHECK-SAME: i8 [[X:%.*]]) {
9+
; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
10+
; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
11+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
12+
; CHECK-NEXT: ret i1 [[TMP3]]
13+
;
14+
%1 = sext i8 %x to i32
15+
%2 = and i32 %1, -2147483647
16+
%3 = icmp eq i32 %2, 1
17+
ret i1 %3
18+
}
19+
20+
define i1 @fold_sext_to_and_multi_use(i8 %x) {
21+
; CHECK-LABEL: define i1 @fold_sext_to_and_multi_use(
22+
; CHECK-SAME: i8 [[X:%.*]]) {
23+
; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
24+
; CHECK-NEXT: call void @use(i32 [[TMP1]])
25+
; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
26+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
27+
; CHECK-NEXT: ret i1 [[TMP3]]
28+
;
29+
%1 = sext i8 %x to i32
30+
call void @use(i32 %1)
31+
%2 = and i32 %1, -2147483647
32+
%3 = icmp eq i32 %2, 1
33+
ret i1 %3
34+
}
35+
36+
; Negative tests
37+
38+
define i1 @fold_sext_to_and_wrong(i8 %x) {
39+
; CHECK-LABEL: define i1 @fold_sext_to_and_wrong(
40+
; CHECK-SAME: i2 [[X:%.*]]) {
41+
; CHECK-NEXT: [[TMP1:%.*]] = sext i2 [[X]] to i32
42+
; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
43+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
44+
; CHECK-NEXT: ret i1 [[TMP3]]
45+
;
46+
%1 = sext i8 %x to i32
47+
%2 = and i32 %1, -2147483647
48+
%3 = icmp eq i32 %2, -1
49+
ret i1 %3
50+
}

0 commit comments

Comments
 (0)