; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S -mtriple=amdgpu12.00 -passes=amdgpu-lower-buffer-fat-pointers < %s | FileCheck --check-prefix=NOSPREFETCH %s
; RUN: opt -S -mtriple=amdgpu12.00 -mattr=+safe-smem-prefetch -passes=amdgpu-lower-buffer-fat-pointers < %s | FileCheck --check-prefix=SPREFETCH %s

; A data prefetch at a constant offset becomes s_buffer_prefetch_data where a
; scalar prefetch is safe. Other buffer prefetches, including the s_prefetch
; intrinsics, are dropped.

define void @prefetch_const_offset(ptr addrspace(8) %rsrc) {
; NOSPREFETCH-LABEL: define void @prefetch_const_offset(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @prefetch_const_offset(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) #[[ATTR0:[0-9]+]] {
; SPREFETCH-NEXT:    call void @llvm.amdgcn.s.buffer.prefetch.data(ptr addrspace(8) [[RSRC]], i32 128, i32 0)
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 128
  call void @llvm.prefetch.p7(ptr addrspace(7) %q, i32 0, i32 3, i32 1)
  ret void
}

define void @prefetch_max_offset(ptr addrspace(8) %rsrc) {
; NOSPREFETCH-LABEL: define void @prefetch_max_offset(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @prefetch_max_offset(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) #[[ATTR0]] {
; SPREFETCH-NEXT:    call void @llvm.amdgcn.s.buffer.prefetch.data(ptr addrspace(8) [[RSRC]], i32 8388607, i32 0)
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 8388607
  call void @llvm.prefetch.p7(ptr addrspace(7) %q, i32 0, i32 3, i32 1)
  ret void
}

define void @prefetch_too_large_offset(ptr addrspace(8) %rsrc) {
; NOSPREFETCH-LABEL: define void @prefetch_too_large_offset(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @prefetch_too_large_offset(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) #[[ATTR0]] {
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 8388608
  call void @llvm.prefetch.p7(ptr addrspace(7) %q, i32 0, i32 3, i32 1)
  ret void
}

define void @prefetch_negative_offset(ptr addrspace(8) %rsrc) {
; NOSPREFETCH-LABEL: define void @prefetch_negative_offset(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @prefetch_negative_offset(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) #[[ATTR0]] {
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 -4
  call void @llvm.prefetch.p7(ptr addrspace(7) %q, i32 0, i32 3, i32 1)
  ret void
}

define void @prefetch_variable_offset(ptr addrspace(8) %rsrc, i32 %off) {
; NOSPREFETCH-LABEL: define void @prefetch_variable_offset(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]], i32 [[Q:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @prefetch_variable_offset(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]], i32 [[Q:%.*]]) #[[ATTR0]] {
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 %off
  call void @llvm.prefetch.p7(ptr addrspace(7) %q, i32 0, i32 3, i32 1)
  ret void
}

define void @prefetch_inst_const_offset(ptr addrspace(8) %rsrc) {
; NOSPREFETCH-LABEL: define void @prefetch_inst_const_offset(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @prefetch_inst_const_offset(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) #[[ATTR0]] {
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 128
  call void @llvm.prefetch.p7(ptr addrspace(7) %q, i32 0, i32 3, i32 0)
  ret void
}

define void @s_prefetch_inst(ptr addrspace(8) %rsrc) {
; NOSPREFETCH-LABEL: define void @s_prefetch_inst(
; NOSPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) {
; NOSPREFETCH-NEXT:    ret void
;
; SPREFETCH-LABEL: define void @s_prefetch_inst(
; SPREFETCH-SAME: ptr addrspace(8) [[RSRC:%.*]]) #[[ATTR0]] {
; SPREFETCH-NEXT:    ret void
;
  %p = addrspacecast ptr addrspace(8) %rsrc to ptr addrspace(7)
  %q = getelementptr i8, ptr addrspace(7) %p, i32 128
  call void @llvm.amdgcn.s.prefetch.inst.p7(ptr addrspace(7) %q, i32 0)
  ret void
}

declare void @llvm.prefetch.p7(ptr addrspace(7) nocapture readonly, i32 immarg, i32 immarg, i32 immarg)
declare void @llvm.amdgcn.s.prefetch.inst.p7(ptr addrspace(7), i32)
