| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 | |
| ; RUN: opt -mtriple=amdgpu12.50-amd-amdhsa -passes=infer-address-spaces -S < %s | FileCheck %s | |
| define void @flat_prefetch_global(ptr addrspace(1) %g) { | |
| ; CHECK-LABEL: define void @flat_prefetch_global( | |
| ; CHECK-SAME: ptr addrspace(1) [[G:%.*]]) { | |
| ; CHECK-NEXT: call void @llvm.amdgcn.global.prefetch(ptr addrspace(1) [[G]], i32 8) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %f = addrspacecast ptr addrspace(1) %g to ptr | |
| call void @llvm.amdgcn.flat.prefetch(ptr %f, i32 8) | |
| ret void | |
| } | |
| define void @flat_prefetch_local(ptr addrspace(3) %l) { | |
| ; CHECK-LABEL: define void @flat_prefetch_local( | |
| ; CHECK-SAME: ptr addrspace(3) [[L:%.*]]) { | |
| ; CHECK-NEXT: [[F:%.*]] = addrspacecast ptr addrspace(3) [[L]] to ptr | |
| ; CHECK-NEXT: call void @llvm.amdgcn.flat.prefetch(ptr [[F]], i32 8) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %f = addrspacecast ptr addrspace(3) %l to ptr | |
| call void @llvm.amdgcn.flat.prefetch(ptr %f, i32 8) | |
| ret void | |
| } | |
| define void @flat_prefetch_global_gep(ptr addrspace(1) %g, i64 %i) { | |
| ; CHECK-LABEL: define void @flat_prefetch_global_gep( | |
| ; CHECK-SAME: ptr addrspace(1) [[G:%.*]], i64 [[I:%.*]]) { | |
| ; CHECK-NEXT: [[P:%.*]] = getelementptr inbounds float, ptr addrspace(1) [[G]], i64 [[I]] | |
| ; CHECK-NEXT: call void @llvm.amdgcn.global.prefetch(ptr addrspace(1) [[P]], i32 8) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %f = addrspacecast ptr addrspace(1) %g to ptr | |
| %p = getelementptr inbounds float, ptr %f, i64 %i | |
| call void @llvm.amdgcn.flat.prefetch(ptr %p, i32 8) | |
| ret void | |
| } | |
| define void @flat_prefetch_constant(ptr addrspace(4) %c) { | |
| ; CHECK-LABEL: define void @flat_prefetch_constant( | |
| ; CHECK-SAME: ptr addrspace(4) [[C:%.*]]) { | |
| ; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr addrspace(4) [[C]] to ptr addrspace(1) | |
| ; CHECK-NEXT: call void @llvm.amdgcn.global.prefetch(ptr addrspace(1) [[TMP1]], i32 8) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %f = addrspacecast ptr addrspace(4) %c to ptr | |
| call void @llvm.amdgcn.flat.prefetch(ptr %f, i32 8) | |
| ret void | |
| } | |
| define void @flat_prefetch_constant_32bit(ptr addrspace(6) %c) { | |
| ; CHECK-LABEL: define void @flat_prefetch_constant_32bit( | |
| ; CHECK-SAME: ptr addrspace(6) [[C:%.*]]) { | |
| ; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr addrspace(6) [[C]] to ptr addrspace(1) | |
| ; CHECK-NEXT: call void @llvm.amdgcn.global.prefetch(ptr addrspace(1) [[TMP1]], i32 8) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %f = addrspacecast ptr addrspace(6) %c to ptr | |
| call void @llvm.amdgcn.flat.prefetch(ptr %f, i32 8) | |
| ret void | |
| } | |
| define void @flat_prefetch_unknown_as(ptr addrspace(999) %u) { | |
| ; CHECK-LABEL: define void @flat_prefetch_unknown_as( | |
| ; CHECK-SAME: ptr addrspace(999) [[U:%.*]]) { | |
| ; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr addrspace(999) [[U]] to ptr addrspace(1) | |
| ; CHECK-NEXT: call void @llvm.amdgcn.global.prefetch(ptr addrspace(1) [[TMP1]], i32 8) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %f = addrspacecast ptr addrspace(999) %u to ptr | |
| call void @llvm.amdgcn.flat.prefetch(ptr %f, i32 8) | |
| ret void | |
| } |