CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
173 lines
9.4 KiB
LLVM
173 lines
9.4 KiB
LLVM
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK-SPIRV
|
|
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
|
|
|
|
; CHECK-SPIRV-DAG: %[[#Char:]] = OpTypeInt 8 0
|
|
; CHECK-SPIRV-DAG: %[[#LocalCharPtr:]] = OpTypePointer Workgroup %[[#Char]]
|
|
; CHECK-SPIRV-DAG: %[[#GenericCharPtr:]] = OpTypePointer Generic %[[#Char]]
|
|
|
|
; CHECK-SPIRV-DAG: %[[#Int:]] = OpTypeInt 32 0
|
|
; CHECK-SPIRV-DAG: %[[#GlobalIntPtr:]] = OpTypePointer CrossWorkgroup %[[#Int]]
|
|
; CHECK-SPIRV-DAG: %[[#PrivateIntPtr:]] = OpTypePointer Function %[[#Int]]
|
|
; CHECK-SPIRV-DAG: %[[#GenericIntPtr:]] = OpTypePointer Generic %[[#Int]]
|
|
|
|
%id = type { %arr }
|
|
%arr = type { [1 x i64] }
|
|
|
|
@__spirv_BuiltInGlobalInvocationId = external local_unnamed_addr addrspace(1) constant <3 x i64>
|
|
|
|
; Mangling
|
|
|
|
; CHECK-SPIRV: OpFunction
|
|
; CHECK-SPIRV: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericCharPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtr %[[#GlobalIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtr %[[#LocalCharPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtr %[[#PrivateIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#GlobalIntPtr]] %{{.*}} CrossWorkgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#LocalCharPtr]] %{{.*}} Workgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#PrivateIntPtr]] %{{.*}} Function
|
|
; CHECK-SPIRV: OpFunctionEnd
|
|
|
|
define spir_kernel void @test1(ptr addrspace(1) %_arg_GlobalA, ptr byval(%id) %_arg_GlobalId, ptr addrspace(3) %_arg_LocalA) {
|
|
entry:
|
|
%var = alloca i32
|
|
%p0 = load i64, ptr %_arg_GlobalId
|
|
%add = getelementptr inbounds i32, ptr addrspace(1) %_arg_GlobalA, i64 %p0
|
|
%p2 = load i64, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId
|
|
%idx = getelementptr inbounds i32, ptr addrspace(1) %add, i64 %p2
|
|
%var1 = addrspacecast ptr addrspace(1) %idx to ptr addrspace(4)
|
|
%var2 = addrspacecast ptr addrspace(3) %_arg_LocalA to ptr addrspace(4)
|
|
%var3 = addrspacecast ptr %var to ptr addrspace(4)
|
|
%G = call spir_func ptr addrspace(1) @_Z33__spirv_GenericCastToPtr_ToGlobalPvi(ptr addrspace(4) %var1, i32 5)
|
|
%L = call spir_func ptr addrspace(3) @_Z32__spirv_GenericCastToPtr_ToLocalPvi(ptr addrspace(4) %var2, i32 4)
|
|
%P = call spir_func ptr @_Z34__spirv_GenericCastToPtr_ToPrivatePvi(ptr addrspace(4) %var3, i32 7)
|
|
%GE = call spir_func ptr addrspace(1) @_Z41__spirv_GenericCastToPtrExplicit_ToGlobalPvi(ptr addrspace(4) %var1, i32 5)
|
|
%LE = call spir_func ptr addrspace(3) @_Z40__spirv_GenericCastToPtrExplicit_ToLocalPvi(ptr addrspace(4) %var2, i32 4)
|
|
%PE = call spir_func ptr @_Z42__spirv_GenericCastToPtrExplicit_ToPrivatePvi(ptr addrspace(4) %var3, i32 7)
|
|
store i32 0, ptr addrspace(1) %G, align 4
|
|
store i8 0, ptr addrspace(3) %L, align 1
|
|
store i32 0, ptr %P, align 4
|
|
store i32 0, ptr addrspace(1) %GE, align 4
|
|
store i8 0, ptr addrspace(3) %LE, align 1
|
|
store i32 0, ptr %PE, align 4
|
|
ret void
|
|
}
|
|
|
|
; CHECK-SPIRV: OpFunction
|
|
; CHECK-SPIRV: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericCharPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#GlobalIntPtr]] %{{.*}} CrossWorkgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#LocalCharPtr]] %{{.*}} Workgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#PrivateIntPtr]] %{{.*}} Function
|
|
; CHECK-SPIRV: OpFunctionEnd
|
|
|
|
define spir_kernel void @test2(ptr addrspace(1) %_arg_GlobalA, ptr byval(%id) %_arg_GlobalId, ptr addrspace(3) %_arg_LocalA) {
|
|
entry:
|
|
%var = alloca i32
|
|
%p0 = load i64, ptr %_arg_GlobalId
|
|
%add = getelementptr inbounds i32, ptr addrspace(1) %_arg_GlobalA, i64 %p0
|
|
%p2 = load i64, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId
|
|
%idx = getelementptr inbounds i32, ptr addrspace(1) %add, i64 %p2
|
|
%var1 = addrspacecast ptr addrspace(1) %idx to ptr addrspace(4)
|
|
%var2 = addrspacecast ptr addrspace(3) %_arg_LocalA to ptr addrspace(4)
|
|
%var3 = addrspacecast ptr %var to ptr addrspace(4)
|
|
%G = call spir_func ptr addrspace(1) @_Z9to_globalPv(ptr addrspace(4) %var1)
|
|
%L = call spir_func ptr addrspace(3) @_Z8to_localPv(ptr addrspace(4) %var2)
|
|
%P = call spir_func ptr @_Z10to_privatePv(ptr addrspace(4) %var3)
|
|
store i32 0, ptr addrspace(1) %G, align 4
|
|
store i8 0, ptr addrspace(3) %L, align 1
|
|
store i32 0, ptr %P, align 4
|
|
ret void
|
|
}
|
|
|
|
declare spir_func ptr addrspace(1) @_Z33__spirv_GenericCastToPtr_ToGlobalPvi(ptr addrspace(4), i32)
|
|
declare spir_func ptr addrspace(3) @_Z32__spirv_GenericCastToPtr_ToLocalPvi(ptr addrspace(4), i32)
|
|
declare spir_func ptr @_Z34__spirv_GenericCastToPtr_ToPrivatePvi(ptr addrspace(4), i32)
|
|
declare spir_func ptr addrspace(1) @_Z41__spirv_GenericCastToPtrExplicit_ToGlobalPvi(ptr addrspace(4), i32)
|
|
declare spir_func ptr addrspace(3) @_Z40__spirv_GenericCastToPtrExplicit_ToLocalPvi(ptr addrspace(4), i32)
|
|
declare spir_func ptr @_Z42__spirv_GenericCastToPtrExplicit_ToPrivatePvi(ptr addrspace(4), i32)
|
|
|
|
declare spir_func ptr addrspace(1) @_Z9to_globalPv(ptr addrspace(4))
|
|
declare spir_func ptr addrspace(3) @_Z8to_localPv(ptr addrspace(4))
|
|
declare spir_func ptr @_Z10to_privatePv(ptr addrspace(4))
|
|
|
|
; No mangling
|
|
|
|
; CHECK-SPIRV: OpFunction
|
|
; CHECK-SPIRV: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericCharPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtr %[[#GlobalIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtr %[[#LocalCharPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtr %[[#PrivateIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#GlobalIntPtr]] %{{.*}} CrossWorkgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#LocalCharPtr]] %{{.*}} Workgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#PrivateIntPtr]] %{{.*}} Function
|
|
; CHECK-SPIRV: OpFunctionEnd
|
|
|
|
define spir_kernel void @test3(ptr addrspace(1) %_arg_GlobalA, ptr byval(%id) %_arg_GlobalId, ptr addrspace(3) %_arg_LocalA) {
|
|
entry:
|
|
%var = alloca i32
|
|
%p0 = load i64, ptr %_arg_GlobalId
|
|
%add = getelementptr inbounds i32, ptr addrspace(1) %_arg_GlobalA, i64 %p0
|
|
%p2 = load i64, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId
|
|
%idx = getelementptr inbounds i32, ptr addrspace(1) %add, i64 %p2
|
|
%var1 = addrspacecast ptr addrspace(1) %idx to ptr addrspace(4)
|
|
%var2 = addrspacecast ptr addrspace(3) %_arg_LocalA to ptr addrspace(4)
|
|
%var3 = addrspacecast ptr %var to ptr addrspace(4)
|
|
%G = call spir_func ptr addrspace(1) @__spirv_GenericCastToPtr_ToGlobal(ptr addrspace(4) %var1, i32 5)
|
|
%L = call spir_func ptr addrspace(3) @__spirv_GenericCastToPtr_ToLocal(ptr addrspace(4) %var2, i32 4)
|
|
%P = call spir_func ptr @__spirv_GenericCastToPtr_ToPrivate(ptr addrspace(4) %var3, i32 7)
|
|
%GE = call spir_func ptr addrspace(1) @__spirv_GenericCastToPtrExplicit_ToGlobal(ptr addrspace(4) %var1, i32 5)
|
|
%LE = call spir_func ptr addrspace(3) @__spirv_GenericCastToPtrExplicit_ToLocal(ptr addrspace(4) %var2, i32 4)
|
|
%PE = call spir_func ptr @__spirv_GenericCastToPtrExplicit_ToPrivate(ptr addrspace(4) %var3, i32 7)
|
|
store i32 0, ptr addrspace(1) %G, align 4
|
|
store i8 0, ptr addrspace(3) %L, align 1
|
|
store i32 0, ptr %P, align 4
|
|
store i32 0, ptr addrspace(1) %GE, align 4
|
|
store i8 0, ptr addrspace(3) %LE, align 1
|
|
store i32 0, ptr %PE, align 4
|
|
ret void
|
|
}
|
|
|
|
; CHECK-SPIRV: OpFunction
|
|
; CHECK-SPIRV: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericCharPtr]]
|
|
; CHECK-SPIRV-NEXT: OpPtrCastToGeneric %[[#GenericIntPtr]]
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#GlobalIntPtr]] %{{.*}} CrossWorkgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#LocalCharPtr]] %{{.*}} Workgroup
|
|
; CHECK-SPIRV-NEXT: OpGenericCastToPtrExplicit %[[#PrivateIntPtr]] %{{.*}} Function
|
|
; CHECK-SPIRV: OpFunctionEnd
|
|
|
|
define spir_kernel void @test4(ptr addrspace(1) %_arg_GlobalA, ptr byval(%id) %_arg_GlobalId, ptr addrspace(3) %_arg_LocalA) {
|
|
entry:
|
|
%var = alloca i32
|
|
%p0 = load i64, ptr %_arg_GlobalId
|
|
%add = getelementptr inbounds i32, ptr addrspace(1) %_arg_GlobalA, i64 %p0
|
|
%p2 = load i64, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId
|
|
%idx = getelementptr inbounds i32, ptr addrspace(1) %add, i64 %p2
|
|
%var1 = addrspacecast ptr addrspace(1) %idx to ptr addrspace(4)
|
|
%var2 = addrspacecast ptr addrspace(3) %_arg_LocalA to ptr addrspace(4)
|
|
%var3 = addrspacecast ptr %var to ptr addrspace(4)
|
|
%G = call spir_func ptr addrspace(1) @to_global(ptr addrspace(4) %var1)
|
|
%L = call spir_func ptr addrspace(3) @to_local(ptr addrspace(4) %var2)
|
|
%P = call spir_func ptr @to_private(ptr addrspace(4) %var3)
|
|
store i32 0, ptr addrspace(1) %G, align 4
|
|
store i8 0, ptr addrspace(3) %L, align 1
|
|
store i32 0, ptr %P, align 4
|
|
ret void
|
|
}
|
|
|
|
declare spir_func ptr addrspace(1) @__spirv_GenericCastToPtr_ToGlobal(ptr addrspace(4), i32)
|
|
declare spir_func ptr addrspace(3) @__spirv_GenericCastToPtr_ToLocal(ptr addrspace(4), i32)
|
|
declare spir_func ptr @__spirv_GenericCastToPtr_ToPrivate(ptr addrspace(4), i32)
|
|
declare spir_func ptr addrspace(1) @__spirv_GenericCastToPtrExplicit_ToGlobal(ptr addrspace(4), i32)
|
|
declare spir_func ptr addrspace(3) @__spirv_GenericCastToPtrExplicit_ToLocal(ptr addrspace(4), i32)
|
|
declare spir_func ptr @__spirv_GenericCastToPtrExplicit_ToPrivate(ptr addrspace(4), i32)
|
|
|
|
declare spir_func ptr addrspace(1) @to_global(ptr addrspace(4))
|
|
declare spir_func ptr addrspace(3) @to_local(ptr addrspace(4))
|
|
declare spir_func ptr @to_private(ptr addrspace(4))
|