[spv-out] zero init variables in function and private address spaces

This commit is contained in:
teoxoy 2022-04-29 21:26:43 +02:00 committed by Teodor Tanasoaia
parent ceb92921c2
commit 239bbbbed4
13 changed files with 2295 additions and 2255 deletions

View File

@ -309,7 +309,10 @@ impl Writer {
pointer_type_id,
id,
spirv::StorageClass::Function,
init_word,
init_word.or_else(|| {
let type_id = self.get_type_id(LookupType::Handle(variable.ty));
Some(self.write_constant_null(type_id))
}),
);
function
.variables
@ -1325,6 +1328,13 @@ impl Writer {
}
};
let init_word = match global_variable.space {
crate::AddressSpace::Private => {
init_word.or_else(|| Some(self.write_constant_null(inner_type_id)))
}
_ => init_word,
};
Instruction::variable(pointer_type_id, id, class, init_word)
.to_words(&mut self.logical_layout.declarations);
Ok(id)

View File

@ -1,16 +1,16 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 218
; Bound: 221
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %141 "foo_vert" %136 %139
OpEntryPoint Fragment %178 "foo_frag" %177
OpEntryPoint GLCompute %195 "atomics"
OpExecutionMode %178 OriginUpperLeft
OpExecutionMode %195 LocalSize 1 1 1
OpEntryPoint Vertex %143 "foo_vert" %138 %141
OpEntryPoint Fragment %180 "foo_frag" %179
OpEntryPoint GLCompute %198 "atomics"
OpExecutionMode %180 OriginUpperLeft
OpExecutionMode %198 LocalSize 1 1 1
OpSource GLSL 450
OpMemberName %32 0 "value"
OpName %32 "AlignedWrapper"
@ -26,18 +26,18 @@ OpName %52 "bar"
OpName %54 "baz"
OpName %57 "idx"
OpName %59 "t"
OpName %62 "test_matrix_within_struct_accesses"
OpName %120 "foo"
OpName %121 "read_from_private"
OpName %126 "a"
OpName %127 "test_arr_as_arg"
OpName %132 "foo"
OpName %133 "c"
OpName %136 "vi"
OpName %141 "foo_vert"
OpName %178 "foo_frag"
OpName %193 "tmp"
OpName %195 "atomics"
OpName %63 "test_matrix_within_struct_accesses"
OpName %121 "foo"
OpName %122 "read_from_private"
OpName %127 "a"
OpName %128 "test_arr_as_arg"
OpName %133 "foo"
OpName %134 "c"
OpName %138 "vi"
OpName %143 "foo_vert"
OpName %180 "foo_frag"
OpName %195 "tmp"
OpName %198 "atomics"
OpMemberDecorate %32 0 Offset 0
OpDecorate %37 ArrayStride 16
OpDecorate %39 ArrayStride 8
@ -64,9 +64,9 @@ OpDecorate %54 DescriptorSet 0
OpDecorate %54 Binding 1
OpDecorate %55 Block
OpMemberDecorate %55 0 Offset 0
OpDecorate %136 BuiltIn VertexIndex
OpDecorate %139 BuiltIn Position
OpDecorate %177 Location 0
OpDecorate %138 BuiltIn VertexIndex
OpDecorate %141 BuiltIn Position
OpDecorate %179 Location 0
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpConstant %4 2
@ -124,208 +124,211 @@ OpDecorate %177 Location 0
%54 = OpVariable %56 Uniform
%58 = OpTypePointer Function %4
%60 = OpTypePointer Function %43
%63 = OpTypeFunction %2
%64 = OpTypePointer Uniform %43
%69 = OpTypePointer Uniform %42
%72 = OpTypePointer Uniform %36
%78 = OpTypePointer Uniform %9
%98 = OpTypePointer Function %42
%104 = OpTypePointer Function %36
%110 = OpTypePointer Function %9
%122 = OpTypeFunction %9 %44
%128 = OpTypeFunction %9 %46
%134 = OpTypePointer Function %49
%137 = OpTypePointer Input %26
%136 = OpVariable %137 Input
%140 = OpTypePointer Output %47
%139 = OpVariable %140 Output
%146 = OpTypePointer StorageBuffer %33
%149 = OpTypePointer StorageBuffer %39
%152 = OpTypePointer StorageBuffer %34
%153 = OpTypePointer StorageBuffer %9
%156 = OpTypePointer StorageBuffer %40
%159 = OpTypePointer StorageBuffer %32
%160 = OpConstant %26 4
%171 = OpTypeVector %4 4
%177 = OpVariable %140 Output
%197 = OpTypePointer StorageBuffer %4
%200 = OpConstant %26 64
%62 = OpFunction %2 None %63
%61 = OpLabel
%61 = OpConstantNull %43
%64 = OpTypeFunction %2
%65 = OpTypePointer Uniform %43
%70 = OpTypePointer Uniform %42
%73 = OpTypePointer Uniform %36
%79 = OpTypePointer Uniform %9
%99 = OpTypePointer Function %42
%105 = OpTypePointer Function %36
%111 = OpTypePointer Function %9
%123 = OpTypeFunction %9 %44
%129 = OpTypeFunction %9 %46
%135 = OpTypePointer Function %49
%136 = OpConstantNull %49
%139 = OpTypePointer Input %26
%138 = OpVariable %139 Input
%142 = OpTypePointer Output %47
%141 = OpVariable %142 Output
%148 = OpTypePointer StorageBuffer %33
%151 = OpTypePointer StorageBuffer %39
%154 = OpTypePointer StorageBuffer %34
%155 = OpTypePointer StorageBuffer %9
%158 = OpTypePointer StorageBuffer %40
%161 = OpTypePointer StorageBuffer %32
%162 = OpConstant %26 4
%173 = OpTypeVector %4 4
%179 = OpVariable %142 Output
%196 = OpConstantNull %4
%200 = OpTypePointer StorageBuffer %4
%203 = OpConstant %26 64
%63 = OpFunction %2 None %64
%62 = OpLabel
%57 = OpVariable %58 Function %5
%59 = OpVariable %60 Function
%65 = OpAccessChain %64 %54 %31
OpBranch %66
%66 = OpLabel
%67 = OpLoad %4 %57
%68 = OpISub %4 %67 %6
OpStore %57 %68
%70 = OpAccessChain %69 %65 %31
%71 = OpLoad %42 %70
%73 = OpAccessChain %72 %65 %31 %31
%74 = OpLoad %36 %73
%75 = OpLoad %4 %57
%76 = OpAccessChain %72 %65 %31 %75
%77 = OpLoad %36 %76
%79 = OpAccessChain %78 %65 %31 %31 %29
%80 = OpLoad %9 %79
%81 = OpLoad %4 %57
%82 = OpAccessChain %78 %65 %31 %31 %81
%83 = OpLoad %9 %82
%84 = OpLoad %4 %57
%85 = OpAccessChain %78 %65 %31 %84 %29
%86 = OpLoad %9 %85
%87 = OpLoad %4 %57
%59 = OpVariable %60 Function %61
%66 = OpAccessChain %65 %54 %31
OpBranch %67
%67 = OpLabel
%68 = OpLoad %4 %57
%69 = OpISub %4 %68 %6
OpStore %57 %69
%71 = OpAccessChain %70 %66 %31
%72 = OpLoad %42 %71
%74 = OpAccessChain %73 %66 %31 %31
%75 = OpLoad %36 %74
%76 = OpLoad %4 %57
%77 = OpAccessChain %73 %66 %31 %76
%78 = OpLoad %36 %77
%80 = OpAccessChain %79 %66 %31 %31 %29
%81 = OpLoad %9 %80
%82 = OpLoad %4 %57
%83 = OpAccessChain %79 %66 %31 %31 %82
%84 = OpLoad %9 %83
%85 = OpLoad %4 %57
%86 = OpAccessChain %79 %66 %31 %85 %29
%87 = OpLoad %9 %86
%88 = OpLoad %4 %57
%89 = OpAccessChain %78 %65 %31 %87 %88
%90 = OpLoad %9 %89
%91 = OpCompositeConstruct %36 %8 %8
%92 = OpCompositeConstruct %36 %10 %10
%93 = OpCompositeConstruct %36 %11 %11
%94 = OpCompositeConstruct %42 %91 %92 %93
%95 = OpCompositeConstruct %43 %94
OpStore %59 %95
%96 = OpLoad %4 %57
%97 = OpIAdd %4 %96 %6
OpStore %57 %97
%99 = OpCompositeConstruct %36 %12 %12
%100 = OpCompositeConstruct %36 %13 %13
%101 = OpCompositeConstruct %36 %14 %14
%102 = OpCompositeConstruct %42 %99 %100 %101
%103 = OpAccessChain %98 %59 %31
OpStore %103 %102
%105 = OpCompositeConstruct %36 %15 %15
%106 = OpAccessChain %104 %59 %31 %31
OpStore %106 %105
%107 = OpLoad %4 %57
%108 = OpCompositeConstruct %36 %16 %16
%109 = OpAccessChain %104 %59 %31 %107
OpStore %109 %108
%111 = OpAccessChain %110 %59 %31 %31 %29
OpStore %111 %17
%112 = OpLoad %4 %57
%113 = OpAccessChain %110 %59 %31 %31 %112
OpStore %113 %18
%114 = OpLoad %4 %57
%115 = OpAccessChain %110 %59 %31 %114 %29
OpStore %115 %19
%116 = OpLoad %4 %57
%89 = OpLoad %4 %57
%90 = OpAccessChain %79 %66 %31 %88 %89
%91 = OpLoad %9 %90
%92 = OpCompositeConstruct %36 %8 %8
%93 = OpCompositeConstruct %36 %10 %10
%94 = OpCompositeConstruct %36 %11 %11
%95 = OpCompositeConstruct %42 %92 %93 %94
%96 = OpCompositeConstruct %43 %95
OpStore %59 %96
%97 = OpLoad %4 %57
%98 = OpIAdd %4 %97 %6
OpStore %57 %98
%100 = OpCompositeConstruct %36 %12 %12
%101 = OpCompositeConstruct %36 %13 %13
%102 = OpCompositeConstruct %36 %14 %14
%103 = OpCompositeConstruct %42 %100 %101 %102
%104 = OpAccessChain %99 %59 %31
OpStore %104 %103
%106 = OpCompositeConstruct %36 %15 %15
%107 = OpAccessChain %105 %59 %31 %31
OpStore %107 %106
%108 = OpLoad %4 %57
%109 = OpCompositeConstruct %36 %16 %16
%110 = OpAccessChain %105 %59 %31 %108
OpStore %110 %109
%112 = OpAccessChain %111 %59 %31 %31 %29
OpStore %112 %17
%113 = OpLoad %4 %57
%114 = OpAccessChain %111 %59 %31 %31 %113
OpStore %114 %18
%115 = OpLoad %4 %57
%116 = OpAccessChain %111 %59 %31 %115 %29
OpStore %116 %19
%117 = OpLoad %4 %57
%118 = OpAccessChain %110 %59 %31 %116 %117
OpStore %118 %20
%118 = OpLoad %4 %57
%119 = OpAccessChain %111 %59 %31 %117 %118
OpStore %119 %20
OpReturn
OpFunctionEnd
%121 = OpFunction %9 None %122
%120 = OpFunctionParameter %44
%119 = OpLabel
OpBranch %123
%123 = OpLabel
%124 = OpLoad %9 %120
OpReturnValue %124
%122 = OpFunction %9 None %123
%121 = OpFunctionParameter %44
%120 = OpLabel
OpBranch %124
%124 = OpLabel
%125 = OpLoad %9 %121
OpReturnValue %125
OpFunctionEnd
%127 = OpFunction %9 None %128
%126 = OpFunctionParameter %46
%125 = OpLabel
OpBranch %129
%129 = OpLabel
%130 = OpCompositeExtract %45 %126 4
%131 = OpCompositeExtract %9 %130 9
OpReturnValue %131
%128 = OpFunction %9 None %129
%127 = OpFunctionParameter %46
%126 = OpLabel
OpBranch %130
%130 = OpLabel
%131 = OpCompositeExtract %45 %127 4
%132 = OpCompositeExtract %9 %131 9
OpReturnValue %132
OpFunctionEnd
%141 = OpFunction %2 None %63
%135 = OpLabel
%132 = OpVariable %44 Function %24
%133 = OpVariable %134 Function
%138 = OpLoad %26 %136
%142 = OpAccessChain %64 %54 %31
OpBranch %143
%143 = OpLabel
%144 = OpLoad %9 %132
OpStore %132 %8
%145 = OpFunctionCall %2 %62
%147 = OpAccessChain %146 %52 %31
%148 = OpLoad %33 %147
%150 = OpAccessChain %149 %52 %25
%151 = OpLoad %39 %150
%154 = OpAccessChain %153 %52 %31 %25 %31
%155 = OpLoad %9 %154
%157 = OpArrayLength %26 %52 4
%158 = OpISub %26 %157 %27
%161 = OpAccessChain %48 %52 %160 %158 %31
%162 = OpLoad %4 %161
%163 = OpFunctionCall %9 %121 %132
%164 = OpConvertFToS %4 %155
%165 = OpCompositeConstruct %49 %162 %164 %28 %23 %22
OpStore %133 %165
%166 = OpIAdd %26 %138 %29
%167 = OpAccessChain %58 %133 %166
OpStore %167 %30
%168 = OpAccessChain %58 %133 %138
%169 = OpLoad %4 %168
%170 = OpFunctionCall %9 %127 %51
%172 = OpCompositeConstruct %171 %169 %169 %169 %169
%173 = OpConvertSToF %47 %172
%174 = OpMatrixTimesVector %34 %148 %173
%175 = OpCompositeConstruct %47 %174 %10
OpStore %139 %175
%143 = OpFunction %2 None %64
%137 = OpLabel
%133 = OpVariable %44 Function %24
%134 = OpVariable %135 Function %136
%140 = OpLoad %26 %138
%144 = OpAccessChain %65 %54 %31
OpBranch %145
%145 = OpLabel
%146 = OpLoad %9 %133
OpStore %133 %8
%147 = OpFunctionCall %2 %63
%149 = OpAccessChain %148 %52 %31
%150 = OpLoad %33 %149
%152 = OpAccessChain %151 %52 %25
%153 = OpLoad %39 %152
%156 = OpAccessChain %155 %52 %31 %25 %31
%157 = OpLoad %9 %156
%159 = OpArrayLength %26 %52 4
%160 = OpISub %26 %159 %27
%163 = OpAccessChain %48 %52 %162 %160 %31
%164 = OpLoad %4 %163
%165 = OpFunctionCall %9 %122 %133
%166 = OpConvertFToS %4 %157
%167 = OpCompositeConstruct %49 %164 %166 %28 %23 %22
OpStore %134 %167
%168 = OpIAdd %26 %140 %29
%169 = OpAccessChain %58 %134 %168
OpStore %169 %30
%170 = OpAccessChain %58 %134 %140
%171 = OpLoad %4 %170
%172 = OpFunctionCall %9 %128 %51
%174 = OpCompositeConstruct %173 %171 %171 %171 %171
%175 = OpConvertSToF %47 %174
%176 = OpMatrixTimesVector %34 %150 %175
%177 = OpCompositeConstruct %47 %176 %10
OpStore %141 %177
OpReturn
OpFunctionEnd
%178 = OpFunction %2 None %63
%176 = OpLabel
OpBranch %179
%179 = OpLabel
%180 = OpAccessChain %153 %52 %31 %29 %27
OpStore %180 %8
%181 = OpCompositeConstruct %34 %24 %24 %24
%182 = OpCompositeConstruct %34 %8 %8 %8
%183 = OpCompositeConstruct %34 %10 %10 %10
%184 = OpCompositeConstruct %34 %11 %11 %11
%185 = OpCompositeConstruct %33 %181 %182 %183 %184
%186 = OpAccessChain %146 %52 %31
OpStore %186 %185
%187 = OpCompositeConstruct %38 %31 %31
%188 = OpCompositeConstruct %38 %29 %29
%189 = OpCompositeConstruct %39 %187 %188
%190 = OpAccessChain %149 %52 %25
OpStore %190 %189
%191 = OpAccessChain %48 %52 %160 %29 %31
OpStore %191 %6
%192 = OpCompositeConstruct %47 %24 %24 %24 %24
OpStore %177 %192
%180 = OpFunction %2 None %64
%178 = OpLabel
OpBranch %181
%181 = OpLabel
%182 = OpAccessChain %155 %52 %31 %29 %27
OpStore %182 %8
%183 = OpCompositeConstruct %34 %24 %24 %24
%184 = OpCompositeConstruct %34 %8 %8 %8
%185 = OpCompositeConstruct %34 %10 %10 %10
%186 = OpCompositeConstruct %34 %11 %11 %11
%187 = OpCompositeConstruct %33 %183 %184 %185 %186
%188 = OpAccessChain %148 %52 %31
OpStore %188 %187
%189 = OpCompositeConstruct %38 %31 %31
%190 = OpCompositeConstruct %38 %29 %29
%191 = OpCompositeConstruct %39 %189 %190
%192 = OpAccessChain %151 %52 %25
OpStore %192 %191
%193 = OpAccessChain %48 %52 %162 %29 %31
OpStore %193 %6
%194 = OpCompositeConstruct %47 %24 %24 %24 %24
OpStore %179 %194
OpReturn
OpFunctionEnd
%195 = OpFunction %2 None %63
%194 = OpLabel
%193 = OpVariable %58 Function
OpBranch %196
%196 = OpLabel
%198 = OpAccessChain %197 %52 %27
%199 = OpAtomicLoad %4 %198 %6 %200
%202 = OpAccessChain %197 %52 %27
%201 = OpAtomicIAdd %4 %202 %6 %200 %22
OpStore %193 %201
%204 = OpAccessChain %197 %52 %27
%203 = OpAtomicISub %4 %204 %6 %200 %22
OpStore %193 %203
%206 = OpAccessChain %197 %52 %27
%205 = OpAtomicAnd %4 %206 %6 %200 %22
OpStore %193 %205
%208 = OpAccessChain %197 %52 %27
%207 = OpAtomicOr %4 %208 %6 %200 %22
OpStore %193 %207
%210 = OpAccessChain %197 %52 %27
%209 = OpAtomicXor %4 %210 %6 %200 %22
OpStore %193 %209
%212 = OpAccessChain %197 %52 %27
%211 = OpAtomicSMin %4 %212 %6 %200 %22
OpStore %193 %211
%214 = OpAccessChain %197 %52 %27
%213 = OpAtomicSMax %4 %214 %6 %200 %22
OpStore %193 %213
%216 = OpAccessChain %197 %52 %27
%215 = OpAtomicExchange %4 %216 %6 %200 %22
OpStore %193 %215
%217 = OpAccessChain %197 %52 %27
OpAtomicStore %217 %6 %200 %199
%198 = OpFunction %2 None %64
%197 = OpLabel
%195 = OpVariable %58 Function %196
OpBranch %199
%199 = OpLabel
%201 = OpAccessChain %200 %52 %27
%202 = OpAtomicLoad %4 %201 %6 %203
%205 = OpAccessChain %200 %52 %27
%204 = OpAtomicIAdd %4 %205 %6 %203 %22
OpStore %195 %204
%207 = OpAccessChain %200 %52 %27
%206 = OpAtomicISub %4 %207 %6 %203 %22
OpStore %195 %206
%209 = OpAccessChain %200 %52 %27
%208 = OpAtomicAnd %4 %209 %6 %203 %22
OpStore %195 %208
%211 = OpAccessChain %200 %52 %27
%210 = OpAtomicOr %4 %211 %6 %203 %22
OpStore %195 %210
%213 = OpAccessChain %200 %52 %27
%212 = OpAtomicXor %4 %213 %6 %203 %22
OpStore %195 %212
%215 = OpAccessChain %200 %52 %27
%214 = OpAtomicSMin %4 %215 %6 %203 %22
OpStore %195 %214
%217 = OpAccessChain %200 %52 %27
%216 = OpAtomicSMax %4 %217 %6 %203 %22
OpStore %195 %216
%219 = OpAccessChain %200 %52 %27
%218 = OpAtomicExchange %4 %219 %6 %203 %22
OpStore %195 %218
%220 = OpAccessChain %200 %52 %27
OpAtomicStore %220 %6 %203 %202
OpReturn
OpFunctionEnd

View File

