@@ -51,64 +51,13 @@ func @encrypt(%Sbox: memref<?x16xi32>, %statemt: memref<?xi32>) {
51
51
return
52
52
}
53
53
54
- // CHECK: func private @S0(%[[statemt:.*]]: memref<?xi32>, %[[i:.*]]: index, %[[Sbox:.*]]: memref<?x16xi32>) attributes {scop.stmt}
55
- // CHECK-NEXT: %[[c15_i32:.*]] = arith.constant 15 : i32
56
- // CHECK-NEXT: %[[c4_i32:.*]] = arith.constant 4 : i32
57
- // CHECK-NEXT: %[[v0:.*]] = affine.load %[[statemt]][symbol(%[[i]]) * 4] : memref<?xi32>
58
- // CHECK-NEXT: %[[v1:.*]] = arith.shrsi %[[v0]], %[[c4_i32]] : i32
59
- // CHECK-NEXT: %[[v2:.*]] = arith.index_cast %[[v1]] : i32 to index
60
- // CHECK-NEXT: %[[v3:.*]] = arith.andi %[[v0]], %[[c15_i32]] : i32
61
- // CHECK-NEXT: %[[v4:.*]] = arith.index_cast %[[v3]] : i32 to index
62
- // CHECK-NEXT: %[[v5:.*]] = memref.load %[[Sbox]][%[[v2]], %[[v4]]] : memref<?x16xi32>
63
- // CHECK-NEXT: affine.store %[[v5]], %[[statemt]][symbol(%[[i]]) * 4] : memref<?xi32>
64
-
65
- // CHECK: func private @S1(%[[i:.*]]: index, %[[ret:.*]]: memref<1024xi32>, %[[statemt:.*]]: memref<?xi32>) attributes {scop.stmt}
66
- // CHECK-NEXT: %[[c1_i32:.*]] = arith.constant 1 : i32
67
- // CHECK-NEXT: %[[v0:.*]] = affine.load %[[statemt]][symbol(%[[i]])] : memref<?xi32>
68
- // CHECK-NEXT: %[[v1:.*]] = arith.shli %[[v0]], %[[c1_i32]] : i32
69
- // CHECK-NEXT: affine.store %[[v1]], %[[ret]][symbol(%[[i]])] : memref<1024xi32>
70
-
71
- // CHECK: func private @S2(%[[i:.*]]: index, %[[ret:.*]]: memref<1024xi32>) attributes {scop.stmt}
72
- // CHECK: %[[c283_i32:.*]] = arith.constant 283 : i32
73
- // CHECK: %[[c1_i32:.*]] = arith.constant 1 : i32
74
- // CHECK: %[[c8_i32:.*]] = arith.constant 8 : i32
75
- // CHECK: %[[v0:.*]] = affine.load %[[ret]][symbol(%[[i]])] : memref<1024xi32>
76
- // CHECK: %[[v1:.*]] = arith.shrsi %[[v0]], %[[c8_i32]] : i32
77
- // CHECK: %[[v2:.*]] = arith.cmpi eq, %[[v1]], %[[c1_i32]] : i32
78
- // CHECK: %[[v3:.*]] = arith.xori %[[v0]], %[[c283_i32]] : i32
79
- // CHECK: %[[v4:.*]] = affine.load %[[ret]][symbol(%[[i]])] : memref<1024xi32>
80
- // CHECK: %[[v5:.*]] = select %[[v2]], %[[v3]], %[[v4]] : i32
81
- // CHECK: affine.store %[[v5]], %[[ret]][symbol(%[[i]])] : memref<1024xi32>
82
-
83
- // CHECK: func private @S3(%[[i:.*]]: index, %[[ret:.*]]: memref<1024xi32>, %[[statemt]]: memref<?xi32>) attributes {scop.stmt}
84
- // CHECK-NEXT: %[[c283_i32:.*]] = arith.constant 283 : i32
85
- // CHECK-NEXT: %[[c1_i32:.*]] = arith.constant 1 : i32
86
- // CHECK-NEXT: %[[c8_i32:.*]] = arith.constant 8 : i32
87
- // CHECK-NEXT: %[[v0:.*]] = affine.load %[[ret]][symbol(%[[i]])] : memref<1024xi32>
88
- // CHECK-NEXT: %[[v1:.*]] = affine.load %[[ret]][symbol(%[[i]])] : memref<1024xi32>
89
- // CHECK-NEXT: %[[v2:.*]] = affine.load %[[statemt]][symbol(%[[i]]) + 1] : memref<?xi32>
90
- // CHECK-NEXT: %[[v3:.*]] = arith.shli %[[v2]], %[[c1_i32]] : i32
91
- // CHECK-NEXT: %[[v4:.*]] = arith.xori %[[v2]], %[[v3]] : i32
92
- // CHECK-NEXT: %[[v5:.*]] = arith.shrsi %[[v4]], %[[c8_i32]] : i32
93
- // CHECK-NEXT: %[[v6:.*]] = arith.cmpi eq, %[[v5]], %[[c1_i32]] : i32
94
- // CHECK-NEXT: %[[v7:.*]] = arith.xori %[[v4]], %[[c283_i32]] : i32
95
- // CHECK-NEXT: %[[v8:.*]] = arith.xori %[[v0]], %[[v7]] : i32
96
- // CHECK-NEXT: %[[v9:.*]] = arith.xori %[[v1]], %[[v4]] : i32
97
- // CHECK-NEXT: %[[v10:.*]] = select %[[v6]], %[[v8]], %[[v9]] : i32
98
- // CHECK-NEXT: affine.store %[[v10]], %[[ret]][symbol(%[[i]])] : memref<1024xi32>
99
-
100
- // CHECK: func private @S4(%[[statemt:.*]]: memref<?xi32>, %[[i:.*]]: index, %[[ret:.*]]: memref<1024xi32>) attributes {scop.stmt}
101
- // CHECK-NEXT: %[[v0:.*]] = affine.load %[[ret]][symbol(%[[i]])] : memref<1024xi32>
102
- // CHECK-NEXT: affine.store %[[v0]], %[[statemt]][symbol(%[[i]])] : memref<?xi32>
103
-
104
- // CHECK: func @encrypt(%[[Sbox:.*]]: memref<?x16xi32>, %[[statemt:.*]]: memref<?xi32>)
105
- // CHECK: %[[ret:.*]] = memref.alloca() : memref<1024xi32>
106
- // CHECK: affine.for %[[i:.*]] = 1 to 5
107
- // CHECK: affine.for %[[j:.*]] = 0 to 16
108
- // CHECK: call @S0(%[[statemt]], %[[j]], %[[Sbox]]) : (memref<?xi32>, index, memref<?x16xi32>) -> ()
109
- // CHECK: affine.for %[[j:.*]] = 0 to 1023
110
- // CHECK: call @S1(%[[j]], %[[ret]], %[[statemt]]) : (index, memref<1024xi32>, memref<?xi32>) -> ()
111
- // CHECK: call @S2(%[[j]], %[[ret]]) : (index, memref<1024xi32>) -> ()
112
- // CHECK: call @S3(%[[j]], %[[ret]], %[[statemt]]) : (index, memref<1024xi32>, memref<?xi32>) -> ()
113
- // CHECK: affine.for %[[j:.*]] = 0 to 1024
114
- // CHECK: call @S4(%[[statemt]], %[[j]], %[[ret]]) : (memref<?xi32>, index, memref<1024xi32>) -> ()
54
+ // CHECK: func @encrypt(%[[Sbox:.*]]: memref<?x16xi32>, %[[statemt:.*]]: memref<?xi32>)
55
+ // CHECK: %[[v0:.*]] = memref.alloca() : memref<1024xi32>
56
+ // CHECK: affine.for %[[i:.*]] = 1 to 5
57
+ // CHECK: affine.for %[[j:.*]] = 0 to 16
58
+ // CHECK: call @S0(%[[statemt]], %[[j]], %[[Sbox]])
59
+ // CHECK: affine.for %[[j:.*]] = 0 to 1023
60
+ // CHECK: call @S1(%[[j]], %[[v0]], %[[statemt]])
61
+ // CHECK: call @S2(%[[j]], %[[v0]], %[[statemt]])
62
+ // CHECK: affine.for %[[j:.*]] = 0 to 1024
63
+ // CHECK: call @S3(%[[statemt]], %[[j]], %[[v0]])
0 commit comments