tint: Use MergeReturn transform in SPIR-V backend

Bug: tint:1627
Change-Id: I5a3639543b076e6f666bfcca8c61b22db7f2630e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/107363
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
James Price 2022-10-31 15:41:41 +00:00 committed by Dawn LUCI CQ
parent a3343d92d3
commit 3e1bc0a6da
13 changed files with 1302 additions and 1096 deletions

View File

@ -25,6 +25,7 @@
#include "src/tint/transform/expand_compound_assignment.h" #include "src/tint/transform/expand_compound_assignment.h"
#include "src/tint/transform/for_loop_to_loop.h" #include "src/tint/transform/for_loop_to_loop.h"
#include "src/tint/transform/manager.h" #include "src/tint/transform/manager.h"
#include "src/tint/transform/merge_return.h"
#include "src/tint/transform/promote_side_effects_to_decl.h" #include "src/tint/transform/promote_side_effects_to_decl.h"
#include "src/tint/transform/remove_phonies.h" #include "src/tint/transform/remove_phonies.h"
#include "src/tint/transform/remove_unreachable_statements.h" #include "src/tint/transform/remove_unreachable_statements.h"
@ -84,6 +85,7 @@ SanitizedResult Sanitize(const Program* in, const Options& options) {
manager.Add<transform::VectorizeScalarMatrixInitializers>(); manager.Add<transform::VectorizeScalarMatrixInitializers>();
manager.Add<transform::VectorizeMatrixConversions>(); manager.Add<transform::VectorizeMatrixConversions>();
manager.Add<transform::WhileToLoop>(); // ZeroInitWorkgroupMemory manager.Add<transform::WhileToLoop>(); // ZeroInitWorkgroupMemory
manager.Add<transform::MergeReturn>();
manager.Add<transform::CanonicalizeEntryPointIO>(); manager.Add<transform::CanonicalizeEntryPointIO>();
manager.Add<transform::AddEmptyEntryPoint>(); manager.Add<transform::AddEmptyEntryPoint>();
manager.Add<transform::AddBlockAttribute>(); manager.Add<transform::AddBlockAttribute>();

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 50 ; Bound: 58
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -12,6 +12,8 @@
OpName %tint_discard "tint_discard" OpName %tint_discard "tint_discard"
OpName %f "f" OpName %f "f"
OpName %x "x" OpName %x "x"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %tint_discard_func "tint_discard_func" OpName %tint_discard_func "tint_discard_func"
OpName %main_inner "main_inner" OpName %main_inner "main_inner"
OpName %x_0 "x" OpName %x_0 "x"
@ -32,65 +34,80 @@
%_ptr_Private_bool = OpTypePointer Private %bool %_ptr_Private_bool = OpTypePointer Private %bool
%tint_discard = OpVariable %_ptr_Private_bool Private %9 %tint_discard = OpVariable %_ptr_Private_bool Private %9
%12 = OpTypeFunction %int %int %12 = OpTypeFunction %int %int
%_ptr_Function_bool = OpTypePointer Function %bool
%_ptr_Function_int = OpTypePointer Function %int
%int_10 = OpConstant %int 10 %int_10 = OpConstant %int 10
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%void = OpTypeVoid %void = OpTypeVoid
%21 = OpTypeFunction %void %30 = OpTypeFunction %void
%25 = OpTypeFunction %int %v3int %34 = OpTypeFunction %int %v3int
%_ptr_Function_int = OpTypePointer Function %int
%f = OpFunction %int None %12 %f = OpFunction %int None %12
%x = OpFunctionParameter %int %x = OpFunctionParameter %int
%15 = OpLabel %15 = OpLabel
%17 = OpIEqual %bool %x %int_10 %tint_return_flag = OpVariable %_ptr_Function_bool Function %9
OpSelectionMerge %18 None %tint_return_value = OpVariable %_ptr_Function_int Function %7
OpBranchConditional %17 %19 %18 %21 = OpIEqual %bool %x %int_10
%19 = OpLabel OpSelectionMerge %22 None
OpBranchConditional %21 %23 %22
%23 = OpLabel
OpStore %tint_discard %true OpStore %tint_discard %true
OpReturnValue %7 OpStore %tint_return_flag %true
%18 = OpLabel OpStore %tint_return_value %7
OpReturnValue %x OpBranch %22
%22 = OpLabel
%26 = OpLoad %bool %tint_return_flag
%25 = OpLogicalNot %bool %26
OpSelectionMerge %27 None
OpBranchConditional %25 %28 %27
%28 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %x
OpBranch %27
%27 = OpLabel
%29 = OpLoad %int %tint_return_value
OpReturnValue %29
OpFunctionEnd OpFunctionEnd
%tint_discard_func = OpFunction %void None %21 %tint_discard_func = OpFunction %void None %30
%24 = OpLabel %33 = OpLabel
OpKill OpKill
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %int None %25 %main_inner = OpFunction %int None %34
%x_0 = OpFunctionParameter %v3int %x_0 = OpFunctionParameter %v3int
%28 = OpLabel %37 = OpLabel
%y = OpVariable %_ptr_Function_int Function %7 %y = OpVariable %_ptr_Function_int Function %7
%29 = OpCompositeExtract %int %x_0 0 %38 = OpCompositeExtract %int %x_0 0
OpStore %y %29 OpStore %y %38
OpBranch %32 OpBranch %40
%32 = OpLabel
OpLoopMerge %33 %34 None
OpBranch %35
%35 = OpLabel
%37 = OpLoad %int %y
%36 = OpFunctionCall %int %f %37
%38 = OpLoad %bool %tint_discard
OpSelectionMerge %39 None
OpBranchConditional %38 %40 %39
%40 = OpLabel %40 = OpLabel
%41 = OpFunctionCall %void %tint_discard_func OpLoopMerge %41 %42 None
OpReturnValue %7 OpBranch %43
%39 = OpLabel
%42 = OpIEqual %bool %36 %7
OpSelectionMerge %43 None
OpBranchConditional %42 %44 %43
%44 = OpLabel
OpBranch %33
%43 = OpLabel %43 = OpLabel
OpBranch %34
%34 = OpLabel
OpBranch %32
%33 = OpLabel
%45 = OpLoad %int %y %45 = OpLoad %int %y
OpReturnValue %45 %44 = OpFunctionCall %int %f %45
OpFunctionEnd %46 = OpLoad %bool %tint_discard
%main = OpFunction %void None %21 OpSelectionMerge %47 None
OpBranchConditional %46 %48 %47
%48 = OpLabel
%49 = OpFunctionCall %void %tint_discard_func
OpReturnValue %7
%47 = OpLabel %47 = OpLabel
%49 = OpLoad %v3int %x_1 %50 = OpIEqual %bool %44 %7
%48 = OpFunctionCall %int %main_inner %49 OpSelectionMerge %51 None
OpStore %value %48 OpBranchConditional %50 %52 %51
%52 = OpLabel
OpBranch %41
%51 = OpLabel
OpBranch %42
%42 = OpLabel
OpBranch %40
%41 = OpLabel
%53 = OpLoad %int %y
OpReturnValue %53
OpFunctionEnd
%main = OpFunction %void None %30
%55 = OpLabel
%57 = OpLoad %v3int %x_1
%56 = OpFunctionCall %int %main_inner %57
OpStore %value %56
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,10 +1,10 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 189 ; Bound: 199
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%71 = OpExtInstImport "GLSL.std.450" %81 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %fClipDistance3_param_1 %fClipDistance4_param_1 %glFragColor_1_1 OpEntryPoint Fragment %main "main" %fClipDistance3_param_1 %fClipDistance4_param_1 %glFragColor_1_1
OpExecutionMode %main OriginUpperLeft OpExecutionMode %main OriginUpperLeft
@ -29,6 +29,7 @@
OpName %glFragColor "glFragColor" OpName %glFragColor "glFragColor"
OpName %tint_discard "tint_discard" OpName %tint_discard "tint_discard"
OpName %main_1 "main_1" OpName %main_1 "main_1"
OpName %tint_return_flag "tint_return_flag"
OpName %viewDirectionW "viewDirectionW" OpName %viewDirectionW "viewDirectionW"
OpName %baseColor "baseColor" OpName %baseColor "baseColor"
OpName %diffuseColor "diffuseColor" OpName %diffuseColor "diffuseColor"
@ -105,201 +106,220 @@
%tint_discard = OpVariable %_ptr_Private_bool Private %26 %tint_discard = OpVariable %_ptr_Private_bool Private %26
%void = OpTypeVoid %void = OpTypeVoid
%29 = OpTypeFunction %void %29 = OpTypeFunction %void
%_ptr_Function_bool = OpTypePointer Function %bool
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%35 = OpConstantNull %v3float %37 = OpConstantNull %v3float
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%v2float = OpTypeVector %float 2 %v2float = OpTypeVector %float 2
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%45 = OpConstantNull %v2float %47 = OpConstantNull %v2float
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%78 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %88 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%105 = OpConstantComposite %v3float %float_1 %float_1 %float_1 %115 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%106 = OpConstantComposite %v4float %11 %11 %11 %float_1 %116 = OpConstantComposite %v4float %11 %11 %11 %float_1
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%main_out = OpTypeStruct %v4float %main_out = OpTypeStruct %v4float
%169 = OpTypeFunction %main_out %float %float %179 = OpTypeFunction %main_out %float %float
%180 = OpConstantNull %main_out %190 = OpConstantNull %main_out
%main_1 = OpFunction %void None %29 %main_1 = OpFunction %void None %29
%32 = OpLabel %32 = OpLabel
%viewDirectionW = OpVariable %_ptr_Function_v3float Function %35 %tint_return_flag = OpVariable %_ptr_Function_bool Function %26
%viewDirectionW = OpVariable %_ptr_Function_v3float Function %37
%baseColor = OpVariable %_ptr_Function_v4float Function %8 %baseColor = OpVariable %_ptr_Function_v4float Function %8
%diffuseColor = OpVariable %_ptr_Function_v3float Function %35 %diffuseColor = OpVariable %_ptr_Function_v3float Function %37
%alpha = OpVariable %_ptr_Function_float Function %11 %alpha = OpVariable %_ptr_Function_float Function %11
%normalW = OpVariable %_ptr_Function_v3float Function %35 %normalW = OpVariable %_ptr_Function_v3float Function %37
%uvOffset = OpVariable %_ptr_Function_v2float Function %45 %uvOffset = OpVariable %_ptr_Function_v2float Function %47
%baseAmbientColor = OpVariable %_ptr_Function_v3float Function %35 %baseAmbientColor = OpVariable %_ptr_Function_v3float Function %37
%glossiness = OpVariable %_ptr_Function_float Function %11 %glossiness = OpVariable %_ptr_Function_float Function %11
%diffuseBase = OpVariable %_ptr_Function_v3float Function %35 %diffuseBase = OpVariable %_ptr_Function_v3float Function %37
%shadow = OpVariable %_ptr_Function_float Function %11 %shadow = OpVariable %_ptr_Function_float Function %11
%refractionColor = OpVariable %_ptr_Function_v4float Function %8 %refractionColor = OpVariable %_ptr_Function_v4float Function %8
%reflectionColor = OpVariable %_ptr_Function_v4float Function %8 %reflectionColor = OpVariable %_ptr_Function_v4float Function %8
%emissiveColor = OpVariable %_ptr_Function_v3float Function %35 %emissiveColor = OpVariable %_ptr_Function_v3float Function %37
%finalDiffuse = OpVariable %_ptr_Function_v3float Function %35 %finalDiffuse = OpVariable %_ptr_Function_v3float Function %37
%finalSpecular = OpVariable %_ptr_Function_v3float Function %35 %finalSpecular = OpVariable %_ptr_Function_v3float Function %37
%color = OpVariable %_ptr_Function_v4float Function %8 %color = OpVariable %_ptr_Function_v4float Function %8
%56 = OpLoad %float %fClipDistance3 %58 = OpLoad %float %fClipDistance3
%57 = OpFOrdGreaterThan %bool %56 %11 %59 = OpFOrdGreaterThan %bool %58 %11
OpSelectionMerge %58 None OpSelectionMerge %60 None
OpBranchConditional %57 %59 %58 OpBranchConditional %59 %61 %60
%59 = OpLabel %61 = OpLabel
OpStore %tint_discard %true OpStore %tint_discard %true
OpReturn OpStore %tint_return_flag %true
%58 = OpLabel OpBranch %60
%61 = OpLoad %float %fClipDistance4 %60 = OpLabel
%62 = OpFOrdGreaterThan %bool %61 %11 %64 = OpLoad %bool %tint_return_flag
OpSelectionMerge %63 None %63 = OpLogicalNot %bool %64
OpBranchConditional %62 %64 %63 OpSelectionMerge %65 None
%64 = OpLabel OpBranchConditional %63 %66 %65
%66 = OpLabel
%67 = OpLoad %float %fClipDistance4
%68 = OpFOrdGreaterThan %bool %67 %11
OpSelectionMerge %69 None
OpBranchConditional %68 %70 %69
%70 = OpLabel
OpStore %tint_discard %true OpStore %tint_discard %true
OpReturn OpStore %tint_return_flag %true
%63 = OpLabel OpBranch %69
%68 = OpAccessChain %_ptr_Uniform_v4float %x_29 %uint_0 %69 = OpLabel
%69 = OpLoad %v4float %68 %72 = OpLoad %bool %tint_return_flag
%72 = OpCompositeExtract %float %69 0 %71 = OpLogicalNot %bool %72
%73 = OpCompositeExtract %float %69 1 OpSelectionMerge %73 None
%74 = OpCompositeExtract %float %69 2 OpBranchConditional %71 %74 %73
%75 = OpCompositeConstruct %v3float %72 %73 %74 %74 = OpLabel
%76 = OpFSub %v3float %75 %35 %78 = OpAccessChain %_ptr_Uniform_v4float %x_29 %uint_0
%70 = OpExtInst %v3float %71 Normalize %76 %79 = OpLoad %v4float %78
OpStore %viewDirectionW %70 %82 = OpCompositeExtract %float %79 0
OpStore %baseColor %78 %83 = OpCompositeExtract %float %79 1
%79 = OpAccessChain %_ptr_Uniform_v4float %x_49 %uint_0 %84 = OpCompositeExtract %float %79 2
%80 = OpLoad %v4float %79 %85 = OpCompositeConstruct %v3float %82 %83 %84
%81 = OpCompositeExtract %float %80 0 %86 = OpFSub %v3float %85 %37
%82 = OpCompositeExtract %float %80 1 %80 = OpExtInst %v3float %81 Normalize %86
%83 = OpCompositeExtract %float %80 2 OpStore %viewDirectionW %80
%84 = OpCompositeConstruct %v3float %81 %82 %83 OpStore %baseColor %88
OpStore %diffuseColor %84 %89 = OpAccessChain %_ptr_Uniform_v4float %x_49 %uint_0
%87 = OpAccessChain %_ptr_Uniform_float %x_49 %uint_0 %uint_3 %90 = OpLoad %v4float %89
%88 = OpLoad %float %87 %91 = OpCompositeExtract %float %90 0
OpStore %alpha %88 %92 = OpCompositeExtract %float %90 1
OpStore %uvOffset %45 %93 = OpCompositeExtract %float %90 2
%89 = OpLoad %v4float %baseColor %94 = OpCompositeConstruct %v3float %91 %92 %93
%90 = OpCompositeExtract %float %89 0 OpStore %diffuseColor %94
%91 = OpCompositeExtract %float %89 1 %97 = OpAccessChain %_ptr_Uniform_float %x_49 %uint_0 %uint_3
%92 = OpCompositeExtract %float %89 2 %98 = OpLoad %float %97
%93 = OpCompositeConstruct %v3float %90 %91 %92 OpStore %alpha %98
%94 = OpCompositeExtract %float %8 0 OpStore %uvOffset %47
%95 = OpCompositeExtract %float %8 1
%96 = OpCompositeExtract %float %8 2
%97 = OpCompositeConstruct %v3float %94 %95 %96
%98 = OpFMul %v3float %93 %97
%99 = OpLoad %v4float %baseColor %99 = OpLoad %v4float %baseColor
%100 = OpCompositeExtract %float %98 0 %100 = OpCompositeExtract %float %99 0
%101 = OpCompositeExtract %float %98 1 %101 = OpCompositeExtract %float %99 1
%102 = OpCompositeExtract %float %98 2 %102 = OpCompositeExtract %float %99 2
%103 = OpCompositeExtract %float %99 3 %103 = OpCompositeConstruct %v3float %100 %101 %102
%104 = OpCompositeConstruct %v4float %100 %101 %102 %103 %104 = OpCompositeExtract %float %8 0
OpStore %baseColor %104 %105 = OpCompositeExtract %float %8 1
OpStore %baseAmbientColor %105 %106 = OpCompositeExtract %float %8 2
%107 = OpCompositeConstruct %v3float %104 %105 %106
%108 = OpFMul %v3float %103 %107
%109 = OpLoad %v4float %baseColor
%110 = OpCompositeExtract %float %108 0
%111 = OpCompositeExtract %float %108 1
%112 = OpCompositeExtract %float %108 2
%113 = OpCompositeExtract %float %109 3
%114 = OpCompositeConstruct %v4float %110 %111 %112 %113
OpStore %baseColor %114
OpStore %baseAmbientColor %115
OpStore %glossiness %11 OpStore %glossiness %11
OpStore %diffuseBase %35 OpStore %diffuseBase %37
OpStore %shadow %float_1 OpStore %shadow %float_1
OpStore %refractionColor %106 OpStore %refractionColor %116
OpStore %reflectionColor %106 OpStore %reflectionColor %116
%108 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_3 %118 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_3
%109 = OpLoad %v3float %108 %119 = OpLoad %v3float %118
OpStore %emissiveColor %109 OpStore %emissiveColor %119
%110 = OpLoad %v3float %diffuseBase %120 = OpLoad %v3float %diffuseBase
%111 = OpLoad %v3float %diffuseColor %121 = OpLoad %v3float %diffuseColor
%112 = OpLoad %v3float %emissiveColor %122 = OpLoad %v3float %emissiveColor
%114 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_1 %124 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_1
%115 = OpLoad %v3float %114 %125 = OpLoad %v3float %124
%116 = OpLoad %v4float %baseColor %126 = OpLoad %v4float %baseColor
%118 = OpFMul %v3float %110 %111 %128 = OpFMul %v3float %120 %121
%119 = OpFAdd %v3float %118 %112 %129 = OpFAdd %v3float %128 %122
%120 = OpFAdd %v3float %119 %115 %130 = OpFAdd %v3float %129 %125
%117 = OpExtInst %v3float %71 NClamp %120 %35 %105 %127 = OpExtInst %v3float %81 NClamp %130 %37 %115
%121 = OpCompositeExtract %float %116 0 %131 = OpCompositeExtract %float %126 0
%122 = OpCompositeExtract %float %116 1 %132 = OpCompositeExtract %float %126 1
%123 = OpCompositeExtract %float %116 2 %133 = OpCompositeExtract %float %126 2
%124 = OpCompositeConstruct %v3float %121 %122 %123 %134 = OpCompositeConstruct %v3float %131 %132 %133
%125 = OpFMul %v3float %117 %124 %135 = OpFMul %v3float %127 %134
OpStore %finalDiffuse %125 OpStore %finalDiffuse %135
OpStore %finalSpecular %35 OpStore %finalSpecular %37
%126 = OpLoad %v3float %finalDiffuse %136 = OpLoad %v3float %finalDiffuse
%127 = OpLoad %v3float %baseAmbientColor %137 = OpLoad %v3float %baseAmbientColor
%128 = OpLoad %v3float %finalSpecular %138 = OpLoad %v3float %finalSpecular
%129 = OpLoad %v4float %reflectionColor %139 = OpLoad %v4float %reflectionColor
%130 = OpLoad %v4float %refractionColor %140 = OpLoad %v4float %refractionColor
%131 = OpFMul %v3float %126 %127 %141 = OpFMul %v3float %136 %137
%132 = OpFAdd %v3float %131 %128 %142 = OpFAdd %v3float %141 %138
%133 = OpCompositeExtract %float %129 0 %143 = OpCompositeExtract %float %139 0
%134 = OpCompositeExtract %float %129 1 %144 = OpCompositeExtract %float %139 1
%135 = OpCompositeExtract %float %129 2 %145 = OpCompositeExtract %float %139 2
%136 = OpCompositeConstruct %v3float %133 %134 %135 %146 = OpCompositeConstruct %v3float %143 %144 %145
%137 = OpFAdd %v3float %132 %136 %147 = OpFAdd %v3float %142 %146
%138 = OpCompositeExtract %float %130 0 %148 = OpCompositeExtract %float %140 0
%139 = OpCompositeExtract %float %130 1 %149 = OpCompositeExtract %float %140 1
%140 = OpCompositeExtract %float %130 2 %150 = OpCompositeExtract %float %140 2
%141 = OpCompositeConstruct %v3float %138 %139 %140 %151 = OpCompositeConstruct %v3float %148 %149 %150
%142 = OpFAdd %v3float %137 %141 %152 = OpFAdd %v3float %147 %151
%143 = OpLoad %float %alpha %153 = OpLoad %float %alpha
%144 = OpCompositeExtract %float %142 0 %154 = OpCompositeExtract %float %152 0
%145 = OpCompositeExtract %float %142 1 %155 = OpCompositeExtract %float %152 1
%146 = OpCompositeExtract %float %142 2 %156 = OpCompositeExtract %float %152 2
%147 = OpCompositeConstruct %v4float %144 %145 %146 %143 %157 = OpCompositeConstruct %v4float %154 %155 %156 %153
OpStore %color %147 OpStore %color %157
%148 = OpLoad %v4float %color %158 = OpLoad %v4float %color
%150 = OpCompositeExtract %float %148 0 %160 = OpCompositeExtract %float %158 0
%151 = OpCompositeExtract %float %148 1 %161 = OpCompositeExtract %float %158 1
%152 = OpCompositeExtract %float %148 2 %162 = OpCompositeExtract %float %158 2
%153 = OpCompositeConstruct %v3float %150 %151 %152 %163 = OpCompositeConstruct %v3float %160 %161 %162
%149 = OpExtInst %v3float %71 NMax %153 %35 %159 = OpExtInst %v3float %81 NMax %163 %37
%154 = OpLoad %v4float %color %164 = OpLoad %v4float %color
%155 = OpCompositeExtract %float %149 0 %165 = OpCompositeExtract %float %159 0
%156 = OpCompositeExtract %float %149 1 %166 = OpCompositeExtract %float %159 1
%157 = OpCompositeExtract %float %149 2 %167 = OpCompositeExtract %float %159 2
%158 = OpCompositeExtract %float %154 3 %168 = OpCompositeExtract %float %164 3
%159 = OpCompositeConstruct %v4float %155 %156 %157 %158 %169 = OpCompositeConstruct %v4float %165 %166 %167 %168
OpStore %color %159 OpStore %color %169
%160 = OpAccessChain %_ptr_Uniform_float %x_137 %uint_0 %170 = OpAccessChain %_ptr_Uniform_float %x_137 %uint_0
%161 = OpLoad %float %160 %171 = OpLoad %float %170
%162 = OpAccessChain %_ptr_Function_float %color %uint_3 %172 = OpAccessChain %_ptr_Function_float %color %uint_3
%163 = OpLoad %float %162 %173 = OpLoad %float %172
%164 = OpAccessChain %_ptr_Function_float %color %uint_3 %174 = OpAccessChain %_ptr_Function_float %color %uint_3
%165 = OpFMul %float %163 %161 %175 = OpFMul %float %173 %171
OpStore %164 %165 OpStore %174 %175
%166 = OpLoad %v4float %color %176 = OpLoad %v4float %color
OpStore %glFragColor %166 OpStore %glFragColor %176
OpStore %tint_return_flag %true
OpBranch %73
%73 = OpLabel
OpBranch %65
%65 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%tint_discard_func = OpFunction %void None %29 %tint_discard_func = OpFunction %void None %29
%168 = OpLabel %178 = OpLabel
OpKill OpKill
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %main_out None %169 %main_inner = OpFunction %main_out None %179
%fClipDistance3_param = OpFunctionParameter %float %fClipDistance3_param = OpFunctionParameter %float
%fClipDistance4_param = OpFunctionParameter %float %fClipDistance4_param = OpFunctionParameter %float
%174 = OpLabel %184 = OpLabel
OpStore %fClipDistance3 %fClipDistance3_param OpStore %fClipDistance3 %fClipDistance3_param
OpStore %fClipDistance4 %fClipDistance4_param OpStore %fClipDistance4 %fClipDistance4_param
%175 = OpFunctionCall %void %main_1 %185 = OpFunctionCall %void %main_1
%176 = OpLoad %bool %tint_discard %186 = OpLoad %bool %tint_discard
OpSelectionMerge %177 None OpSelectionMerge %187 None
OpBranchConditional %176 %178 %177 OpBranchConditional %186 %188 %187
%178 = OpLabel %188 = OpLabel
%179 = OpFunctionCall %void %tint_discard_func %189 = OpFunctionCall %void %tint_discard_func
OpReturnValue %180 OpReturnValue %190
%177 = OpLabel %187 = OpLabel
%181 = OpLoad %v4float %glFragColor %191 = OpLoad %v4float %glFragColor
%182 = OpCompositeConstruct %main_out %181 %192 = OpCompositeConstruct %main_out %191
OpReturnValue %182 OpReturnValue %192
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %29 %main = OpFunction %void None %29
%184 = OpLabel %194 = OpLabel
%186 = OpLoad %float %fClipDistance3_param_1 %196 = OpLoad %float %fClipDistance3_param_1
%187 = OpLoad %float %fClipDistance4_param_1 %197 = OpLoad %float %fClipDistance4_param_1
%185 = OpFunctionCall %main_out %main_inner %186 %187 %195 = OpFunctionCall %main_out %main_inner %196 %197
%188 = OpCompositeExtract %v4float %185 0 %198 = OpCompositeExtract %v4float %195 0
OpStore %glFragColor_1_1 %188 OpStore %glFragColor_1_1 %198
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 48 ; Bound: 60
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -11,6 +11,8 @@
OpMemberName %b_block 0 "inner" OpMemberName %b_block 0 "inner"
OpName %b "b" OpName %b "b"
OpName %func_3 "func_3" OpName %func_3 "func_3"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %i "i" OpName %i "i"
OpName %j "j" OpName %j "j"
OpName %main "main" OpName %main "main"
@ -25,68 +27,90 @@
%b = OpVariable %_ptr_Uniform_b_block Uniform %b = OpVariable %_ptr_Uniform_b_block Uniform
%bool = OpTypeBool %bool = OpTypeBool
%5 = OpTypeFunction %bool %5 = OpTypeFunction %bool
%9 = OpConstantNull %int %_ptr_Function_bool = OpTypePointer Function %bool
%11 = OpConstantNull %bool
%13 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_int = OpTypePointer Uniform %int %_ptr_Uniform_int = OpTypePointer Uniform %int
%int_n1 = OpConstant %int -1 %int_n1 = OpConstant %int -1
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%38 = OpConstantNull %bool %true = OpConstantTrue %bool
%void = OpTypeVoid %void = OpTypeVoid
%43 = OpTypeFunction %void %55 = OpTypeFunction %void
%func_3 = OpFunction %bool None %5 %func_3 = OpFunction %bool None %5
%8 = OpLabel %8 = OpLabel
%i = OpVariable %_ptr_Function_int Function %9 %tint_return_flag = OpVariable %_ptr_Function_bool Function %11
%j = OpVariable %_ptr_Function_int Function %9 %tint_return_value = OpVariable %_ptr_Function_bool Function %11
OpStore %i %9 %i = OpVariable %_ptr_Function_int Function %13
OpBranch %12 %j = OpVariable %_ptr_Function_int Function %13
%12 = OpLabel OpStore %i %13
OpLoopMerge %13 %14 None OpBranch %16
OpBranch %15 %16 = OpLabel
%15 = OpLabel OpLoopMerge %17 %18 None
%17 = OpLoad %int %i OpBranch %19
%21 = OpAccessChain %_ptr_Uniform_int %b %uint_0 %19 = OpLabel
%22 = OpLoad %int %21 %21 = OpLoad %int %i
%23 = OpSLessThan %bool %17 %22 %25 = OpAccessChain %_ptr_Uniform_int %b %uint_0
%16 = OpLogicalNot %bool %23 %26 = OpLoad %int %25
OpSelectionMerge %24 None %27 = OpSLessThan %bool %21 %26
OpBranchConditional %16 %25 %24 %20 = OpLogicalNot %bool %27
%25 = OpLabel OpSelectionMerge %28 None
OpBranch %13 OpBranchConditional %20 %29 %28
%24 = OpLabel
OpStore %j %int_n1
OpBranch %28
%28 = OpLabel
OpLoopMerge %29 %30 None
OpBranch %31
%31 = OpLabel
%33 = OpLoad %int %j
%35 = OpIEqual %bool %33 %int_1
%32 = OpLogicalNot %bool %35
OpSelectionMerge %36 None
OpBranchConditional %32 %37 %36
%37 = OpLabel
OpBranch %29
%36 = OpLabel
OpReturnValue %38
%30 = OpLabel
%39 = OpLoad %int %j
%40 = OpIAdd %int %39 %int_1
OpStore %j %40
OpBranch %28
%29 = OpLabel %29 = OpLabel
OpBranch %14 OpBranch %17
%14 = OpLabel %28 = OpLabel
%41 = OpLoad %int %i OpStore %j %int_n1
%42 = OpIAdd %int %41 %int_1 OpBranch %32
OpStore %i %42 %32 = OpLabel
OpBranch %12 OpLoopMerge %33 %34 None
%13 = OpLabel OpBranch %35
OpReturnValue %38 %35 = OpLabel
OpFunctionEnd %37 = OpLoad %int %j
%main = OpFunction %void None %43 %39 = OpIEqual %bool %37 %int_1
%36 = OpLogicalNot %bool %39
OpSelectionMerge %40 None
OpBranchConditional %36 %41 %40
%41 = OpLabel
OpBranch %33
%40 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %11
OpBranch %33
%34 = OpLabel
%43 = OpLoad %int %j
%44 = OpIAdd %int %43 %int_1
OpStore %j %44
OpBranch %32
%33 = OpLabel
%45 = OpLoad %bool %tint_return_flag
OpSelectionMerge %46 None
OpBranchConditional %45 %47 %46
%47 = OpLabel
OpBranch %17
%46 = OpLabel %46 = OpLabel
%47 = OpFunctionCall %bool %func_3 OpBranch %18
%18 = OpLabel
%48 = OpLoad %int %i
%49 = OpIAdd %int %48 %int_1
OpStore %i %49
OpBranch %16
%17 = OpLabel
%51 = OpLoad %bool %tint_return_flag
%50 = OpLogicalNot %bool %51
OpSelectionMerge %52 None
OpBranchConditional %50 %53 %52
%53 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %11
OpBranch %52
%52 = OpLabel
%54 = OpLoad %bool %tint_return_value
OpReturnValue %54
OpFunctionEnd
%main = OpFunction %void None %55
%58 = OpLabel
%59 = OpFunctionCall %bool %func_3
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 386 ; Bound: 390
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -98,6 +98,7 @@
OpName %m21 "m21" OpName %m21 "m21"
OpName %o4 "o4" OpName %o4 "o4"
OpName %main1 "main1" OpName %main1 "main1"
OpName %tint_return_flag "tint_return_flag"
OpName %t_PosMtx "t_PosMtx" OpName %t_PosMtx "t_PosMtx"
OpName %t_TexSpaceCoord "t_TexSpaceCoord" OpName %t_TexSpaceCoord "t_TexSpaceCoord"
OpName %VertexOutput "VertexOutput" OpName %VertexOutput "VertexOutput"
@ -228,17 +229,20 @@
%274 = OpTypeFunction %Mat4x3_ %Mat4x4_ %274 = OpTypeFunction %Mat4x3_ %Mat4x4_
%void = OpTypeVoid %void = OpTypeVoid
%290 = OpTypeFunction %void %290 = OpTypeFunction %void
%bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%297 = OpConstantNull %bool
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%_ptr_Uniform_Mat4x3_ = OpTypePointer Uniform %Mat4x3_ %_ptr_Uniform_Mat4x3_ = OpTypePointer Uniform %Mat4x3_
%_ptr_Uniform_Mat4x4_ = OpTypePointer Uniform %Mat4x4_ %_ptr_Uniform_Mat4x4_ = OpTypePointer Uniform %Mat4x4_
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%bool = OpTypeBool %344 = OpConstantNull %int
%341 = OpConstantNull %int
%_ptr_Uniform_Mat4x2_ = OpTypePointer Uniform %Mat4x2_ %_ptr_Uniform_Mat4x2_ = OpTypePointer Uniform %Mat4x2_
%true = OpConstantTrue %bool
%VertexOutput = OpTypeStruct %v4float %v2float %v4float %VertexOutput = OpTypeStruct %v4float %v2float %v4float
%361 = OpTypeFunction %VertexOutput %v3float %v2float %v4float %v3float %float %365 = OpTypeFunction %VertexOutput %v3float %v2float %v4float %v3float %float
%Mat4x3GetCol0_ = OpFunction %v3float None %54 %Mat4x3GetCol0_ = OpFunction %v3float None %54
%m = OpFunctionParameter %Mat4x3_ %m = OpFunctionParameter %Mat4x3_
%57 = OpLabel %57 = OpLabel
@ -514,108 +518,111 @@
OpFunctionEnd OpFunctionEnd
%main1 = OpFunction %void None %290 %main1 = OpFunction %void None %290
%293 = OpLabel %293 = OpLabel
%tint_return_flag = OpVariable %_ptr_Function_bool Function %297
%t_PosMtx = OpVariable %_ptr_Function_Mat4x3_ Function %60 %t_PosMtx = OpVariable %_ptr_Function_Mat4x3_ Function %60
%t_TexSpaceCoord = OpVariable %_ptr_Function_v2float Function %19 %t_TexSpaceCoord = OpVariable %_ptr_Function_v2float Function %19
%297 = OpLoad %float %a_PosMtxIdx1 %301 = OpLoad %float %a_PosMtxIdx1
%298 = OpConvertFToS %int %297 %302 = OpConvertFToS %int %301
%301 = OpAccessChain %_ptr_Uniform_Mat4x3_ %global2 %uint_0 %298 %305 = OpAccessChain %_ptr_Uniform_Mat4x3_ %global2 %uint_0 %302
%302 = OpLoad %Mat4x3_ %301 %306 = OpLoad %Mat4x3_ %305
OpStore %t_PosMtx %302 OpStore %t_PosMtx %306
%303 = OpLoad %Mat4x3_ %t_PosMtx %307 = OpLoad %Mat4x3_ %t_PosMtx
%304 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %303 %308 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %307
%305 = OpLoad %v3float %a_Position1 %309 = OpLoad %v3float %a_Position1
%306 = OpLoad %Mat4x3_ %t_PosMtx %310 = OpLoad %Mat4x3_ %t_PosMtx
%307 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %306 %311 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %310
%308 = OpLoad %v3float %a_Position1 %312 = OpLoad %v3float %a_Position1
%310 = OpCompositeExtract %float %308 0 %314 = OpCompositeExtract %float %312 0
%311 = OpCompositeExtract %float %308 1 %315 = OpCompositeExtract %float %312 1
%312 = OpCompositeExtract %float %308 2 %316 = OpCompositeExtract %float %312 2
%313 = OpCompositeConstruct %v4float %310 %311 %312 %float_1 %317 = OpCompositeConstruct %v4float %314 %315 %316 %float_1
%309 = OpFunctionCall %v4float %Mul %307 %313 %313 = OpFunctionCall %v4float %Mul %311 %317
%315 = OpAccessChain %_ptr_Uniform_Mat4x4_ %global %uint_0 %319 = OpAccessChain %_ptr_Uniform_Mat4x4_ %global %uint_0
%316 = OpLoad %Mat4x4_ %315 %320 = OpLoad %Mat4x4_ %319
%317 = OpLoad %Mat4x3_ %t_PosMtx %321 = OpLoad %Mat4x3_ %t_PosMtx
%318 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %317 %322 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %321
%319 = OpLoad %v3float %a_Position1 %323 = OpLoad %v3float %a_Position1
%320 = OpLoad %Mat4x3_ %t_PosMtx %324 = OpLoad %Mat4x3_ %t_PosMtx
%321 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %320 %325 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %324
%322 = OpLoad %v3float %a_Position1 %326 = OpLoad %v3float %a_Position1
%324 = OpCompositeExtract %float %322 0 %328 = OpCompositeExtract %float %326 0
%325 = OpCompositeExtract %float %322 1 %329 = OpCompositeExtract %float %326 1
%326 = OpCompositeExtract %float %322 2 %330 = OpCompositeExtract %float %326 2
%327 = OpCompositeConstruct %v4float %324 %325 %326 %float_1 %331 = OpCompositeConstruct %v4float %328 %329 %330 %float_1
%323 = OpFunctionCall %v4float %Mul %321 %327 %327 = OpFunctionCall %v4float %Mul %325 %331
%328 = OpFunctionCall %v4float %Mul %316 %323 %332 = OpFunctionCall %v4float %Mul %320 %327
OpStore %gl_Position %328 OpStore %gl_Position %332
%329 = OpLoad %v4float %a_Color1 %333 = OpLoad %v4float %a_Color1
OpStore %v_Color %329 OpStore %v_Color %333
%331 = OpAccessChain %_ptr_Uniform_v4float %global1 %uint_1 %335 = OpAccessChain %_ptr_Uniform_v4float %global1 %uint_1
%332 = OpLoad %v4float %331 %336 = OpLoad %v4float %335
%333 = OpCompositeExtract %float %332 0 %337 = OpCompositeExtract %float %336 0
%335 = OpFOrdEqual %bool %333 %float_2 %339 = OpFOrdEqual %bool %337 %float_2
OpSelectionMerge %337 None OpSelectionMerge %340 None
OpBranchConditional %335 %338 %339 OpBranchConditional %339 %341 %342
%338 = OpLabel %341 = OpLabel
%340 = OpLoad %v3float %a_Normal1 %343 = OpLoad %v3float %a_Normal1
%343 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %341 %346 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %344
%344 = OpLoad %Mat4x2_ %343 %347 = OpLoad %Mat4x2_ %346
%345 = OpLoad %v3float %a_Normal1 %348 = OpLoad %v3float %a_Normal1
%347 = OpCompositeExtract %float %345 0 %350 = OpCompositeExtract %float %348 0
%348 = OpCompositeExtract %float %345 1 %351 = OpCompositeExtract %float %348 1
%349 = OpCompositeExtract %float %345 2 %352 = OpCompositeExtract %float %348 2
%350 = OpCompositeConstruct %v4float %347 %348 %349 %float_1 %353 = OpCompositeConstruct %v4float %350 %351 %352 %float_1
%346 = OpFunctionCall %v2float %Mul2 %344 %350 %349 = OpFunctionCall %v2float %Mul2 %347 %353
%351 = OpVectorShuffle %v2float %346 %346 0 1 %354 = OpVectorShuffle %v2float %349 %349 0 1
OpStore %v_TexCoord %351 OpStore %v_TexCoord %354
OpReturn OpStore %tint_return_flag %true
%339 = OpLabel OpBranch %340
%352 = OpLoad %v2float %a_UV1 %342 = OpLabel
%353 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %341 %356 = OpLoad %v2float %a_UV1
%354 = OpLoad %Mat4x2_ %353 %357 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %344
%355 = OpLoad %v2float %a_UV1 %358 = OpLoad %Mat4x2_ %357
%357 = OpCompositeExtract %float %355 0 %359 = OpLoad %v2float %a_UV1
%358 = OpCompositeExtract %float %355 1 %361 = OpCompositeExtract %float %359 0
%359 = OpCompositeConstruct %v4float %357 %358 %float_1 %float_1 %362 = OpCompositeExtract %float %359 1
%356 = OpFunctionCall %v2float %Mul2 %354 %359 %363 = OpCompositeConstruct %v4float %361 %362 %float_1 %float_1
%360 = OpVectorShuffle %v2float %356 %356 0 1 %360 = OpFunctionCall %v2float %Mul2 %358 %363
OpStore %v_TexCoord %360 %364 = OpVectorShuffle %v2float %360 %360 0 1
OpReturn OpStore %v_TexCoord %364
%337 = OpLabel OpStore %tint_return_flag %true
OpBranch %340
%340 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %VertexOutput None %361 %main_inner = OpFunction %VertexOutput None %365
%a_Position = OpFunctionParameter %v3float %a_Position = OpFunctionParameter %v3float
%a_UV = OpFunctionParameter %v2float %a_UV = OpFunctionParameter %v2float
%a_Color = OpFunctionParameter %v4float %a_Color = OpFunctionParameter %v4float
%a_Normal = OpFunctionParameter %v3float %a_Normal = OpFunctionParameter %v3float
%a_PosMtxIdx = OpFunctionParameter %float %a_PosMtxIdx = OpFunctionParameter %float
%369 = OpLabel %373 = OpLabel
OpStore %a_Position1 %a_Position OpStore %a_Position1 %a_Position
OpStore %a_UV1 %a_UV OpStore %a_UV1 %a_UV
OpStore %a_Color1 %a_Color OpStore %a_Color1 %a_Color
OpStore %a_Normal1 %a_Normal OpStore %a_Normal1 %a_Normal
OpStore %a_PosMtxIdx1 %a_PosMtxIdx OpStore %a_PosMtxIdx1 %a_PosMtxIdx
%370 = OpFunctionCall %void %main1 %374 = OpFunctionCall %void %main1
%371 = OpLoad %v4float %v_Color %375 = OpLoad %v4float %v_Color
%372 = OpLoad %v2float %v_TexCoord %376 = OpLoad %v2float %v_TexCoord
%373 = OpLoad %v4float %gl_Position %377 = OpLoad %v4float %gl_Position
%374 = OpCompositeConstruct %VertexOutput %371 %372 %373 %378 = OpCompositeConstruct %VertexOutput %375 %376 %377
OpReturnValue %374 OpReturnValue %378
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %290 %main = OpFunction %void None %290
%376 = OpLabel %380 = OpLabel
%378 = OpLoad %v3float %a_Position_1 %382 = OpLoad %v3float %a_Position_1
%379 = OpLoad %v2float %a_UV_1 %383 = OpLoad %v2float %a_UV_1
%380 = OpLoad %v4float %a_Color_1 %384 = OpLoad %v4float %a_Color_1
%381 = OpLoad %v3float %a_Normal_1 %385 = OpLoad %v3float %a_Normal_1
%382 = OpLoad %float %a_PosMtxIdx_1 %386 = OpLoad %float %a_PosMtxIdx_1
%377 = OpFunctionCall %VertexOutput %main_inner %378 %379 %380 %381 %382 %381 = OpFunctionCall %VertexOutput %main_inner %382 %383 %384 %385 %386
%383 = OpCompositeExtract %v4float %377 0 %387 = OpCompositeExtract %v4float %381 0
OpStore %v_Color_1 %383 OpStore %v_Color_1 %387
%384 = OpCompositeExtract %v2float %377 1 %388 = OpCompositeExtract %v2float %381 1
OpStore %v_TexCoord_1 %384 OpStore %v_TexCoord_1 %388
%385 = OpCompositeExtract %v4float %377 2 %389 = OpCompositeExtract %v4float %381 2
OpStore %member_1 %385 OpStore %member_1 %389
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,10 +1,10 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 96 ; Bound: 106
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%46 = OpExtInstImport "GLSL.std.450" %55 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID_param_1 OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID_param_1
OpExecutionMode %main LocalSize 128 1 1 OpExecutionMode %main LocalSize 128 1 1
@ -26,6 +26,8 @@
OpName %getAAtOutCoords_ "getAAtOutCoords_" OpName %getAAtOutCoords_ "getAAtOutCoords_"
OpName %unaryOperation_f1_ "unaryOperation_f1_" OpName %unaryOperation_f1_ "unaryOperation_f1_"
OpName %a "a" OpName %a "a"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %setOutput_i1_f1_ "setOutput_i1_f1_" OpName %setOutput_i1_f1_ "setOutput_i1_f1_"
OpName %flatIndex "flatIndex" OpName %flatIndex "flatIndex"
OpName %value "value" OpName %value "value"
@ -83,17 +85,20 @@
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%30 = OpTypeFunction %float %_ptr_Function_float %30 = OpTypeFunction %float %_ptr_Function_float
%37 = OpConstantNull %float
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%38 = OpConstantNull %bool
%40 = OpConstantNull %float
%true = OpConstantTrue %bool
%float_0x1p_128 = OpConstant %float 0x1p+128 %float_0x1p_128 = OpConstant %float 0x1p+128
%void = OpTypeVoid %void = OpTypeVoid
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%47 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_float %57 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_float
%59 = OpTypeFunction %void %69 = OpTypeFunction %void
%63 = OpConstantNull %int %73 = OpConstantNull %int
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%_ptr_Uniform_int = OpTypePointer Uniform %int %_ptr_Uniform_int = OpTypePointer Uniform %int
%87 = OpTypeFunction %void %v3uint %97 = OpTypeFunction %void %v3uint
%getAAtOutCoords_ = OpFunction %float None %20 %getAAtOutCoords_ = OpFunction %float None %20
%22 = OpLabel %22 = OpLabel
%25 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0 %25 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
@ -105,68 +110,82 @@
%unaryOperation_f1_ = OpFunction %float None %30 %unaryOperation_f1_ = OpFunction %float None %30
%a = OpFunctionParameter %_ptr_Function_float %a = OpFunctionParameter %_ptr_Function_float
%34 = OpLabel %34 = OpLabel
%36 = OpLoad %float %a %tint_return_flag = OpVariable %_ptr_Function_bool Function %38
%38 = OpFOrdLessThan %bool %36 %37 %tint_return_value = OpVariable %_ptr_Function_float Function %40
OpSelectionMerge %40 None %42 = OpLoad %float %a
OpBranchConditional %38 %41 %40 %43 = OpFOrdLessThan %bool %42 %40
%41 = OpLabel OpSelectionMerge %44 None
OpReturnValue %float_0x1p_128 OpBranchConditional %43 %45 %44
%40 = OpLabel %45 = OpLabel
%44 = OpLoad %float %a OpStore %tint_return_flag %true
%45 = OpExtInst %float %46 Log %44 OpStore %tint_return_value %float_0x1p_128
OpReturnValue %45 OpBranch %44
%44 = OpLabel
%49 = OpLoad %bool %tint_return_flag
%48 = OpLogicalNot %bool %49
OpSelectionMerge %50 None
OpBranchConditional %48 %51 %50
%51 = OpLabel
%53 = OpLoad %float %a
OpStore %tint_return_flag %true
%54 = OpExtInst %float %55 Log %53
OpStore %tint_return_value %54
OpBranch %50
%50 = OpLabel
%56 = OpLoad %float %tint_return_value
OpReturnValue %56
OpFunctionEnd OpFunctionEnd
%setOutput_i1_f1_ = OpFunction %void None %47 %setOutput_i1_f1_ = OpFunction %void None %57
%flatIndex = OpFunctionParameter %_ptr_Function_int %flatIndex = OpFunctionParameter %_ptr_Function_int
%value = OpFunctionParameter %_ptr_Function_float %value = OpFunctionParameter %_ptr_Function_float
%53 = OpLabel %63 = OpLabel
%55 = OpLoad %int %flatIndex %65 = OpLoad %int %flatIndex
%57 = OpLoad %float %value %67 = OpLoad %float %value
%58 = OpAccessChain %_ptr_StorageBuffer_float %x_16 %uint_0 %55 %68 = OpAccessChain %_ptr_StorageBuffer_float %x_16 %uint_0 %65
OpStore %58 %57 OpStore %68 %67
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %59 %main_1 = OpFunction %void None %69
%61 = OpLabel %71 = OpLabel
%index = OpVariable %_ptr_Function_int Function %63 %index = OpVariable %_ptr_Function_int Function %73
%a_1 = OpVariable %_ptr_Function_float Function %37 %a_1 = OpVariable %_ptr_Function_float Function %40
%param = OpVariable %_ptr_Function_float Function %37 %param = OpVariable %_ptr_Function_float Function %40
%param_1 = OpVariable %_ptr_Function_int Function %63 %param_1 = OpVariable %_ptr_Function_int Function %73
%param_2 = OpVariable %_ptr_Function_float Function %37 %param_2 = OpVariable %_ptr_Function_float Function %40
%68 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0 %78 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
%69 = OpLoad %uint %68 %79 = OpLoad %uint %78
%70 = OpBitcast %int %69 %80 = OpBitcast %int %79
OpStore %index %70 OpStore %index %80
%71 = OpLoad %int %index %81 = OpLoad %int %index
%74 = OpAccessChain %_ptr_Uniform_int %x_24 %uint_4 %84 = OpAccessChain %_ptr_Uniform_int %x_24 %uint_4
%75 = OpLoad %int %74 %85 = OpLoad %int %84
%76 = OpSLessThan %bool %71 %75 %86 = OpSLessThan %bool %81 %85
OpSelectionMerge %77 None OpSelectionMerge %87 None
OpBranchConditional %76 %78 %77 OpBranchConditional %86 %88 %87
%78 = OpLabel %88 = OpLabel
%79 = OpFunctionCall %float %getAAtOutCoords_ %89 = OpFunctionCall %float %getAAtOutCoords_
OpStore %a_1 %79 OpStore %a_1 %89
%80 = OpLoad %float %a_1 %90 = OpLoad %float %a_1
OpStore %param %80 OpStore %param %90
%81 = OpFunctionCall %float %unaryOperation_f1_ %param %91 = OpFunctionCall %float %unaryOperation_f1_ %param
%83 = OpLoad %int %index %93 = OpLoad %int %index
OpStore %param_1 %83 OpStore %param_1 %93
OpStore %param_2 %81 OpStore %param_2 %91
%84 = OpFunctionCall %void %setOutput_i1_f1_ %param_1 %param_2 %94 = OpFunctionCall %void %setOutput_i1_f1_ %param_1 %param_2
OpBranch %77 OpBranch %87
%77 = OpLabel %87 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %void None %87 %main_inner = OpFunction %void None %97
%gl_GlobalInvocationID_param = OpFunctionParameter %v3uint %gl_GlobalInvocationID_param = OpFunctionParameter %v3uint
%90 = OpLabel %100 = OpLabel
OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param
%91 = OpFunctionCall %void %main_1 %101 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %59 %main = OpFunction %void None %69
%93 = OpLabel %103 = OpLabel
%95 = OpLoad %v3uint %gl_GlobalInvocationID_param_1 %105 = OpLoad %v3uint %gl_GlobalInvocationID_param_1
%94 = OpFunctionCall %void %main_inner %95 %104 = OpFunctionCall %void %main_inner %105
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,10 +1,10 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 102 ; Bound: 112
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%42 = OpExtInstImport "GLSL.std.450" %51 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID_param_1 OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID_param_1
OpExecutionMode %main LocalSize 1 1 1 OpExecutionMode %main LocalSize 1 1 1
@ -27,6 +27,8 @@
OpName %binaryOperation_f1_f1_ "binaryOperation_f1_f1_" OpName %binaryOperation_f1_f1_ "binaryOperation_f1_f1_"
OpName %a "a" OpName %a "a"
OpName %b "b" OpName %b "b"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %x_26 "x_26" OpName %x_26 "x_26"
OpName %main_1 "main_1" OpName %main_1 "main_1"
OpName %index "index" OpName %index "index"
@ -83,93 +85,110 @@
%x_46 = OpVariable %_ptr_Uniform_Uniforms Uniform %x_46 = OpVariable %_ptr_Uniform_Uniforms Uniform
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float %23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
%30 = OpConstantNull %float
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%32 = OpConstantNull %bool
%34 = OpConstantNull %float
%true = OpConstantTrue %bool
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%void = OpTypeVoid %void = OpTypeVoid
%69 = OpTypeFunction %void %79 = OpTypeFunction %void
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%75 = OpConstantNull %int %85 = OpConstantNull %int
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Private_uint = OpTypePointer Private %uint %_ptr_Private_uint = OpTypePointer Private %uint
%int_n10 = OpConstant %int -10 %int_n10 = OpConstant %int -10
%float_n4 = OpConstant %float -4 %float_n4 = OpConstant %float -4
%float_n3 = OpConstant %float -3 %float_n3 = OpConstant %float -3
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%93 = OpTypeFunction %void %v3uint %103 = OpTypeFunction %void %v3uint
%binaryOperation_f1_f1_ = OpFunction %float None %23 %binaryOperation_f1_f1_ = OpFunction %float None %23
%a = OpFunctionParameter %_ptr_Function_float %a = OpFunctionParameter %_ptr_Function_float
%b = OpFunctionParameter %_ptr_Function_float %b = OpFunctionParameter %_ptr_Function_float
%28 = OpLabel %28 = OpLabel
%x_26 = OpVariable %_ptr_Function_float Function %30 %tint_return_flag = OpVariable %_ptr_Function_bool Function %32
%32 = OpLoad %float %b %tint_return_value = OpVariable %_ptr_Function_float Function %34
%33 = OpFOrdEqual %bool %32 %30 %x_26 = OpVariable %_ptr_Function_float Function %34
OpSelectionMerge %35 None %37 = OpLoad %float %b
OpBranchConditional %33 %36 %35 %38 = OpFOrdEqual %bool %37 %34
%36 = OpLabel OpSelectionMerge %39 None
OpReturnValue %float_1 OpBranchConditional %38 %40 %39
%35 = OpLabel %40 = OpLabel
%39 = OpLoad %float %b OpStore %tint_return_flag %true
%45 = OpFDiv %float %39 %float_2 OpStore %tint_return_value %float_1
%44 = OpExtInst %float %42 Floor %45 OpBranch %39
%46 = OpFMul %float %float_2 %44 %39 = OpLabel
%47 = OpFSub %float %39 %46 %44 = OpLoad %bool %tint_return_flag
%41 = OpExtInst %float %42 RoundEven %47 %43 = OpLogicalNot %bool %44
%48 = OpFOrdEqual %bool %41 %float_1 OpSelectionMerge %45 None
%40 = OpLogicalNot %bool %48 OpBranchConditional %43 %46 %45
OpSelectionMerge %49 None %46 = OpLabel
OpBranchConditional %40 %50 %51 %48 = OpLoad %float %b
%50 = OpLabel %54 = OpFDiv %float %48 %float_2
%53 = OpLoad %float %a %53 = OpExtInst %float %51 Floor %54
%55 = OpLoad %float %b %55 = OpFMul %float %float_2 %53
%57 = OpExtInst %float %42 FAbs %53 %56 = OpFSub %float %48 %55
%56 = OpExtInst %float %42 Pow %57 %55 %50 = OpExtInst %float %51 RoundEven %56
OpStore %x_26 %56 %57 = OpFOrdEqual %bool %50 %float_1
OpBranch %49 %49 = OpLogicalNot %bool %57
%51 = OpLabel OpSelectionMerge %58 None
%59 = OpLoad %float %a OpBranchConditional %49 %59 %60
%61 = OpLoad %float %a %59 = OpLabel
%63 = OpLoad %float %b %62 = OpLoad %float %a
%64 = OpExtInst %float %42 FSign %59 %64 = OpLoad %float %b
%66 = OpExtInst %float %42 FAbs %61 %66 = OpExtInst %float %51 FAbs %62
%65 = OpExtInst %float %42 Pow %66 %63 %65 = OpExtInst %float %51 Pow %66 %64
%67 = OpFMul %float %64 %65 OpStore %x_26 %65
OpStore %x_26 %67 OpBranch %58
OpBranch %49 %60 = OpLabel
%49 = OpLabel %68 = OpLoad %float %a
%68 = OpLoad %float %x_26 %70 = OpLoad %float %a
OpReturnValue %68 %72 = OpLoad %float %b
%73 = OpExtInst %float %51 FSign %68
%75 = OpExtInst %float %51 FAbs %70
%74 = OpExtInst %float %51 Pow %75 %72
%76 = OpFMul %float %73 %74
OpStore %x_26 %76
OpBranch %58
%58 = OpLabel
%77 = OpLoad %float %x_26
OpStore %tint_return_flag %true
OpStore %tint_return_value %77
OpBranch %45
%45 = OpLabel
%78 = OpLoad %float %tint_return_value
OpReturnValue %78
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %69 %main_1 = OpFunction %void None %79
%72 = OpLabel %82 = OpLabel
%index = OpVariable %_ptr_Function_int Function %75 %index = OpVariable %_ptr_Function_int Function %85
%a_1 = OpVariable %_ptr_Function_int Function %75 %a_1 = OpVariable %_ptr_Function_int Function %85
%param = OpVariable %_ptr_Function_float Function %30 %param = OpVariable %_ptr_Function_float Function %34
%param_1 = OpVariable %_ptr_Function_float Function %30 %param_1 = OpVariable %_ptr_Function_float Function %34
%81 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0 %91 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
%82 = OpLoad %uint %81 %92 = OpLoad %uint %91
%83 = OpBitcast %int %82 %93 = OpBitcast %int %92
OpStore %index %83 OpStore %index %93
OpStore %a_1 %int_n10 OpStore %a_1 %int_n10
%85 = OpLoad %int %index %95 = OpLoad %int %index
OpStore %param %float_n4 OpStore %param %float_n4
OpStore %param_1 %float_n3 OpStore %param_1 %float_n3
%88 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1 %98 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1
%92 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %85 %102 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %95
OpStore %92 %88 OpStore %102 %98
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %void None %93 %main_inner = OpFunction %void None %103
%gl_GlobalInvocationID_param = OpFunctionParameter %v3uint %gl_GlobalInvocationID_param = OpFunctionParameter %v3uint
%96 = OpLabel %106 = OpLabel
OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param
%97 = OpFunctionCall %void %main_1 %107 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %69 %main = OpFunction %void None %79
%99 = OpLabel %109 = OpLabel
%101 = OpLoad %v3uint %gl_GlobalInvocationID_param_1 %111 = OpLoad %v3uint %gl_GlobalInvocationID_param_1
%100 = OpFunctionCall %void %main_inner %101 %110 = OpFunctionCall %void %main_inner %111
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 26 ; Bound: 32
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -9,42 +9,52 @@
OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpExecutionMode %unused_entry_point LocalSize 1 1 1
OpName %unused_entry_point "unused_entry_point" OpName %unused_entry_point "unused_entry_point"
OpName %f "f" OpName %f "f"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %i "i" OpName %i "i"
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%5 = OpTypeFunction %int %5 = OpTypeFunction %int
%bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%12 = OpConstantNull %bool
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%11 = OpConstantNull %int %15 = OpConstantNull %int
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%int_4 = OpConstant %int 4 %int_4 = OpConstant %int 4
%bool = OpTypeBool %true = OpConstantTrue %bool
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %int None %5 %f = OpFunction %int None %5
%8 = OpLabel %8 = OpLabel
%i = OpVariable %_ptr_Function_int Function %11 %tint_return_flag = OpVariable %_ptr_Function_bool Function %12
OpBranch %12 %tint_return_value = OpVariable %_ptr_Function_int Function %15
%12 = OpLabel %i = OpVariable %_ptr_Function_int Function %15
OpLoopMerge %13 %14 None OpBranch %17
OpBranch %15 %17 = OpLabel
%15 = OpLabel OpLoopMerge %18 %19 None
%16 = OpLoad %int %i OpBranch %20
%18 = OpIAdd %int %16 %int_1 %20 = OpLabel
OpStore %i %18 %21 = OpLoad %int %i
%19 = OpLoad %int %i %23 = OpIAdd %int %21 %int_1
%21 = OpSGreaterThan %bool %19 %int_4 OpStore %i %23
OpSelectionMerge %23 None %24 = OpLoad %int %i
OpBranchConditional %21 %24 %23 %26 = OpSGreaterThan %bool %24 %int_4
%24 = OpLabel OpSelectionMerge %27 None
%25 = OpLoad %int %i OpBranchConditional %26 %28 %27
OpReturnValue %25 %28 = OpLabel
%23 = OpLabel OpStore %tint_return_flag %true
OpBranch %14 %30 = OpLoad %int %i
%14 = OpLabel OpStore %tint_return_value %30
OpBranch %12 OpBranch %18
%13 = OpLabel %27 = OpLabel
OpReturnValue %11 OpBranch %19
%19 = OpLabel
OpBranch %17
%18 = OpLabel
%31 = OpLoad %int %tint_return_value
OpReturnValue %31
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 29 ; Bound: 39
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -9,15 +9,20 @@
OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpExecutionMode %unused_entry_point LocalSize 1 1 1
OpName %unused_entry_point "unused_entry_point" OpName %unused_entry_point "unused_entry_point"
OpName %f "f" OpName %f "f"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %i "i" OpName %i "i"
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%5 = OpTypeFunction %int %5 = OpTypeFunction %int
%_ptr_Function_int = OpTypePointer Function %int
%11 = OpConstantNull %int
%int_4 = OpConstant %int 4
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%12 = OpConstantNull %bool
%_ptr_Function_int = OpTypePointer Function %int
%15 = OpConstantNull %int
%int_4 = OpConstant %int 4
%true = OpConstantTrue %bool
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
@ -25,29 +30,43 @@
OpFunctionEnd OpFunctionEnd
%f = OpFunction %int None %5 %f = OpFunction %int None %5
%8 = OpLabel %8 = OpLabel
%i = OpVariable %_ptr_Function_int Function %11 %tint_return_flag = OpVariable %_ptr_Function_bool Function %12
OpBranch %12 %tint_return_value = OpVariable %_ptr_Function_int Function %15
%12 = OpLabel %i = OpVariable %_ptr_Function_int Function %15
OpLoopMerge %13 %14 None OpBranch %17
OpBranch %15 %17 = OpLabel
%15 = OpLabel OpLoopMerge %18 %19 None
%16 = OpLoad %int %i OpBranch %20
%18 = OpSGreaterThan %bool %16 %int_4
OpSelectionMerge %20 None
OpBranchConditional %18 %21 %20
%21 = OpLabel
%22 = OpLoad %int %i
OpReturnValue %22
%20 = OpLabel %20 = OpLabel
OpBranch %14 %21 = OpLoad %int %i
%14 = OpLabel %23 = OpSGreaterThan %bool %21 %int_4
%23 = OpLoad %int %i OpSelectionMerge %24 None
%25 = OpIAdd %int %23 %int_1 OpBranchConditional %23 %25 %24
OpStore %i %25 %25 = OpLabel
%26 = OpLoad %int %i OpStore %tint_return_flag %true
%27 = OpIEqual %bool %26 %int_4 %27 = OpLoad %int %i
OpBranchConditional %27 %13 %12 OpStore %tint_return_value %27
%13 = OpLabel OpBranch %18
%24 = OpLabel
OpBranch %19
%19 = OpLabel
%28 = OpLoad %int %i %28 = OpLoad %int %i
OpReturnValue %28 %30 = OpIAdd %int %28 %int_1
OpStore %i %30
%31 = OpLoad %int %i
%32 = OpIEqual %bool %31 %int_4
OpBranchConditional %32 %18 %17
%18 = OpLabel
%34 = OpLoad %bool %tint_return_flag
%33 = OpLogicalNot %bool %34
OpSelectionMerge %35 None
OpBranchConditional %33 %36 %35
%36 = OpLabel
OpStore %tint_return_flag %true
%37 = OpLoad %int %i
OpStore %tint_return_value %37
OpBranch %35
%35 = OpLabel
%38 = OpLoad %int %tint_return_value
OpReturnValue %38
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 26 ; Bound: 32
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -9,15 +9,20 @@
OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpExecutionMode %unused_entry_point LocalSize 1 1 1
OpName %unused_entry_point "unused_entry_point" OpName %unused_entry_point "unused_entry_point"
OpName %f "f" OpName %f "f"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %i "i" OpName %i "i"
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%5 = OpTypeFunction %int %5 = OpTypeFunction %int
%_ptr_Function_int = OpTypePointer Function %int
%11 = OpConstantNull %int
%int_4 = OpConstant %int 4
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%12 = OpConstantNull %bool
%_ptr_Function_int = OpTypePointer Function %int
%15 = OpConstantNull %int
%int_4 = OpConstant %int 4
%true = OpConstantTrue %bool
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
@ -25,26 +30,31 @@
OpFunctionEnd OpFunctionEnd
%f = OpFunction %int None %5 %f = OpFunction %int None %5
%8 = OpLabel %8 = OpLabel
%i = OpVariable %_ptr_Function_int Function %11 %tint_return_flag = OpVariable %_ptr_Function_bool Function %12
OpBranch %12 %tint_return_value = OpVariable %_ptr_Function_int Function %15
%12 = OpLabel %i = OpVariable %_ptr_Function_int Function %15
OpLoopMerge %13 %14 None OpBranch %17
OpBranch %15 %17 = OpLabel
%15 = OpLabel OpLoopMerge %18 %19 None
%16 = OpLoad %int %i OpBranch %20
%18 = OpSGreaterThan %bool %16 %int_4
OpSelectionMerge %20 None
OpBranchConditional %18 %21 %20
%21 = OpLabel
%22 = OpLoad %int %i
OpReturnValue %22
%20 = OpLabel %20 = OpLabel
OpBranch %14 %21 = OpLoad %int %i
%14 = OpLabel %23 = OpSGreaterThan %bool %21 %int_4
%23 = OpLoad %int %i OpSelectionMerge %24 None
%25 = OpIAdd %int %23 %int_1 OpBranchConditional %23 %25 %24
OpStore %i %25 %25 = OpLabel
OpBranch %12 OpStore %tint_return_flag %true
%13 = OpLabel %27 = OpLoad %int %i
OpReturnValue %11 OpStore %tint_return_value %27
OpBranch %18
%24 = OpLabel
OpBranch %19
%19 = OpLabel
%28 = OpLoad %int %i
%30 = OpIAdd %int %28 %int_1
OpStore %i %30
OpBranch %17
%18 = OpLabel
%31 = OpLoad %int %tint_return_value
OpReturnValue %31
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 37 ; Bound: 43
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -9,17 +9,22 @@
OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpExecutionMode %unused_entry_point LocalSize 1 1 1
OpName %unused_entry_point "unused_entry_point" OpName %unused_entry_point "unused_entry_point"
OpName %f "f" OpName %f "f"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %i "i" OpName %i "i"
OpName %j "j" OpName %j "j"
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%5 = OpTypeFunction %int %5 = OpTypeFunction %int
%bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%12 = OpConstantNull %bool
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%11 = OpConstantNull %int %15 = OpConstantNull %int
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%int_4 = OpConstant %int 4 %int_4 = OpConstant %int 4
%bool = OpTypeBool %true = OpConstantTrue %bool
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
@ -27,45 +32,52 @@
OpFunctionEnd OpFunctionEnd
%f = OpFunction %int None %5 %f = OpFunction %int None %5
%8 = OpLabel %8 = OpLabel
%i = OpVariable %_ptr_Function_int Function %11 %tint_return_flag = OpVariable %_ptr_Function_bool Function %12
%j = OpVariable %_ptr_Function_int Function %11 %tint_return_value = OpVariable %_ptr_Function_int Function %15
OpBranch %13 %i = OpVariable %_ptr_Function_int Function %15
%13 = OpLabel %j = OpVariable %_ptr_Function_int Function %15
OpLoopMerge %14 %15 None OpBranch %18
OpBranch %16 %18 = OpLabel
%16 = OpLabel OpLoopMerge %19 %20 None
%17 = OpLoad %int %i OpBranch %21
%19 = OpIAdd %int %17 %int_1 %21 = OpLabel
OpStore %i %19 %22 = OpLoad %int %i
%20 = OpLoad %int %i %24 = OpIAdd %int %22 %int_1
%22 = OpSGreaterThan %bool %20 %int_4 OpStore %i %24
OpSelectionMerge %24 None %25 = OpLoad %int %i
OpBranchConditional %22 %25 %24 %27 = OpSGreaterThan %bool %25 %int_4
%25 = OpLabel OpSelectionMerge %28 None
OpReturnValue %int_1 OpBranchConditional %27 %29 %28
%24 = OpLabel
OpBranch %26
%26 = OpLabel
OpLoopMerge %27 %28 None
OpBranch %29
%29 = OpLabel %29 = OpLabel
%30 = OpLoad %int %j OpStore %tint_return_flag %true
%31 = OpIAdd %int %30 %int_1 OpStore %tint_return_value %int_1
OpStore %j %31 OpBranch %19
%32 = OpLoad %int %j
%33 = OpSGreaterThan %bool %32 %int_4
OpSelectionMerge %34 None
OpBranchConditional %33 %35 %34
%35 = OpLabel
OpReturnValue %int_2
%34 = OpLabel
OpBranch %28
%28 = OpLabel %28 = OpLabel
OpBranch %26 OpBranch %31
%27 = OpLabel %31 = OpLabel
OpBranch %15 OpLoopMerge %32 %33 None
%15 = OpLabel OpBranch %34
OpBranch %13 %34 = OpLabel
%14 = OpLabel %35 = OpLoad %int %j
OpReturnValue %11 %36 = OpIAdd %int %35 %int_1
OpStore %j %36
%37 = OpLoad %int %j
%38 = OpSGreaterThan %bool %37 %int_4
OpSelectionMerge %39 None
OpBranchConditional %38 %40 %39
%40 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %int_2
OpBranch %32
%39 = OpLabel
OpBranch %33
%33 = OpLabel
OpBranch %31
%32 = OpLabel
OpBranch %19
%20 = OpLabel
OpBranch %18
%19 = OpLabel
%42 = OpLoad %int %tint_return_value
OpReturnValue %42
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 37 ; Bound: 43
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -9,16 +9,21 @@
OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpExecutionMode %unused_entry_point LocalSize 1 1 1
OpName %unused_entry_point "unused_entry_point" OpName %unused_entry_point "unused_entry_point"
OpName %f "f" OpName %f "f"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %i "i" OpName %i "i"
OpName %j "j" OpName %j "j"
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%5 = OpTypeFunction %int %5 = OpTypeFunction %int
%_ptr_Function_int = OpTypePointer Function %int
%11 = OpConstantNull %int
%int_4 = OpConstant %int 4
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%12 = OpConstantNull %bool
%_ptr_Function_int = OpTypePointer Function %int
%15 = OpConstantNull %int
%int_4 = OpConstant %int 4
%true = OpConstantTrue %bool
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
@ -27,45 +32,52 @@
OpFunctionEnd OpFunctionEnd
%f = OpFunction %int None %5 %f = OpFunction %int None %5
%8 = OpLabel %8 = OpLabel
%i = OpVariable %_ptr_Function_int Function %11 %tint_return_flag = OpVariable %_ptr_Function_bool Function %12
%j = OpVariable %_ptr_Function_int Function %11 %tint_return_value = OpVariable %_ptr_Function_int Function %15
OpBranch %13 %i = OpVariable %_ptr_Function_int Function %15
%13 = OpLabel %j = OpVariable %_ptr_Function_int Function %15
OpLoopMerge %14 %15 None OpBranch %18
OpBranch %16 %18 = OpLabel
%16 = OpLabel OpLoopMerge %19 %20 None
%17 = OpLoad %int %i OpBranch %21
%19 = OpSGreaterThan %bool %17 %int_4
OpSelectionMerge %21 None
OpBranchConditional %19 %22 %21
%22 = OpLabel
OpReturnValue %int_1
%21 = OpLabel %21 = OpLabel
OpBranch %24 %22 = OpLoad %int %i
%24 = OpLabel %24 = OpSGreaterThan %bool %22 %int_4
OpLoopMerge %25 %26 None OpSelectionMerge %25 None
OpBranch %27 OpBranchConditional %24 %26 %25
%27 = OpLabel
%28 = OpLoad %int %j
%29 = OpSGreaterThan %bool %28 %int_4
OpSelectionMerge %30 None
OpBranchConditional %29 %31 %30
%31 = OpLabel
OpReturnValue %int_2
%30 = OpLabel
OpBranch %26
%26 = OpLabel %26 = OpLabel
%33 = OpLoad %int %j OpStore %tint_return_flag %true
%34 = OpIAdd %int %33 %int_1 OpStore %tint_return_value %int_1
OpStore %j %34 OpBranch %19
OpBranch %24
%25 = OpLabel %25 = OpLabel
OpBranch %15 OpBranch %29
%15 = OpLabel %29 = OpLabel
%35 = OpLoad %int %i OpLoopMerge %30 %31 None
%36 = OpIAdd %int %35 %int_1 OpBranch %32
OpStore %i %36 %32 = OpLabel
OpBranch %13 %33 = OpLoad %int %j
%14 = OpLabel %34 = OpSGreaterThan %bool %33 %int_4
OpReturnValue %11 OpSelectionMerge %35 None
OpBranchConditional %34 %36 %35
%36 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %int_2
OpBranch %30
%35 = OpLabel
OpBranch %31
%31 = OpLabel
%38 = OpLoad %int %j
%39 = OpIAdd %int %38 %int_1
OpStore %j %39
OpBranch %29
%30 = OpLabel
OpBranch %19
%20 = OpLabel
%40 = OpLoad %int %i
%41 = OpIAdd %int %40 %int_1
OpStore %i %41
OpBranch %18
%19 = OpLabel
%42 = OpLoad %int %tint_return_value
OpReturnValue %42
OpFunctionEnd OpFunctionEnd