blob: 51dc530f36fd473590b04dad42af6c78a66fcba7 [file] [log] [blame]
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 1
; Bound: 67
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
OpExecutionMode %main LocalSize 2 1 1
OpSource GLSL 450
OpSourceExtension "GL_ARB_shading_language_420pack"
OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
OpSourceExtension "GL_GOOGLE_include_directive"
OpName %main "main"
OpName %xy "xy"
OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
OpName %inputPixel "inputPixel"
OpName %inputTexture "inputTexture"
OpName %res "res"
OpName %globalBuffer "globalBuffer"
OpMemberName %globalBuffer 0 "coeff"
OpMemberName %globalBuffer 1 "width"
OpMemberName %globalBuffer 2 "height"
OpName %globalBlock "globalBlock"
OpName %x "x"
OpName %y "y"
OpName %outputBufferS "outputBufferS"
OpMemberName %outputBufferS 0 "buf"
OpName %outputBuffer "outputBuffer"
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
OpDecorate %inputTexture DescriptorSet 0
OpDecorate %inputTexture Binding 0
OpMemberDecorate %globalBuffer 0 Offset 0
OpMemberDecorate %globalBuffer 1 Offset 16
OpMemberDecorate %globalBuffer 2 Offset 20
OpDecorate %globalBuffer BufferBlock
OpDecorate %globalBlock DescriptorSet 0
OpDecorate %globalBlock Binding 2
OpDecorate %_runtimearr_v4float ArrayStride 16
OpMemberDecorate %outputBufferS 0 Offset 0
OpDecorate %outputBufferS BufferBlock
OpDecorate %outputBuffer DescriptorSet 0
OpDecorate %outputBuffer Binding 1
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
%void = OpTypeVoid
%3 = OpTypeFunction %void
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
%_ptr_Function_v2int = OpTypePointer Function %v2int
%uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
%v2uint = OpTypeVector %uint 2
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Function_v4float = OpTypePointer Function %v4float
%22 = OpTypeImage %float 2D 0 0 0 1 Unknown
%23 = OpTypeSampledImage %22
%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23
%inputTexture = OpVariable %_ptr_UniformConstant_23 UniformConstant
%28 = OpConstant %int 0
%globalBuffer = OpTypeStruct %v4float %int %int
%_ptr_Uniform_globalBuffer = OpTypePointer Uniform %globalBuffer
%globalBlock = OpVariable %_ptr_Uniform_globalBuffer Uniform
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_ptr_Function_uint = OpTypePointer Function %uint
%42 = OpConstant %uint 0
%_ptr_Input_uint = OpTypePointer Input %uint
%47 = OpConstant %uint 1
%_runtimearr_v4float = OpTypeRuntimeArray %v4float
%outputBufferS = OpTypeStruct %_runtimearr_v4float
%_ptr_Uniform_outputBufferS = OpTypePointer Uniform %outputBufferS
%outputBuffer = OpVariable %_ptr_Uniform_outputBufferS Uniform
%55 = OpConstant %int 1
%_ptr_Uniform_int = OpTypePointer Uniform %int
%65 = OpConstant %uint 2
%gl_WorkGroupSize = OpConstantComposite %v3uint %65 %47 %47
%main = OpFunction %void None %3
%5 = OpLabel
%xy = OpVariable %_ptr_Function_v2int Function
%inputPixel = OpVariable %_ptr_Function_v4float Function
%res = OpVariable %_ptr_Function_v4float Function
%x = OpVariable %_ptr_Function_uint Function
%y = OpVariable %_ptr_Function_uint Function
%15 = OpLoad %v3uint %gl_GlobalInvocationID
%16 = OpVectorShuffle %v2uint %15 %15 0 1
%17 = OpBitcast %v2int %16
OpStore %xy %17
%26 = OpLoad %23 %inputTexture
%27 = OpLoad %v2int %xy
%29 = OpImageFetch %v4float %26 %27 Lod %28
OpStore %inputPixel %29
%31 = OpLoad %v4float %inputPixel
%36 = OpAccessChain %_ptr_Uniform_v4float %globalBlock %28
%37 = OpLoad %v4float %36
%38 = OpDot %float %31 %37
%39 = OpCompositeConstruct %v4float %38 %38 %38 %38
OpStore %res %39
%44 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %42
%45 = OpLoad %uint %44
OpStore %x %45
%48 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %47
%49 = OpLoad %uint %48
OpStore %y %49
%54 = OpLoad %uint %y
%57 = OpAccessChain %_ptr_Uniform_int %globalBlock %55
%58 = OpLoad %int %57
%59 = OpBitcast %uint %58
%60 = OpIMul %uint %54 %59
%61 = OpLoad %uint %x
%62 = OpIAdd %uint %60 %61
%63 = OpLoad %v4float %res
%64 = OpAccessChain %_ptr_Uniform_v4float %outputBuffer %28 %62
OpStore %64 %63
OpReturn
OpFunctionEnd