@ -1,15 +1,15 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 429
; Bound: 431
OpCapability Shader
OpCapability ImageQuery
OpCapability ShaderNonUniform
OpExtension "SPV_EXT_descriptor_indexing"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %63 "main" %58 %61
OpExecutionMode %63 OriginUpperLeft
OpEntryPoint Fragment %65 "main" %60 %63
OpExecutionMode %65 OriginUpperLeft
OpMemberDecorate %9 0 Offset 0
OpMemberDecorate %24 0 Offset 0
OpDecorate %27 DescriptorSet 0
@ -32,31 +32,31 @@ OpDecorate %45 DescriptorSet 0
OpDecorate %45 Binding 8
OpDecorate %46 Block
OpMemberDecorate %46 0 Offset 0
OpDecorate %58 Location 0
OpDecorate %58 Flat
OpDecorate %61 Location 0
OpDecorate %91 NonUniform
OpDecorate %114 NonUniform
OpDecorate %60 Location 0
OpDecorate %60 Flat
OpDecorate %63 Location 0
OpDecorate %93 NonUniform
OpDecorate %116 NonUniform
OpDecorate %141 NonUniform
OpDecorate %118 NonUniform
OpDecorate %143 NonUniform
OpDecorate %181 NonUniform
OpDecorate %210 NonUniform
OpDecorate %226 NonUniform
OpDecorate %242 NonUniform
OpDecorate %263 NonUniform
OpDecorate %145 NonUniform
OpDecorate %183 NonUniform
OpDecorate %212 NonUniform
OpDecorate %228 NonUniform
OpDecorate %244 NonUniform
OpDecorate %265 NonUniform
OpDecorate %287 NonUniform
OpDecorate %267 NonUniform
OpDecorate %289 NonUniform
OpDecorate %311 NonUniform
OpDecorate %291 NonUniform
OpDecorate %313 NonUniform
OpDecorate %335 NonUniform
OpDecorate %315 NonUniform
OpDecorate %337 NonUniform
OpDecorate %359 NonUniform
OpDecorate %339 NonUniform
OpDecorate %361 NonUniform
OpDecorate %383 NonUniform
OpDecorate %363 NonUniform
OpDecorate %385 NonUniform
OpDecorate %407 NonUniform
OpDecorate %387 NonUniform
OpDecorate %409 NonUniform
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpConstant %4 5
@ -105,451 +105,453 @@ OpDecorate %407 NonUniform
%45 = OpVariable %47 Uniform
%49 = OpTypePointer Function %4
%51 = OpTypePointer Function %26
%53 = OpTypePointer Function %7
%55 = OpTypePointer Function %25
%59 = OpTypePointer Input %8
%58 = OpVariable %59 Input
%62 = OpTypePointer Output %25
%61 = OpVariable %62 Output
%64 = OpTypeFunction %2
%65 = OpTypePointer Uniform %9
%66 = OpConstant %8 0
%69 = OpTypePointer Uniform %8
%75 = OpTypeVector %7 2
%79 = OpTypePointer UniformConstant %10
%97 = OpTypePointer UniformConstant %21
%100 = OpTypeSampledImage %10
%121 = OpTypePointer UniformConstant %17
%124 = OpTypePointer UniformConstant %21
%127 = OpTypeSampledImage %17
%150 = OpTypeBool
%151 = OpConstantNull %25
%157 = OpTypeVector %150 2
%167 = OpConstantNull %25
%182 = OpConstantNull %25
%195 = OpTypePointer UniformConstant %13
%198 = OpTypeVector %4 3
%230 = OpTypePointer UniformConstant %15
%389 = OpTypePointer UniformConstant %19
%63 = OpFunction %2 None %64
%56 = OpLabel
%50 = OpVariable %51 Function
%54 = OpVariable %55 Function
%52 = OpConstantNull %26
%54 = OpTypePointer Function %7
%56 = OpTypePointer Function %25
%57 = OpConstantNull %25
%61 = OpTypePointer Input %8
%60 = OpVariable %61 Input
%64 = OpTypePointer Output %25
%63 = OpVariable %64 Output
%66 = OpTypeFunction %2
%67 = OpTypePointer Uniform %9
%68 = OpConstant %8 0
%71 = OpTypePointer Uniform %8
%77 = OpTypeVector %7 2
%81 = OpTypePointer UniformConstant %10
%99 = OpTypePointer UniformConstant %21
%102 = OpTypeSampledImage %10
%123 = OpTypePointer UniformConstant %17
%126 = OpTypePointer UniformConstant %21
%129 = OpTypeSampledImage %17
%152 = OpTypeBool
%153 = OpConstantNull %25
%159 = OpTypeVector %152 2
%169 = OpConstantNull %25
%184 = OpConstantNull %25
%197 = OpTypePointer UniformConstant %13
%200 = OpTypeVector %4 3
%232 = OpTypePointer UniformConstant %15
%391 = OpTypePointer UniformConstant %19
%65 = OpFunction %2 None %66
%58 = OpLabel
%50 = OpVariable %51 Function %52
%55 = OpVariable %56 Function %57
%48 = OpVariable %49 Function %5
%52 = OpVariable %53 Function %6
%60 = OpLoad %8 %58
%57 = OpCompositeConstruct %24 %60
%67 = OpAccessChain %65 %45 %66
OpBranch %68
%68 = OpLabel
%70 = OpAccessChain %69 %67 %66
%71 = OpLoad %8 %70
%72 = OpCompositeExtract %8 %57 0
%73 = OpCompositeConstruct %26 %5 %5
OpStore %50 %73
%74 = OpCompositeConstruct %25 %6 %6 %6 %6
OpStore %54 %74
%76 = OpCompositeConstruct %75 %6 %6
%77 = OpCompositeConstruct %26 %5 %5
%78 = OpLoad %26 %50
%80 = OpAccessChain %79 %27 %66
%81 = OpLoad %10 %80
%82 = OpImageQuerySizeLod %26 %81 %66
%83 = OpIAdd %26 %78 %82
OpStore %50 %83
%84 = OpLoad %26 %50
%85 = OpAccessChain %79 %27 %71
%86 = OpLoad %10 %85
%87 = OpImageQuerySizeLod %26 %86 %66
%88 = OpIAdd %26 %84 %87
OpStore %50 %88
%89 = OpLoad %26 %50
%90 = OpAccessChain %79 %27 %72
%91 = OpLoad %10 %90
%92 = OpImageQuerySizeLod %26 %91 %66
%93 = OpIAdd %26 %89 %92
OpStore %50 %93
%94 = OpLoad %25 %54
%95 = OpAccessChain %79 %31 %66
%96 = OpLoad %10 %95
%98 = OpAccessChain %97 %41 %66
%99 = OpLoad %21 %98
%101 = OpSampledImage %100 %96 %99
%102 = OpImageGather %25 %101 %76 %66
%103 = OpFAdd %25 %94 %102
OpStore %54 %103
%104 = OpLoad %25 %54
%105 = OpAccessChain %79 %31 %71
%106 = OpLoad %10 %105
%107 = OpAccessChain %97 %41 %71
%108 = OpLoad %21 %107
%109 = OpSampledImage %100 %106 %108
%110 = OpImageGather %25 %109 %76 %66
%111 = OpFAdd %25 %104 %110
OpStore %54 %111
%112 = OpLoad %25 %54
%113 = OpAccessChain %79 %31 %72
%114 = OpLoad %10 %113
%115 = OpAccessChain %97 %41 %72
%116 = OpLoad %21 %115
%117 = OpSampledImage %100 %114 %116
%118 = OpImageGather %25 %117 %76 %66
%119 = OpFAdd %25 %112 %118
OpStore %54 %119
%120 = OpLoad %25 %54
%122 = OpAccessChain %121 %37 %66
%123 = OpLoad %17 %122
%125 = OpAccessChain %124 %43 %66
%126 = OpLoad %21 %125
%128 = OpSampledImage %127 %123 %126
%129 = OpImageDrefGather %25 %128 %76 %6
%130 = OpFAdd %25 %120 %129
OpStore %54 %130
%131 = OpLoad %25 %54
%132 = OpAccessChain %121 %37 %71
%133 = OpLoad %17 %132
%134 = OpAccessChain %124 %43 %71
%135 = OpLoad %21 %134
%136 = OpSampledImage %127 %133 %135
%137 = OpImageDrefGather %25 %136 %76 %6
%138 = OpFAdd %25 %131 %137
OpStore %54 %138
%139 = OpLoad %25 %54
%140 = OpAccessChain %121 %37 %72
%141 = OpLoad %17 %140
%142 = OpAccessChain %124 %43 %72
%143 = OpLoad %21 %142
%144 = OpSampledImage %127 %141 %143
%145 = OpImageDrefGather %25 %144 %76 %6
%146 = OpFAdd %25 %139 %145
OpStore %54 %146
%147 = OpLoad %25 %54
%148 = OpAccessChain %79 %27 %66
%149 = OpLoad %10 %148
%152 = OpImageQueryLevels %4 %149
%153 = OpULessThan %150 %5 %152
OpSelectionMerge %154 None
OpBranchConditional %153 %155 %154
%155 = OpLabel
%156 = OpImageQuerySizeLod %26 %149 %5
%158 = OpULessThan %157 %77 %156
%159 = OpAll %150 %158
OpBranchConditional %159 %160 %154
%160 = OpLabel
%161 = OpImageFetch %25 %149 %77 Lod %5
OpBranch %154
%154 = OpLabel
%162 = OpPhi %25 %151 %68 %151 %155 %161 %160
%163 = OpFAdd %25 %147 %162
OpStore %54 %163
%164 = OpLoad %25 %54
%165 = OpAccessChain %79 %27 %71
%166 = OpLoad %10 %165
%168 = OpImageQueryLevels %4 %166
%169 = OpULessThan %150 %5 %168
OpSelectionMerge %170 None
OpBranchConditional %169 %171 %170
%171 = OpLabel
%172 = OpImageQuerySizeLod %26 %166 %5
%173 = OpULessThan %157 %77 %172
%174 = OpAll %150 %173
OpBranchConditional %174 %175 %170
%175 = OpLabel
%176 = OpImageFetch %25 %166 %77 Lod %5
OpBranch %170
%170 = OpLabel
%177 = OpPhi %25 %167 %154 %167 %171 %176 %175
%178 = OpFAdd %25 %164 %177
OpStore %54 %178
%179 = OpLoad %25 %54
%180 = OpAccessChain %79 %27 %72
%181 = OpLoad %10 %180
%183 = OpImageQueryLevels %4 %181
%184 = OpULessThan %150 %5 %183
OpSelectionMerge %185 None
OpBranchConditional %184 %186 %185
%186 = OpLabel
%187 = OpImageQuerySizeLod %26 %181 %5
%188 = OpULessThan %157 %77 %187
%189 = OpAll %150 %188
OpBranchConditional %189 %190 %185
%190 = OpLabel
%191 = OpImageFetch %25 %181 %77 Lod %5
OpBranch %185
%185 = OpLabel
%192 = OpPhi %25 %182 %170 %182 %186 %191 %190
%193 = OpFAdd %25 %179 %192
OpStore %54 %193
%194 = OpLoad %4 %48
%196 = OpAccessChain %195 %33 %66
%197 = OpLoad %13 %196
%199 = OpImageQuerySizeLod %198 %197 %66
%200 = OpCompositeExtract %4 %199 2
%201 = OpIAdd %4 %194 %200
OpStore %48 %201
%202 = OpLoad %4 %48
%203 = OpAccessChain %195 %33 %71
%204 = OpLoad %13 %203
%205 = OpImageQuerySizeLod %198 %204 %66
%206 = OpCompositeExtract %4 %205 2
%207 = OpIAdd %4 %202 %206
OpStore %48 %207
%208 = OpLoad %4 %48
%209 = OpAccessChain %195 %33 %72
%210 = OpLoad %13 %209
%211 = OpImageQuerySizeLod %198 %210 %66
%212 = OpCompositeExtract %4 %211 2
%213 = OpIAdd %4 %208 %212
OpStore %48 %213
%214 = OpLoad %4 %48
%215 = OpAccessChain %79 %31 %66
%216 = OpLoad %10 %215
%217 = OpImageQueryLevels %4 %216
%218 = OpIAdd %4 %214 %217
OpStore %48 %218
%219 = OpLoad %4 %48
%220 = OpAccessChain %79 %31 %71
%221 = OpLoad %10 %220
%222 = OpImageQueryLevels %4 %221
%223 = OpIAdd %4 %219 %222
OpStore %48 %223
%224 = OpLoad %4 %48
%225 = OpAccessChain %79 %31 %72
%226 = OpLoad %10 %225
%227 = OpImageQueryLevels %4 %226
%228 = OpIAdd %4 %224 %227
OpStore %48 %228
%229 = OpLoad %4 %48
%231 = OpAccessChain %230 %35 %66
%232 = OpLoad %15 %231
%233 = OpImageQuerySamples %4 %232
%234 = OpIAdd %4 %229 %233
OpStore %48 %234
%235 = OpLoad %4 %48
%236 = OpAccessChain %230 %35 %71
%237 = OpLoad %15 %236
%238 = OpImageQuerySamples %4 %237
%239 = OpIAdd %4 %235 %238
OpStore %48 %239
%240 = OpLoad %4 %48
%241 = OpAccessChain %230 %35 %72
%242 = OpLoad %15 %241
%243 = OpImageQuerySamples %4 %242
%244 = OpIAdd %4 %240 %243
OpStore %48 %244
%245 = OpLoad %25 %54
%246 = OpAccessChain %79 %31 %66
%247 = OpLoad %10 %246
%248 = OpAccessChain %97 %41 %66
%249 = OpLoad %21 %248
%250 = OpSampledImage %100 %247 %249
%251 = OpImageSampleImplicitLod %25 %250 %76
%252 = OpFAdd %25 %245 %251
OpStore %54 %252
%253 = OpLoad %25 %54
%254 = OpAccessChain %79 %31 %71
%255 = OpLoad %10 %254
%256 = OpAccessChain %97 %41 %71
%257 = OpLoad %21 %256
%258 = OpSampledImage %100 %255 %257
%259 = OpImageSampleImplicitLod %25 %258 %76
%260 = OpFAdd %25 %253 %259
OpStore %54 %260
%261 = OpLoad %25 %54
%262 = OpAccessChain %79 %31 %72
%263 = OpLoad %10 %262
%264 = OpAccessChain %97 %41 %72
%265 = OpLoad %21 %264
%266 = OpSampledImage %100 %263 %265
%267 = OpImageSampleImplicitLod %25 %266 %76
%268 = OpFAdd %25 %261 %267
OpStore %54 %268
%269 = OpLoad %25 %54
%270 = OpAccessChain %79 %31 %66
%271 = OpLoad %10 %270
%272 = OpAccessChain %97 %41 %66
%273 = OpLoad %21 %272
%274 = OpSampledImage %100 %271 %273
%275 = OpImageSampleImplicitLod %25 %274 %76 Bias %6
%276 = OpFAdd %25 %269 %275
OpStore %54 %276
%277 = OpLoad %25 %54
%278 = OpAccessChain %79 %31 %71
%279 = OpLoad %10 %278
%280 = OpAccessChain %97 %41 %71
%281 = OpLoad %21 %280
%282 = OpSampledImage %100 %279 %281
%283 = OpImageSampleImplicitLod %25 %282 %76 Bias %6
%284 = OpFAdd %25 %277 %283
OpStore %54 %284
%285 = OpLoad %25 %54
%286 = OpAccessChain %79 %31 %72
%287 = OpLoad %10 %286
%288 = OpAccessChain %97 %41 %72
%289 = OpLoad %21 %288
%290 = OpSampledImage %100 %287 %289
%291 = OpImageSampleImplicitLod %25 %290 %76 Bias %6
%292 = OpFAdd %25 %285 %291
OpStore %54 %292
%293 = OpLoad %7 %52
%294 = OpAccessChain %121 %37 %66
%295 = OpLoad %17 %294
%296 = OpAccessChain %124 %43 %66
%297 = OpLoad %21 %296
%298 = OpSampledImage %127 %295 %297
%299 = OpImageSampleDrefImplicitLod %7 %298 %76 %6
%300 = OpFAdd %7 %293 %299
OpStore %52 %300
%301 = OpLoad %7 %52
%302 = OpAccessChain %121 %37 %71
%303 = OpLoad %17 %302
%304 = OpAccessChain %124 %43 %71
%305 = OpLoad %21 %304
%306 = OpSampledImage %127 %303 %305
%307 = OpImageSampleDrefImplicitLod %7 %306 %76 %6
%308 = OpFAdd %7 %301 %307
OpStore %52 %308
%309 = OpLoad %7 %52
%310 = OpAccessChain %121 %37 %72
%311 = OpLoad %17 %310
%312 = OpAccessChain %124 %43 %72
%313 = OpLoad %21 %312
%314 = OpSampledImage %127 %311 %313
%315 = OpImageSampleDrefImplicitLod %7 %314 %76 %6
%316 = OpFAdd %7 %309 %315
OpStore %52 %316
%317 = OpLoad %7 %52
%318 = OpAccessChain %121 %37 %66
%319 = OpLoad %17 %318
%320 = OpAccessChain %124 %43 %66
%321 = OpLoad %21 %320
%322 = OpSampledImage %127 %319 %321
%323 = OpImageSampleDrefExplicitLod %7 %322 %76 %6 Lod %6
%324 = OpFAdd %7 %317 %323
OpStore %52 %324
%325 = OpLoad %7 %52
%326 = OpAccessChain %121 %37 %71
%327 = OpLoad %17 %326
%328 = OpAccessChain %124 %43 %71
%329 = OpLoad %21 %328
%330 = OpSampledImage %127 %327 %329
%331 = OpImageSampleDrefExplicitLod %7 %330 %76 %6 Lod %6
%332 = OpFAdd %7 %325 %331
OpStore %52 %332
%333 = OpLoad %7 %52
%334 = OpAccessChain %121 %37 %72
%335 = OpLoad %17 %334
%336 = OpAccessChain %124 %43 %72
%337 = OpLoad %21 %336
%338 = OpSampledImage %127 %335 %337
%339 = OpImageSampleDrefExplicitLod %7 %338 %76 %6 Lod %6
%340 = OpFAdd %7 %333 %339
OpStore %52 %340
%341 = OpLoad %25 %54
%342 = OpAccessChain %79 %31 %66
%343 = OpLoad %10 %342
%344 = OpAccessChain %97 %41 %66
%345 = OpLoad %21 %344
%346 = OpSampledImage %100 %343 %345
%347 = OpImageSampleExplicitLod %25 %346 %76 Grad %76 %76
%348 = OpFAdd %25 %341 %347
OpStore %54 %348
%349 = OpLoad %25 %54
%350 = OpAccessChain %79 %31 %71
%351 = OpLoad %10 %350
%352 = OpAccessChain %97 %41 %71
%353 = OpLoad %21 %352
%354 = OpSampledImage %100 %351 %353
%355 = OpImageSampleExplicitLod %25 %354 %76 Grad %76 %76
%356 = OpFAdd %25 %349 %355
OpStore %54 %356
%357 = OpLoad %25 %54
%358 = OpAccessChain %79 %31 %72
%359 = OpLoad %10 %358
%360 = OpAccessChain %97 %41 %72
%361 = OpLoad %21 %360
%362 = OpSampledImage %100 %359 %361
%363 = OpImageSampleExplicitLod %25 %362 %76 Grad %76 %76
%364 = OpFAdd %25 %357 %363
OpStore %54 %364
%365 = OpLoad %25 %54
%366 = OpAccessChain %79 %31 %66
%367 = OpLoad %10 %366
%368 = OpAccessChain %97 %41 %66
%369 = OpLoad %21 %368
%370 = OpSampledImage %100 %367 %369
%371 = OpImageSampleExplicitLod %25 %370 %76 Lod %6
%372 = OpFAdd %25 %365 %371
OpStore %54 %372
%373 = OpLoad %25 %54
%374 = OpAccessChain %79 %31 %71
%375 = OpLoad %10 %374
%376 = OpAccessChain %97 %41 %71
%377 = OpLoad %21 %376
%378 = OpSampledImage %100 %375 %377
%379 = OpImageSampleExplicitLod %25 %378 %76 Lod %6
%380 = OpFAdd %25 %373 %379
OpStore %54 %380
%381 = OpLoad %25 %54
%382 = OpAccessChain %79 %31 %72
%383 = OpLoad %10 %382
%384 = OpAccessChain %97 %41 %72
%385 = OpLoad %21 %384
%386 = OpSampledImage %100 %383 %385
%387 = OpImageSampleExplicitLod %25 %386 %76 Lod %6
%388 = OpFAdd %25 %381 %387
OpStore %54 %388
%390 = OpAccessChain %389 %39 %66
%391 = OpLoad %19 %390
%392 = OpLoad %25 %54
%393 = OpImageQuerySize %26 %391
%394 = OpULessThan %157 %77 %393
%395 = OpAll %150 %394
OpSelectionMerge %396 None
OpBranchConditional %395 %397 %396
%397 = OpLabel
OpImageWrite %391 %77 %392
OpBranch %396
%396 = OpLabel
%398 = OpAccessChain %389 %39 %71
%399 = OpLoad %19 %398
%400 = OpLoad %25 %54
%401 = OpImageQuerySize %26 %399
%402 = OpULessThan %157 %77 %401
%403 = OpAll %150 %402
OpSelectionMerge %404 None
OpBranchConditional %403 %405 %404
%405 = OpLabel
OpImageWrite %399 %77 %400
OpBranch %404
%404 = OpLabel
%406 = OpAccessChain %389 %39 %72
%407 = OpLoad %19 %406
%408 = OpLoad %25 %54
%409 = OpImageQuerySize %26 %407
%410 = OpULessThan %157 %77 %409
%411 = OpAll %150 %410
OpSelectionMerge %412 None
OpBranchConditional %411 %413 %412
%413 = OpLabel
OpImageWrite %407 %77 %408
OpBranch %412
%412 = OpLabel
%414 = OpLoad %26 %50
%415 = OpLoad %4 %48
%416 = OpCompositeConstruct %26 %415 %415
%417 = OpIAdd %26 %414 %416
%418 = OpConvertSToF %75 %417
%419 = OpLoad %25 %54
%420 = OpCompositeExtract %7 %418 0
%421 = OpCompositeExtract %7 %418 1
%422 = OpCompositeExtract %7 %418 0
%423 = OpCompositeExtract %7 %418 1
%424 = OpCompositeConstruct %25 %420 %421 %422 %423
%425 = OpFAdd %25 %419 %424
%426 = OpLoad %7 %52
%427 = OpCompositeConstruct %25 %426 %426 %426 %426
%428 = OpFAdd %25 %425 %427
OpStore %61 %428
%53 = OpVariable %54 Function %6
%62 = OpLoad %8 %60
%59 = OpCompositeConstruct %24 %62
%69 = OpAccessChain %67 %45 %68
OpBranch %70
%70 = OpLabel
%72 = OpAccessChain %71 %69 %68
%73 = OpLoad %8 %72
%74 = OpCompositeExtract %8 %59 0
%75 = OpCompositeConstruct %26 %5 %5
OpStore %50 %75
%76 = OpCompositeConstruct %25 %6 %6 %6 %6
OpStore %55 %76
%78 = OpCompositeConstruct %77 %6 %6
%79 = OpCompositeConstruct %26 %5 %5
%80 = OpLoad %26 %50
%82 = OpAccessChain %81 %27 %68
%83 = OpLoad %10 %82
%84 = OpImageQuerySizeLod %26 %83 %68
%85 = OpIAdd %26 %80 %84
OpStore %50 %85
%86 = OpLoad %26 %50
%87 = OpAccessChain %81 %27 %73
%88 = OpLoad %10 %87
%89 = OpImageQuerySizeLod %26 %88 %68
%90 = OpIAdd %26 %86 %89
OpStore %50 %90
%91 = OpLoad %26 %50
%92 = OpAccessChain %81 %27 %74
%93 = OpLoad %10 %92
%94 = OpImageQuerySizeLod %26 %93 %68
%95 = OpIAdd %26 %91 %94
OpStore %50 %95
%96 = OpLoad %25 %55
%97 = OpAccessChain %81 %31 %68
%98 = OpLoad %10 %97
%100 = OpAccessChain %99 %41 %68
%101 = OpLoad %21 %100
%103 = OpSampledImage %102 %98 %101
%104 = OpImageGather %25 %103 %78 %68
%105 = OpFAdd %25 %96 %104
OpStore %55 %105
%106 = OpLoad %25 %55
%107 = OpAccessChain %81 %31 %73
%108 = OpLoad %10 %107
%109 = OpAccessChain %99 %41 %73
%110 = OpLoad %21 %109
%111 = OpSampledImage %102 %108 %110
%112 = OpImageGather %25 %111 %78 %68
%113 = OpFAdd %25 %106 %112
OpStore %55 %113
%114 = OpLoad %25 %55
%115 = OpAccessChain %81 %31 %74
%116 = OpLoad %10 %115
%117 = OpAccessChain %99 %41 %74
%118 = OpLoad %21 %117
%119 = OpSampledImage %102 %116 %118
%120 = OpImageGather %25 %119 %78 %68
%121 = OpFAdd %25 %114 %120
OpStore %55 %121
%122 = OpLoad %25 %55
%124 = OpAccessChain %123 %37 %68
%125 = OpLoad %17 %124
%127 = OpAccessChain %126 %43 %68
%128 = OpLoad %21 %127
%130 = OpSampledImage %129 %125 %128
%131 = OpImageDrefGather %25 %130 %78 %6
%132 = OpFAdd %25 %122 %131
OpStore %55 %132
%133 = OpLoad %25 %55
%134 = OpAccessChain %123 %37 %73
%135 = OpLoad %17 %134
%136 = OpAccessChain %126 %43 %73
%137 = OpLoad %21 %136
%138 = OpSampledImage %129 %135 %137
%139 = OpImageDrefGather %25 %138 %78 %6
%140 = OpFAdd %25 %133 %139
OpStore %55 %140
%141 = OpLoad %25 %55
%142 = OpAccessChain %123 %37 %74
%143 = OpLoad %17 %142
%144 = OpAccessChain %126 %43 %74
%145 = OpLoad %21 %144
%146 = OpSampledImage %129 %143 %145
%147 = OpImageDrefGather %25 %146 %78 %6
%148 = OpFAdd %25 %141 %147
OpStore %55 %148
%149 = OpLoad %25 %55
%150 = OpAccessChain %81 %27 %68
%151 = OpLoad %10 %150
%154 = OpImageQueryLevels %4 %151
%155 = OpULessThan %152 %5 %154
OpSelectionMerge %156 None
OpBranchConditional %155 %157 %156
%157 = OpLabel
%158 = OpImageQuerySizeLod %26 %151 %5
%160 = OpULessThan %159 %79 %158
%161 = OpAll %152 %160
OpBranchConditional %161 %162 %156
%162 = OpLabel
%163 = OpImageFetch %25 %151 %79 Lod %5
OpBranch %156
%156 = OpLabel
%164 = OpPhi %25 %153 %70 %153 %157 %163 %162
%165 = OpFAdd %25 %149 %164
OpStore %55 %165
%166 = OpLoad %25 %55
%167 = OpAccessChain %81 %27 %73
%168 = OpLoad %10 %167
%170 = OpImageQueryLevels %4 %168
%171 = OpULessThan %152 %5 %170
OpSelectionMerge %172 None
OpBranchConditional %171 %173 %172
%173 = OpLabel
%174 = OpImageQuerySizeLod %26 %168 %5
%175 = OpULessThan %159 %79 %174
%176 = OpAll %152 %175
OpBranchConditional %176 %177 %172
%177 = OpLabel
%178 = OpImageFetch %25 %168 %79 Lod %5
OpBranch %172
%172 = OpLabel
%179 = OpPhi %25 %169 %156 %169 %173 %178 %177
%180 = OpFAdd %25 %166 %179
OpStore %55 %180
%181 = OpLoad %25 %55
%182 = OpAccessChain %81 %27 %74
%183 = OpLoad %10 %182
%185 = OpImageQueryLevels %4 %183
%186 = OpULessThan %152 %5 %185
OpSelectionMerge %187 None
OpBranchConditional %186 %188 %187
%188 = OpLabel
%189 = OpImageQuerySizeLod %26 %183 %5
%190 = OpULessThan %159 %79 %189
%191 = OpAll %152 %190
OpBranchConditional %191 %192 %187
%192 = OpLabel
%193 = OpImageFetch %25 %183 %79 Lod %5
OpBranch %187
%187 = OpLabel
%194 = OpPhi %25 %184 %172 %184 %188 %193 %192
%195 = OpFAdd %25 %181 %194
OpStore %55 %195
%196 = OpLoad %4 %48
%198 = OpAccessChain %197 %33 %68
%199 = OpLoad %13 %198
%201 = OpImageQuerySizeLod %200 %199 %68
%202 = OpCompositeExtract %4 %201 2
%203 = OpIAdd %4 %196 %202
OpStore %48 %203
%204 = OpLoad %4 %48
%205 = OpAccessChain %197 %33 %73
%206 = OpLoad %13 %205
%207 = OpImageQuerySizeLod %200 %206 %68
%208 = OpCompositeExtract %4 %207 2
%209 = OpIAdd %4 %204 %208
OpStore %48 %209
%210 = OpLoad %4 %48
%211 = OpAccessChain %197 %33 %74
%212 = OpLoad %13 %211
%213 = OpImageQuerySizeLod %200 %212 %68
%214 = OpCompositeExtract %4 %213 2
%215 = OpIAdd %4 %210 %214
OpStore %48 %215
%216 = OpLoad %4 %48
%217 = OpAccessChain %81 %31 %68
%218 = OpLoad %10 %217
%219 = OpImageQueryLevels %4 %218
%220 = OpIAdd %4 %216 %219
OpStore %48 %220
%221 = OpLoad %4 %48
%222 = OpAccessChain %81 %31 %73
%223 = OpLoad %10 %222
%224 = OpImageQueryLevels %4 %223
%225 = OpIAdd %4 %221 %224
OpStore %48 %225
%226 = OpLoad %4 %48
%227 = OpAccessChain %81 %31 %74
%228 = OpLoad %10 %227
%229 = OpImageQueryLevels %4 %228
%230 = OpIAdd %4 %226 %229
OpStore %48 %230
%231 = OpLoad %4 %48
%233 = OpAccessChain %232 %35 %68
%234 = OpLoad %15 %233
%235 = OpImageQuerySamples %4 %234
%236 = OpIAdd %4 %231 %235
OpStore %48 %236
%237 = OpLoad %4 %48
%238 = OpAccessChain %232 %35 %73
%239 = OpLoad %15 %238
%240 = OpImageQuerySamples %4 %239
%241 = OpIAdd %4 %237 %240
OpStore %48 %241
%242 = OpLoad %4 %48
%243 = OpAccessChain %232 %35 %74
%244 = OpLoad %15 %243
%245 = OpImageQuerySamples %4 %244
%246 = OpIAdd %4 %242 %245
OpStore %48 %246
%247 = OpLoad %25 %55
%248 = OpAccessChain %81 %31 %68
%249 = OpLoad %10 %248
%250 = OpAccessChain %99 %41 %68
%251 = OpLoad %21 %250
%252 = OpSampledImage %102 %249 %251
%253 = OpImageSampleImplicitLod %25 %252 %78
%254 = OpFAdd %25 %247 %253
OpStore %55 %254
%255 = OpLoad %25 %55
%256 = OpAccessChain %81 %31 %73
%257 = OpLoad %10 %256
%258 = OpAccessChain %99 %41 %73
%259 = OpLoad %21 %258
%260 = OpSampledImage %102 %257 %259
%261 = OpImageSampleImplicitLod %25 %260 %78
%262 = OpFAdd %25 %255 %261
OpStore %55 %262
%263 = OpLoad %25 %55
%264 = OpAccessChain %81 %31 %74
%265 = OpLoad %10 %264
%266 = OpAccessChain %99 %41 %74
%267 = OpLoad %21 %266
%268 = OpSampledImage %102 %265 %267
%269 = OpImageSampleImplicitLod %25 %268 %78
%270 = OpFAdd %25 %263 %269
OpStore %55 %270
%271 = OpLoad %25 %55
%272 = OpAccessChain %81 %31 %68
%273 = OpLoad %10 %272
%274 = OpAccessChain %99 %41 %68
%275 = OpLoad %21 %274
%276 = OpSampledImage %102 %273 %275
%277 = OpImageSampleImplicitLod %25 %276 %78 Bias %6
%278 = OpFAdd %25 %271 %277
OpStore %55 %278
%279 = OpLoad %25 %55
%280 = OpAccessChain %81 %31 %73
%281 = OpLoad %10 %280
%282 = OpAccessChain %99 %41 %73
%283 = OpLoad %21 %282
%284 = OpSampledImage %102 %281 %283
%285 = OpImageSampleImplicitLod %25 %284 %78 Bias %6
%286 = OpFAdd %25 %279 %285
OpStore %55 %286
%287 = OpLoad %25 %55
%288 = OpAccessChain %81 %31 %74
%289 = OpLoad %10 %288
%290 = OpAccessChain %99 %41 %74
%291 = OpLoad %21 %290
%292 = OpSampledImage %102 %289 %291
%293 = OpImageSampleImplicitLod %25 %292 %78 Bias %6
%294 = OpFAdd %25 %287 %293
OpStore %55 %294
%295 = OpLoad %7 %53
%296 = OpAccessChain %123 %37 %68
%297 = OpLoad %17 %296
%298 = OpAccessChain %126 %43 %68
%299 = OpLoad %21 %298
%300 = OpSampledImage %129 %297 %299
%301 = OpImageSampleDrefImplicitLod %7 %300 %78 %6
%302 = OpFAdd %7 %295 %301
OpStore %53 %302
%303 = OpLoad %7 %53
%304 = OpAccessChain %123 %37 %73
%305 = OpLoad %17 %304
%306 = OpAccessChain %126 %43 %73
%307 = OpLoad %21 %306
%308 = OpSampledImage %129 %305 %307
%309 = OpImageSampleDrefImplicitLod %7 %308 %78 %6
%310 = OpFAdd %7 %303 %309
OpStore %53 %310
%311 = OpLoad %7 %53
%312 = OpAccessChain %123 %37 %74
%313 = OpLoad %17 %312
%314 = OpAccessChain %126 %43 %74
%315 = OpLoad %21 %314
%316 = OpSampledImage %129 %313 %315
%317 = OpImageSampleDrefImplicitLod %7 %316 %78 %6
%318 = OpFAdd %7 %311 %317
OpStore %53 %318
%319 = OpLoad %7 %53
%320 = OpAccessChain %123 %37 %68
%321 = OpLoad %17 %320
%322 = OpAccessChain %126 %43 %68
%323 = OpLoad %21 %322
%324 = OpSampledImage %129 %321 %323
%325 = OpImageSampleDrefExplicitLod %7 %324 %78 %6 Lod %6
%326 = OpFAdd %7 %319 %325
OpStore %53 %326
%327 = OpLoad %7 %53
%328 = OpAccessChain %123 %37 %73
%329 = OpLoad %17 %328
%330 = OpAccessChain %126 %43 %73
%331 = OpLoad %21 %330
%332 = OpSampledImage %129 %329 %331
%333 = OpImageSampleDrefExplicitLod %7 %332 %78 %6 Lod %6
%334 = OpFAdd %7 %327 %333
OpStore %53 %334
%335 = OpLoad %7 %53
%336 = OpAccessChain %123 %37 %74
%337 = OpLoad %17 %336
%338 = OpAccessChain %126 %43 %74
%339 = OpLoad %21 %338
%340 = OpSampledImage %129 %337 %339
%341 = OpImageSampleDrefExplicitLod %7 %340 %78 %6 Lod %6
%342 = OpFAdd %7 %335 %341
OpStore %53 %342
%343 = OpLoad %25 %55
%344 = OpAccessChain %81 %31 %68
%345 = OpLoad %10 %344
%346 = OpAccessChain %99 %41 %68
%347 = OpLoad %21 %346
%348 = OpSampledImage %102 %345 %347
%349 = OpImageSampleExplicitLod %25 %348 %78 Grad %78 %78
%350 = OpFAdd %25 %343 %349
OpStore %55 %350
%351 = OpLoad %25 %55
%352 = OpAccessChain %81 %31 %73
%353 = OpLoad %10 %352
%354 = OpAccessChain %99 %41 %73
%355 = OpLoad %21 %354
%356 = OpSampledImage %102 %353 %355
%357 = OpImageSampleExplicitLod %25 %356 %78 Grad %78 %78
%358 = OpFAdd %25 %351 %357
OpStore %55 %358
%359 = OpLoad %25 %55
%360 = OpAccessChain %81 %31 %74
%361 = OpLoad %10 %360
%362 = OpAccessChain %99 %41 %74
%363 = OpLoad %21 %362
%364 = OpSampledImage %102 %361 %363
%365 = OpImageSampleExplicitLod %25 %364 %78 Grad %78 %78
%366 = OpFAdd %25 %359 %365
OpStore %55 %366
%367 = OpLoad %25 %55
%368 = OpAccessChain %81 %31 %68
%369 = OpLoad %10 %368
%370 = OpAccessChain %99 %41 %68
%371 = OpLoad %21 %370
%372 = OpSampledImage %102 %369 %371
%373 = OpImageSampleExplicitLod %25 %372 %78 Lod %6
%374 = OpFAdd %25 %367 %373
OpStore %55 %374
%375 = OpLoad %25 %55
%376 = OpAccessChain %81 %31 %73
%377 = OpLoad %10 %376
%378 = OpAccessChain %99 %41 %73
%379 = OpLoad %21 %378
%380 = OpSampledImage %102 %377 %379
%381 = OpImageSampleExplicitLod %25 %380 %78 Lod %6
%382 = OpFAdd %25 %375 %381
OpStore %55 %382
%383 = OpLoad %25 %55
%384 = OpAccessChain %81 %31 %74
%385 = OpLoad %10 %384
%386 = OpAccessChain %99 %41 %74
%387 = OpLoad %21 %386
%388 = OpSampledImage %102 %385 %387
%389 = OpImageSampleExplicitLod %25 %388 %78 Lod %6
%390 = OpFAdd %25 %383 %389
OpStore %55 %390
%392 = OpAccessChain %391 %39 %68
%393 = OpLoad %19 %392
%394 = OpLoad %25 %55
%395 = OpImageQuerySize %26 %393
%396 = OpULessThan %159 %79 %395
%397 = OpAll %152 %396
OpSelectionMerge %398 None
OpBranchConditional %397 %399 %398
%399 = OpLabel
OpImageWrite %393 %79 %394
OpBranch %398
%398 = OpLabel
%400 = OpAccessChain %391 %39 %73
%401 = OpLoad %19 %400
%402 = OpLoad %25 %55
%403 = OpImageQuerySize %26 %401
%404 = OpULessThan %159 %79 %403
%405 = OpAll %152 %404
OpSelectionMerge %406 None
OpBranchConditional %405 %407 %406
%407 = OpLabel
OpImageWrite %401 %79 %402
OpBranch %406
%406 = OpLabel
%408 = OpAccessChain %391 %39 %74
%409 = OpLoad %19 %408
%410 = OpLoad %25 %55
%411 = OpImageQuerySize %26 %409
%412 = OpULessThan %159 %79 %411
%413 = OpAll %152 %412
OpSelectionMerge %414 None
OpBranchConditional %413 %415 %414
%415 = OpLabel
OpImageWrite %409 %79 %410
OpBranch %414
%414 = OpLabel
%416 = OpLoad %26 %50
%417 = OpLoad %4 %48
%418 = OpCompositeConstruct %26 %417 %417
%419 = OpIAdd %26 %416 %418
%420 = OpConvertSToF %77 %419
%421 = OpLoad %25 %55
%422 = OpCompositeExtract %7 %420 0
%423 = OpCompositeExtract %7 %420 1
%424 = OpCompositeExtract %7 %420 0
%425 = OpCompositeExtract %7 %420 1
%426 = OpCompositeConstruct %25 %422 %423 %424 %425
%427 = OpFAdd %25 %421 %426
%428 = OpLoad %7 %53
%429 = OpCompositeConstruct %25 %428 %428 %428 %428
%430 = OpFAdd %25 %427 %429
OpStore %63 %430
OpReturn
OpFunctionEnd

