@@ -76,6 +76,15 @@ func.func @gpu_gcn_raw_buffer_load_i32_oob_off(%buf: memref<64xi32>, %idx: i32)
76
76
func.return %0 : i32
77
77
}
78
78
79
+ // CHECK-LABEL: func @gpu_gcn_raw_buffer_load_1xi32
80
+ func.func @gpu_gcn_raw_buffer_load_1xi32 (%buf: memref <64 xi32 >, %idx: i32 ) -> vector <1 xi32 > {
81
+ // CHECK: %[[ret:.*]] = rocdl.raw.ptr.buffer.load %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : i32
82
+ // CHECK: %[[cast:.*]] = llvm.bitcast %[[ret]] : i32 to vector<1xi32>
83
+ // CHECK: return %[[cast]]
84
+ %0 = amdgpu.raw_buffer_load {boundsCheck = true } %buf [%idx ] : memref <64 xi32 >, i32 -> vector <1 xi32 >
85
+ func.return %0 : vector <1 xi32 >
86
+ }
87
+
79
88
// CHECK-LABEL: func @gpu_gcn_raw_buffer_load_2xi32
80
89
func.func @gpu_gcn_raw_buffer_load_2xi32 (%buf: memref <64 xi32 >, %idx: i32 ) -> vector <2 xi32 > {
81
90
// CHECK: %[[ret:.*]] = rocdl.raw.ptr.buffer.load %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : vector<2xi32>
@@ -159,6 +168,14 @@ func.func @gpu_gcn_raw_buffer_store_i32(%value: i32, %buf: memref<64xi32>, %idx:
159
168
func.return
160
169
}
161
170
171
+ // CHECK-LABEL: func @gpu_gcn_raw_buffer_store_1xf32
172
+ func.func @gpu_gcn_raw_buffer_store_1xf32 (%value: vector <1 xf32 >, %buf: memref <64 xf32 >, %idx: i32 ) {
173
+ // CHECK: %[[cast:.*]] = llvm.bitcast %{{.*}} : vector<1xf32> to f32
174
+ // CHECK: rocdl.raw.ptr.buffer.store %[[cast]], %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}} : f32
175
+ amdgpu.raw_buffer_store {boundsCheck = true } %value -> %buf [%idx ] : vector <1 xf32 > -> memref <64 xf32 >, i32
176
+ func.return
177
+ }
178
+
162
179
// CHECK-LABEL: func @gpu_gcn_raw_buffer_store_2xi8
163
180
func.func @gpu_gcn_raw_buffer_store_2xi8 (%value: vector <2 xi8 >, %buf: memref <64 xi8 >, %idx: i32 ) {
164
181
// CHECK: %[[cast:.*]] = llvm.bitcast %{{.*}} : vector<2xi8> to i16
0 commit comments