From 239bbbbed44a5c9e74399af1ae6d38b54766f28d Mon Sep 17 00:00:00 2001 From: teoxoy <28601907+teoxoy@users.noreply.github.com> Date: Fri, 29 Apr 2022 21:26:43 +0200 Subject: [PATCH] [spv-out] zero init variables in function and private address spaces --- src/back/spv/writer.rs | 12 +- tests/out/spv/access.spvasm | 429 ++++++------- tests/out/spv/binding-arrays.spvasm | 932 ++++++++++++++-------------- tests/out/spv/bits.spvasm | 378 +++++------ tests/out/spv/boids.spvasm | 511 +++++++-------- tests/out/spv/collatz.spvasm | 139 +++-- tests/out/spv/control-flow.spvasm | 109 ++-- tests/out/spv/interpolate.spvasm | 313 +++++----- tests/out/spv/operators.spvasm | 821 ++++++++++++------------ tests/out/spv/pointers.spvasm | 85 +-- tests/out/spv/policy-mix.spvasm | 158 ++--- tests/out/spv/shadow.spvasm | 491 +++++++-------- tests/out/spv/skybox.spvasm | 172 ++--- 13 files changed, 2295 insertions(+), 2255 deletions(-) diff --git a/src/back/spv/writer.rs b/src/back/spv/writer.rs index a629d5beb..f4d9e0e60 100644 --- a/src/back/spv/writer.rs +++ b/src/back/spv/writer.rs @@ -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) diff --git a/tests/out/spv/access.spvasm b/tests/out/spv/access.spvasm index fa5c64395..68f296d42 100644 --- a/tests/out/spv/access.spvasm +++ b/tests/out/spv/access.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/binding-arrays.spvasm b/tests/out/spv/binding-arrays.spvasm index f68a755cc..a420eba46 100644 --- a/tests/out/spv/binding-arrays.spvasm +++ b/tests/out/spv/binding-arrays.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/bits.spvasm b/tests/out/spv/bits.spvasm index ddd71d0b7..c705d8276 100644 --- a/tests/out/spv/bits.spvasm +++ b/tests/out/spv/bits.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/boids.spvasm b/tests/out/spv/boids.spvasm index c8f589488..887cdb6ad 100644 --- a/tests/out/spv/boids.spvasm +++ b/tests/out/spv/boids.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/collatz.spvasm b/tests/out/spv/collatz.spvasm index 2980ef830..6e6483da1 100644 --- a/tests/out/spv/collatz.spvasm +++ b/tests/out/spv/collatz.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/control-flow.spvasm b/tests/out/spv/control-flow.spvasm index 1a34638d8..93da80103 100644 --- a/tests/out/spv/control-flow.spvasm +++ b/tests/out/spv/control-flow.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/interpolate.spvasm b/tests/out/spv/interpolate.spvasm index da47ff164..a6fae2b2d 100644 --- a/tests/out/spv/interpolate.spvasm +++ b/tests/out/spv/interpolate.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/operators.spvasm b/tests/out/spv/operators.spvasm index 52063e0fd..850295757 100644 --- a/tests/out/spv/operators.spvasm +++ b/tests/out/spv/operators.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/pointers.spvasm b/tests/out/spv/pointers.spvasm index 968720f9d..81a17b558 100644 --- a/tests/out/spv/pointers.spvasm +++ b/tests/out/spv/pointers.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/policy-mix.spvasm b/tests/out/spv/policy-mix.spvasm index 685acfeaa..c082d3d46 100644 --- a/tests/out/spv/policy-mix.spvasm +++ b/tests/out/spv/policy-mix.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/shadow.spvasm b/tests/out/spv/shadow.spvasm index aeb85c96b..30829d28a 100644 --- a/tests/out/spv/shadow.spvasm +++ b/tests/out/spv/shadow.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/skybox.spvasm b/tests/out/spv/skybox.spvasm index 278ec0bb3..ca51a06dd 100644 --- a/tests/out/spv/skybox.spvasm +++ b/tests/out/spv/skybox.spvasm @@ -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 \ No newline at end of file