View File

@ -1,12 +1,12 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 151
; Bound: 159
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %40 "main"
OpExecutionMode %40 LocalSize 1 1 1
OpEntryPoint GLCompute %48 "main"
OpExecutionMode %48 LocalSize 1 1 1
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpConstant %4 0
@ -26,190 +26,198 @@ OpExecutionMode %40 LocalSize 1 1 1
%18 = OpTypeVector %8 4
%20 = OpTypePointer Function %4
%22 = OpTypePointer Function %11
%24 = OpTypePointer Function %12
%26 = OpTypePointer Function %13
%28 = OpTypePointer Function %6
%30 = OpTypePointer Function %14
%32 = OpTypePointer Function %15
%34 = OpTypePointer Function %16
%36 = OpTypePointer Function %17
%38 = OpTypePointer Function %18
%41 = OpTypeFunction %2
%40 = OpFunction %2 None %41
%39 = OpLabel
%37 = OpVariable %38 Function
%31 = OpVariable %32 Function
%25 = OpVariable %26 Function
%23 = OpConstantNull %11
%25 = OpTypePointer Function %12
%26 = OpConstantNull %12
%28 = OpTypePointer Function %13
%29 = OpConstantNull %13
%31 = OpTypePointer Function %6
%33 = OpTypePointer Function %14
%34 = OpConstantNull %14
%36 = OpTypePointer Function %15
%37 = OpConstantNull %15
%39 = OpTypePointer Function %16
%40 = OpConstantNull %16
%42 = OpTypePointer Function %17
%43 = OpConstantNull %17
%45 = OpTypePointer Function %18
%46 = OpConstantNull %18
%49 = OpTypeFunction %2
%48 = OpFunction %2 None %49
%47 = OpLabel
%44 = OpVariable %45 Function %46
%35 = OpVariable %36 Function %37
%27 = OpVariable %28 Function %29
%19 = OpVariable %20 Function %3
%33 = OpVariable %34 Function
%27 = OpVariable %28 Function %5
%21 = OpVariable %22 Function
%35 = OpVariable %36 Function
%29 = OpVariable %30 Function
%23 = OpVariable %24 Function
OpBranch %42
%42 = OpLabel
%43 = OpCompositeConstruct %11 %3 %3
OpStore %21 %43
%44 = OpCompositeConstruct %12 %3 %3 %3
OpStore %23 %44
%45 = OpCompositeConstruct %13 %3 %3 %3 %3
OpStore %25 %45
%46 = OpCompositeConstruct %14 %5 %5
OpStore %29 %46
%47 = OpCompositeConstruct %15 %5 %5 %5
OpStore %31 %47
%48 = OpCompositeConstruct %16 %5 %5 %5 %5
OpStore %33 %48
%49 = OpCompositeConstruct %17 %7 %7
OpStore %35 %49
%50 = OpCompositeConstruct %18 %7 %7 %7 %7
OpStore %37 %50
%51 = OpLoad %18 %37
%52 = OpExtInst %6 %1 PackSnorm4x8 %51
OpStore %27 %52
%53 = OpLoad %18 %37
%54 = OpExtInst %6 %1 PackUnorm4x8 %53
OpStore %27 %54
%55 = OpLoad %17 %35
%56 = OpExtInst %6 %1 PackSnorm2x16 %55
OpStore %27 %56
%57 = OpLoad %17 %35
%58 = OpExtInst %6 %1 PackUnorm2x16 %57
OpStore %27 %58
%59 = OpLoad %17 %35
%60 = OpExtInst %6 %1 PackHalf2x16 %59
OpStore %27 %60
%61 = OpLoad %6 %27
%62 = OpExtInst %18 %1 UnpackSnorm4x8 %61
OpStore %37 %62
%63 = OpLoad %6 %27
%64 = OpExtInst %18 %1 UnpackUnorm4x8 %63
OpStore %37 %64
%65 = OpLoad %6 %27
%66 = OpExtInst %17 %1 UnpackSnorm2x16 %65
OpStore %35 %66
%67 = OpLoad %6 %27
%68 = OpExtInst %17 %1 UnpackUnorm2x16 %67
OpStore %35 %68
%69 = OpLoad %6 %27
%70 = OpExtInst %17 %1 UnpackHalf2x16 %69
OpStore %35 %70
%71 = OpLoad %4 %19
%72 = OpLoad %4 %19
%73 = OpBitFieldInsert %4 %71 %72 %9 %10
OpStore %19 %73
%74 = OpLoad %11 %21
%75 = OpLoad %11 %21
%76 = OpBitFieldInsert %11 %74 %75 %9 %10
OpStore %21 %76
%77 = OpLoad %12 %23
%78 = OpLoad %12 %23
%79 = OpBitFieldInsert %12 %77 %78 %9 %10
OpStore %23 %79
%80 = OpLoad %13 %25
%81 = OpLoad %13 %25
%82 = OpBitFieldInsert %13 %80 %81 %9 %10
OpStore %25 %82
%83 = OpLoad %6 %27
%84 = OpLoad %6 %27
%85 = OpBitFieldInsert %6 %83 %84 %9 %10
OpStore %27 %85
%86 = OpLoad %14 %29
%87 = OpLoad %14 %29
%88 = OpBitFieldInsert %14 %86 %87 %9 %10
OpStore %29 %88
%89 = OpLoad %15 %31
%90 = OpLoad %15 %31
%91 = OpBitFieldInsert %15 %89 %90 %9 %10
OpStore %31 %91
%92 = OpLoad %16 %33
%93 = OpLoad %16 %33
%94 = OpBitFieldInsert %16 %92 %93 %9 %10
OpStore %33 %94
%95 = OpLoad %4 %19
%96 = OpBitFieldSExtract %4 %95 %9 %10
OpStore %19 %96
%97 = OpLoad %11 %21
%98 = OpBitFieldSExtract %11 %97 %9 %10
OpStore %21 %98
%99 = OpLoad %12 %23
%100 = OpBitFieldSExtract %12 %99 %9 %10
OpStore %23 %100
%101 = OpLoad %13 %25
%102 = OpBitFieldSExtract %13 %101 %9 %10
OpStore %25 %102
%103 = OpLoad %6 %27
%104 = OpBitFieldUExtract %6 %103 %9 %10
OpStore %27 %104
%105 = OpLoad %14 %29
%106 = OpBitFieldUExtract %14 %105 %9 %10
OpStore %29 %106
%107 = OpLoad %15 %31
%108 = OpBitFieldUExtract %15 %107 %9 %10
OpStore %31 %108
%109 = OpLoad %16 %33
%110 = OpBitFieldUExtract %16 %109 %9 %10
OpStore %33 %110
%111 = OpLoad %4 %19
%112 = OpExtInst %4 %1 FindILsb %111
OpStore %19 %112
%113 = OpLoad %14 %29
%114 = OpExtInst %14 %1 FindILsb %113
OpStore %29 %114
%115 = OpLoad %12 %23
%116 = OpExtInst %12 %1 FindSMsb %115
OpStore %23 %116
%117 = OpLoad %6 %27
%118 = OpExtInst %6 %1 FindUMsb %117
OpStore %27 %118
%38 = OpVariable %39 Function %40
%30 = OpVariable %31 Function %5
%21 = OpVariable %22 Function %23
%41 = OpVariable %42 Function %43
%32 = OpVariable %33 Function %34
%24 = OpVariable %25 Function %26
OpBranch %50
%50 = OpLabel
%51 = OpCompositeConstruct %11 %3 %3
OpStore %21 %51
%52 = OpCompositeConstruct %12 %3 %3 %3
OpStore %24 %52
%53 = OpCompositeConstruct %13 %3 %3 %3 %3
OpStore %27 %53
%54 = OpCompositeConstruct %14 %5 %5
OpStore %32 %54
%55 = OpCompositeConstruct %15 %5 %5 %5
OpStore %35 %55
%56 = OpCompositeConstruct %16 %5 %5 %5 %5
OpStore %38 %56
%57 = OpCompositeConstruct %17 %7 %7
OpStore %41 %57
%58 = OpCompositeConstruct %18 %7 %7 %7 %7
OpStore %44 %58
%59 = OpLoad %18 %44
%60 = OpExtInst %6 %1 PackSnorm4x8 %59
OpStore %30 %60
%61 = OpLoad %18 %44
%62 = OpExtInst %6 %1 PackUnorm4x8 %61
OpStore %30 %62
%63 = OpLoad %17 %41
%64 = OpExtInst %6 %1 PackSnorm2x16 %63
OpStore %30 %64
%65 = OpLoad %17 %41
%66 = OpExtInst %6 %1 PackUnorm2x16 %65
OpStore %30 %66
%67 = OpLoad %17 %41
%68 = OpExtInst %6 %1 PackHalf2x16 %67
OpStore %30 %68
%69 = OpLoad %6 %30
%70 = OpExtInst %18 %1 UnpackSnorm4x8 %69
OpStore %44 %70
%71 = OpLoad %6 %30
%72 = OpExtInst %18 %1 UnpackUnorm4x8 %71
OpStore %44 %72
%73 = OpLoad %6 %30
%74 = OpExtInst %17 %1 UnpackSnorm2x16 %73
OpStore %41 %74
%75 = OpLoad %6 %30
%76 = OpExtInst %17 %1 UnpackUnorm2x16 %75
OpStore %41 %76
%77 = OpLoad %6 %30
%78 = OpExtInst %17 %1 UnpackHalf2x16 %77
OpStore %41 %78
%79 = OpLoad %4 %19
%80 = OpLoad %4 %19
%81 = OpBitFieldInsert %4 %79 %80 %9 %10
OpStore %19 %81
%82 = OpLoad %11 %21
%83 = OpLoad %11 %21
%84 = OpBitFieldInsert %11 %82 %83 %9 %10
OpStore %21 %84
%85 = OpLoad %12 %24
%86 = OpLoad %12 %24
%87 = OpBitFieldInsert %12 %85 %86 %9 %10
OpStore %24 %87
%88 = OpLoad %13 %27
%89 = OpLoad %13 %27
%90 = OpBitFieldInsert %13 %88 %89 %9 %10
OpStore %27 %90
%91 = OpLoad %6 %30
%92 = OpLoad %6 %30
%93 = OpBitFieldInsert %6 %91 %92 %9 %10
OpStore %30 %93
%94 = OpLoad %14 %32
%95 = OpLoad %14 %32
%96 = OpBitFieldInsert %14 %94 %95 %9 %10
OpStore %32 %96
%97 = OpLoad %15 %35
%98 = OpLoad %15 %35
%99 = OpBitFieldInsert %15 %97 %98 %9 %10
OpStore %35 %99
%100 = OpLoad %16 %38
%101 = OpLoad %16 %38
%102 = OpBitFieldInsert %16 %100 %101 %9 %10
OpStore %38 %102
%103 = OpLoad %4 %19
%104 = OpBitFieldSExtract %4 %103 %9 %10
OpStore %19 %104
%105 = OpLoad %11 %21
%106 = OpBitFieldSExtract %11 %105 %9 %10
OpStore %21 %106
%107 = OpLoad %12 %24
%108 = OpBitFieldSExtract %12 %107 %9 %10
OpStore %24 %108
%109 = OpLoad %13 %27
%110 = OpBitFieldSExtract %13 %109 %9 %10
OpStore %27 %110
%111 = OpLoad %6 %30
%112 = OpBitFieldUExtract %6 %111 %9 %10
OpStore %30 %112
%113 = OpLoad %14 %32
%114 = OpBitFieldUExtract %14 %113 %9 %10
OpStore %32 %114
%115 = OpLoad %15 %35
%116 = OpBitFieldUExtract %15 %115 %9 %10
OpStore %35 %116
%117 = OpLoad %16 %38
%118 = OpBitFieldUExtract %16 %117 %9 %10
OpStore %38 %118
%119 = OpLoad %4 %19
%120 = OpBitCount %4 %119
%120 = OpExtInst %4 %1 FindILsb %119
OpStore %19 %120
%121 = OpLoad %11 %21
%122 = OpBitCount %11 %121
OpStore %21 %122
%123 = OpLoad %12 %23
%124 = OpBitCount %12 %123
OpStore %23 %124
%125 = OpLoad %13 %25
%126 = OpBitCount %13 %125
OpStore %25 %126
%127 = OpLoad %6 %27
%128 = OpBitCount %6 %127
OpStore %27 %128
%129 = OpLoad %14 %29
%130 = OpBitCount %14 %129
OpStore %29 %130
%131 = OpLoad %15 %31
%132 = OpBitCount %15 %131
OpStore %31 %132
%133 = OpLoad %16 %33
%134 = OpBitCount %16 %133
OpStore %33 %134
%135 = OpLoad %4 %19
%136 = OpBitReverse %4 %135
OpStore %19 %136
%137 = OpLoad %11 %21
%138 = OpBitReverse %11 %137
OpStore %21 %138
%139 = OpLoad %12 %23
%140 = OpBitReverse %12 %139
OpStore %23 %140
%141 = OpLoad %13 %25
%142 = OpBitReverse %13 %141
OpStore %25 %142
%143 = OpLoad %6 %27
%144 = OpBitReverse %6 %143
OpStore %27 %144
%145 = OpLoad %14 %29
%146 = OpBitReverse %14 %145
OpStore %29 %146
%147 = OpLoad %15 %31
%148 = OpBitReverse %15 %147
OpStore %31 %148
%149 = OpLoad %16 %33
%150 = OpBitReverse %16 %149
OpStore %33 %150
%121 = OpLoad %14 %32
%122 = OpExtInst %14 %1 FindILsb %121
OpStore %32 %122
%123 = OpLoad %12 %24
%124 = OpExtInst %12 %1 FindSMsb %123
OpStore %24 %124
%125 = OpLoad %6 %30
%126 = OpExtInst %6 %1 FindUMsb %125
OpStore %30 %126
%127 = OpLoad %4 %19
%128 = OpBitCount %4 %127
OpStore %19 %128
%129 = OpLoad %11 %21
%130 = OpBitCount %11 %129
OpStore %21 %130
%131 = OpLoad %12 %24
%132 = OpBitCount %12 %131
OpStore %24 %132
%133 = OpLoad %13 %27
%134 = OpBitCount %13 %133
OpStore %27 %134
%135 = OpLoad %6 %30
%136 = OpBitCount %6 %135
OpStore %30 %136
%137 = OpLoad %14 %32
%138 = OpBitCount %14 %137
OpStore %32 %138
%139 = OpLoad %15 %35
%140 = OpBitCount %15 %139
OpStore %35 %140
%141 = OpLoad %16 %38
%142 = OpBitCount %16 %141
OpStore %38 %142
%143 = OpLoad %4 %19
%144 = OpBitReverse %4 %143
OpStore %19 %144
%145 = OpLoad %11 %21
%146 = OpBitReverse %11 %145
OpStore %21 %146
%147 = OpLoad %12 %24
%148 = OpBitReverse %12 %147
OpStore %24 %148
%149 = OpLoad %13 %27
%150 = OpBitReverse %13 %149
OpStore %27 %150
%151 = OpLoad %6 %30
%152 = OpBitReverse %6 %151
OpStore %30 %152
%153 = OpLoad %14 %32
%154 = OpBitReverse %14 %153
OpStore %32 %154
%155 = OpLoad %15 %35
%156 = OpBitReverse %15 %155
OpStore %35 %156
%157 = OpLoad %16 %38
%158 = OpBitReverse %16 %157
OpStore %38 %158
OpReturn
OpFunctionEnd

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 206
; Bound: 213
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %44 "main" %41
OpExecutionMode %44 LocalSize 64 1 1
OpEntryPoint GLCompute %51 "main" %48
OpExecutionMode %51 LocalSize 64 1 1
OpSource GLSL 450
OpName %3 "NUM_PARTICLES"
OpMemberName %16 0 "pos"
@ -27,17 +27,17 @@ OpName %21 "params"
OpName %24 "particlesSrc"
OpName %26 "particlesDst"
OpName %27 "vPos"
OpName %29 "vVel"
OpName %30 "cMass"
OpName %31 "cVel"
OpName %32 "colVel"
OpName %33 "cMassCount"
OpName %35 "cVelCount"
OpName %36 "pos"
OpName %37 "vel"
OpName %38 "i"
OpName %41 "global_invocation_id"
OpName %44 "main"
OpName %30 "vVel"
OpName %32 "cMass"
OpName %34 "cVel"
OpName %36 "colVel"
OpName %38 "cMassCount"
OpName %40 "cVelCount"
OpName %41 "pos"
OpName %43 "vel"
OpName %45 "i"
OpName %48 "global_invocation_id"
OpName %51 "main"
OpMemberDecorate %16 0 Offset 0
OpMemberDecorate %16 1 Offset 8
OpMemberDecorate %17 0 Offset 0
@ -60,7 +60,7 @@ OpDecorate %19 Block
OpDecorate %26 DescriptorSet 0
OpDecorate %26 Binding 2
OpDecorate %19 Block
OpDecorate %41 BuiltIn GlobalInvocationId
OpDecorate %48 BuiltIn GlobalInvocationId
%2 = OpTypeVoid
%4 = OpTypeInt 32 0
%3 = OpConstant %4 1500
@ -87,249 +87,256 @@ OpDecorate %41 BuiltIn GlobalInvocationId
%24 = OpVariable %25 StorageBuffer
%26 = OpVariable %25 StorageBuffer
%28 = OpTypePointer Function %15
%34 = OpTypePointer Function %8
%39 = OpTypePointer Function %4
%42 = OpTypePointer Input %20
%41 = OpVariable %42 Input
%45 = OpTypeFunction %2
%46 = OpTypePointer Uniform %17
%50 = OpTypeBool
%54 = OpTypePointer StorageBuffer %18
%55 = OpTypePointer StorageBuffer %16
%56 = OpTypePointer StorageBuffer %15
%85 = OpTypePointer Uniform %6
%99 = OpConstant %4 2
%113 = OpConstant %4 3
%148 = OpConstant %4 4
%154 = OpConstant %4 5
%160 = OpConstant %4 6
%177 = OpTypePointer Function %6
%44 = OpFunction %2 None %45
%40 = OpLabel
%38 = OpVariable %39 Function %9
%35 = OpVariable %34 Function %7
%31 = OpVariable %28 Function
%27 = OpVariable %28 Function
%36 = OpVariable %28 Function
%32 = OpVariable %28 Function
%29 = OpVariable %28 Function
%37 = OpVariable %28 Function
%33 = OpVariable %34 Function %7
%30 = OpVariable %28 Function
%43 = OpLoad %20 %41
%47 = OpAccessChain %46 %21 %9
OpBranch %48
%48 = OpLabel
%49 = OpCompositeExtract %4 %43 0
%51 = OpUGreaterThanEqual %50 %49 %3
OpSelectionMerge %52 None
OpBranchConditional %51 %53 %52
%53 = OpLabel
%29 = OpConstantNull %15
%31 = OpConstantNull %15
%33 = OpConstantNull %15
%35 = OpConstantNull %15
%37 = OpConstantNull %15
%39 = OpTypePointer Function %8
%42 = OpConstantNull %15
%44 = OpConstantNull %15
%46 = OpTypePointer Function %4
%49 = OpTypePointer Input %20
%48 = OpVariable %49 Input
%52 = OpTypeFunction %2
%53 = OpTypePointer Uniform %17
%57 = OpTypeBool
%61 = OpTypePointer StorageBuffer %18
%62 = OpTypePointer StorageBuffer %16
%63 = OpTypePointer StorageBuffer %15
%92 = OpTypePointer Uniform %6
%106 = OpConstant %4 2
%120 = OpConstant %4 3
%155 = OpConstant %4 4
%161 = OpConstant %4 5
%167 = OpConstant %4 6
%184 = OpTypePointer Function %6
%51 = OpFunction %2 None %52
%47 = OpLabel
%45 = OpVariable %46 Function %9
%40 = OpVariable %39 Function %7
%34 = OpVariable %28 Function %35
%27 = OpVariable %28 Function %29
%41 = OpVariable %28 Function %42
%36 = OpVariable %28 Function %37
%30 = OpVariable %28 Function %31
%43 = OpVariable %28 Function %44
%38 = OpVariable %39 Function %7
%32 = OpVariable %28 Function %33
%50 = OpLoad %20 %48
%54 = OpAccessChain %53 %21 %9
OpBranch %55
%55 = OpLabel
%56 = OpCompositeExtract %4 %50 0
%58 = OpUGreaterThanEqual %57 %56 %3
OpSelectionMerge %59 None
OpBranchConditional %58 %60 %59
%60 = OpLabel
OpReturn
%52 = OpLabel
%57 = OpAccessChain %56 %24 %9 %49 %9
%58 = OpLoad %15 %57
OpStore %27 %58
%59 = OpAccessChain %56 %24 %9 %49 %11
%60 = OpLoad %15 %59
OpStore %29 %60
%61 = OpCompositeConstruct %15 %5 %5
OpStore %30 %61
%62 = OpCompositeConstruct %15 %5 %5
OpStore %31 %62
%63 = OpCompositeConstruct %15 %5 %5
OpStore %32 %63
OpBranch %64
%64 = OpLabel
OpLoopMerge %65 %67 None
OpBranch %66
%66 = OpLabel
%68 = OpLoad %4 %38
%69 = OpUGreaterThanEqual %50 %68 %3
OpSelectionMerge %70 None
OpBranchConditional %69 %71 %70
%59 = OpLabel
%64 = OpAccessChain %63 %24 %9 %56 %9
%65 = OpLoad %15 %64
OpStore %27 %65
%66 = OpAccessChain %63 %24 %9 %56 %11
%67 = OpLoad %15 %66
OpStore %30 %67
%68 = OpCompositeConstruct %15 %5 %5
OpStore %32 %68
%69 = OpCompositeConstruct %15 %5 %5
OpStore %34 %69
%70 = OpCompositeConstruct %15 %5 %5
OpStore %36 %70
OpBranch %71
%71 = OpLabel
OpBranch %65
%70 = OpLabel
%72 = OpLoad %4 %38
%73 = OpIEqual %50 %72 %49
OpSelectionMerge %74 None
OpBranchConditional %73 %75 %74
%75 = OpLabel
OpBranch %67
OpLoopMerge %72 %74 None
OpBranch %73
%73 = OpLabel
%75 = OpLoad %4 %45
%76 = OpUGreaterThanEqual %57 %75 %3
OpSelectionMerge %77 None
OpBranchConditional %76 %78 %77
%78 = OpLabel
OpBranch %72
%77 = OpLabel
%79 = OpLoad %4 %45
%80 = OpIEqual %57 %79 %56
OpSelectionMerge %81 None
OpBranchConditional %80 %82 %81
%82 = OpLabel
OpBranch %74
%81 = OpLabel
%83 = OpLoad %4 %45
%84 = OpAccessChain %63 %24 %9 %83 %9
%85 = OpLoad %15 %84
OpStore %41 %85
%86 = OpLoad %4 %45
%87 = OpAccessChain %63 %24 %9 %86 %11
%88 = OpLoad %15 %87
OpStore %43 %88
%89 = OpLoad %15 %41
%90 = OpLoad %15 %27
%91 = OpExtInst %6 %1 Distance %89 %90
%93 = OpAccessChain %92 %54 %11
%94 = OpLoad %6 %93
%95 = OpFOrdLessThan %57 %91 %94
OpSelectionMerge %96 None
OpBranchConditional %95 %97 %96
%97 = OpLabel
%98 = OpLoad %15 %32
%99 = OpLoad %15 %41
%100 = OpFAdd %15 %98 %99
OpStore %32 %100
%101 = OpLoad %8 %38
%102 = OpIAdd %8 %101 %10
OpStore %38 %102
OpBranch %96
%96 = OpLabel
%103 = OpLoad %15 %41
%104 = OpLoad %15 %27
%105 = OpExtInst %6 %1 Distance %103 %104
%107 = OpAccessChain %92 %54 %106
%108 = OpLoad %6 %107
%109 = OpFOrdLessThan %57 %105 %108
OpSelectionMerge %110 None
OpBranchConditional %109 %111 %110
%111 = OpLabel
%112 = OpLoad %15 %36
%113 = OpLoad %15 %41
%114 = OpLoad %15 %27
%115 = OpFSub %15 %113 %114
%116 = OpFSub %15 %112 %115
OpStore %36 %116
OpBranch %110
%110 = OpLabel
%117 = OpLoad %15 %41
%118 = OpLoad %15 %27
%119 = OpExtInst %6 %1 Distance %117 %118
%121 = OpAccessChain %92 %54 %120
%122 = OpLoad %6 %121
%123 = OpFOrdLessThan %57 %119 %122
OpSelectionMerge %124 None
OpBranchConditional %123 %125 %124
%125 = OpLabel
%126 = OpLoad %15 %34
%127 = OpLoad %15 %43
%128 = OpFAdd %15 %126 %127
OpStore %34 %128
%129 = OpLoad %8 %40
%130 = OpIAdd %8 %129 %10
OpStore %40 %130
OpBranch %124
%124 = OpLabel
OpBranch %74
%74 = OpLabel
%76 = OpLoad %4 %38
%77 = OpAccessChain %56 %24 %9 %76 %9
%78 = OpLoad %15 %77
OpStore %36 %78
%79 = OpLoad %4 %38
%80 = OpAccessChain %56 %24 %9 %79 %11
%81 = OpLoad %15 %80
OpStore %37 %81
%82 = OpLoad %15 %36
%83 = OpLoad %15 %27
%84 = OpExtInst %6 %1 Distance %82 %83
%86 = OpAccessChain %85 %47 %11
%87 = OpLoad %6 %86
%88 = OpFOrdLessThan %50 %84 %87
OpSelectionMerge %89 None
OpBranchConditional %88 %90 %89
%90 = OpLabel
%91 = OpLoad %15 %30
%92 = OpLoad %15 %36
%93 = OpFAdd %15 %91 %92
OpStore %30 %93
%94 = OpLoad %8 %33
%95 = OpIAdd %8 %94 %10
OpStore %33 %95
OpBranch %89
%89 = OpLabel
%96 = OpLoad %15 %36
%97 = OpLoad %15 %27
%98 = OpExtInst %6 %1 Distance %96 %97
%100 = OpAccessChain %85 %47 %99
%101 = OpLoad %6 %100
%102 = OpFOrdLessThan %50 %98 %101
OpSelectionMerge %103 None
OpBranchConditional %102 %104 %103
%104 = OpLabel
%105 = OpLoad %15 %32
%106 = OpLoad %15 %36
%107 = OpLoad %15 %27
%108 = OpFSub %15 %106 %107
%109 = OpFSub %15 %105 %108
OpStore %32 %109
OpBranch %103
%103 = OpLabel
%110 = OpLoad %15 %36
%111 = OpLoad %15 %27
%112 = OpExtInst %6 %1 Distance %110 %111
%114 = OpAccessChain %85 %47 %113
%115 = OpLoad %6 %114
%116 = OpFOrdLessThan %50 %112 %115
OpSelectionMerge %117 None
OpBranchConditional %116 %118 %117
%118 = OpLabel
%119 = OpLoad %15 %31
%120 = OpLoad %15 %37
%121 = OpFAdd %15 %119 %120
OpStore %31 %121
%122 = OpLoad %8 %35
%123 = OpIAdd %8 %122 %10
OpStore %35 %123
OpBranch %117
%117 = OpLabel
OpBranch %67
%67 = OpLabel
%124 = OpLoad %4 %38
%125 = OpIAdd %4 %124 %11
OpStore %38 %125
OpBranch %64
%65 = OpLabel
%126 = OpLoad %8 %33
%127 = OpSGreaterThan %50 %126 %7
OpSelectionMerge %128 None
OpBranchConditional %127 %129 %128
%129 = OpLabel
%130 = OpLoad %15 %30
%131 = OpLoad %8 %33
%132 = OpConvertSToF %6 %131
%133 = OpCompositeConstruct %15 %132 %132
%134 = OpFDiv %15 %130 %133
%135 = OpLoad %15 %27
%136 = OpFSub %15 %134 %135
OpStore %30 %136
OpBranch %128
%128 = OpLabel
%137 = OpLoad %8 %35
%138 = OpSGreaterThan %50 %137 %7
OpSelectionMerge %139 None
OpBranchConditional %138 %140 %139
%140 = OpLabel
%141 = OpLoad %15 %31
%142 = OpLoad %8 %35
%143 = OpConvertSToF %6 %142
%144 = OpCompositeConstruct %15 %143 %143
%145 = OpFDiv %15 %141 %144
OpStore %31 %145
OpBranch %139
%139 = OpLabel
%146 = OpLoad %15 %29
%147 = OpLoad %15 %30
%149 = OpAccessChain %85 %47 %148
%150 = OpLoad %6 %149
%151 = OpVectorTimesScalar %15 %147 %150
%152 = OpFAdd %15 %146 %151
%153 = OpLoad %15 %32
%155 = OpAccessChain %85 %47 %154
%156 = OpLoad %6 %155
%157 = OpVectorTimesScalar %15 %153 %156
%158 = OpFAdd %15 %152 %157
%159 = OpLoad %15 %31
%161 = OpAccessChain %85 %47 %160
%162 = OpLoad %6 %161
%163 = OpVectorTimesScalar %15 %159 %162
%164 = OpFAdd %15 %158 %163
OpStore %29 %164
%165 = OpLoad %15 %29
%166 = OpExtInst %15 %1 Normalize %165
%167 = OpLoad %15 %29
%168 = OpExtInst %6 %1 Length %167
%169 = OpExtInst %6 %1 FClamp %168 %5 %12
%131 = OpLoad %4 %45
%132 = OpIAdd %4 %131 %11
OpStore %45 %132
OpBranch %71
%72 = OpLabel
%133 = OpLoad %8 %38
%134 = OpSGreaterThan %57 %133 %7
OpSelectionMerge %135 None
OpBranchConditional %134 %136 %135
%136 = OpLabel
%137 = OpLoad %15 %32
%138 = OpLoad %8 %38
%139 = OpConvertSToF %6 %138
%140 = OpCompositeConstruct %15 %139 %139
%141 = OpFDiv %15 %137 %140
%142 = OpLoad %15 %27
%143 = OpFSub %15 %141 %142
OpStore %32 %143
OpBranch %135
%135 = OpLabel
%144 = OpLoad %8 %40
%145 = OpSGreaterThan %57 %144 %7
OpSelectionMerge %146 None
OpBranchConditional %145 %147 %146
%147 = OpLabel
%148 = OpLoad %15 %34
%149 = OpLoad %8 %40
%150 = OpConvertSToF %6 %149
%151 = OpCompositeConstruct %15 %150 %150
%152 = OpFDiv %15 %148 %151
OpStore %34 %152
OpBranch %146
%146 = OpLabel
%153 = OpLoad %15 %30
%154 = OpLoad %15 %32
%156 = OpAccessChain %92 %54 %155
%157 = OpLoad %6 %156
%158 = OpVectorTimesScalar %15 %154 %157
%159 = OpFAdd %15 %153 %158
%160 = OpLoad %15 %36
%162 = OpAccessChain %92 %54 %161
%163 = OpLoad %6 %162
%164 = OpVectorTimesScalar %15 %160 %163
%165 = OpFAdd %15 %159 %164
%166 = OpLoad %15 %34
%168 = OpAccessChain %92 %54 %167
%169 = OpLoad %6 %168
%170 = OpVectorTimesScalar %15 %166 %169
OpStore %29 %170
%171 = OpLoad %15 %27
%172 = OpLoad %15 %29
%173 = OpAccessChain %85 %47 %9
%174 = OpLoad %6 %173
%175 = OpVectorTimesScalar %15 %172 %174
%176 = OpFAdd %15 %171 %175
OpStore %27 %176
%178 = OpAccessChain %177 %27 %9
%179 = OpLoad %6 %178
%180 = OpFOrdLessThan %50 %179 %13
OpSelectionMerge %181 None
OpBranchConditional %180 %182 %181
%182 = OpLabel
%183 = OpAccessChain %177 %27 %9
OpStore %183 %14
OpBranch %181
%181 = OpLabel
%184 = OpAccessChain %177 %27 %9
%185 = OpLoad %6 %184
%186 = OpFOrdGreaterThan %50 %185 %14
OpSelectionMerge %187 None
OpBranchConditional %186 %188 %187
%171 = OpFAdd %15 %165 %170
OpStore %30 %171
%172 = OpLoad %15 %30
%173 = OpExtInst %15 %1 Normalize %172
%174 = OpLoad %15 %30
%175 = OpExtInst %6 %1 Length %174
%176 = OpExtInst %6 %1 FClamp %175 %5 %12
%177 = OpVectorTimesScalar %15 %173 %176
OpStore %30 %177
%178 = OpLoad %15 %27
%179 = OpLoad %15 %30
%180 = OpAccessChain %92 %54 %9
%181 = OpLoad %6 %180
%182 = OpVectorTimesScalar %15 %179 %181
%183 = OpFAdd %15 %178 %182
OpStore %27 %183
%185 = OpAccessChain %184 %27 %9
%186 = OpLoad %6 %185
%187 = OpFOrdLessThan %57 %186 %13
OpSelectionMerge %188 None
OpBranchConditional %187 %189 %188
%189 = OpLabel
%190 = OpAccessChain %184 %27 %9
OpStore %190 %14
OpBranch %188
%188 = OpLabel
%189 = OpAccessChain %177 %27 %9
OpStore %189 %13
OpBranch %187
%187 = OpLabel
%190 = OpAccessChain %177 %27 %11
%191 = OpLoad %6 %190
%192 = OpFOrdLessThan %50 %191 %13
OpSelectionMerge %193 None
OpBranchConditional %192 %194 %193
%191 = OpAccessChain %184 %27 %9
%192 = OpLoad %6 %191
%193 = OpFOrdGreaterThan %57 %192 %14
OpSelectionMerge %194 None
OpBranchConditional %193 %195 %194
%195 = OpLabel
%196 = OpAccessChain %184 %27 %9
OpStore %196 %13
OpBranch %194
%194 = OpLabel
%195 = OpAccessChain %177 %27 %11
OpStore %195 %14
OpBranch %193
%193 = OpLabel
%196 = OpAccessChain %177 %27 %11
%197 = OpLoad %6 %196
%198 = OpFOrdGreaterThan %50 %197 %14
OpSelectionMerge %199 None
OpBranchConditional %198 %200 %199
%197 = OpAccessChain %184 %27 %11
%198 = OpLoad %6 %197
%199 = OpFOrdLessThan %57 %198 %13
OpSelectionMerge %200 None
OpBranchConditional %199 %201 %200
%201 = OpLabel
%202 = OpAccessChain %184 %27 %11
OpStore %202 %14
OpBranch %200
%200 = OpLabel
%201 = OpAccessChain %177 %27 %11
OpStore %201 %13
OpBranch %199
%199 = OpLabel
%202 = OpLoad %15 %27
%203 = OpAccessChain %56 %26 %9 %49 %9
OpStore %203 %202
%204 = OpLoad %15 %29
%205 = OpAccessChain %56 %26 %9 %49 %11
OpStore %205 %204
%203 = OpAccessChain %184 %27 %11
%204 = OpLoad %6 %203
%205 = OpFOrdGreaterThan %57 %204 %14
OpSelectionMerge %206 None
OpBranchConditional %205 %207 %206
%207 = OpLabel
%208 = OpAccessChain %184 %27 %11
OpStore %208 %13
OpBranch %206
%206 = OpLabel
%209 = OpLoad %15 %27
%210 = OpAccessChain %63 %26 %9 %56 %9
OpStore %210 %209
%211 = OpLoad %15 %30
%212 = OpAccessChain %63 %26 %9 %56 %11
OpStore %212 %211
OpReturn
OpFunctionEnd

