@@ -53,19 +53,51 @@ define i256 @test_different_locsizes() {
5353 ret i256 %ret
5454}
5555
56- define i256 @test_gas () {
57- ; CHECK-LABEL: define i256 @test_gas
56+ define i256 @test_gas_as1 () {
57+ ; CHECK-LABEL: define i256 @test_gas_as1
5858; CHECK-SAME: () local_unnamed_addr #[[ATTR2:[0-9]+]] {
59+ ; CHECK-NEXT: store i256 2, ptr addrspace(1) inttoptr (i256 2 to ptr addrspace(1)), align 64
60+ ; CHECK-NEXT: [[GAS:%.*]] = tail call i256 @llvm.evm.gas()
61+ ; CHECK-NEXT: [[LOAD:%.*]] = load i256, ptr addrspace(1) inttoptr (i256 2 to ptr addrspace(1)), align 64
62+ ; CHECK-NEXT: [[RET:%.*]] = add i256 [[LOAD]], [[GAS]]
63+ ; CHECK-NEXT: ret i256 [[RET]]
64+ ;
65+ store i256 2 , ptr addrspace (1 ) inttoptr (i256 2 to ptr addrspace (1 )), align 64
66+ %gas = call i256 @llvm.evm.gas ()
67+ %load = load i256 , ptr addrspace (1 ) inttoptr (i256 2 to ptr addrspace (1 )), align 64
68+ %ret = add i256 %load , %gas
69+ ret i256 %ret
70+ }
71+
72+ define i256 @test_gas_as5 () {
73+ ; CHECK-LABEL: define i256 @test_gas_as5
74+ ; CHECK-SAME: () local_unnamed_addr #[[ATTR2]] {
5975; CHECK-NEXT: store i256 2, ptr addrspace(5) inttoptr (i256 2 to ptr addrspace(5)), align 64
6076; CHECK-NEXT: [[GAS:%.*]] = tail call i256 @llvm.evm.gas()
61- ; CHECK-NEXT: store i256 [[GAS]] , ptr addrspace(1 ) inttoptr (i256 1 to ptr addrspace(1 )), align 64
62- ; CHECK-NEXT: [[RET:%.*]] = load i256, ptr addrspace(5) inttoptr (i256 2 to ptr addrspace(5)), align 64
77+ ; CHECK-NEXT: [[LOAD:%.*]] = load i256 , ptr addrspace(5 ) inttoptr (i256 2 to ptr addrspace(5 )), align 64
78+ ; CHECK-NEXT: [[RET:%.*]] = add i256 [[LOAD]], [[GAS]]
6379; CHECK-NEXT: ret i256 [[RET]]
6480;
6581 store i256 2 , ptr addrspace (5 ) inttoptr (i256 2 to ptr addrspace (5 )), align 64
6682 %gas = call i256 @llvm.evm.gas ()
67- store i256 %gas , ptr addrspace (1 ) inttoptr (i256 1 to ptr addrspace (1 )), align 64
68- %ret = load i256 , ptr addrspace (5 ) inttoptr (i256 2 to ptr addrspace (5 )), align 64
83+ %load = load i256 , ptr addrspace (5 ) inttoptr (i256 2 to ptr addrspace (5 )), align 64
84+ %ret = add i256 %load , %gas
85+ ret i256 %ret
86+ }
87+
88+ define i256 @test_gas_as6 () {
89+ ; CHECK-LABEL: define i256 @test_gas_as6
90+ ; CHECK-SAME: () local_unnamed_addr #[[ATTR2]] {
91+ ; CHECK-NEXT: store i256 2, ptr addrspace(6) inttoptr (i256 2 to ptr addrspace(6)), align 64
92+ ; CHECK-NEXT: [[GAS:%.*]] = tail call i256 @llvm.evm.gas()
93+ ; CHECK-NEXT: [[LOAD:%.*]] = load i256, ptr addrspace(6) inttoptr (i256 2 to ptr addrspace(6)), align 64
94+ ; CHECK-NEXT: [[RET:%.*]] = add i256 [[LOAD]], [[GAS]]
95+ ; CHECK-NEXT: ret i256 [[RET]]
96+ ;
97+ store i256 2 , ptr addrspace (6 ) inttoptr (i256 2 to ptr addrspace (6 )), align 64
98+ %gas = call i256 @llvm.evm.gas ()
99+ %load = load i256 , ptr addrspace (6 ) inttoptr (i256 2 to ptr addrspace (6 )), align 64
100+ %ret = add i256 %load , %gas
69101 ret i256 %ret
70102}
71103
0 commit comments