Skip to content

Commit d6b7b65

Browse files
vladimirradosavljevicakiramenai
authored andcommitted
[CGP] Add pre-commit test for Disable optimizeMemoryInst only for EraVM
Signed-off-by: Vladimir Radosavljevic <[email protected]>
1 parent 6ebf013 commit d6b7b65

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' < %s | FileCheck %s
3+
4+
target datalayout = "E-p:256:256-i256:256:256-S256-a:256:256"
5+
target triple = "evm"
6+
7+
@glob = external addrspace(1) global i256
8+
9+
define i256 @test_as1(i256 %arg) {
10+
; CHECK-LABEL: define i256 @test_as1(
11+
; CHECK-SAME: i256 [[ARG:%.*]]) {
12+
; CHECK-NEXT: [[ENTRY:.*]]:
13+
; CHECK-NEXT: [[ADD:%.*]] = add i256 [[ARG]], 4
14+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i256 [[ARG]], 10
15+
; CHECK-NEXT: br i1 [[CMP]], label %[[THEN:.*]], label %[[EXIT:.*]]
16+
; CHECK: [[THEN]]:
17+
; CHECK-NEXT: [[INTTOPTR:%.*]] = inttoptr i256 [[ADD]] to ptr addrspace(1)
18+
; CHECK-NEXT: [[LOAD:%.*]] = load i256, ptr addrspace(1) [[INTTOPTR]], align 1
19+
; CHECK-NEXT: br label %[[EXIT]]
20+
; CHECK: [[EXIT]]:
21+
; CHECK-NEXT: [[PHI:%.*]] = phi i256 [ [[LOAD]], %[[THEN]] ], [ 0, %[[ENTRY]] ]
22+
; CHECK-NEXT: ret i256 [[PHI]]
23+
;
24+
entry:
25+
%add = add i256 %arg, 4
26+
%cmp = icmp ugt i256 %arg, 10
27+
br i1 %cmp, label %then, label %exit
28+
29+
then:
30+
%inttoptr = inttoptr i256 %add to ptr addrspace(1)
31+
%load = load i256, ptr addrspace(1) %inttoptr, align 1
32+
br label %exit
33+
34+
exit:
35+
%phi = phi i256 [ %load, %then ], [ 0, %entry ]
36+
ret i256 %phi
37+
}
38+
39+
define i256 @test_as5(i256 %arg) {
40+
; CHECK-LABEL: define i256 @test_as5(
41+
; CHECK-SAME: i256 [[ARG:%.*]]) {
42+
; CHECK-NEXT: [[ENTRY:.*]]:
43+
; CHECK-NEXT: [[ADD:%.*]] = add i256 [[ARG]], 4
44+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i256 [[ARG]], 10
45+
; CHECK-NEXT: br i1 [[CMP]], label %[[THEN:.*]], label %[[EXIT:.*]]
46+
; CHECK: [[THEN]]:
47+
; CHECK-NEXT: [[INTTOPTR:%.*]] = inttoptr i256 [[ADD]] to ptr addrspace(5)
48+
; CHECK-NEXT: [[LOAD:%.*]] = load i256, ptr addrspace(5) [[INTTOPTR]], align 1
49+
; CHECK-NEXT: br label %[[EXIT]]
50+
; CHECK: [[EXIT]]:
51+
; CHECK-NEXT: [[PHI:%.*]] = phi i256 [ [[LOAD]], %[[THEN]] ], [ 0, %[[ENTRY]] ]
52+
; CHECK-NEXT: ret i256 [[PHI]]
53+
;
54+
entry:
55+
%add = add i256 %arg, 4
56+
%cmp = icmp ugt i256 %arg, 10
57+
br i1 %cmp, label %then, label %exit
58+
59+
then:
60+
%inttoptr = inttoptr i256 %add to ptr addrspace(5)
61+
%load = load i256, ptr addrspace(5) %inttoptr, align 1
62+
br label %exit
63+
64+
exit:
65+
%phi = phi i256 [ %load, %then ], [ 0, %entry ]
66+
ret i256 %phi
67+
}
68+
69+
define i256 @test_no_as2(i256 %arg) {
70+
; CHECK-LABEL: define i256 @test_no_as2(
71+
; CHECK-SAME: i256 [[ARG:%.*]]) {
72+
; CHECK-NEXT: [[ENTRY:.*]]:
73+
; CHECK-NEXT: [[ADD:%.*]] = add i256 [[ARG]], 4
74+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i256 [[ARG]], 10
75+
; CHECK-NEXT: br i1 [[CMP]], label %[[THEN:.*]], label %[[EXIT:.*]]
76+
; CHECK: [[THEN]]:
77+
; CHECK-NEXT: [[INTTOPTR:%.*]] = inttoptr i256 [[ADD]] to ptr addrspace(2)
78+
; CHECK-NEXT: [[LOAD:%.*]] = load i256, ptr addrspace(2) [[INTTOPTR]], align 1
79+
; CHECK-NEXT: br label %[[EXIT]]
80+
; CHECK: [[EXIT]]:
81+
; CHECK-NEXT: [[PHI:%.*]] = phi i256 [ [[LOAD]], %[[THEN]] ], [ 0, %[[ENTRY]] ]
82+
; CHECK-NEXT: ret i256 [[PHI]]
83+
;
84+
entry:
85+
%add = add i256 %arg, 4
86+
%cmp = icmp ugt i256 %arg, 10
87+
br i1 %cmp, label %then, label %exit
88+
89+
then:
90+
%inttoptr = inttoptr i256 %add to ptr addrspace(2)
91+
%load = load i256, ptr addrspace(2) %inttoptr, align 1
92+
br label %exit
93+
94+
exit:
95+
%phi = phi i256 [ %load, %then ], [ 0, %entry ]
96+
ret i256 %phi
97+
}
98+
99+
define i256 @test_no_scale(i256 %arg) {
100+
; CHECK-LABEL: define i256 @test_no_scale(
101+
; CHECK-SAME: i256 [[ARG:%.*]]) {
102+
; CHECK-NEXT: [[ENTRY:.*]]:
103+
; CHECK-NEXT: [[MUL:%.*]] = mul i256 [[ARG]], 4
104+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i256 [[ARG]], 10
105+
; CHECK-NEXT: br i1 [[CMP]], label %[[THEN:.*]], label %[[EXIT:.*]]
106+
; CHECK: [[THEN]]:
107+
; CHECK-NEXT: [[INTTOPTR:%.*]] = inttoptr i256 [[MUL]] to ptr addrspace(1)
108+
; CHECK-NEXT: [[LOAD:%.*]] = load i256, ptr addrspace(1) [[INTTOPTR]], align 1
109+
; CHECK-NEXT: br label %[[EXIT]]
110+
; CHECK: [[EXIT]]:
111+
; CHECK-NEXT: [[PHI:%.*]] = phi i256 [ [[LOAD]], %[[THEN]] ], [ 0, %[[ENTRY]] ]
112+
; CHECK-NEXT: ret i256 [[PHI]]
113+
;
114+
entry:
115+
%mul = mul i256 %arg, 4
116+
%cmp = icmp ugt i256 %arg, 10
117+
br i1 %cmp, label %then, label %exit
118+
119+
then:
120+
%inttoptr = inttoptr i256 %mul to ptr addrspace(1)
121+
%load = load i256, ptr addrspace(1) %inttoptr, align 1
122+
br label %exit
123+
124+
exit:
125+
%phi = phi i256 [ %load, %then ], [ 0, %entry ]
126+
ret i256 %phi
127+
}
128+
129+
define i256 @test_no_glob(i256 %arg) {
130+
; CHECK-LABEL: define i256 @test_no_glob(
131+
; CHECK-SAME: i256 [[ARG:%.*]]) {
132+
; CHECK-NEXT: [[ENTRY:.*]]:
133+
; CHECK-NEXT: [[LOAD1:%.*]] = load i256, ptr addrspace(1) @glob, align 64
134+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i256 [[ARG]], 10
135+
; CHECK-NEXT: br i1 [[CMP]], label %[[THEN:.*]], label %[[EXIT:.*]]
136+
; CHECK: [[THEN]]:
137+
; CHECK-NEXT: [[INTTOPTR:%.*]] = inttoptr i256 [[LOAD1]] to ptr addrspace(1)
138+
; CHECK-NEXT: [[LOAD2:%.*]] = load i256, ptr addrspace(1) [[INTTOPTR]], align 1
139+
; CHECK-NEXT: br label %[[EXIT]]
140+
; CHECK: [[EXIT]]:
141+
; CHECK-NEXT: [[PHI:%.*]] = phi i256 [ [[LOAD2]], %[[THEN]] ], [ 0, %[[ENTRY]] ]
142+
; CHECK-NEXT: ret i256 [[PHI]]
143+
;
144+
entry:
145+
%load1 = load i256, ptr addrspace(1) @glob, align 64
146+
%cmp = icmp ugt i256 %arg, 10
147+
br i1 %cmp, label %then, label %exit
148+
149+
then:
150+
%inttoptr = inttoptr i256 %load1 to ptr addrspace(1)
151+
%load2 = load i256, ptr addrspace(1) %inttoptr, align 1
152+
br label %exit
153+
154+
exit:
155+
%phi = phi i256 [ %load2, %then ], [ 0, %entry ]
156+
ret i256 %phi
157+
}

0 commit comments

Comments
 (0)