View File

@ -1,29 +1,29 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 59
; Bound: 60
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %48 "main" %45
OpExecutionMode %48 LocalSize 1 1 1
OpEntryPoint GLCompute %49 "main" %46
OpExecutionMode %49 LocalSize 1 1 1
OpSource GLSL 450
OpMemberName %9 0 "data"
OpName %9 "PrimeIndices"
OpName %11 "v_indices"
OpName %13 "n"
OpName %15 "i"
OpName %17 "n_base"
OpName %18 "collatz_iterations"
OpName %45 "global_id"
OpName %48 "main"
OpName %16 "i"
OpName %18 "n_base"
OpName %19 "collatz_iterations"
OpName %46 "global_id"
OpName %49 "main"
OpDecorate %8 ArrayStride 4
OpMemberDecorate %9 0 Offset 0
OpDecorate %11 DescriptorSet 0
OpDecorate %11 Binding 0
OpDecorate %9 Block
OpDecorate %45 BuiltIn GlobalInvocationId
OpDecorate %46 BuiltIn GlobalInvocationId
%2 = OpTypeVoid
%4 = OpTypeInt 32 0
%3 = OpConstant %4 0
@ -36,71 +36,72 @@ OpDecorate %45 BuiltIn GlobalInvocationId
%12 = OpTypePointer StorageBuffer %9
%11 = OpVariable %12 StorageBuffer
%14 = OpTypePointer Function %4
%19 = OpTypeFunction %4 %4
%26 = OpTypeBool
%46 = OpTypePointer Input %10
%45 = OpVariable %46 Input
%49 = OpTypeFunction %2
%51 = OpTypePointer StorageBuffer %8
%53 = OpTypePointer StorageBuffer %4
%18 = OpFunction %4 None %19
%17 = OpFunctionParameter %4
%16 = OpLabel
%13 = OpVariable %14 Function
%15 = OpVariable %14 Function %3
OpBranch %20
%20 = OpLabel
OpStore %13 %17
%15 = OpConstantNull %4
%20 = OpTypeFunction %4 %4
%27 = OpTypeBool
%47 = OpTypePointer Input %10
%46 = OpVariable %47 Input
%50 = OpTypeFunction %2
%52 = OpTypePointer StorageBuffer %8
%54 = OpTypePointer StorageBuffer %4
%19 = OpFunction %4 None %20
%18 = OpFunctionParameter %4
%17 = OpLabel
%13 = OpVariable %14 Function %15
%16 = OpVariable %14 Function %3
OpBranch %21
%21 = OpLabel
OpLoopMerge %22 %24 None
OpBranch %23
%23 = OpLabel
%25 = OpLoad %4 %13
%27 = OpUGreaterThan %26 %25 %5
OpSelectionMerge %28 None
OpBranchConditional %27 %28 %29
%29 = OpLabel
OpStore %13 %18
OpBranch %22
%28 = OpLabel
%30 = OpLoad %4 %13
%31 = OpUMod %4 %30 %6
%32 = OpIEqual %26 %31 %3
OpSelectionMerge %33 None
OpBranchConditional %32 %34 %35
%34 = OpLabel
%36 = OpLoad %4 %13
%37 = OpUDiv %4 %36 %6
OpStore %13 %37
OpBranch %33
%35 = OpLabel
%38 = OpLoad %4 %13
%39 = OpIMul %4 %7 %38
%40 = OpIAdd %4 %39 %5
OpStore %13 %40
OpBranch %33
%33 = OpLabel
%41 = OpLoad %4 %15
%42 = OpIAdd %4 %41 %5
OpStore %15 %42
%22 = OpLabel
OpLoopMerge %23 %25 None
OpBranch %24
%24 = OpLabel
OpBranch %21
%22 = OpLabel
%43 = OpLoad %4 %15
OpReturnValue %43
%26 = OpLoad %4 %13
%28 = OpUGreaterThan %27 %26 %5
OpSelectionMerge %29 None
OpBranchConditional %28 %29 %30
%30 = OpLabel
OpBranch %23
%29 = OpLabel
%31 = OpLoad %4 %13
%32 = OpUMod %4 %31 %6
%33 = OpIEqual %27 %32 %3
OpSelectionMerge %34 None
OpBranchConditional %33 %35 %36
%35 = OpLabel
%37 = OpLoad %4 %13
%38 = OpUDiv %4 %37 %6
OpStore %13 %38
OpBranch %34
%36 = OpLabel
%39 = OpLoad %4 %13
%40 = OpIMul %4 %7 %39
%41 = OpIAdd %4 %40 %5
OpStore %13 %41
OpBranch %34
%34 = OpLabel
%42 = OpLoad %4 %16
%43 = OpIAdd %4 %42 %5
OpStore %16 %43
OpBranch %25
%25 = OpLabel
OpBranch %22
%23 = OpLabel
%44 = OpLoad %4 %16
OpReturnValue %44
OpFunctionEnd
%48 = OpFunction %2 None %49
%44 = OpLabel
%47 = OpLoad %10 %45
OpBranch %50
%50 = OpLabel
%52 = OpCompositeExtract %4 %47 0
%54 = OpCompositeExtract %4 %47 0
%55 = OpAccessChain %53 %11 %3 %54
%56 = OpLoad %4 %55
%57 = OpFunctionCall %4 %18 %56
%58 = OpAccessChain %53 %11 %3 %52
OpStore %58 %57
%49 = OpFunction %2 None %50
%45 = OpLabel
%48 = OpLoad %10 %46
OpBranch %51
%51 = OpLabel
%53 = OpCompositeExtract %4 %48 0
%55 = OpCompositeExtract %4 %48 0
%56 = OpAccessChain %54 %11 %3 %55
%57 = OpLoad %4 %56
%58 = OpFunctionCall %4 %19 %57
%59 = OpAccessChain %54 %11 %3 %53
OpStore %59 %58
OpReturn
OpFunctionEnd

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 67
; Bound: 68
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %42 "main" %39
OpExecutionMode %42 LocalSize 1 1 1
OpDecorate %39 BuiltIn GlobalInvocationId
OpEntryPoint GLCompute %43 "main" %40
OpExecutionMode %43 LocalSize 1 1 1
OpDecorate %40 BuiltIn GlobalInvocationId
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpConstant %4 1
@ -20,12 +20,13 @@ OpDecorate %39 BuiltIn GlobalInvocationId
%14 = OpTypeFunction %2 %4
%20 = OpTypeFunction %2
%37 = OpTypePointer Function %4
%40 = OpTypePointer Input %10
%39 = OpVariable %40 Input
%44 = OpConstant %9 2
%45 = OpConstant %9 1
%46 = OpConstant %9 72
%47 = OpConstant %9 264
%38 = OpConstantNull %4
%41 = OpTypePointer Input %10
%40 = OpVariable %41 Input
%45 = OpConstant %9 2
%46 = OpConstant %9 1
%47 = OpConstant %9 72
%48 = OpConstant %9 264
%13 = OpFunction %2 None %14
%12 = OpFunctionParameter %4
%11 = OpLabel
@ -74,62 +75,62 @@ OpBranch %29
%30 = OpLabel
OpReturn
OpFunctionEnd
%42 = OpFunction %2 None %20
%38 = OpLabel
%36 = OpVariable %37 Function
%41 = OpLoad %10 %39
OpBranch %43
%43 = OpLabel
OpControlBarrier %44 %45 %46
OpControlBarrier %44 %44 %47
OpSelectionMerge %48 None
OpSwitch %3 %49
%43 = OpFunction %2 None %20
%39 = OpLabel
%36 = OpVariable %37 Function %38
%42 = OpLoad %10 %40
OpBranch %44
%44 = OpLabel
OpControlBarrier %45 %46 %47
OpControlBarrier %45 %45 %48
OpSelectionMerge %49 None
OpSwitch %3 %50
%50 = OpLabel
OpStore %36 %3
OpBranch %49
%49 = OpLabel
OpStore %36 %3
OpBranch %48
%48 = OpLabel
%50 = OpLoad %4 %36
OpSelectionMerge %51 None
OpSwitch %50 %52 1 %53 2 %54 3 %55 4 %56
%53 = OpLabel
OpStore %36 %5
OpBranch %51
%51 = OpLoad %4 %36
OpSelectionMerge %52 None
OpSwitch %51 %53 1 %54 2 %55 3 %56 4 %57
%54 = OpLabel
OpStore %36 %3
OpBranch %51
OpStore %36 %5
OpBranch %52
%55 = OpLabel
OpStore %36 %6
OpBranch %56
OpStore %36 %3
OpBranch %52
%56 = OpLabel
OpBranch %51
%52 = OpLabel
OpStore %36 %7
OpBranch %51
%51 = OpLabel
OpSelectionMerge %57 None
OpSwitch %8 %58 0 %59
%59 = OpLabel
OpBranch %57
%58 = OpLabel
OpStore %36 %6
OpBranch %57
%57 = OpLabel
%60 = OpLoad %4 %36
OpSelectionMerge %61 None
OpSwitch %60 %62 1 %63 2 %64 3 %65 4 %66
%63 = OpLabel
OpStore %36 %5
OpBranch %61
OpBranch %52
%53 = OpLabel
OpStore %36 %7
OpBranch %52
%52 = OpLabel
OpSelectionMerge %58 None
OpSwitch %8 %59 0 %60
%60 = OpLabel
OpBranch %58
%59 = OpLabel
OpBranch %58
%58 = OpLabel
%61 = OpLoad %4 %36
OpSelectionMerge %62 None
OpSwitch %61 %63 1 %64 2 %65 3 %66 4 %67
%64 = OpLabel
OpStore %36 %5
OpBranch %62
%65 = OpLabel
OpStore %36 %3
OpReturn
%65 = OpLabel
OpStore %36 %6
OpBranch %66
%66 = OpLabel
OpStore %36 %6
OpBranch %67
%67 = OpLabel
OpReturn
%62 = OpLabel
%63 = OpLabel
OpStore %36 %7
OpReturn
%61 = OpLabel
%62 = OpLabel
OpReturn
OpFunctionEnd

