Skip to content

Commit 9ce8103

Browse files
committed
[GVN][NFC] Add pre-commit test
1 parent d5c1d73 commit 9ce8103

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -passes=gvn -S | FileCheck %s
3+
4+
define i1 @test_i1(ptr %a, ptr %b, ptr %c) {
5+
; CHECK-LABEL: define i1 @test_i1(
6+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
7+
; CHECK-NEXT: entry:
8+
; CHECK-NEXT: [[TMP0:%.*]] = load i1, ptr [[A]], align 1
9+
; CHECK-NEXT: store i1 [[TMP0]], ptr [[B]], align 1
10+
; CHECK-NEXT: [[TMP1:%.*]] = load i1, ptr [[A]], align 1
11+
; CHECK-NEXT: ret i1 [[TMP1]]
12+
;
13+
entry:
14+
%0 = load i1, ptr %a, align 1
15+
store i1 %0, ptr %b, align 1
16+
%1 = load i1, ptr %a, align 1
17+
ret i1 %1
18+
}
19+
20+
define i8 @test_i8(ptr %a, ptr %b, ptr %c) {
21+
; CHECK-LABEL: define i8 @test_i8(
22+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
23+
; CHECK-NEXT: entry:
24+
; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[A]], align 1
25+
; CHECK-NEXT: store i8 [[TMP0]], ptr [[B]], align 1
26+
; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr [[A]], align 1
27+
; CHECK-NEXT: ret i8 [[TMP1]]
28+
;
29+
entry:
30+
%0 = load i8, ptr %a, align 1
31+
store i8 %0, ptr %b, align 1
32+
%1 = load i8, ptr %a, align 1
33+
ret i8 %1
34+
}
35+
36+
define i32 @test_i32(ptr %a, ptr %b, ptr %c) {
37+
; CHECK-LABEL: define i32 @test_i32(
38+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
39+
; CHECK-NEXT: entry:
40+
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 4
41+
; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 4
42+
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[A]], align 4
43+
; CHECK-NEXT: ret i32 [[TMP1]]
44+
;
45+
entry:
46+
%0 = load i32, ptr %a, align 4
47+
store i32 %0, ptr %b, align 4
48+
%1 = load i32, ptr %a, align 4
49+
ret i32 %1
50+
}
51+
52+
define float @test_float(ptr %a, ptr %b, ptr %c) {
53+
; CHECK-LABEL: define float @test_float(
54+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
55+
; CHECK-NEXT: entry:
56+
; CHECK-NEXT: [[TMP0:%.*]] = load float, ptr [[A]], align 4
57+
; CHECK-NEXT: store float [[TMP0]], ptr [[B]], align 4
58+
; CHECK-NEXT: [[TMP1:%.*]] = load float, ptr [[A]], align 4
59+
; CHECK-NEXT: ret float [[TMP1]]
60+
;
61+
entry:
62+
%0 = load float, ptr %a, align 4
63+
store float %0, ptr %b, align 4
64+
%1 = load float, ptr %a, align 4
65+
ret float %1
66+
}
67+
68+
define i32 @test_unaligned_store(ptr %a, ptr %b, ptr %c) {
69+
; CHECK-LABEL: define i32 @test_unaligned_store(
70+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
71+
; CHECK-NEXT: entry:
72+
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 4
73+
; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 2
74+
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[A]], align 4
75+
; CHECK-NEXT: ret i32 [[TMP1]]
76+
;
77+
entry:
78+
%0 = load i32, ptr %a, align 4
79+
store i32 %0, ptr %b, align 2
80+
%1 = load i32, ptr %a, align 4
81+
ret i32 %1
82+
}
83+
84+
define i32 @test_unaligned_loads(ptr %a, ptr %b, ptr %c) {
85+
; CHECK-LABEL: define i32 @test_unaligned_loads(
86+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
87+
; CHECK-NEXT: entry:
88+
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 2
89+
; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 4
90+
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[A]], align 2
91+
; CHECK-NEXT: ret i32 [[TMP1]]
92+
;
93+
entry:
94+
%0 = load i32, ptr %a, align 2
95+
store i32 %0, ptr %b, align 4
96+
%1 = load i32, ptr %a, align 2
97+
ret i32 %1
98+
}
99+
100+
define i8 @test_modify_between(ptr %a, ptr %b, ptr %c) {
101+
; CHECK-LABEL: define i8 @test_modify_between(
102+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
103+
; CHECK-NEXT: entry:
104+
; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[A]], align 1
105+
; CHECK-NEXT: store i8 42, ptr [[C]], align 1
106+
; CHECK-NEXT: store i8 [[TMP0]], ptr [[B]], align 1
107+
; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr [[A]], align 1
108+
; CHECK-NEXT: ret i8 [[TMP1]]
109+
;
110+
entry:
111+
%0 = load i8, ptr %a, align 1
112+
store i8 42, ptr %c, align 1
113+
store i8 %0, ptr %b, align 1
114+
%1 = load i8, ptr %a, align 1
115+
ret i8 %1
116+
}
117+
118+
define i32 @test_unordered(ptr %a, ptr %b, ptr %c) {
119+
; CHECK-LABEL: define i32 @test_unordered(
120+
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {
121+
; CHECK-NEXT: entry:
122+
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 4
123+
; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 4
124+
; CHECK-NEXT: [[TMP1:%.*]] = load atomic i32, ptr [[A]] unordered, align 4
125+
; CHECK-NEXT: ret i32 [[TMP1]]
126+
;
127+
entry:
128+
%0 = load i32, ptr %a, align 4
129+
store i32 %0, ptr %b, align 4
130+
%1 = load atomic i32, ptr %a unordered, align 4
131+
ret i32 %1
132+
}

0 commit comments

Comments
 (0)