@@ -281,3 +281,22 @@ void test_s_prefetch_data(int *fp, global float *gp, constant char *cp, unsigned
281281 __builtin_amdgcn_s_prefetch_data (gp , len );
282282 __builtin_amdgcn_s_prefetch_data (cp , 31 );
283283}
284+
285+ // CHECK-LABEL: @test_s_buffer_prefetch_data(
286+ // CHECK-NEXT: entry:
287+ // CHECK-NEXT: [[RSRC_ADDR:%.*]] = alloca ptr addrspace(8), align 16, addrspace(5)
288+ // CHECK-NEXT: [[LEN_ADDR:%.*]] = alloca i32, align 4, addrspace(5)
289+ // CHECK-NEXT: store ptr addrspace(8) [[RSRC:%.*]], ptr addrspace(5) [[RSRC_ADDR]], align 16
290+ // CHECK-NEXT: store i32 [[LEN:%.*]], ptr addrspace(5) [[LEN_ADDR]], align 4
291+ // CHECK-NEXT: [[TMP0:%.*]] = load ptr addrspace(8), ptr addrspace(5) [[RSRC_ADDR]], align 16
292+ // CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(5) [[LEN_ADDR]], align 4
293+ // CHECK-NEXT: call void @llvm.amdgcn.s.buffer.prefetch.data(ptr addrspace(8) [[TMP0]], i32 128, i32 [[TMP1]])
294+ // CHECK-NEXT: [[TMP2:%.*]] = load ptr addrspace(8), ptr addrspace(5) [[RSRC_ADDR]], align 16
295+ // CHECK-NEXT: call void @llvm.amdgcn.s.buffer.prefetch.data(ptr addrspace(8) [[TMP2]], i32 0, i32 31)
296+ // CHECK-NEXT: ret void
297+ //
298+ void test_s_buffer_prefetch_data (__amdgpu_buffer_rsrc_t rsrc , unsigned int len )
299+ {
300+ __builtin_amdgcn_s_buffer_prefetch_data (rsrc , 128 , len );
301+ __builtin_amdgcn_s_buffer_prefetch_data (rsrc , 0 , 31 );
302+ }
0 commit comments