View File

@ -1,14 +1,14 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 110
; Bound: 111
OpCapability Shader
OpCapability SampleRateShading
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %45 "vert_main" %29 %31 %33 %35 %37 %39 %40 %41 %42
OpEntryPoint Fragment %108 "frag_main" %87 %90 %93 %96 %99 %102 %104 %106
OpExecutionMode %108 OriginUpperLeft
OpEntryPoint Vertex %46 "vert_main" %30 %32 %34 %36 %38 %40 %41 %42 %43
OpEntryPoint Fragment %109 "frag_main" %88 %91 %94 %97 %100 %103 %105 %107
OpExecutionMode %109 OriginUpperLeft
OpSource GLSL 450
OpMemberName %25 0 "position"
OpMemberName %25 1 "_flat"
@ -20,24 +20,24 @@ OpMemberName %25 6 "perspective_centroid"
OpMemberName %25 7 "perspective_sample"
OpName %25 "FragmentInput"
OpName %26 "out"
OpName %29 "position"
OpName %31 "_flat"
OpName %33 "_linear"
OpName %35 "linear_centroid"
OpName %37 "linear_sample"
OpName %39 "perspective"
OpName %40 "perspective_centroid"
OpName %41 "perspective_sample"
OpName %45 "vert_main"
OpName %87 "position"
OpName %90 "_flat"
OpName %93 "_linear"
OpName %96 "linear_centroid"
OpName %99 "linear_sample"
OpName %102 "perspective"
OpName %104 "perspective_centroid"
OpName %106 "perspective_sample"
OpName %108 "frag_main"
OpName %30 "position"
OpName %32 "_flat"
OpName %34 "_linear"
OpName %36 "linear_centroid"
OpName %38 "linear_sample"
OpName %40 "perspective"
OpName %41 "perspective_centroid"
OpName %42 "perspective_sample"
OpName %46 "vert_main"
OpName %88 "position"
OpName %91 "_flat"
OpName %94 "_linear"
OpName %97 "linear_centroid"
OpName %100 "linear_sample"
OpName %103 "perspective"
OpName %105 "perspective_centroid"
OpName %107 "perspective_sample"
OpName %109 "frag_main"
OpMemberDecorate %25 0 Offset 0
OpMemberDecorate %25 1 Offset 16
OpMemberDecorate %25 2 Offset 20
@ -46,39 +46,39 @@ OpMemberDecorate %25 4 Offset 32
OpMemberDecorate %25 5 Offset 48
OpMemberDecorate %25 6 Offset 64
OpMemberDecorate %25 7 Offset 68
OpDecorate %29 BuiltIn Position
OpDecorate %31 Location 0
OpDecorate %31 Flat
OpDecorate %33 Location 1
OpDecorate %33 NoPerspective
OpDecorate %35 Location 2
OpDecorate %35 NoPerspective
OpDecorate %35 Centroid
OpDecorate %37 Location 3
OpDecorate %37 NoPerspective
OpDecorate %37 Sample
OpDecorate %39 Location 4
OpDecorate %40 Location 5
OpDecorate %40 Centroid
OpDecorate %41 Location 6
OpDecorate %41 Sample
OpDecorate %42 BuiltIn PointSize
OpDecorate %87 BuiltIn FragCoord
OpDecorate %90 Location 0
OpDecorate %90 Flat
OpDecorate %93 Location 1
OpDecorate %93 NoPerspective
OpDecorate %96 Location 2
OpDecorate %96 NoPerspective
OpDecorate %96 Centroid
OpDecorate %99 Location 3
OpDecorate %99 NoPerspective
OpDecorate %99 Sample
OpDecorate %102 Location 4
OpDecorate %104 Location 5
OpDecorate %104 Centroid
OpDecorate %106 Location 6
OpDecorate %106 Sample
OpDecorate %30 BuiltIn Position
OpDecorate %32 Location 0
OpDecorate %32 Flat
OpDecorate %34 Location 1
OpDecorate %34 NoPerspective
OpDecorate %36 Location 2
OpDecorate %36 NoPerspective
OpDecorate %36 Centroid
OpDecorate %38 Location 3
OpDecorate %38 NoPerspective
OpDecorate %38 Sample
OpDecorate %40 Location 4
OpDecorate %41 Location 5
OpDecorate %41 Centroid
OpDecorate %42 Location 6
OpDecorate %42 Sample
OpDecorate %43 BuiltIn PointSize
OpDecorate %88 BuiltIn FragCoord
OpDecorate %91 Location 0
OpDecorate %91 Flat
OpDecorate %94 Location 1
OpDecorate %94 NoPerspective
OpDecorate %97 Location 2
OpDecorate %97 NoPerspective
OpDecorate %97 Centroid
OpDecorate %100 Location 3
OpDecorate %100 NoPerspective
OpDecorate %100 Sample
OpDecorate %103 Location 4
OpDecorate %105 Location 5
OpDecorate %105 Centroid
OpDecorate %107 Location 6
OpDecorate %107 Sample
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpConstant %4 2.0
@ -104,110 +104,111 @@ OpDecorate %106 Sample
%24 = OpTypeVector %4 3
%25 = OpTypeStruct %22 %9 %4 %23 %24 %22 %4 %4
%27 = OpTypePointer Function %25
%30 = OpTypePointer Output %22
%29 = OpVariable %30 Output
%32 = OpTypePointer Output %9
%31 = OpVariable %32 Output
%34 = OpTypePointer Output %4
%33 = OpVariable %34 Output
%36 = OpTypePointer Output %23
%35 = OpVariable %36 Output
%38 = OpTypePointer Output %24
%37 = OpVariable %38 Output
%39 = OpVariable %30 Output
%40 = OpVariable %34 Output
%41 = OpVariable %34 Output
%43 = OpTypePointer Output %4
%42 = OpVariable %43 Output
%44 = OpConstant %4 1.0
%46 = OpTypeFunction %2
%48 = OpTypePointer Function %22
%50 = OpConstant %9 0
%52 = OpTypePointer Function %9
%53 = OpConstant %9 1
%55 = OpTypePointer Function %4
%56 = OpConstant %9 2
%58 = OpTypePointer Function %23
%60 = OpConstant %9 3
%62 = OpTypePointer Function %24
%64 = OpConstant %9 4
%67 = OpConstant %9 5
%69 = OpConstant %9 6
%71 = OpConstant %9 7
%88 = OpTypePointer Input %22
%87 = OpVariable %88 Input
%91 = OpTypePointer Input %9
%90 = OpVariable %91 Input
%94 = OpTypePointer Input %4
%93 = OpVariable %94 Input
%97 = OpTypePointer Input %23
%96 = OpVariable %97 Input
%100 = OpTypePointer Input %24
%99 = OpVariable %100 Input
%102 = OpVariable %88 Input
%104 = OpVariable %94 Input
%106 = OpVariable %94 Input
%45 = OpFunction %2 None %46
%28 = OpLabel
%26 = OpVariable %27 Function
OpStore %42 %44
OpBranch %47
%47 = OpLabel
%49 = OpCompositeConstruct %22 %3 %5 %6 %7
%51 = OpAccessChain %48 %26 %50
OpStore %51 %49
%54 = OpAccessChain %52 %26 %53
OpStore %54 %8
%57 = OpAccessChain %55 %26 %56
OpStore %57 %10
%59 = OpCompositeConstruct %23 %11 %12
%61 = OpAccessChain %58 %26 %60
OpStore %61 %59
%63 = OpCompositeConstruct %24 %13 %14 %15
%65 = OpAccessChain %62 %26 %64
OpStore %65 %63
%66 = OpCompositeConstruct %22 %16 %17 %18 %19
%68 = OpAccessChain %48 %26 %67
OpStore %68 %66
%70 = OpAccessChain %55 %26 %69
OpStore %70 %20
%72 = OpAccessChain %55 %26 %71
OpStore %72 %21
%73 = OpLoad %25 %26
%74 = OpCompositeExtract %22 %73 0
OpStore %29 %74
%75 = OpAccessChain %43 %29 %53
%76 = OpLoad %4 %75
%77 = OpFNegate %4 %76
OpStore %75 %77
%78 = OpCompositeExtract %9 %73 1
OpStore %31 %78
%79 = OpCompositeExtract %4 %73 2
OpStore %33 %79
%80 = OpCompositeExtract %23 %73 3
OpStore %35 %80
%81 = OpCompositeExtract %24 %73 4
OpStore %37 %81
%82 = OpCompositeExtract %22 %73 5
OpStore %39 %82
%83 = OpCompositeExtract %4 %73 6
%28 = OpConstantNull %25
%31 = OpTypePointer Output %22
%30 = OpVariable %31 Output
%33 = OpTypePointer Output %9
%32 = OpVariable %33 Output
%35 = OpTypePointer Output %4
%34 = OpVariable %35 Output
%37 = OpTypePointer Output %23
%36 = OpVariable %37 Output
%39 = OpTypePointer Output %24
%38 = OpVariable %39 Output
%40 = OpVariable %31 Output
%41 = OpVariable %35 Output
%42 = OpVariable %35 Output
%44 = OpTypePointer Output %4
%43 = OpVariable %44 Output
%45 = OpConstant %4 1.0
%47 = OpTypeFunction %2
%49 = OpTypePointer Function %22
%51 = OpConstant %9 0
%53 = OpTypePointer Function %9
%54 = OpConstant %9 1
%56 = OpTypePointer Function %4
%57 = OpConstant %9 2
%59 = OpTypePointer Function %23
%61 = OpConstant %9 3
%63 = OpTypePointer Function %24
%65 = OpConstant %9 4
%68 = OpConstant %9 5
%70 = OpConstant %9 6
%72 = OpConstant %9 7
%89 = OpTypePointer Input %22
%88 = OpVariable %89 Input
%92 = OpTypePointer Input %9
%91 = OpVariable %92 Input
%95 = OpTypePointer Input %4
%94 = OpVariable %95 Input
%98 = OpTypePointer Input %23
%97 = OpVariable %98 Input
%101 = OpTypePointer Input %24
%100 = OpVariable %101 Input
%103 = OpVariable %89 Input
%105 = OpVariable %95 Input
%107 = OpVariable %95 Input
%46 = OpFunction %2 None %47
%29 = OpLabel
%26 = OpVariable %27 Function %28
OpStore %43 %45
OpBranch %48
%48 = OpLabel
%50 = OpCompositeConstruct %22 %3 %5 %6 %7
%52 = OpAccessChain %49 %26 %51
OpStore %52 %50
%55 = OpAccessChain %53 %26 %54
OpStore %55 %8
%58 = OpAccessChain %56 %26 %57
OpStore %58 %10
%60 = OpCompositeConstruct %23 %11 %12
%62 = OpAccessChain %59 %26 %61
OpStore %62 %60
%64 = OpCompositeConstruct %24 %13 %14 %15
%66 = OpAccessChain %63 %26 %65
OpStore %66 %64
%67 = OpCompositeConstruct %22 %16 %17 %18 %19
%69 = OpAccessChain %49 %26 %68
OpStore %69 %67
%71 = OpAccessChain %56 %26 %70
OpStore %71 %20
%73 = OpAccessChain %56 %26 %72
OpStore %73 %21
%74 = OpLoad %25 %26
%75 = OpCompositeExtract %22 %74 0
OpStore %30 %75
%76 = OpAccessChain %44 %30 %54
%77 = OpLoad %4 %76
%78 = OpFNegate %4 %77
OpStore %76 %78
%79 = OpCompositeExtract %9 %74 1
OpStore %32 %79
%80 = OpCompositeExtract %4 %74 2
OpStore %34 %80
%81 = OpCompositeExtract %23 %74 3
OpStore %36 %81
%82 = OpCompositeExtract %24 %74 4
OpStore %38 %82
%83 = OpCompositeExtract %22 %74 5
OpStore %40 %83
%84 = OpCompositeExtract %4 %73 7
%84 = OpCompositeExtract %4 %74 6
OpStore %41 %84
%85 = OpCompositeExtract %4 %74 7
OpStore %42 %85
OpReturn
OpFunctionEnd
%108 = OpFunction %2 None %46
%85 = OpLabel
%89 = OpLoad %22 %87
%92 = OpLoad %9 %90
%95 = OpLoad %4 %93
%98 = OpLoad %23 %96
%101 = OpLoad %24 %99
%103 = OpLoad %22 %102
%105 = OpLoad %4 %104
%107 = OpLoad %4 %106
%86 = OpCompositeConstruct %25 %89 %92 %95 %98 %101 %103 %105 %107
OpBranch %109
%109 = OpLabel
%109 = OpFunction %2 None %47
%86 = OpLabel
%90 = OpLoad %22 %88
%93 = OpLoad %9 %91
%96 = OpLoad %4 %94
%99 = OpLoad %23 %97
%102 = OpLoad %24 %100
%104 = OpLoad %22 %103
%106 = OpLoad %4 %105
%108 = OpLoad %4 %107
%87 = OpCompositeConstruct %25 %90 %93 %96 %99 %102 %104 %106 %108
OpBranch %110
%110 = OpLabel
OpReturn
OpFunctionEnd

View File

