mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
The OpenCL SPIR-V Environment Specification was updated to mandate that all variables decorated with `BuiltIn` must be in the `Input` storage class, see https://github.com/KhronosGroup/OpenCL-Docs/pull/278. Global variables with the Input storage class have to be listed in the entry points’ interface, which was also taken care of in this commit.
51 lines
2.2 KiB
Plaintext
51 lines
2.2 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.0
|
|
; Generator: Khronos SPIR-V Tools Assembler; 0
|
|
; Bound: 27
|
|
; Schema: 0
|
|
OpCapability Addresses
|
|
OpCapability Linkage
|
|
OpCapability Kernel
|
|
OpCapability Int64
|
|
OpCapability Float16
|
|
%1 = OpExtInstImport "OpenCL.std"
|
|
OpMemoryModel Physical64 OpenCL
|
|
OpEntryPoint Kernel %2 "fmath_spv" %gl_GlobalInvocationID
|
|
OpName %res "res"
|
|
OpName %lhs "lhs"
|
|
OpName %rhs "rhs"
|
|
OpName %entry "entry"
|
|
OpDecorate %7 FuncParamAttr NoCapture
|
|
%7 = OpDecorationGroup
|
|
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
|
OpDecorate %gl_GlobalInvocationID Constant
|
|
OpDecorate %gl_GlobalInvocationID LinkageAttributes "__spirv_GlobalInvocationId" Import
|
|
OpGroupDecorate %7 %res %lhs %rhs
|
|
%ulong = OpTypeInt 64 0
|
|
%v3ulong = OpTypeVector %ulong 3
|
|
%_ptr_Input_v3ulong = OpTypePointer Input %v3ulong
|
|
%void = OpTypeVoid
|
|
%half = OpTypeFloat 16
|
|
%_ptr_CrossWorkgroup_half = OpTypePointer CrossWorkgroup %half
|
|
%15 = OpTypeFunction %void %_ptr_CrossWorkgroup_half %_ptr_CrossWorkgroup_half %_ptr_CrossWorkgroup_half
|
|
%ulong_32 = OpConstant %ulong 32
|
|
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3ulong Input
|
|
%2 = OpFunction %void None %15
|
|
%res = OpFunctionParameter %_ptr_CrossWorkgroup_half
|
|
%lhs = OpFunctionParameter %_ptr_CrossWorkgroup_half
|
|
%rhs = OpFunctionParameter %_ptr_CrossWorkgroup_half
|
|
%entry = OpLabel
|
|
%17 = OpLoad %v3ulong %gl_GlobalInvocationID Aligned 0
|
|
%18 = OpCompositeExtract %ulong %17 0
|
|
%19 = OpShiftLeftLogical %ulong %18 %ulong_32
|
|
%20 = OpShiftRightArithmetic %ulong %19 %ulong_32
|
|
%21 = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_half %lhs %20
|
|
%22 = OpLoad %half %21
|
|
%23 = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_half %rhs %20
|
|
%24 = OpLoad %half %23
|
|
%25 = OpFMod %half %22 %24
|
|
%26 = OpInBoundsPtrAccessChain %_ptr_CrossWorkgroup_half %res %20
|
|
OpStore %26 %25
|
|
OpReturn
|
|
OpFunctionEnd
|