@@ -11,18 +11,9 @@ func.func @load(%base : memref<200x100xf32>, %i : index, %j : index) -> vector<8
11
11
return %0 : vector <8 xf32 >
12
12
}
13
13
14
- // VEC-ALIGN-LABEL: func @load
15
- // VEC-ALIGN: %[[C100:.*]] = llvm.mlir.constant(100 : index) : i64
16
- // VEC-ALIGN: %[[MUL:.*]] = llvm.mul %{{.*}}, %[[C100]] : i64
17
- // VEC-ALIGN: %[[ADD:.*]] = llvm.add %[[MUL]], %{{.*}} : i64
18
- // VEC-ALIGN: %[[GEP:.*]] = llvm.getelementptr %{{.*}}[%[[ADD]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
19
- // VEC-ALIGN: llvm.load %[[GEP]] {alignment = 32 : i64} : !llvm.ptr -> vector<8xf32>
14
+ // ALL-LABEL: func @load
20
15
21
- // MEMREF-ALIGN-LABEL: func @load
22
- // MEMREF-ALIGN: %[[C100:.*]] = llvm.mlir.constant(100 : index) : i64
23
- // MEMREF-ALIGN: %[[MUL:.*]] = llvm.mul %{{.*}}, %[[C100]] : i64
24
- // MEMREF-ALIGN: %[[ADD:.*]] = llvm.add %[[MUL]], %{{.*}} : i64
25
- // MEMREF-ALIGN: %[[GEP:.*]] = llvm.getelementptr %{{.*}}[%[[ADD]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
16
+ // VEC-ALIGN: llvm.load %[[GEP]] {alignment = 32 : i64} : !llvm.ptr -> vector<8xf32>
26
17
// MEMREF-ALIGN: llvm.load %[[GEP]] {alignment = 4 : i64} : !llvm.ptr -> vector<8xf32>
27
18
28
19
// -----
@@ -37,18 +28,9 @@ func.func @store(%base : memref<200x100xf32>, %i : index, %j : index) {
37
28
return
38
29
}
39
30
40
- // VEC-ALIGN-LABEL: func @store
41
- // VEC-ALIGN: %[[C100:.*]] = llvm.mlir.constant(100 : index) : i64
42
- // VEC-ALIGN: %[[MUL:.*]] = llvm.mul %{{.*}}, %[[C100]] : i64
43
- // VEC-ALIGN: %[[ADD:.*]] = llvm.add %[[MUL]], %{{.*}} : i64
44
- // VEC-ALIGN: %[[GEP:.*]] = llvm.getelementptr %{{.*}}[%[[ADD]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
45
- // VEC-ALIGN: llvm.store %{{.*}}, %[[GEP]] {alignment = 16 : i64} : vector<4xf32>, !llvm.ptr
31
+ // ALL-LABEL: func @store
46
32
47
- // MEMREF-ALIGN-LABEL: func @store
48
- // MEMREF-ALIGN: %[[C100:.*]] = llvm.mlir.constant(100 : index) : i64
49
- // MEMREF-ALIGN: %[[MUL:.*]] = llvm.mul %{{.*}}, %[[C100]] : i64
50
- // MEMREF-ALIGN: %[[ADD:.*]] = llvm.add %[[MUL]], %{{.*}} : i64
51
- // MEMREF-ALIGN: %[[GEP:.*]] = llvm.getelementptr %{{.*}}[%[[ADD]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
33
+ // VEC-ALIGN: llvm.store %{{.*}}, %[[GEP]] {alignment = 16 : i64} : vector<4xf32>, !llvm.ptr
52
34
// MEMREF-ALIGN: llvm.store %{{.*}}, %[[GEP]] {alignment = 4 : i64} : vector<4xf32>, !llvm.ptr
53
35
54
36
// -----
@@ -63,19 +45,10 @@ func.func @masked_load(%base: memref<?xf32>, %mask: vector<16xi1>, %passthru: ve
63
45
return %0 : vector <16 xf32 >
64
46
}
65
47
66
- // VEC-ALIGN-LABEL: func @masked_load
67
- // VEC-ALIGN: %[[CO:.*]] = arith.constant 0 : index
68
- // VEC-ALIGN: %[[C:.*]] = builtin.unrealized_conversion_cast %[[CO]] : index to i64
69
- // VEC-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%[[C]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
70
- // VEC-ALIGN: %[[L:.*]] = llvm.intr.masked.load %[[P]], %{{.*}}, %{{.*}} {alignment = 64 : i32} : (!llvm.ptr, vector<16xi1>, vector<16xf32>) -> vector<16xf32>
71
- // VEC-ALIGN: return %[[L]] : vector<16xf32>
48
+ // ALL-LABEL: func @masked_load
72
49
73
- // MEMREF-ALIGN-LABEL: func @masked_load
74
- // MEMREF-ALIGN: %[[CO:.*]] = arith.constant 0 : index
75
- // MEMREF-ALIGN: %[[C:.*]] = builtin.unrealized_conversion_cast %[[CO]] : index to i64
76
- // MEMREF-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%[[C]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
50
+ // VEC-ALIGN: %[[L:.*]] = llvm.intr.masked.load %[[P]], %{{.*}}, %{{.*}} {alignment = 64 : i32} : (!llvm.ptr, vector<16xi1>, vector<16xf32>) -> vector<16xf32>
77
51
// MEMREF-ALIGN: %[[L:.*]] = llvm.intr.masked.load %[[P]], %{{.*}}, %{{.*}} {alignment = 4 : i32} : (!llvm.ptr, vector<16xi1>, vector<16xf32>) -> vector<16xf32>
78
- // MEMREF-ALIGN: return %[[L]] : vector<16xf32>
79
52
80
53
// -----
81
54
@@ -89,16 +62,9 @@ func.func @masked_store(%base: memref<?xf32>, %mask: vector<16xi1>, %passthru: v
89
62
return
90
63
}
91
64
92
- // VEC-ALIGN-LABEL: func @masked_store
93
- // VEC-ALIGN: %[[CO:.*]] = arith.constant 0 : index
94
- // VEC-ALIGN: %[[C:.*]] = builtin.unrealized_conversion_cast %[[CO]] : index to i64
95
- // VEC-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%[[C]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
96
- // VEC-ALIGN: llvm.intr.masked.store %{{.*}}, %[[P]], %{{.*}} {alignment = 64 : i32} : vector<16xf32>, vector<16xi1> into !llvm.ptr
65
+ // ALL-LABEL: func @masked_store
97
66
98
- // MEMREF-ALIGN-LABEL: func @masked_store
99
- // MEMREF-ALIGN: %[[CO:.*]] = arith.constant 0 : index
100
- // MEMREF-ALIGN: %[[C:.*]] = builtin.unrealized_conversion_cast %[[CO]] : index to i64
101
- // MEMREF-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%[[C]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
67
+ // VEC-ALIGN: llvm.intr.masked.store %{{.*}}, %[[P]], %{{.*}} {alignment = 64 : i32} : vector<16xf32>, vector<16xi1> into !llvm.ptr
102
68
// MEMREF-ALIGN: llvm.intr.masked.store %{{.*}}, %[[P]], %{{.*}} {alignment = 4 : i32} : vector<16xf32>, vector<16xi1> into !llvm.ptr
103
69
104
70
// -----
@@ -113,12 +79,9 @@ func.func @scatter(%base: memref<?xf32>, %index: vector<3xi32>, %mask: vector<3x
113
79
return
114
80
}
115
81
116
- // VEC-ALIGN-LABEL: func @scatter
117
- // VEC-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%{{.*}}] : (!llvm.ptr, vector<3xi32>) -> vector<3x!llvm.ptr>, f32
118
- // VEC-ALIGN: llvm.intr.masked.scatter %{{.*}}, %[[P]], %{{.*}} {alignment = 16 : i32} : vector<3xf32>, vector<3xi1> into vector<3x!llvm.ptr>
82
+ // ALL-LABEL: func @scatter
119
83
120
- // MEMREF-ALIGN-LABEL: func @scatter
121
- // MEMREF-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%{{.*}}] : (!llvm.ptr, vector<3xi32>) -> vector<3x!llvm.ptr>, f32
84
+ // VEC-ALIGN: llvm.intr.masked.scatter %{{.*}}, %[[P]], %{{.*}} {alignment = 16 : i32} : vector<3xf32>, vector<3xi1> into vector<3x!llvm.ptr>
122
85
// MEMREF-ALIGN: llvm.intr.masked.scatter %{{.*}}, %[[P]], %{{.*}} {alignment = 4 : i32} : vector<3xf32>, vector<3xi1> into vector<3x!llvm.ptr>
123
86
124
87
// -----
@@ -133,12 +96,7 @@ func.func @gather(%base: memref<?xf32>, %index: vector<3xi32>, %mask: vector<3xi
133
96
return %1 : vector <3 xf32 >
134
97
}
135
98
136
- // VEC-ALIGN-LABEL: func @gather
137
- // VEC-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%{{.*}}] : (!llvm.ptr, vector<3xi32>) -> vector<3x!llvm.ptr>, f32
138
- // VEC-ALIGN: %[[G:.*]] = llvm.intr.masked.gather %[[P]], %{{.*}}, %{{.*}} {alignment = 16 : i32} : (vector<3x!llvm.ptr>, vector<3xi1>, vector<3xf32>) -> vector<3xf32>
139
- // VEC-ALIGN: return %[[G]] : vector<3xf32>
99
+ // ALL-LABEL: func @gather
140
100
141
- // MEMREF-ALIGN-LABEL: func @gather
142
- // MEMREF-ALIGN: %[[P:.*]] = llvm.getelementptr %{{.*}}[%{{.*}}] : (!llvm.ptr, vector<3xi32>) -> vector<3x!llvm.ptr>, f32
101
+ // VEC-ALIGN: %[[G:.*]] = llvm.intr.masked.gather %[[P]], %{{.*}}, %{{.*}} {alignment = 16 : i32} : (vector<3x!llvm.ptr>, vector<3xi1>, vector<3xf32>) -> vector<3xf32>
143
102
// MEMREF-ALIGN: %[[G:.*]] = llvm.intr.masked.gather %[[P]], %{{.*}}, %{{.*}} {alignment = 4 : i32} : (vector<3x!llvm.ptr>, vector<3xi1>, vector<3xf32>) -> vector<3xf32>
144
- // MEMREF-ALIGN: return %[[G]] : vector<3xf32>
0 commit comments