@ -1,12 +1,12 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 501
; Bound: 502
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %489 "main"
OpExecutionMode %489 LocalSize 1 1 1
OpEntryPoint GLCompute %490 "main"
OpExecutionMode %490 LocalSize 1 1 1
OpMemberDecorate %30 0 Offset 0
OpMemberDecorate %30 1 Offset 16
OpDecorate %35 ArrayStride 32
@ -67,14 +67,15 @@ OpDecorate %36 ArrayStride 4
%98 = OpTypeFunction %29 %29
%100 = OpTypeVector %10 3
%107 = OpTypePointer Function %30
%110 = OpTypeFunction %4
%127 = OpTypePointer Function %26
%128 = OpTypePointer Function %4
%133 = OpTypeFunction %2
%136 = OpTypeVector %10 2
%152 = OpTypeVector %8 2
%163 = OpTypeVector %20 3
%458 = OpTypePointer Function %8
%108 = OpConstantNull %30
%111 = OpTypeFunction %4
%128 = OpTypePointer Function %26
%129 = OpTypePointer Function %4
%134 = OpTypeFunction %2
%137 = OpTypeVector %10 2
%153 = OpTypeVector %8 2
%164 = OpTypeVector %20 3
%459 = OpTypePointer Function %8
%55 = OpFunction %26 None %56
%54 = OpLabel
OpBranch %57
@ -133,423 +134,423 @@ OpBranch %99
%105 = OpSelect %29 %102 %104 %103
OpReturnValue %105
OpFunctionEnd
%109 = OpFunction %4 None %110
%108 = OpLabel
%106 = OpVariable %107 Function
OpBranch %111
%111 = OpLabel
%112 = OpCompositeConstruct %26 %3 %3 %3 %3
%113 = OpCompositeConstruct %30 %112 %7
OpStore %106 %113
%114 = OpCompositeConstruct %31 %3 %5
%115 = OpCompositeConstruct %31 %5 %3
%116 = OpCompositeConstruct %32 %114 %115
%117 = OpCompositeConstruct %26 %3 %5 %5 %5
%118 = OpCompositeConstruct %26 %5 %3 %5 %5
%119 = OpCompositeConstruct %26 %5 %5 %3 %5
%120 = OpCompositeConstruct %26 %5 %5 %5 %3
%121 = OpCompositeConstruct %33 %117 %118 %119 %120
%122 = OpCompositeConstruct %34 %19 %19
%123 = OpCompositeConstruct %31 %5 %5
%110 = OpFunction %4 None %111
%109 = OpLabel
%106 = OpVariable %107 Function %108
OpBranch %112
%112 = OpLabel
%113 = OpCompositeConstruct %26 %3 %3 %3 %3
%114 = OpCompositeConstruct %30 %113 %7
OpStore %106 %114
%115 = OpCompositeConstruct %31 %3 %5
%116 = OpCompositeConstruct %31 %5 %3
%117 = OpCompositeConstruct %32 %115 %116
%118 = OpCompositeConstruct %26 %3 %5 %5 %5
%119 = OpCompositeConstruct %26 %5 %3 %5 %5
%120 = OpCompositeConstruct %26 %5 %5 %3 %5
%121 = OpCompositeConstruct %26 %5 %5 %5 %3
%122 = OpCompositeConstruct %33 %118 %119 %120 %121
%123 = OpCompositeConstruct %34 %19 %19
%124 = OpCompositeConstruct %31 %5 %5
%125 = OpCompositeConstruct %32 %123 %124
%126 = OpCompositeConstruct %36 %11 %7 %18 %21
%129 = OpAccessChain %128 %106 %19 %19
%130 = OpLoad %4 %129
OpReturnValue %130
%125 = OpCompositeConstruct %31 %5 %5
%126 = OpCompositeConstruct %32 %124 %125
%127 = OpCompositeConstruct %36 %11 %7 %18 %21
%130 = OpAccessChain %129 %106 %19 %19
%131 = OpLoad %4 %130
OpReturnValue %131
OpFunctionEnd
%132 = OpFunction %2 None %133
%131 = OpLabel
OpBranch %134
%134 = OpLabel
%135 = OpLogicalNot %10 %9
%137 = OpCompositeConstruct %136 %9 %9
%138 = OpLogicalNot %136 %137
%139 = OpLogicalOr %10 %9 %12
%140 = OpLogicalAnd %10 %9 %12
%141 = OpLogicalOr %10 %9 %12
%142 = OpCompositeConstruct %100 %9 %9 %9
%143 = OpCompositeConstruct %100 %12 %12 %12
%144 = OpLogicalOr %100 %142 %143
%145 = OpLogicalAnd %10 %9 %12
%146 = OpCompositeConstruct %28 %9 %9 %9 %9
%147 = OpCompositeConstruct %28 %12 %12 %12 %12
%148 = OpLogicalAnd %28 %146 %147
%133 = OpFunction %2 None %134
%132 = OpLabel
OpBranch %135
%135 = OpLabel
%136 = OpLogicalNot %10 %9
%138 = OpCompositeConstruct %137 %9 %9
%139 = OpLogicalNot %137 %138
%140 = OpLogicalOr %10 %9 %12
%141 = OpLogicalAnd %10 %9 %12
%142 = OpLogicalOr %10 %9 %12
%143 = OpCompositeConstruct %100 %9 %9 %9
%144 = OpCompositeConstruct %100 %12 %12 %12
%145 = OpLogicalOr %100 %143 %144
%146 = OpLogicalAnd %10 %9 %12
%147 = OpCompositeConstruct %28 %9 %9 %9 %9
%148 = OpCompositeConstruct %28 %12 %12 %12 %12
%149 = OpLogicalAnd %28 %147 %148
OpReturn
OpFunctionEnd
%150 = OpFunction %2 None %133
%149 = OpLabel
OpBranch %151
%151 = OpLabel
%153 = OpCompositeConstruct %152 %7 %7
%154 = OpSNegate %152 %153
%155 = OpCompositeConstruct %31 %3 %3
%156 = OpFNegate %31 %155
%157 = OpIAdd %8 %18 %7
%158 = OpIAdd %20 %24 %25
%159 = OpFAdd %4 %14 %3
%160 = OpCompositeConstruct %152 %18 %18
%161 = OpCompositeConstruct %152 %7 %7
%162 = OpIAdd %152 %160 %161
%164 = OpCompositeConstruct %163 %24 %24 %24
%165 = OpCompositeConstruct %163 %25 %25 %25
%166 = OpIAdd %163 %164 %165
%167 = OpCompositeConstruct %26 %14 %14 %14 %14
%168 = OpCompositeConstruct %26 %3 %3 %3 %3
%169 = OpFAdd %26 %167 %168
%170 = OpISub %8 %18 %7
%171 = OpISub %20 %24 %25
%172 = OpFSub %4 %14 %3
%173 = OpCompositeConstruct %152 %18 %18
%174 = OpCompositeConstruct %152 %7 %7
%175 = OpISub %152 %173 %174
%176 = OpCompositeConstruct %163 %24 %24 %24
%177 = OpCompositeConstruct %163 %25 %25 %25
%178 = OpISub %163 %176 %177
%179 = OpCompositeConstruct %26 %14 %14 %14 %14
%180 = OpCompositeConstruct %26 %3 %3 %3 %3
%181 = OpFSub %26 %179 %180
%182 = OpIMul %8 %18 %7
%183 = OpIMul %20 %24 %25
%184 = OpFMul %4 %14 %3
%185 = OpCompositeConstruct %152 %18 %18
%186 = OpCompositeConstruct %152 %7 %7
%187 = OpIMul %152 %185 %186
%188 = OpCompositeConstruct %163 %24 %24 %24
%189 = OpCompositeConstruct %163 %25 %25 %25
%190 = OpIMul %163 %188 %189
%191 = OpCompositeConstruct %26 %14 %14 %14 %14
%192 = OpCompositeConstruct %26 %3 %3 %3 %3
%193 = OpFMul %26 %191 %192
%194 = OpSDiv %8 %18 %7
%195 = OpUDiv %20 %24 %25
%196 = OpFDiv %4 %14 %3
%197 = OpCompositeConstruct %152 %18 %18
%198 = OpCompositeConstruct %152 %7 %7
%199 = OpSDiv %152 %197 %198
%200 = OpCompositeConstruct %163 %24 %24 %24
%201 = OpCompositeConstruct %163 %25 %25 %25
%202 = OpUDiv %163 %200 %201
%203 = OpCompositeConstruct %26 %14 %14 %14 %14
%204 = OpCompositeConstruct %26 %3 %3 %3 %3
%205 = OpFDiv %26 %203 %204
%206 = OpSRem %8 %18 %7
%207 = OpUMod %20 %24 %25
%208 = OpFRem %4 %14 %3
%209 = OpCompositeConstruct %152 %18 %18
%210 = OpCompositeConstruct %152 %7 %7
%211 = OpSRem %152 %209 %210
%212 = OpCompositeConstruct %163 %24 %24 %24
%213 = OpCompositeConstruct %163 %25 %25 %25
%214 = OpUMod %163 %212 %213
%215 = OpCompositeConstruct %26 %14 %14 %14 %14
%216 = OpCompositeConstruct %26 %3 %3 %3 %3
%217 = OpFRem %26 %215 %216
%218 = OpCompositeConstruct %152 %18 %18
%219 = OpCompositeConstruct %152 %7 %7
%220 = OpIAdd %152 %218 %219
%221 = OpCompositeConstruct %152 %7 %7
%222 = OpCompositeConstruct %152 %18 %18
%223 = OpIAdd %152 %222 %221
%224 = OpCompositeConstruct %34 %24 %24
%225 = OpCompositeConstruct %34 %25 %25
%226 = OpIAdd %34 %224 %225
%227 = OpCompositeConstruct %34 %25 %25
%228 = OpCompositeConstruct %34 %24 %24
%229 = OpIAdd %34 %228 %227
%230 = OpCompositeConstruct %31 %14 %14
%231 = OpCompositeConstruct %31 %3 %3
%232 = OpFAdd %31 %230 %231
%233 = OpCompositeConstruct %31 %3 %3
%234 = OpCompositeConstruct %31 %14 %14
%235 = OpFAdd %31 %234 %233
%236 = OpCompositeConstruct %152 %18 %18
%237 = OpCompositeConstruct %152 %7 %7
%238 = OpISub %152 %236 %237
%239 = OpCompositeConstruct %152 %7 %7
%240 = OpCompositeConstruct %152 %18 %18
%241 = OpISub %152 %240 %239
%242 = OpCompositeConstruct %34 %24 %24
%243 = OpCompositeConstruct %34 %25 %25
%244 = OpISub %34 %242 %243
%245 = OpCompositeConstruct %34 %25 %25
%246 = OpCompositeConstruct %34 %24 %24
%247 = OpISub %34 %246 %245
%248 = OpCompositeConstruct %31 %14 %14
%249 = OpCompositeConstruct %31 %3 %3
%250 = OpFSub %31 %248 %249
%251 = OpCompositeConstruct %31 %3 %3
%252 = OpCompositeConstruct %31 %14 %14
%253 = OpFSub %31 %252 %251
%254 = OpCompositeConstruct %152 %18 %18
%256 = OpCompositeConstruct %152 %7 %7
%255 = OpIMul %152 %254 %256
%257 = OpCompositeConstruct %152 %7 %7
%259 = OpCompositeConstruct %152 %18 %18
%258 = OpIMul %152 %257 %259
%260 = OpCompositeConstruct %34 %24 %24
%262 = OpCompositeConstruct %34 %25 %25
%261 = OpIMul %34 %260 %262
%151 = OpFunction %2 None %134
%150 = OpLabel
OpBranch %152
%152 = OpLabel
%154 = OpCompositeConstruct %153 %7 %7
%155 = OpSNegate %153 %154
%156 = OpCompositeConstruct %31 %3 %3
%157 = OpFNegate %31 %156
%158 = OpIAdd %8 %18 %7
%159 = OpIAdd %20 %24 %25
%160 = OpFAdd %4 %14 %3
%161 = OpCompositeConstruct %153 %18 %18
%162 = OpCompositeConstruct %153 %7 %7
%163 = OpIAdd %153 %161 %162
%165 = OpCompositeConstruct %164 %24 %24 %24
%166 = OpCompositeConstruct %164 %25 %25 %25
%167 = OpIAdd %164 %165 %166
%168 = OpCompositeConstruct %26 %14 %14 %14 %14
%169 = OpCompositeConstruct %26 %3 %3 %3 %3
%170 = OpFAdd %26 %168 %169
%171 = OpISub %8 %18 %7
%172 = OpISub %20 %24 %25
%173 = OpFSub %4 %14 %3
%174 = OpCompositeConstruct %153 %18 %18
%175 = OpCompositeConstruct %153 %7 %7
%176 = OpISub %153 %174 %175
%177 = OpCompositeConstruct %164 %24 %24 %24
%178 = OpCompositeConstruct %164 %25 %25 %25
%179 = OpISub %164 %177 %178
%180 = OpCompositeConstruct %26 %14 %14 %14 %14
%181 = OpCompositeConstruct %26 %3 %3 %3 %3
%182 = OpFSub %26 %180 %181
%183 = OpIMul %8 %18 %7
%184 = OpIMul %20 %24 %25
%185 = OpFMul %4 %14 %3
%186 = OpCompositeConstruct %153 %18 %18
%187 = OpCompositeConstruct %153 %7 %7
%188 = OpIMul %153 %186 %187
%189 = OpCompositeConstruct %164 %24 %24 %24
%190 = OpCompositeConstruct %164 %25 %25 %25
%191 = OpIMul %164 %189 %190
%192 = OpCompositeConstruct %26 %14 %14 %14 %14
%193 = OpCompositeConstruct %26 %3 %3 %3 %3
%194 = OpFMul %26 %192 %193
%195 = OpSDiv %8 %18 %7
%196 = OpUDiv %20 %24 %25
%197 = OpFDiv %4 %14 %3
%198 = OpCompositeConstruct %153 %18 %18
%199 = OpCompositeConstruct %153 %7 %7
%200 = OpSDiv %153 %198 %199
%201 = OpCompositeConstruct %164 %24 %24 %24
%202 = OpCompositeConstruct %164 %25 %25 %25
%203 = OpUDiv %164 %201 %202
%204 = OpCompositeConstruct %26 %14 %14 %14 %14
%205 = OpCompositeConstruct %26 %3 %3 %3 %3
%206 = OpFDiv %26 %204 %205
%207 = OpSRem %8 %18 %7
%208 = OpUMod %20 %24 %25
%209 = OpFRem %4 %14 %3
%210 = OpCompositeConstruct %153 %18 %18
%211 = OpCompositeConstruct %153 %7 %7
%212 = OpSRem %153 %210 %211
%213 = OpCompositeConstruct %164 %24 %24 %24
%214 = OpCompositeConstruct %164 %25 %25 %25
%215 = OpUMod %164 %213 %214
%216 = OpCompositeConstruct %26 %14 %14 %14 %14
%217 = OpCompositeConstruct %26 %3 %3 %3 %3
%218 = OpFRem %26 %216 %217
%219 = OpCompositeConstruct %153 %18 %18
%220 = OpCompositeConstruct %153 %7 %7
%221 = OpIAdd %153 %219 %220
%222 = OpCompositeConstruct %153 %7 %7
%223 = OpCompositeConstruct %153 %18 %18
%224 = OpIAdd %153 %223 %222
%225 = OpCompositeConstruct %34 %24 %24
%226 = OpCompositeConstruct %34 %25 %25
%227 = OpIAdd %34 %225 %226
%228 = OpCompositeConstruct %34 %25 %25
%229 = OpCompositeConstruct %34 %24 %24
%230 = OpIAdd %34 %229 %228
%231 = OpCompositeConstruct %31 %14 %14
%232 = OpCompositeConstruct %31 %3 %3
%233 = OpFAdd %31 %231 %232
%234 = OpCompositeConstruct %31 %3 %3
%235 = OpCompositeConstruct %31 %14 %14
%236 = OpFAdd %31 %235 %234
%237 = OpCompositeConstruct %153 %18 %18
%238 = OpCompositeConstruct %153 %7 %7
%239 = OpISub %153 %237 %238
%240 = OpCompositeConstruct %153 %7 %7
%241 = OpCompositeConstruct %153 %18 %18
%242 = OpISub %153 %241 %240
%243 = OpCompositeConstruct %34 %24 %24
%244 = OpCompositeConstruct %34 %25 %25
%245 = OpISub %34 %243 %244
%246 = OpCompositeConstruct %34 %25 %25
%247 = OpCompositeConstruct %34 %24 %24
%248 = OpISub %34 %247 %246
%249 = OpCompositeConstruct %31 %14 %14
%250 = OpCompositeConstruct %31 %3 %3
%251 = OpFSub %31 %249 %250
%252 = OpCompositeConstruct %31 %3 %3
%253 = OpCompositeConstruct %31 %14 %14
%254 = OpFSub %31 %253 %252
%255 = OpCompositeConstruct %153 %18 %18
%257 = OpCompositeConstruct %153 %7 %7
%256 = OpIMul %153 %255 %257
%258 = OpCompositeConstruct %153 %7 %7
%260 = OpCompositeConstruct %153 %18 %18
%259 = OpIMul %153 %258 %260
%261 = OpCompositeConstruct %34 %24 %24
%263 = OpCompositeConstruct %34 %25 %25
%265 = OpCompositeConstruct %34 %24 %24
%264 = OpIMul %34 %263 %265
%266 = OpCompositeConstruct %31 %14 %14
%267 = OpVectorTimesScalar %31 %266 %3
%268 = OpCompositeConstruct %31 %3 %3
%269 = OpVectorTimesScalar %31 %268 %14
%270 = OpCompositeConstruct %152 %18 %18
%271 = OpCompositeConstruct %152 %7 %7
%272 = OpSDiv %152 %270 %271
%273 = OpCompositeConstruct %152 %7 %7
%274 = OpCompositeConstruct %152 %18 %18
%275 = OpSDiv %152 %274 %273
%276 = OpCompositeConstruct %34 %24 %24
%277 = OpCompositeConstruct %34 %25 %25
%278 = OpUDiv %34 %276 %277
%279 = OpCompositeConstruct %34 %25 %25
%280 = OpCompositeConstruct %34 %24 %24
%281 = OpUDiv %34 %280 %279
%282 = OpCompositeConstruct %31 %14 %14
%283 = OpCompositeConstruct %31 %3 %3
%284 = OpFDiv %31 %282 %283
%285 = OpCompositeConstruct %31 %3 %3
%286 = OpCompositeConstruct %31 %14 %14
%287 = OpFDiv %31 %286 %285
%288 = OpCompositeConstruct %152 %18 %18
%289 = OpCompositeConstruct %152 %7 %7
%290 = OpSRem %152 %288 %289
%291 = OpCompositeConstruct %152 %7 %7
%292 = OpCompositeConstruct %152 %18 %18
%293 = OpSRem %152 %292 %291
%294 = OpCompositeConstruct %34 %24 %24
%295 = OpCompositeConstruct %34 %25 %25
%296 = OpUMod %34 %294 %295
%297 = OpCompositeConstruct %34 %25 %25
%298 = OpCompositeConstruct %34 %24 %24
%299 = OpUMod %34 %298 %297
%300 = OpCompositeConstruct %31 %14 %14
%301 = OpCompositeConstruct %31 %3 %3
%302 = OpFRem %31 %300 %301
%303 = OpCompositeConstruct %31 %3 %3
%304 = OpCompositeConstruct %31 %14 %14
%305 = OpFRem %31 %304 %303
%307 = OpCompositeExtract %29 %51 0
%262 = OpIMul %34 %261 %263
%264 = OpCompositeConstruct %34 %25 %25
%266 = OpCompositeConstruct %34 %24 %24
%265 = OpIMul %34 %264 %266
%267 = OpCompositeConstruct %31 %14 %14
%268 = OpVectorTimesScalar %31 %267 %3
%269 = OpCompositeConstruct %31 %3 %3
%270 = OpVectorTimesScalar %31 %269 %14
%271 = OpCompositeConstruct %153 %18 %18
%272 = OpCompositeConstruct %153 %7 %7
%273 = OpSDiv %153 %271 %272
%274 = OpCompositeConstruct %153 %7 %7
%275 = OpCompositeConstruct %153 %18 %18
%276 = OpSDiv %153 %275 %274
%277 = OpCompositeConstruct %34 %24 %24
%278 = OpCompositeConstruct %34 %25 %25
%279 = OpUDiv %34 %277 %278
%280 = OpCompositeConstruct %34 %25 %25
%281 = OpCompositeConstruct %34 %24 %24
%282 = OpUDiv %34 %281 %280
%283 = OpCompositeConstruct %31 %14 %14
%284 = OpCompositeConstruct %31 %3 %3
%285 = OpFDiv %31 %283 %284
%286 = OpCompositeConstruct %31 %3 %3
%287 = OpCompositeConstruct %31 %14 %14
%288 = OpFDiv %31 %287 %286
%289 = OpCompositeConstruct %153 %18 %18
%290 = OpCompositeConstruct %153 %7 %7
%291 = OpSRem %153 %289 %290
%292 = OpCompositeConstruct %153 %7 %7
%293 = OpCompositeConstruct %153 %18 %18
%294 = OpSRem %153 %293 %292
%295 = OpCompositeConstruct %34 %24 %24
%296 = OpCompositeConstruct %34 %25 %25
%297 = OpUMod %34 %295 %296
%298 = OpCompositeConstruct %34 %25 %25
%299 = OpCompositeConstruct %34 %24 %24
%300 = OpUMod %34 %299 %298
%301 = OpCompositeConstruct %31 %14 %14
%302 = OpCompositeConstruct %31 %3 %3
%303 = OpFRem %31 %301 %302
%304 = OpCompositeConstruct %31 %3 %3
%305 = OpCompositeConstruct %31 %14 %14
%306 = OpFRem %31 %305 %304
%308 = OpCompositeExtract %29 %51 0
%309 = OpFAdd %29 %307 %308
%310 = OpCompositeExtract %29 %51 1
%309 = OpCompositeExtract %29 %51 0
%310 = OpFAdd %29 %308 %309
%311 = OpCompositeExtract %29 %51 1
%312 = OpFAdd %29 %310 %311
%313 = OpCompositeExtract %29 %51 2
%312 = OpCompositeExtract %29 %51 1
%313 = OpFAdd %29 %311 %312
%314 = OpCompositeExtract %29 %51 2
%315 = OpFAdd %29 %313 %314
%306 = OpCompositeConstruct %37 %309 %312 %315
%317 = OpCompositeExtract %29 %51 0
%315 = OpCompositeExtract %29 %51 2
%316 = OpFAdd %29 %314 %315
%307 = OpCompositeConstruct %37 %310 %313 %316
%318 = OpCompositeExtract %29 %51 0
%319 = OpFSub %29 %317 %318
%320 = OpCompositeExtract %29 %51 1
%319 = OpCompositeExtract %29 %51 0
%320 = OpFSub %29 %318 %319
%321 = OpCompositeExtract %29 %51 1
%322 = OpFSub %29 %320 %321
%323 = OpCompositeExtract %29 %51 2
%322 = OpCompositeExtract %29 %51 1
%323 = OpFSub %29 %321 %322
%324 = OpCompositeExtract %29 %51 2
%325 = OpFSub %29 %323 %324
%316 = OpCompositeConstruct %37 %319 %322 %325
%326 = OpMatrixTimesScalar %37 %51 %3
%327 = OpMatrixTimesScalar %37 %51 %14
%328 = OpCompositeConstruct %26 %3 %3 %3 %3
%329 = OpMatrixTimesVector %29 %52 %328
%330 = OpCompositeConstruct %29 %14 %14 %14
%331 = OpVectorTimesMatrix %26 %330 %52
%332 = OpMatrixTimesMatrix %37 %52 %53
%325 = OpCompositeExtract %29 %51 2
%326 = OpFSub %29 %324 %325
%317 = OpCompositeConstruct %37 %320 %323 %326
%327 = OpMatrixTimesScalar %37 %51 %3
%328 = OpMatrixTimesScalar %37 %51 %14
%329 = OpCompositeConstruct %26 %3 %3 %3 %3
%330 = OpMatrixTimesVector %29 %52 %329
%331 = OpCompositeConstruct %29 %14 %14 %14
%332 = OpVectorTimesMatrix %26 %331 %52
%333 = OpMatrixTimesMatrix %37 %52 %53
OpReturn
OpFunctionEnd
%334 = OpFunction %2 None %133
%333 = OpLabel
OpBranch %335
%335 = OpLabel
%336 = OpNot %8 %7
%337 = OpNot %20 %25
%338 = OpCompositeConstruct %152 %7 %7
%339 = OpNot %152 %338
%340 = OpCompositeConstruct %163 %25 %25 %25
%341 = OpNot %163 %340
%342 = OpBitwiseOr %8 %18 %7
%343 = OpBitwiseOr %20 %24 %25
%344 = OpCompositeConstruct %152 %18 %18
%345 = OpCompositeConstruct %152 %7 %7
%346 = OpBitwiseOr %152 %344 %345
%347 = OpCompositeConstruct %163 %24 %24 %24
%348 = OpCompositeConstruct %163 %25 %25 %25
%349 = OpBitwiseOr %163 %347 %348
%350 = OpBitwiseAnd %8 %18 %7
%351 = OpBitwiseAnd %20 %24 %25
%352 = OpCompositeConstruct %152 %18 %18
%353 = OpCompositeConstruct %152 %7 %7
%354 = OpBitwiseAnd %152 %352 %353
%355 = OpCompositeConstruct %163 %24 %24 %24
%356 = OpCompositeConstruct %163 %25 %25 %25
%357 = OpBitwiseAnd %163 %355 %356
%358 = OpBitwiseXor %8 %18 %7
%359 = OpBitwiseXor %20 %24 %25
%360 = OpCompositeConstruct %152 %18 %18
%361 = OpCompositeConstruct %152 %7 %7
%362 = OpBitwiseXor %152 %360 %361
%363 = OpCompositeConstruct %163 %24 %24 %24
%364 = OpCompositeConstruct %163 %25 %25 %25
%365 = OpBitwiseXor %163 %363 %364
%366 = OpShiftLeftLogical %8 %18 %25
%367 = OpShiftLeftLogical %20 %24 %25
%368 = OpCompositeConstruct %152 %18 %18
%369 = OpCompositeConstruct %34 %25 %25
%370 = OpShiftLeftLogical %152 %368 %369
%371 = OpCompositeConstruct %163 %24 %24 %24
%372 = OpCompositeConstruct %163 %25 %25 %25
%373 = OpShiftLeftLogical %163 %371 %372
%374 = OpShiftRightArithmetic %8 %18 %25
%375 = OpShiftRightLogical %20 %24 %25
%376 = OpCompositeConstruct %152 %18 %18
%377 = OpCompositeConstruct %34 %25 %25
%378 = OpShiftRightArithmetic %152 %376 %377
%379 = OpCompositeConstruct %163 %24 %24 %24
%380 = OpCompositeConstruct %163 %25 %25 %25
%381 = OpShiftRightLogical %163 %379 %380
%335 = OpFunction %2 None %134
%334 = OpLabel
OpBranch %336
%336 = OpLabel
%337 = OpNot %8 %7
%338 = OpNot %20 %25
%339 = OpCompositeConstruct %153 %7 %7
%340 = OpNot %153 %339
%341 = OpCompositeConstruct %164 %25 %25 %25
%342 = OpNot %164 %341
%343 = OpBitwiseOr %8 %18 %7
%344 = OpBitwiseOr %20 %24 %25
%345 = OpCompositeConstruct %153 %18 %18
%346 = OpCompositeConstruct %153 %7 %7
%347 = OpBitwiseOr %153 %345 %346
%348 = OpCompositeConstruct %164 %24 %24 %24
%349 = OpCompositeConstruct %164 %25 %25 %25
%350 = OpBitwiseOr %164 %348 %349
%351 = OpBitwiseAnd %8 %18 %7
%352 = OpBitwiseAnd %20 %24 %25
%353 = OpCompositeConstruct %153 %18 %18
%354 = OpCompositeConstruct %153 %7 %7
%355 = OpBitwiseAnd %153 %353 %354
%356 = OpCompositeConstruct %164 %24 %24 %24
%357 = OpCompositeConstruct %164 %25 %25 %25
%358 = OpBitwiseAnd %164 %356 %357
%359 = OpBitwiseXor %8 %18 %7
%360 = OpBitwiseXor %20 %24 %25
%361 = OpCompositeConstruct %153 %18 %18
%362 = OpCompositeConstruct %153 %7 %7
%363 = OpBitwiseXor %153 %361 %362
%364 = OpCompositeConstruct %164 %24 %24 %24
%365 = OpCompositeConstruct %164 %25 %25 %25
%366 = OpBitwiseXor %164 %364 %365
%367 = OpShiftLeftLogical %8 %18 %25
%368 = OpShiftLeftLogical %20 %24 %25
%369 = OpCompositeConstruct %153 %18 %18
%370 = OpCompositeConstruct %34 %25 %25
%371 = OpShiftLeftLogical %153 %369 %370
%372 = OpCompositeConstruct %164 %24 %24 %24
%373 = OpCompositeConstruct %164 %25 %25 %25
%374 = OpShiftLeftLogical %164 %372 %373
%375 = OpShiftRightArithmetic %8 %18 %25
%376 = OpShiftRightLogical %20 %24 %25
%377 = OpCompositeConstruct %153 %18 %18
%378 = OpCompositeConstruct %34 %25 %25
%379 = OpShiftRightArithmetic %153 %377 %378
%380 = OpCompositeConstruct %164 %24 %24 %24
%381 = OpCompositeConstruct %164 %25 %25 %25
%382 = OpShiftRightLogical %164 %380 %381
OpReturn
OpFunctionEnd
%383 = OpFunction %2 None %133
%382 = OpLabel
OpBranch %384
%384 = OpLabel
%385 = OpIEqual %10 %18 %7
%386 = OpIEqual %10 %24 %25
%387 = OpFOrdEqual %10 %14 %3
%388 = OpCompositeConstruct %152 %18 %18
%389 = OpCompositeConstruct %152 %7 %7
%390 = OpIEqual %136 %388 %389
%391 = OpCompositeConstruct %163 %24 %24 %24
%392 = OpCompositeConstruct %163 %25 %25 %25
%393 = OpIEqual %100 %391 %392
%394 = OpCompositeConstruct %26 %14 %14 %14 %14
%395 = OpCompositeConstruct %26 %3 %3 %3 %3
%396 = OpFOrdEqual %28 %394 %395
%397 = OpINotEqual %10 %18 %7
%398 = OpINotEqual %10 %24 %25
%399 = OpFOrdNotEqual %10 %14 %3
%400 = OpCompositeConstruct %152 %18 %18
%401 = OpCompositeConstruct %152 %7 %7
%402 = OpINotEqual %136 %400 %401
%403 = OpCompositeConstruct %163 %24 %24 %24
%404 = OpCompositeConstruct %163 %25 %25 %25
%405 = OpINotEqual %100 %403 %404
%406 = OpCompositeConstruct %26 %14 %14 %14 %14
%407 = OpCompositeConstruct %26 %3 %3 %3 %3
%408 = OpFOrdNotEqual %28 %406 %407
%409 = OpSLessThan %10 %18 %7
%410 = OpULessThan %10 %24 %25
%411 = OpFOrdLessThan %10 %14 %3
%412 = OpCompositeConstruct %152 %18 %18
%413 = OpCompositeConstruct %152 %7 %7
%414 = OpSLessThan %136 %412 %413
%415 = OpCompositeConstruct %163 %24 %24 %24
%416 = OpCompositeConstruct %163 %25 %25 %25
%417 = OpULessThan %100 %415 %416
%418 = OpCompositeConstruct %26 %14 %14 %14 %14
%419 = OpCompositeConstruct %26 %3 %3 %3 %3
%420 = OpFOrdLessThan %28 %418 %419
%421 = OpSLessThanEqual %10 %18 %7
%422 = OpULessThanEqual %10 %24 %25
%423 = OpFOrdLessThanEqual %10 %14 %3
%424 = OpCompositeConstruct %152 %18 %18
%425 = OpCompositeConstruct %152 %7 %7
%426 = OpSLessThanEqual %136 %424 %425
%427 = OpCompositeConstruct %163 %24 %24 %24
%428 = OpCompositeConstruct %163 %25 %25 %25
%429 = OpULessThanEqual %100 %427 %428
%430 = OpCompositeConstruct %26 %14 %14 %14 %14
%431 = OpCompositeConstruct %26 %3 %3 %3 %3
%432 = OpFOrdLessThanEqual %28 %430 %431
%433 = OpSGreaterThan %10 %18 %7
%434 = OpUGreaterThan %10 %24 %25
%435 = OpFOrdGreaterThan %10 %14 %3
%436 = OpCompositeConstruct %152 %18 %18
%437 = OpCompositeConstruct %152 %7 %7
%438 = OpSGreaterThan %136 %436 %437
%439 = OpCompositeConstruct %163 %24 %24 %24
%440 = OpCompositeConstruct %163 %25 %25 %25
%441 = OpUGreaterThan %100 %439 %440
%442 = OpCompositeConstruct %26 %14 %14 %14 %14
%443 = OpCompositeConstruct %26 %3 %3 %3 %3
%444 = OpFOrdGreaterThan %28 %442 %443
%445 = OpSGreaterThanEqual %10 %18 %7
%446 = OpUGreaterThanEqual %10 %24 %25
%447 = OpFOrdGreaterThanEqual %10 %14 %3
%448 = OpCompositeConstruct %152 %18 %18
%449 = OpCompositeConstruct %152 %7 %7
%450 = OpSGreaterThanEqual %136 %448 %449
%451 = OpCompositeConstruct %163 %24 %24 %24
%452 = OpCompositeConstruct %163 %25 %25 %25
%453 = OpUGreaterThanEqual %100 %451 %452
%454 = OpCompositeConstruct %26 %14 %14 %14 %14
%455 = OpCompositeConstruct %26 %3 %3 %3 %3
%456 = OpFOrdGreaterThanEqual %28 %454 %455
%384 = OpFunction %2 None %134
%383 = OpLabel
OpBranch %385
%385 = OpLabel
%386 = OpIEqual %10 %18 %7
%387 = OpIEqual %10 %24 %25
%388 = OpFOrdEqual %10 %14 %3
%389 = OpCompositeConstruct %153 %18 %18
%390 = OpCompositeConstruct %153 %7 %7
%391 = OpIEqual %137 %389 %390
%392 = OpCompositeConstruct %164 %24 %24 %24
%393 = OpCompositeConstruct %164 %25 %25 %25
%394 = OpIEqual %100 %392 %393
%395 = OpCompositeConstruct %26 %14 %14 %14 %14
%396 = OpCompositeConstruct %26 %3 %3 %3 %3
%397 = OpFOrdEqual %28 %395 %396
%398 = OpINotEqual %10 %18 %7
%399 = OpINotEqual %10 %24 %25
%400 = OpFOrdNotEqual %10 %14 %3
%401 = OpCompositeConstruct %153 %18 %18
%402 = OpCompositeConstruct %153 %7 %7
%403 = OpINotEqual %137 %401 %402
%404 = OpCompositeConstruct %164 %24 %24 %24
%405 = OpCompositeConstruct %164 %25 %25 %25
%406 = OpINotEqual %100 %404 %405
%407 = OpCompositeConstruct %26 %14 %14 %14 %14
%408 = OpCompositeConstruct %26 %3 %3 %3 %3
%409 = OpFOrdNotEqual %28 %407 %408
%410 = OpSLessThan %10 %18 %7
%411 = OpULessThan %10 %24 %25
%412 = OpFOrdLessThan %10 %14 %3
%413 = OpCompositeConstruct %153 %18 %18
%414 = OpCompositeConstruct %153 %7 %7
%415 = OpSLessThan %137 %413 %414
%416 = OpCompositeConstruct %164 %24 %24 %24
%417 = OpCompositeConstruct %164 %25 %25 %25
%418 = OpULessThan %100 %416 %417
%419 = OpCompositeConstruct %26 %14 %14 %14 %14
%420 = OpCompositeConstruct %26 %3 %3 %3 %3
%421 = OpFOrdLessThan %28 %419 %420
%422 = OpSLessThanEqual %10 %18 %7
%423 = OpULessThanEqual %10 %24 %25
%424 = OpFOrdLessThanEqual %10 %14 %3
%425 = OpCompositeConstruct %153 %18 %18
%426 = OpCompositeConstruct %153 %7 %7
%427 = OpSLessThanEqual %137 %425 %426
%428 = OpCompositeConstruct %164 %24 %24 %24
%429 = OpCompositeConstruct %164 %25 %25 %25
%430 = OpULessThanEqual %100 %428 %429
%431 = OpCompositeConstruct %26 %14 %14 %14 %14
%432 = OpCompositeConstruct %26 %3 %3 %3 %3
%433 = OpFOrdLessThanEqual %28 %431 %432
%434 = OpSGreaterThan %10 %18 %7
%435 = OpUGreaterThan %10 %24 %25
%436 = OpFOrdGreaterThan %10 %14 %3
%437 = OpCompositeConstruct %153 %18 %18
%438 = OpCompositeConstruct %153 %7 %7
%439 = OpSGreaterThan %137 %437 %438
%440 = OpCompositeConstruct %164 %24 %24 %24
%441 = OpCompositeConstruct %164 %25 %25 %25
%442 = OpUGreaterThan %100 %440 %441
%443 = OpCompositeConstruct %26 %14 %14 %14 %14
%444 = OpCompositeConstruct %26 %3 %3 %3 %3
%445 = OpFOrdGreaterThan %28 %443 %444
%446 = OpSGreaterThanEqual %10 %18 %7
%447 = OpUGreaterThanEqual %10 %24 %25
%448 = OpFOrdGreaterThanEqual %10 %14 %3
%449 = OpCompositeConstruct %153 %18 %18
%450 = OpCompositeConstruct %153 %7 %7
%451 = OpSGreaterThanEqual %137 %449 %450
%452 = OpCompositeConstruct %164 %24 %24 %24
%453 = OpCompositeConstruct %164 %25 %25 %25
%454 = OpUGreaterThanEqual %100 %452 %453
%455 = OpCompositeConstruct %26 %14 %14 %14 %14
%456 = OpCompositeConstruct %26 %3 %3 %3 %3
%457 = OpFOrdGreaterThanEqual %28 %455 %456
OpReturn
OpFunctionEnd
%460 = OpFunction %2 None %133
%459 = OpLabel
%457 = OpVariable %458 Function %7
OpBranch %461
%461 = OpLabel
%462 = OpLoad %8 %457
%463 = OpIAdd %8 %462 %7
OpStore %457 %463
%464 = OpLoad %8 %457
%465 = OpISub %8 %464 %7
OpStore %457 %465
%466 = OpLoad %8 %457
%467 = OpLoad %8 %457
%468 = OpIMul %8 %466 %467
OpStore %457 %468
%469 = OpLoad %8 %457
%470 = OpLoad %8 %457
%471 = OpSDiv %8 %469 %470
OpStore %457 %471
%472 = OpLoad %8 %457
%473 = OpSRem %8 %472 %7
OpStore %457 %473
%474 = OpLoad %8 %457
%475 = OpBitwiseAnd %8 %474 %11
OpStore %457 %475
%476 = OpLoad %8 %457
%477 = OpBitwiseOr %8 %476 %11
OpStore %457 %477
%478 = OpLoad %8 %457
%479 = OpBitwiseXor %8 %478 %11
OpStore %457 %479
%480 = OpLoad %8 %457
%481 = OpShiftLeftLogical %8 %480 %24
OpStore %457 %481
%482 = OpLoad %8 %457
%483 = OpShiftRightArithmetic %8 %482 %25
OpStore %457 %483
%484 = OpLoad %8 %457
%485 = OpIAdd %8 %484 %7
OpStore %457 %485
%486 = OpLoad %8 %457
%487 = OpISub %8 %486 %7
OpStore %457 %487
%461 = OpFunction %2 None %134
%460 = OpLabel
%458 = OpVariable %459 Function %7
OpBranch %462
%462 = OpLabel
%463 = OpLoad %8 %458
%464 = OpIAdd %8 %463 %7
OpStore %458 %464
%465 = OpLoad %8 %458
%466 = OpISub %8 %465 %7
OpStore %458 %466
%467 = OpLoad %8 %458
%468 = OpLoad %8 %458
%469 = OpIMul %8 %467 %468
OpStore %458 %469
%470 = OpLoad %8 %458
%471 = OpLoad %8 %458
%472 = OpSDiv %8 %470 %471
OpStore %458 %472
%473 = OpLoad %8 %458
%474 = OpSRem %8 %473 %7
OpStore %458 %474
%475 = OpLoad %8 %458
%476 = OpBitwiseAnd %8 %475 %11
OpStore %458 %476
%477 = OpLoad %8 %458
%478 = OpBitwiseOr %8 %477 %11
OpStore %458 %478
%479 = OpLoad %8 %458
%480 = OpBitwiseXor %8 %479 %11
OpStore %458 %480
%481 = OpLoad %8 %458
%482 = OpShiftLeftLogical %8 %481 %24
OpStore %458 %482
%483 = OpLoad %8 %458
%484 = OpShiftRightArithmetic %8 %483 %25
OpStore %458 %484
%485 = OpLoad %8 %458
%486 = OpIAdd %8 %485 %7
OpStore %458 %486
%487 = OpLoad %8 %458
%488 = OpISub %8 %487 %7
OpStore %458 %488
OpReturn
OpFunctionEnd
%489 = OpFunction %2 None %133
%488 = OpLabel
OpBranch %490
%490 = OpLabel
%491 = OpFunctionCall %26 %55
%492 = OpFunctionCall %26 %80
%493 = OpVectorShuffle %29 %40 %40 0 1 2
%494 = OpFunctionCall %29 %97 %493
%495 = OpFunctionCall %4 %109
%496 = OpFunctionCall %2 %132
%497 = OpFunctionCall %2 %150
%498 = OpFunctionCall %2 %334
%499 = OpFunctionCall %2 %383
%500 = OpFunctionCall %2 %460
%490 = OpFunction %2 None %134
%489 = OpLabel
OpBranch %491
%491 = OpLabel
%492 = OpFunctionCall %26 %55
%493 = OpFunctionCall %26 %80
%494 = OpVectorShuffle %29 %40 %40 0 1 2
%495 = OpFunctionCall %29 %97 %494
%496 = OpFunctionCall %4 %110
%497 = OpFunctionCall %2 %133
%498 = OpFunctionCall %2 %151
%499 = OpFunctionCall %2 %335
%500 = OpFunctionCall %2 %384
%501 = OpFunctionCall %2 %461
OpReturn
OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.2
; Generator: rspirv
; Bound: 41
; Bound: 42
OpCapability Shader
OpCapability Linkage
OpExtension "SPV_KHR_storage_buffer_storage_class"
@ -12,13 +12,13 @@ OpMemberName %8 0 "arr"
OpName %8 "DynamicArray"
OpName %11 "dynamic_array"
OpName %12 "v"
OpName %15 "f"
OpName %22 "i"
OpName %23 "v"
OpName %24 "index_unsized"
OpName %33 "i"
OpName %34 "v"
OpName %35 "index_dynamic_array"
OpName %16 "f"
OpName %23 "i"
OpName %24 "v"
OpName %25 "index_unsized"
OpName %34 "i"
OpName %35 "v"
OpName %36 "index_dynamic_array"
OpDecorate %7 ArrayStride 4
OpMemberDecorate %8 0 Offset 0
OpDecorate %11 DescriptorSet 0
@ -35,43 +35,44 @@ OpDecorate %8 Block
%10 = OpTypePointer StorageBuffer %7
%11 = OpVariable %9 StorageBuffer
%13 = OpTypePointer Function %5
%16 = OpTypeFunction %2
%18 = OpTypePointer Function %4
%19 = OpConstant %6 0
%25 = OpTypeFunction %2 %4 %6
%27 = OpTypePointer StorageBuffer %6
%15 = OpFunction %2 None %16
%14 = OpLabel
%12 = OpVariable %13 Function
OpBranch %17
%17 = OpLabel
%20 = OpAccessChain %18 %12 %19
OpStore %20 %3
%14 = OpConstantNull %5
%17 = OpTypeFunction %2
%19 = OpTypePointer Function %4
%20 = OpConstant %6 0
%26 = OpTypeFunction %2 %4 %6
%28 = OpTypePointer StorageBuffer %6
%16 = OpFunction %2 None %17
%15 = OpLabel
%12 = OpVariable %13 Function %14
OpBranch %18
%18 = OpLabel
%21 = OpAccessChain %19 %12 %20
OpStore %21 %3
OpReturn
OpFunctionEnd
%24 = OpFunction %2 None %25
%22 = OpFunctionParameter %4
%23 = OpFunctionParameter %6
%21 = OpLabel
OpBranch %26
%26 = OpLabel
%28 = OpAccessChain %27 %11 %19 %22
%29 = OpLoad %6 %28
%30 = OpIAdd %6 %29 %23
%31 = OpAccessChain %27 %11 %19 %22
OpStore %31 %30
%25 = OpFunction %2 None %26
%23 = OpFunctionParameter %4
%24 = OpFunctionParameter %6
%22 = OpLabel
OpBranch %27
%27 = OpLabel
%29 = OpAccessChain %28 %11 %20 %23
%30 = OpLoad %6 %29
%31 = OpIAdd %6 %30 %24
%32 = OpAccessChain %28 %11 %20 %23
OpStore %32 %31
OpReturn
OpFunctionEnd
%35 = OpFunction %2 None %25
%33 = OpFunctionParameter %4
%34 = OpFunctionParameter %6
%32 = OpLabel
OpBranch %36
%36 = OpLabel
%37 = OpAccessChain %27 %11 %19 %33
%38 = OpLoad %6 %37
%39 = OpIAdd %6 %38 %34
%40 = OpAccessChain %27 %11 %19 %33
OpStore %40 %39
%36 = OpFunction %2 None %26
%34 = OpFunctionParameter %4
%35 = OpFunctionParameter %6
%33 = OpLabel
OpBranch %37
%37 = OpLabel
%38 = OpAccessChain %28 %11 %20 %34
%39 = OpLoad %6 %38
%40 = OpIAdd %6 %39 %35
%41 = OpAccessChain %28 %11 %20 %34
OpStore %41 %40
OpReturn
OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 99
; Bound: 101
OpCapability Shader
OpCapability ImageQuery
OpCapability Linkage
@ -18,11 +18,11 @@ OpName %26 "in_uniform"
OpName %29 "image_2d_array"
OpName %31 "in_workgroup"
OpName %33 "in_private"
OpName %35 "in_function"
OpName %38 "c"
OpName %39 "i"
OpName %40 "l"
OpName %41 "mock_function"
OpName %36 "in_function"
OpName %40 "c"
OpName %41 "i"
OpName %42 "l"
OpName %43 "mock_function"
OpDecorate %14 ArrayStride 16
OpMemberDecorate %15 0 Offset 0
OpDecorate %16 ArrayStride 16
@ -73,76 +73,78 @@ OpDecorate %29 Binding 2
%32 = OpTypePointer Workgroup %19
%31 = OpVariable %32 Workgroup
%34 = OpTypePointer Private %20
%33 = OpVariable %34 Private
%36 = OpTypePointer Function %22
%42 = OpTypeFunction %13 %21 %4 %4
%43 = OpTypePointer StorageBuffer %15
%45 = OpTypeInt 32 0
%44 = OpConstant %45 0
%47 = OpTypePointer Uniform %17
%54 = OpTypePointer StorageBuffer %14
%55 = OpTypePointer StorageBuffer %13
%58 = OpTypePointer Uniform %16
%59 = OpTypePointer Uniform %13
%63 = OpTypeVector %4 3
%65 = OpTypeBool
%66 = OpConstantNull %13
%72 = OpTypeVector %65 3
%79 = OpTypePointer Workgroup %10
%80 = OpConstant %45 29
%86 = OpTypePointer Private %10
%87 = OpConstant %45 39
%93 = OpTypePointer Function %13
%94 = OpConstant %45 1
%41 = OpFunction %13 None %42
%38 = OpFunctionParameter %21
%39 = OpFunctionParameter %4
%40 = OpFunctionParameter %4
%37 = OpLabel
%35 = OpVariable %36 Function
%46 = OpAccessChain %43 %23 %44
%48 = OpAccessChain %47 %26 %44
%49 = OpLoad %18 %29
OpBranch %50
%50 = OpLabel
%51 = OpCompositeConstruct %13 %9 %11 %11 %12
%52 = OpCompositeConstruct %13 %11 %9 %11 %12
%53 = OpCompositeConstruct %22 %51 %52
OpStore %35 %53
%56 = OpAccessChain %55 %46 %44 %39
%57 = OpLoad %13 %56
%60 = OpAccessChain %59 %48 %44 %39
%61 = OpLoad %13 %60
%62 = OpFAdd %13 %57 %61
%64 = OpCompositeConstruct %63 %38 %39
%67 = OpImageQueryLevels %4 %49
%68 = OpULessThan %65 %40 %67
OpSelectionMerge %69 None
OpBranchConditional %68 %70 %69
%70 = OpLabel
%71 = OpImageQuerySizeLod %63 %49 %40
%73 = OpULessThan %72 %64 %71
%74 = OpAll %65 %73
OpBranchConditional %74 %75 %69
%75 = OpLabel
%76 = OpImageFetch %13 %49 %64 Lod %40
OpBranch %69
%69 = OpLabel
%77 = OpPhi %13 %66 %50 %66 %70 %76 %75
%78 = OpFAdd %13 %62 %77
%81 = OpExtInst %45 %1 UMin %39 %80
%82 = OpAccessChain %79 %31 %81
%83 = OpLoad %10 %82
%84 = OpCompositeConstruct %13 %83 %83 %83 %83
%85 = OpFAdd %13 %78 %84
%88 = OpExtInst %45 %1 UMin %39 %87
%89 = OpAccessChain %86 %33 %88
%90 = OpLoad %10 %89
%91 = OpCompositeConstruct %13 %90 %90 %90 %90
%92 = OpFAdd %13 %85 %91
%95 = OpExtInst %45 %1 UMin %39 %94
%96 = OpAccessChain %93 %35 %95
%97 = OpLoad %13 %96
%98 = OpFAdd %13 %92 %97
OpReturnValue %98
%35 = OpConstantNull %20
%33 = OpVariable %34 Private %35
%37 = OpTypePointer Function %22
%38 = OpConstantNull %22
%44 = OpTypeFunction %13 %21 %4 %4
%45 = OpTypePointer StorageBuffer %15
%47 = OpTypeInt 32 0
%46 = OpConstant %47 0
%49 = OpTypePointer Uniform %17
%56 = OpTypePointer StorageBuffer %14
%57 = OpTypePointer StorageBuffer %13
%60 = OpTypePointer Uniform %16
%61 = OpTypePointer Uniform %13
%65 = OpTypeVector %4 3
%67 = OpTypeBool
%68 = OpConstantNull %13
%74 = OpTypeVector %67 3
%81 = OpTypePointer Workgroup %10
%82 = OpConstant %47 29
%88 = OpTypePointer Private %10
%89 = OpConstant %47 39
%95 = OpTypePointer Function %13
%96 = OpConstant %47 1
%43 = OpFunction %13 None %44
%40 = OpFunctionParameter %21
%41 = OpFunctionParameter %4
%42 = OpFunctionParameter %4
%39 = OpLabel
%36 = OpVariable %37 Function %38
%48 = OpAccessChain %45 %23 %46
%50 = OpAccessChain %49 %26 %46
%51 = OpLoad %18 %29
OpBranch %52
%52 = OpLabel
%53 = OpCompositeConstruct %13 %9 %11 %11 %12
%54 = OpCompositeConstruct %13 %11 %9 %11 %12
%55 = OpCompositeConstruct %22 %53 %54
OpStore %36 %55
%58 = OpAccessChain %57 %48 %46 %41
%59 = OpLoad %13 %58
%62 = OpAccessChain %61 %50 %46 %41
%63 = OpLoad %13 %62
%64 = OpFAdd %13 %59 %63
%66 = OpCompositeConstruct %65 %40 %41
%69 = OpImageQueryLevels %4 %51
%70 = OpULessThan %67 %42 %69
OpSelectionMerge %71 None
OpBranchConditional %70 %72 %71
%72 = OpLabel
%73 = OpImageQuerySizeLod %65 %51 %42
%75 = OpULessThan %74 %66 %73
%76 = OpAll %67 %75
OpBranchConditional %76 %77 %71
%77 = OpLabel
%78 = OpImageFetch %13 %51 %66 Lod %42
OpBranch %71
%71 = OpLabel
%79 = OpPhi %13 %68 %52 %68 %72 %78 %77
%80 = OpFAdd %13 %64 %79
%83 = OpExtInst %47 %1 UMin %41 %82
%84 = OpAccessChain %81 %31 %83
%85 = OpLoad %10 %84
%86 = OpCompositeConstruct %13 %85 %85 %85 %85
%87 = OpFAdd %13 %80 %86
%90 = OpExtInst %47 %1 UMin %41 %89
%91 = OpAccessChain %88 %33 %90
%92 = OpLoad %10 %91
%93 = OpCompositeConstruct %13 %92 %92 %92 %92
%94 = OpFAdd %13 %87 %93
%97 = OpExtInst %47 %1 UMin %41 %96
%98 = OpAccessChain %95 %36 %97
%99 = OpLoad %13 %98
%100 = OpFAdd %13 %94 %99
OpReturnValue %100
OpFunctionEnd

