22
33object "Test" {
44 code {
5- let a := add (0 , 1 )
6- let b := sub (0 , 1 )
7- let c := shr (0 , 1 )
5+ let a := mload (0 )
6+ let b := mload (32 )
7+ mstore (64 , add (a, b))
8+ mstore (96 , sub (a, b))
9+ mstore (128 , mul (a, b))
810 }
911}
1012
@@ -13,39 +15,54 @@ object "Test" {
1315// CHECK-NEXT: module attributes {sol.evm_version = #Prague} {
1416// CHECK-NEXT: yul.object @Test {
1517// CHECK-NEXT: %c0_i256 = arith.constant 0 : i256 loc(#loc1)
16- // CHECK-NEXT: %c1_i256 = arith.constant 1 : i256 loc(#loc2)
17- // CHECK-NEXT: %0 = arith.addi %c0_i256, %c1_i256 : i256 loc(#loc3)
18- // CHECK-NEXT: %c1_i256_0 = arith.constant 1 : i256 loc(#loc4)
19- // CHECK-NEXT: %1 = llvm.alloca %c1_i256_0 x i256 {alignment = 32 : i64} : (i256) -> !llvm.ptr loc(#loc5)
20- // CHECK-NEXT: llvm.store %0, %1 {alignment = 32 : i64} : i256, !llvm.ptr loc(#loc4)
21- // CHECK-NEXT: %c0_i256_1 = arith.constant 0 : i256 loc(#loc6)
22- // CHECK-NEXT: %c1_i256_2 = arith.constant 1 : i256 loc(#loc7)
23- // CHECK-NEXT: %2 = arith.subi %c0_i256_1, %c1_i256_2 : i256 loc(#loc8)
24- // CHECK-NEXT: %c1_i256_3 = arith.constant 1 : i256 loc(#loc9)
25- // CHECK-NEXT: %3 = llvm.alloca %c1_i256_3 x i256 {alignment = 32 : i64} : (i256) -> !llvm.ptr loc(#loc10)
26- // CHECK-NEXT: llvm.store %2, %3 {alignment = 32 : i64} : i256, !llvm.ptr loc(#loc9)
27- // CHECK-NEXT: %c1_i256_4 = arith.constant 1 : i256 loc(#loc11)
28- // CHECK-NEXT: %c0_i256_5 = arith.constant 0 : i256 loc(#loc12)
29- // CHECK-NEXT: %4 = arith.shrui %c1_i256_4, %c0_i256_5 : i256 loc(#loc13)
30- // CHECK-NEXT: %c1_i256_6 = arith.constant 1 : i256 loc(#loc14)
31- // CHECK-NEXT: %5 = llvm.alloca %c1_i256_6 x i256 {alignment = 32 : i64} : (i256) -> !llvm.ptr loc(#loc15)
32- // CHECK-NEXT: llvm.store %4, %5 {alignment = 32 : i64} : i256, !llvm.ptr loc(#loc14)
18+ // CHECK-NEXT: %0 = yul.mload %c0_i256 loc(#loc2)
19+ // CHECK-NEXT: %c1_i256 = arith.constant 1 : i256 loc(#loc3)
20+ // CHECK-NEXT: %1 = llvm.alloca %c1_i256 x i256 {alignment = 32 : i64} : (i256) -> !llvm.ptr loc(#loc4)
21+ // CHECK-NEXT: llvm.store %0, %1 {alignment = 32 : i64} : i256, !llvm.ptr loc(#loc3)
22+ // CHECK-NEXT: %c32_i256 = arith.constant 32 : i256 loc(#loc5)
23+ // CHECK-NEXT: %2 = yul.mload %c32_i256 loc(#loc6)
24+ // CHECK-NEXT: %c1_i256_0 = arith.constant 1 : i256 loc(#loc7)
25+ // CHECK-NEXT: %3 = llvm.alloca %c1_i256_0 x i256 {alignment = 32 : i64} : (i256) -> !llvm.ptr loc(#loc8)
26+ // CHECK-NEXT: llvm.store %2, %3 {alignment = 32 : i64} : i256, !llvm.ptr loc(#loc7)
27+ // CHECK-NEXT: %c64_i256 = arith.constant 64 : i256 loc(#loc9)
28+ // CHECK-NEXT: %4 = llvm.load %1 {alignment = 32 : i64} : !llvm.ptr -> i256 loc(#loc10)
29+ // CHECK-NEXT: %5 = llvm.load %3 {alignment = 32 : i64} : !llvm.ptr -> i256 loc(#loc11)
30+ // CHECK-NEXT: %6 = arith.addi %4, %5 : i256 loc(#loc12)
31+ // CHECK-NEXT: yul.mstore %c64_i256, %6 loc(#loc13)
32+ // CHECK-NEXT: %c96_i256 = arith.constant 96 : i256 loc(#loc14)
33+ // CHECK-NEXT: %7 = llvm.load %1 {alignment = 32 : i64} : !llvm.ptr -> i256 loc(#loc15)
34+ // CHECK-NEXT: %8 = llvm.load %3 {alignment = 32 : i64} : !llvm.ptr -> i256 loc(#loc16)
35+ // CHECK-NEXT: %9 = arith.subi %7, %8 : i256 loc(#loc17)
36+ // CHECK-NEXT: yul.mstore %c96_i256, %9 loc(#loc18)
37+ // CHECK-NEXT: %c128_i256 = arith.constant 128 : i256 loc(#loc19)
38+ // CHECK-NEXT: %10 = llvm.load %1 {alignment = 32 : i64} : !llvm.ptr -> i256 loc(#loc20)
39+ // CHECK-NEXT: %11 = llvm.load %3 {alignment = 32 : i64} : !llvm.ptr -> i256 loc(#loc21)
40+ // CHECK-NEXT: %12 = arith.muli %10, %11 : i256 loc(#loc22)
41+ // CHECK-NEXT: yul.mstore %c128_i256, %12 loc(#loc23)
3342// CHECK-NEXT: } loc(#loc)
3443// CHECK-NEXT: } loc(#loc)
3544// CHECK-NEXT: #loc = loc(unknown)
36- // CHECK-NEXT: #loc1 = loc({{.*}}:4:17)
37- // CHECK-NEXT: #loc2 = loc({{.*}}:4:20)
38- // CHECK-NEXT: #loc3 = loc({{.*}}:4:13)
39- // CHECK-NEXT: #loc4 = loc({{.*}}:4:4)
40- // CHECK-NEXT: #loc5 = loc({{.*}}:4:8)
41- // CHECK-NEXT: #loc6 = loc({{.*}}:5:17)
42- // CHECK-NEXT: #loc7 = loc({{.*}}:5:20)
43- // CHECK-NEXT: #loc8 = loc({{.*}}:5:13)
44- // CHECK-NEXT: #loc9 = loc({{.*}}:5:4)
45- // CHECK-NEXT: #loc10 = loc({{.*}}:5:8)
46- // CHECK-NEXT: #loc11 = loc({{.*}}:6:20)
47- // CHECK-NEXT: #loc12 = loc({{.*}}:6:17)
48- // CHECK-NEXT: #loc13 = loc({{.*}}:6:13)
49- // CHECK-NEXT: #loc14 = loc({{.*}}:6:4)
50- // CHECK-NEXT: #loc15 = loc({{.*}}:6:8)
45+ // CHECK-NEXT: #loc1 = loc({{.*}}:4:19)
46+ // CHECK-NEXT: #loc2 = loc({{.*}}:4:13)
47+ // CHECK-NEXT: #loc3 = loc({{.*}}:4:4)
48+ // CHECK-NEXT: #loc4 = loc({{.*}}:4:8)
49+ // CHECK-NEXT: #loc5 = loc({{.*}}:5:19)
50+ // CHECK-NEXT: #loc6 = loc({{.*}}:5:13)
51+ // CHECK-NEXT: #loc7 = loc({{.*}}:5:4)
52+ // CHECK-NEXT: #loc8 = loc({{.*}}:5:8)
53+ // CHECK-NEXT: #loc9 = loc({{.*}}:6:11)
54+ // CHECK-NEXT: #loc10 = loc({{.*}}:6:19)
55+ // CHECK-NEXT: #loc11 = loc({{.*}}:6:22)
56+ // CHECK-NEXT: #loc12 = loc({{.*}}:6:15)
57+ // CHECK-NEXT: #loc13 = loc({{.*}}:6:4)
58+ // CHECK-NEXT: #loc14 = loc({{.*}}:7:11)
59+ // CHECK-NEXT: #loc15 = loc({{.*}}:7:19)
60+ // CHECK-NEXT: #loc16 = loc({{.*}}:7:22)
61+ // CHECK-NEXT: #loc17 = loc({{.*}}:7:15)
62+ // CHECK-NEXT: #loc18 = loc({{.*}}:7:4)
63+ // CHECK-NEXT: #loc19 = loc({{.*}}:8:11)
64+ // CHECK-NEXT: #loc20 = loc({{.*}}:8:20)
65+ // CHECK-NEXT: #loc21 = loc({{.*}}:8:23)
66+ // CHECK-NEXT: #loc22 = loc({{.*}}:8:16)
67+ // CHECK-NEXT: #loc23 = loc({{.*}}:8:4)
5168// CHECK-EMPTY:
0 commit comments