From: Konstantin Pyzhov Date: Wed, 3 Jul 2019 19:11:35 +0000 (+0000) Subject: [AMDGPU] Kernel arg metadata: added support for "__hip_texture" type. X-Git-Tag: llvmorg-10-init~1318 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6f419a33709e75b9c27cb2c1a1f1c20222079b61;p=platform%2Fupstream%2Fllvm.git [AMDGPU] Kernel arg metadata: added support for "__hip_texture" type. Summary: Hip texture type is equivalent to OpenCL image. So, we need to set the Image type for kernel arguments with __hip_texture type. Differential revision: https://reviews.llvm.org/D63850 llvm-svn: 365073 --- diff --git a/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp b/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp index 236d750..559910c 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp @@ -104,6 +104,11 @@ ValueKind MetadataStreamerV2::getValueKind(Type *Ty, StringRef TypeQual, if (TypeQual.find("pipe") != StringRef::npos) return ValueKind::Pipe; + if (isa(Ty) && Ty->getPointerElementType()->isStructTy() && + Ty->getPointerElementType()->getStructName() == "struct.__hip_texture") { + return ValueKind::Image; + } + return StringSwitch(BaseTypeName) .Case("image1d_t", ValueKind::Image) .Case("image1d_array_t", ValueKind::Image) @@ -541,6 +546,11 @@ StringRef MetadataStreamerV3::getValueKind(Type *Ty, StringRef TypeQual, if (TypeQual.find("pipe") != StringRef::npos) return "pipe"; + if (isa(Ty) && Ty->getPointerElementType()->isStructTy() && + Ty->getPointerElementType()->getStructName() == "struct.__hip_texture") { + return "image"; + } + return StringSwitch(BaseTypeName) .Case("image1d_t", "image") .Case("image1d_array_t", "image") diff --git a/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full-v3.ll b/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full-v3.ll index edcd45a..c18c58b 100644 --- a/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full-v3.ll +++ b/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full-v3.ll @@ -13,6 +13,7 @@ %opencl.pipe_t = type opaque %struct.B = type { i32 addrspace(1)*} %opencl.clk_event_t = type opaque +%struct.__hip_texture = type opaque @__test_block_invoke_kernel_runtime_handle = external addrspace(1) externally_initialized constant i8 addrspace(1)* @@ -1496,6 +1497,18 @@ define amdgpu_kernel void @unknown_addrspace_kernarg(i32 addrspace(12345)* %ptr) ret void } +; CHECK: - .args: +; CHECK-NEXT: - .address_space: generic +; CHECK-NEXT: .offset: 0 +; CHECK-NEXT: .size: 8 +; CHECK-NEXT: .value_kind: image +; CHECK-NEXT: .value_type: struct +; CHECK: .name: _Z5EmptyP13__hip_texture +; CHECK: .symbol: _Z5EmptyP13__hip_texture.kd +define protected amdgpu_kernel void @_Z5EmptyP13__hip_texture(%struct.__hip_texture* nocapture) local_unnamed_addr #1 { + ret void +} + ; CHECK: amdhsa.printf: ; CHECK-NEXT: - '1:1:4:%d\n' ; CHECK-NEXT: - '2:1:8:%g\n' diff --git a/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.ll b/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.ll index 3437360..c088dab 100644 --- a/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.ll +++ b/llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.ll @@ -13,6 +13,7 @@ %opencl.pipe_t = type opaque %struct.B = type { i32 addrspace(1)*} %opencl.clk_event_t = type opaque +%struct.__hip_texture = type opaque @__test_block_invoke_kernel_runtime_handle = external addrspace(1) externally_initialized constant i8 addrspace(1)* @@ -1484,6 +1485,16 @@ define amdgpu_kernel void @unknown_addrspace_kernarg(i32 addrspace(12345)* %ptr) ret void } +; CHECK: - Name: _Z5EmptyP13__hip_texture +; CHECK: Args: +; CHECK-NEXT: - Size: 8 +; CHECK-NEXT: Align: 8 +; CHECK-NEXT: ValueKind: Image +; CHECK-NEXT: ValueType: Struct +define protected amdgpu_kernel void @_Z5EmptyP13__hip_texture(%struct.__hip_texture* nocapture) local_unnamed_addr #1 { + ret void +} + attributes #0 = { "amdgpu-implicitarg-num-bytes"="48" } attributes #1 = { "amdgpu-implicitarg-num-bytes"="48" "runtime-handle"="__test_block_invoke_kernel_runtime_handle" } attributes #2 = { "amdgpu-implicitarg-num-bytes"="48" "calls-enqueue-kernel" }