View File

@ -1,16 +1,16 @@
; SPIR-V
; Version: 1.2
; Generator: rspirv
; Bound: 261
; Bound: 262
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %93 "vs_main" %83 %86 %88 %90 %92
OpEntryPoint Fragment %147 "fs_main" %138 %141 %144 %146
OpEntryPoint Fragment %211 "fs_main_without_storage" %204 %206 %208 %210
OpExecutionMode %147 OriginUpperLeft
OpExecutionMode %211 OriginUpperLeft
OpEntryPoint Vertex %94 "vs_main" %84 %87 %89 %91 %93
OpEntryPoint Fragment %148 "fs_main" %139 %142 %145 %147
OpEntryPoint Fragment %212 "fs_main_without_storage" %205 %207 %209 %211
OpExecutionMode %148 OriginUpperLeft
OpExecutionMode %212 OriginUpperLeft
OpSource GLSL 450
OpName %11 "c_max_lights"
OpMemberName %18 0 "view_proj"
@ -38,24 +38,24 @@ OpName %48 "light_id"
OpName %49 "homogeneous_coords"
OpName %50 "fetch_shadow"
OpName %80 "out"
OpName %83 "position"
OpName %86 "normal"
OpName %88 "proj_position"
OpName %90 "world_normal"
OpName %92 "world_position"
OpName %93 "vs_main"
OpName %133 "color"
OpName %134 "i"
OpName %138 "proj_position"
OpName %141 "world_normal"
OpName %144 "world_position"
OpName %147 "fs_main"
OpName %200 "color"
OpName %201 "i"
OpName %204 "proj_position"
OpName %206 "world_normal"
OpName %208 "world_position"
OpName %211 "fs_main_without_storage"
OpName %84 "position"
OpName %87 "normal"
OpName %89 "proj_position"
OpName %91 "world_normal"
OpName %93 "world_position"
OpName %94 "vs_main"
OpName %134 "color"
OpName %135 "i"
OpName %139 "proj_position"
OpName %142 "world_normal"
OpName %145 "world_position"
OpName %148 "fs_main"
OpName %201 "color"
OpName %202 "i"
OpName %205 "proj_position"
OpName %207 "world_normal"
OpName %209 "world_position"
OpName %212 "fs_main_without_storage"
OpMemberDecorate %18 0 Offset 0
OpMemberDecorate %18 0 ColMajor
OpMemberDecorate %18 0 MatrixStride 16
@ -95,21 +95,21 @@ OpDecorate %43 DescriptorSet 0
OpDecorate %43 Binding 2
OpDecorate %45 DescriptorSet 0
OpDecorate %45 Binding 3
OpDecorate %83 Location 0
OpDecorate %83 Flat
OpDecorate %86 Location 1
OpDecorate %86 Flat
OpDecorate %88 BuiltIn Position
OpDecorate %90 Location 0
OpDecorate %92 Location 1
OpDecorate %138 BuiltIn FragCoord
OpDecorate %141 Location 0
OpDecorate %144 Location 1
OpDecorate %146 Location 0
OpDecorate %204 BuiltIn FragCoord
OpDecorate %206 Location 0
OpDecorate %208 Location 1
OpDecorate %210 Location 0
OpDecorate %84 Location 0
OpDecorate %84 Flat
OpDecorate %87 Location 1
OpDecorate %87 Flat
OpDecorate %89 BuiltIn Position
OpDecorate %91 Location 0
OpDecorate %93 Location 1
OpDecorate %139 BuiltIn FragCoord
OpDecorate %142 Location 0
OpDecorate %145 Location 1
OpDecorate %147 Location 0
OpDecorate %205 BuiltIn FragCoord
OpDecorate %207 Location 0
OpDecorate %209 Location 1
OpDecorate %211 Location 0
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpConstant %4 10
@ -163,37 +163,38 @@ OpDecorate %210 Location 0
%60 = OpTypeBool
%75 = OpTypeSampledImage %27
%81 = OpTypePointer Function %21
%84 = OpTypePointer Input %22
%83 = OpVariable %84 Input
%86 = OpVariable %84 Input
%89 = OpTypePointer Output %16
%88 = OpVariable %89 Output
%91 = OpTypePointer Output %20
%90 = OpVariable %91 Output
%92 = OpVariable %89 Output
%94 = OpTypeFunction %2
%98 = OpTypePointer Uniform %15
%105 = OpTypePointer Function %20
%113 = OpTypeVector %4 3
%118 = OpTypePointer Function %16
%119 = OpConstant %12 2
%127 = OpTypePointer Output %6
%135 = OpTypePointer Function %12
%139 = OpTypePointer Input %16
%138 = OpVariable %139 Input
%142 = OpTypePointer Input %20
%141 = OpVariable %142 Input
%144 = OpVariable %139 Input
%146 = OpVariable %89 Output
%161 = OpTypePointer Uniform %17
%162 = OpTypePointer Uniform %12
%170 = OpTypePointer StorageBuffer %24
%196 = OpTypePointer Uniform %16
%204 = OpVariable %139 Input
%206 = OpVariable %142 Input
%208 = OpVariable %139 Input
%210 = OpVariable %89 Output
%232 = OpTypePointer Uniform %24
%82 = OpConstantNull %21
%85 = OpTypePointer Input %22
%84 = OpVariable %85 Input
%87 = OpVariable %85 Input
%90 = OpTypePointer Output %16
%89 = OpVariable %90 Output
%92 = OpTypePointer Output %20
%91 = OpVariable %92 Output
%93 = OpVariable %90 Output
%95 = OpTypeFunction %2
%99 = OpTypePointer Uniform %15
%106 = OpTypePointer Function %20
%114 = OpTypeVector %4 3
%119 = OpTypePointer Function %16
%120 = OpConstant %12 2
%128 = OpTypePointer Output %6
%136 = OpTypePointer Function %12
%140 = OpTypePointer Input %16
%139 = OpVariable %140 Input
%143 = OpTypePointer Input %20
%142 = OpVariable %143 Input
%145 = OpVariable %140 Input
%147 = OpVariable %90 Output
%162 = OpTypePointer Uniform %17
%163 = OpTypePointer Uniform %12
%171 = OpTypePointer StorageBuffer %24
%197 = OpTypePointer Uniform %16
%205 = OpVariable %140 Input
%207 = OpVariable %143 Input
%209 = OpVariable %140 Input
%211 = OpVariable %90 Output
%233 = OpTypePointer Uniform %24
%50 = OpFunction %6 None %51
%48 = OpFunctionParameter %12
%49 = OpFunctionParameter %16
@ -226,190 +227,190 @@ OpReturnValue %7
%79 = OpImageSampleDrefExplicitLod %6 %78 %77 %74 Lod %5
OpReturnValue %79
OpFunctionEnd
%93 = OpFunction %2 None %94
%82 = OpLabel
%80 = OpVariable %81 Function
%85 = OpLoad %22 %83
%87 = OpLoad %22 %86
%95 = OpAccessChain %55 %31 %13
%96 = OpAccessChain %54 %34 %13
OpBranch %97
%97 = OpLabel
%99 = OpAccessChain %98 %96 %13
%100 = OpLoad %15 %99
%101 = OpAccessChain %98 %96 %13
%102 = OpLoad %15 %101
%103 = OpConvertSToF %16 %85
%104 = OpMatrixTimesVector %16 %102 %103
%106 = OpCompositeExtract %16 %100 0
%107 = OpVectorShuffle %20 %106 %106 0 1 2
%108 = OpCompositeExtract %16 %100 1
%109 = OpVectorShuffle %20 %108 %108 0 1 2
%110 = OpCompositeExtract %16 %100 2
%111 = OpVectorShuffle %20 %110 %110 0 1 2
%112 = OpCompositeConstruct %23 %107 %109 %111
%114 = OpVectorShuffle %113 %87 %87 0 1 2
%115 = OpConvertSToF %20 %114
%116 = OpMatrixTimesVector %20 %112 %115
%117 = OpAccessChain %105 %80 %14
OpStore %117 %116
%120 = OpAccessChain %118 %80 %119
OpStore %120 %104
%121 = OpAccessChain %98 %95 %13
%122 = OpLoad %15 %121
%123 = OpMatrixTimesVector %16 %122 %104
%124 = OpAccessChain %118 %80 %13
OpStore %124 %123
%125 = OpLoad %21 %80
%126 = OpCompositeExtract %16 %125 0
OpStore %88 %126
%128 = OpAccessChain %127 %88 %14
%129 = OpLoad %6 %128
%130 = OpFNegate %6 %129
OpStore %128 %130
%131 = OpCompositeExtract %20 %125 1
OpStore %90 %131
%132 = OpCompositeExtract %16 %125 2
OpStore %92 %132
%94 = OpFunction %2 None %95
%83 = OpLabel
%80 = OpVariable %81 Function %82
%86 = OpLoad %22 %84
%88 = OpLoad %22 %87
%96 = OpAccessChain %55 %31 %13
%97 = OpAccessChain %54 %34 %13
OpBranch %98
%98 = OpLabel
%100 = OpAccessChain %99 %97 %13
%101 = OpLoad %15 %100
%102 = OpAccessChain %99 %97 %13
%103 = OpLoad %15 %102
%104 = OpConvertSToF %16 %86
%105 = OpMatrixTimesVector %16 %103 %104
%107 = OpCompositeExtract %16 %101 0
%108 = OpVectorShuffle %20 %107 %107 0 1 2
%109 = OpCompositeExtract %16 %101 1
%110 = OpVectorShuffle %20 %109 %109 0 1 2
%111 = OpCompositeExtract %16 %101 2
%112 = OpVectorShuffle %20 %111 %111 0 1 2
%113 = OpCompositeConstruct %23 %108 %110 %112
%115 = OpVectorShuffle %114 %88 %88 0 1 2
%116 = OpConvertSToF %20 %115
%117 = OpMatrixTimesVector %20 %113 %116
%118 = OpAccessChain %106 %80 %14
OpStore %118 %117
%121 = OpAccessChain %119 %80 %120
OpStore %121 %105
%122 = OpAccessChain %99 %96 %13
%123 = OpLoad %15 %122
%124 = OpMatrixTimesVector %16 %123 %105
%125 = OpAccessChain %119 %80 %13
OpStore %125 %124
%126 = OpLoad %21 %80
%127 = OpCompositeExtract %16 %126 0
OpStore %89 %127
%129 = OpAccessChain %128 %89 %14
%130 = OpLoad %6 %129
%131 = OpFNegate %6 %130
OpStore %129 %131
%132 = OpCompositeExtract %20 %126 1
OpStore %91 %132
%133 = OpCompositeExtract %16 %126 2
OpStore %93 %133
OpReturn
OpFunctionEnd
%147 = OpFunction %2 None %94
%136 = OpLabel
%133 = OpVariable %105 Function %30
%134 = OpVariable %135 Function %13
%140 = OpLoad %16 %138
%143 = OpLoad %20 %141
%145 = OpLoad %16 %144
%137 = OpCompositeConstruct %21 %140 %143 %145
%148 = OpAccessChain %55 %31 %13
%149 = OpAccessChain %54 %34 %13
%150 = OpAccessChain %57 %37 %13
%151 = OpLoad %27 %43
%152 = OpLoad %28 %45
OpBranch %153
%153 = OpLabel
%154 = OpCompositeExtract %20 %137 1
%155 = OpExtInst %20 %1 Normalize %154
OpBranch %156
%156 = OpLabel
OpLoopMerge %157 %159 None
OpBranch %158
%158 = OpLabel
%160 = OpLoad %12 %134
%163 = OpAccessChain %162 %148 %14 %13
%164 = OpLoad %12 %163
%165 = OpExtInst %12 %1 UMin %164 %11
%166 = OpULessThan %60 %160 %165
OpSelectionMerge %167 None
OpBranchConditional %166 %167 %168
%168 = OpLabel
%148 = OpFunction %2 None %95
%137 = OpLabel
%134 = OpVariable %106 Function %30
%135 = OpVariable %136 Function %13
%141 = OpLoad %16 %139
%144 = OpLoad %20 %142
%146 = OpLoad %16 %145
%138 = OpCompositeConstruct %21 %141 %144 %146
%149 = OpAccessChain %55 %31 %13
%150 = OpAccessChain %54 %34 %13
%151 = OpAccessChain %57 %37 %13
%152 = OpLoad %27 %43
%153 = OpLoad %28 %45
OpBranch %154
%154 = OpLabel
%155 = OpCompositeExtract %20 %138 1
%156 = OpExtInst %20 %1 Normalize %155
OpBranch %157
%167 = OpLabel
%169 = OpLoad %12 %134
%171 = OpAccessChain %170 %150 %169
%172 = OpLoad %24 %171
%173 = OpLoad %12 %134
%174 = OpCompositeExtract %15 %172 0
%175 = OpCompositeExtract %16 %137 2
%176 = OpMatrixTimesVector %16 %174 %175
%177 = OpFunctionCall %6 %50 %173 %176
%178 = OpCompositeExtract %16 %172 1
%179 = OpVectorShuffle %20 %178 %178 0 1 2
%180 = OpCompositeExtract %16 %137 2
%181 = OpVectorShuffle %20 %180 %180 0 1 2
%182 = OpFSub %20 %179 %181
%183 = OpExtInst %20 %1 Normalize %182
%184 = OpDot %6 %155 %183
%185 = OpExtInst %6 %1 FMax %5 %184
%186 = OpLoad %20 %133
%187 = OpFMul %6 %177 %185
%188 = OpCompositeExtract %16 %172 2
%189 = OpVectorShuffle %20 %188 %188 0 1 2
%190 = OpVectorTimesScalar %20 %189 %187
%191 = OpFAdd %20 %186 %190
OpStore %133 %191
%157 = OpLabel
OpLoopMerge %158 %160 None
OpBranch %159
%159 = OpLabel
%192 = OpLoad %12 %134
%193 = OpIAdd %12 %192 %14
OpStore %134 %193
OpBranch %156
%157 = OpLabel
%194 = OpLoad %20 %133
%195 = OpCompositeConstruct %16 %194 %7
%197 = OpAccessChain %196 %149 %14
%198 = OpLoad %16 %197
%199 = OpFMul %16 %195 %198
OpStore %146 %199
%161 = OpLoad %12 %135
%164 = OpAccessChain %163 %149 %14 %13
%165 = OpLoad %12 %164
%166 = OpExtInst %12 %1 UMin %165 %11
%167 = OpULessThan %60 %161 %166
OpSelectionMerge %168 None
OpBranchConditional %167 %168 %169
%169 = OpLabel
OpBranch %158
%168 = OpLabel
%170 = OpLoad %12 %135
%172 = OpAccessChain %171 %151 %170
%173 = OpLoad %24 %172
%174 = OpLoad %12 %135
%175 = OpCompositeExtract %15 %173 0
%176 = OpCompositeExtract %16 %138 2
%177 = OpMatrixTimesVector %16 %175 %176
%178 = OpFunctionCall %6 %50 %174 %177
%179 = OpCompositeExtract %16 %173 1
%180 = OpVectorShuffle %20 %179 %179 0 1 2
%181 = OpCompositeExtract %16 %138 2
%182 = OpVectorShuffle %20 %181 %181 0 1 2
%183 = OpFSub %20 %180 %182
%184 = OpExtInst %20 %1 Normalize %183
%185 = OpDot %6 %156 %184
%186 = OpExtInst %6 %1 FMax %5 %185
%187 = OpLoad %20 %134
%188 = OpFMul %6 %178 %186
%189 = OpCompositeExtract %16 %173 2
%190 = OpVectorShuffle %20 %189 %189 0 1 2
%191 = OpVectorTimesScalar %20 %190 %188
%192 = OpFAdd %20 %187 %191
OpStore %134 %192
OpBranch %160
%160 = OpLabel
%193 = OpLoad %12 %135
%194 = OpIAdd %12 %193 %14
OpStore %135 %194
OpBranch %157
%158 = OpLabel
%195 = OpLoad %20 %134
%196 = OpCompositeConstruct %16 %195 %7
%198 = OpAccessChain %197 %150 %14
%199 = OpLoad %16 %198
%200 = OpFMul %16 %196 %199
OpStore %147 %200
OpReturn
OpFunctionEnd
%211 = OpFunction %2 None %94
%202 = OpLabel
%200 = OpVariable %105 Function %30
%201 = OpVariable %135 Function %13
%205 = OpLoad %16 %204
%207 = OpLoad %20 %206
%209 = OpLoad %16 %208
%203 = OpCompositeConstruct %21 %205 %207 %209
%212 = OpAccessChain %55 %31 %13
%213 = OpAccessChain %54 %34 %13
%214 = OpAccessChain %56 %40 %13
%215 = OpLoad %27 %43
%216 = OpLoad %28 %45
OpBranch %217
%217 = OpLabel
%218 = OpCompositeExtract %20 %203 1
%219 = OpExtInst %20 %1 Normalize %218
OpBranch %220
%220 = OpLabel
OpLoopMerge %221 %223 None
OpBranch %222
%222 = OpLabel
%224 = OpLoad %12 %201
%225 = OpAccessChain %162 %212 %14 %13
%226 = OpLoad %12 %225
%227 = OpExtInst %12 %1 UMin %226 %11
%228 = OpULessThan %60 %224 %227
OpSelectionMerge %229 None
OpBranchConditional %228 %229 %230
%230 = OpLabel
%212 = OpFunction %2 None %95
%203 = OpLabel
%201 = OpVariable %106 Function %30
%202 = OpVariable %136 Function %13
%206 = OpLoad %16 %205
%208 = OpLoad %20 %207
%210 = OpLoad %16 %209
%204 = OpCompositeConstruct %21 %206 %208 %210
%213 = OpAccessChain %55 %31 %13
%214 = OpAccessChain %54 %34 %13
%215 = OpAccessChain %56 %40 %13
%216 = OpLoad %27 %43
%217 = OpLoad %28 %45
OpBranch %218
%218 = OpLabel
%219 = OpCompositeExtract %20 %204 1
%220 = OpExtInst %20 %1 Normalize %219
OpBranch %221
%229 = OpLabel
%231 = OpLoad %12 %201
%233 = OpAccessChain %232 %214 %231
%234 = OpLoad %24 %233
%235 = OpLoad %12 %201
%236 = OpCompositeExtract %15 %234 0
%237 = OpCompositeExtract %16 %203 2
%238 = OpMatrixTimesVector %16 %236 %237
%239 = OpFunctionCall %6 %50 %235 %238
%240 = OpCompositeExtract %16 %234 1
%241 = OpVectorShuffle %20 %240 %240 0 1 2
%242 = OpCompositeExtract %16 %203 2
%243 = OpVectorShuffle %20 %242 %242 0 1 2
%244 = OpFSub %20 %241 %243
%245 = OpExtInst %20 %1 Normalize %244
%246 = OpDot %6 %219 %245
%247 = OpExtInst %6 %1 FMax %5 %246
%248 = OpLoad %20 %200
%249 = OpFMul %6 %239 %247
%250 = OpCompositeExtract %16 %234 2
%251 = OpVectorShuffle %20 %250 %250 0 1 2
%252 = OpVectorTimesScalar %20 %251 %249
%253 = OpFAdd %20 %248 %252
OpStore %200 %253
%221 = OpLabel
OpLoopMerge %222 %224 None
OpBranch %223
%223 = OpLabel
%254 = OpLoad %12 %201
%255 = OpIAdd %12 %254 %14
OpStore %201 %255
OpBranch %220
%221 = OpLabel
%256 = OpLoad %20 %200
%257 = OpCompositeConstruct %16 %256 %7
%258 = OpAccessChain %196 %213 %14
%259 = OpLoad %16 %258
%260 = OpFMul %16 %257 %259
OpStore %210 %260
%225 = OpLoad %12 %202
%226 = OpAccessChain %163 %213 %14 %13
%227 = OpLoad %12 %226
%228 = OpExtInst %12 %1 UMin %227 %11
%229 = OpULessThan %60 %225 %228
OpSelectionMerge %230 None
OpBranchConditional %229 %230 %231
%231 = OpLabel
OpBranch %222
%230 = OpLabel
%232 = OpLoad %12 %202
%234 = OpAccessChain %233 %215 %232
%235 = OpLoad %24 %234
%236 = OpLoad %12 %202
%237 = OpCompositeExtract %15 %235 0
%238 = OpCompositeExtract %16 %204 2
%239 = OpMatrixTimesVector %16 %237 %238
%240 = OpFunctionCall %6 %50 %236 %239
%241 = OpCompositeExtract %16 %235 1
%242 = OpVectorShuffle %20 %241 %241 0 1 2
%243 = OpCompositeExtract %16 %204 2
%244 = OpVectorShuffle %20 %243 %243 0 1 2
%245 = OpFSub %20 %242 %244
%246 = OpExtInst %20 %1 Normalize %245
%247 = OpDot %6 %220 %246
%248 = OpExtInst %6 %1 FMax %5 %247
%249 = OpLoad %20 %201
%250 = OpFMul %6 %240 %248
%251 = OpCompositeExtract %16 %235 2
%252 = OpVectorShuffle %20 %251 %251 0 1 2
%253 = OpVectorTimesScalar %20 %252 %250
%254 = OpFAdd %20 %249 %253
OpStore %201 %254
OpBranch %224
%224 = OpLabel
%255 = OpLoad %12 %202
%256 = OpIAdd %12 %255 %14
OpStore %202 %256
OpBranch %221
%222 = OpLabel
%257 = OpLoad %20 %201
%258 = OpCompositeConstruct %16 %257 %7
%259 = OpAccessChain %197 %214 %14
%260 = OpLoad %16 %259
%261 = OpFMul %16 %258 %260
OpStore %211 %261
OpReturn
OpFunctionEnd

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 96
; Bound: 98
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %37 "vs_main" %30 %33 %35
OpEntryPoint Fragment %88 "fs_main" %81 %84 %87
OpExecutionMode %88 OriginUpperLeft
OpEntryPoint Vertex %39 "vs_main" %32 %35 %37
OpEntryPoint Fragment %90 "fs_main" %83 %86 %89
OpExecutionMode %90 OriginUpperLeft
OpMemberDecorate %12 0 Offset 0
OpMemberDecorate %12 1 Offset 16
OpMemberDecorate %14 0 Offset 0
@ -24,12 +24,12 @@ OpDecorate %22 DescriptorSet 0
OpDecorate %22 Binding 1
OpDecorate %24 DescriptorSet 0
OpDecorate %24 Binding 2
OpDecorate %30 BuiltIn VertexIndex
OpDecorate %33 BuiltIn Position
OpDecorate %35 Location 0
OpDecorate %81 BuiltIn FragCoord
OpDecorate %84 Location 0
OpDecorate %87 Location 0
OpDecorate %32 BuiltIn VertexIndex
OpDecorate %35 BuiltIn Position
OpDecorate %37 Location 0
OpDecorate %83 BuiltIn FragCoord
OpDecorate %86 Location 0
OpDecorate %89 Location 0
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpConstant %4 2
@ -55,83 +55,85 @@ OpDecorate %87 Location 0
%25 = OpTypePointer UniformConstant %18
%24 = OpVariable %25 UniformConstant
%27 = OpTypePointer Function %4
%31 = OpTypePointer Input %15
%30 = OpVariable %31 Input
%34 = OpTypePointer Output %10
%33 = OpVariable %34 Output
%36 = OpTypePointer Output %11
%28 = OpConstantNull %4
%30 = OpConstantNull %4
%33 = OpTypePointer Input %15
%32 = OpVariable %33 Input
%36 = OpTypePointer Output %10
%35 = OpVariable %36 Output
%38 = OpTypeFunction %2
%39 = OpTypePointer Uniform %14
%40 = OpConstant %15 0
%56 = OpTypePointer Uniform %13
%57 = OpTypePointer Uniform %10
%58 = OpConstant %15 1
%65 = OpConstant %15 2
%82 = OpTypePointer Input %10
%81 = OpVariable %82 Input
%85 = OpTypePointer Input %11
%84 = OpVariable %85 Input
%87 = OpVariable %34 Output
%93 = OpTypeSampledImage %17
%37 = OpFunction %2 None %38
%29 = OpLabel
%26 = OpVariable %27 Function
%28 = OpVariable %27 Function
%32 = OpLoad %15 %30
%41 = OpAccessChain %39 %19 %40
OpBranch %42
%42 = OpLabel
%43 = OpBitcast %4 %32
%44 = OpSDiv %4 %43 %3
OpStore %26 %44
%45 = OpBitcast %4 %32
%46 = OpBitwiseAnd %4 %45 %5
OpStore %28 %46
%47 = OpLoad %4 %26
%48 = OpConvertSToF %7 %47
%49 = OpFMul %7 %48 %6
%50 = OpFSub %7 %49 %8
%51 = OpLoad %4 %28
%52 = OpConvertSToF %7 %51
%53 = OpFMul %7 %52 %6
%54 = OpFSub %7 %53 %8
%55 = OpCompositeConstruct %10 %50 %54 %9 %8
%59 = OpAccessChain %57 %41 %58 %40
%60 = OpLoad %10 %59
%61 = OpVectorShuffle %11 %60 %60 0 1 2
%62 = OpAccessChain %57 %41 %58 %58
%63 = OpLoad %10 %62
%64 = OpVectorShuffle %11 %63 %63 0 1 2
%66 = OpAccessChain %57 %41 %58 %65
%67 = OpLoad %10 %66
%68 = OpVectorShuffle %11 %67 %67 0 1 2
%69 = OpCompositeConstruct %16 %61 %64 %68
%70 = OpTranspose %16 %69
%71 = OpAccessChain %56 %41 %40
%72 = OpLoad %13 %71
%73 = OpMatrixTimesVector %10 %72 %55
%74 = OpVectorShuffle %11 %73 %73 0 1 2
%75 = OpMatrixTimesVector %11 %70 %74
%76 = OpCompositeConstruct %12 %55 %75
%77 = OpCompositeExtract %10 %76 0
OpStore %33 %77
%78 = OpCompositeExtract %11 %76 1
OpStore %35 %78
%38 = OpTypePointer Output %11
%37 = OpVariable %38 Output
%40 = OpTypeFunction %2
%41 = OpTypePointer Uniform %14
%42 = OpConstant %15 0
%58 = OpTypePointer Uniform %13
%59 = OpTypePointer Uniform %10
%60 = OpConstant %15 1
%67 = OpConstant %15 2
%84 = OpTypePointer Input %10
%83 = OpVariable %84 Input
%87 = OpTypePointer Input %11
%86 = OpVariable %87 Input
%89 = OpVariable %36 Output
%95 = OpTypeSampledImage %17
%39 = OpFunction %2 None %40
%31 = OpLabel
%26 = OpVariable %27 Function %28
%29 = OpVariable %27 Function %30
%34 = OpLoad %15 %32
%43 = OpAccessChain %41 %19 %42
OpBranch %44
%44 = OpLabel
%45 = OpBitcast %4 %34
%46 = OpSDiv %4 %45 %3
OpStore %26 %46
%47 = OpBitcast %4 %34
%48 = OpBitwiseAnd %4 %47 %5
OpStore %29 %48
%49 = OpLoad %4 %26
%50 = OpConvertSToF %7 %49
%51 = OpFMul %7 %50 %6
%52 = OpFSub %7 %51 %8
%53 = OpLoad %4 %29
%54 = OpConvertSToF %7 %53
%55 = OpFMul %7 %54 %6
%56 = OpFSub %7 %55 %8
%57 = OpCompositeConstruct %10 %52 %56 %9 %8
%61 = OpAccessChain %59 %43 %60 %42
%62 = OpLoad %10 %61
%63 = OpVectorShuffle %11 %62 %62 0 1 2
%64 = OpAccessChain %59 %43 %60 %60
%65 = OpLoad %10 %64
%66 = OpVectorShuffle %11 %65 %65 0 1 2
%68 = OpAccessChain %59 %43 %60 %67
%69 = OpLoad %10 %68
%70 = OpVectorShuffle %11 %69 %69 0 1 2
%71 = OpCompositeConstruct %16 %63 %66 %70
%72 = OpTranspose %16 %71
%73 = OpAccessChain %58 %43 %42
%74 = OpLoad %13 %73
%75 = OpMatrixTimesVector %10 %74 %57
%76 = OpVectorShuffle %11 %75 %75 0 1 2
%77 = OpMatrixTimesVector %11 %72 %76
%78 = OpCompositeConstruct %12 %57 %77
%79 = OpCompositeExtract %10 %78 0
OpStore %35 %79
%80 = OpCompositeExtract %11 %78 1
OpStore %37 %80
OpReturn
OpFunctionEnd
%88 = OpFunction %2 None %38
%79 = OpLabel
%83 = OpLoad %10 %81
%86 = OpLoad %11 %84
%80 = OpCompositeConstruct %12 %83 %86
%89 = OpLoad %17 %22
%90 = OpLoad %18 %24
OpBranch %91
%91 = OpLabel
%92 = OpCompositeExtract %11 %80 1
%94 = OpSampledImage %93 %89 %90
%95 = OpImageSampleImplicitLod %10 %94 %92
OpStore %87 %95
%90 = OpFunction %2 None %40
%81 = OpLabel
%85 = OpLoad %10 %83
%88 = OpLoad %11 %86
%82 = OpCompositeConstruct %12 %85 %88
%91 = OpLoad %17 %22
%92 = OpLoad %18 %24
OpBranch %93
%93 = OpLabel
%94 = OpCompositeExtract %11 %82 1
%96 = OpSampledImage %95 %91 %92
%97 = OpImageSampleImplicitLod %10 %96 %94
OpStore %89 %97
OpReturn
OpFunctionEnd