blob: 5719989837dbb37a67c0a38065487a0fb77edd21 [file] [log] [blame]
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 8
; Bound: 193
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %x %BaseColor %Count %bigColor %outColor %v4 %f_0
OpExecutionMode %main OriginUpperLeft
OpSource ESSL 310
OpName %main "main"
OpName %c "c"
OpName %f "f"
OpName %x "x"
OpName %d "d"
OpName %color "color"
OpName %BaseColor "BaseColor"
OpName %i "i"
OpName %Count "Count"
OpName %bigColor "bigColor"
OpName %outColor "outColor"
OpName %sum "sum"
OpName %i_0 "i"
OpName %v4 "v4"
OpName %i_1 "i"
OpName %tv4 "tv4"
OpName %r "r"
OpName %i_2 "i"
OpName %i_3 "i"
OpName %i_4 "i"
OpName %A "A"
OpName %B "B"
OpName %C "C"
OpName %D "D"
OpName %f_0 "f"
OpDecorate %f RelaxedPrecision
OpDecorate %x Location 0
OpDecorate %color RelaxedPrecision
OpDecorate %BaseColor RelaxedPrecision
OpDecorate %BaseColor Location 2
OpDecorate %47 RelaxedPrecision
OpDecorate %Count Flat
OpDecorate %Count Location 4
OpDecorate %bigColor RelaxedPrecision
OpDecorate %bigColor Location 1
OpDecorate %63 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %outColor RelaxedPrecision
OpDecorate %outColor Location 0
OpDecorate %71 RelaxedPrecision
OpDecorate %sum RelaxedPrecision
OpDecorate %v4 Flat
OpDecorate %v4 Location 5
OpDecorate %91 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %93 RelaxedPrecision
OpDecorate %tv4 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %r RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %136 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %145 RelaxedPrecision
OpDecorate %157 RelaxedPrecision
OpDecorate %158 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
OpDecorate %f_0 RelaxedPrecision
OpDecorate %f_0 Location 3
%void = OpTypeVoid
%3 = OpTypeFunction %void
%int = OpTypeInt 32 1
%_ptr_Private_int = OpTypePointer Private %int
%c = OpVariable %_ptr_Private_int Private
%float = OpTypeFloat 32
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Input_float = OpTypePointer Input %float
%x = OpVariable %_ptr_Input_float Input
%d = OpVariable %_ptr_Private_int Private
%v4float = OpTypeVector %float 4
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Input_v4float = OpTypePointer Input %v4float
%BaseColor = OpVariable %_ptr_Input_v4float Input
%_ptr_Function_int = OpTypePointer Function %int
%int_0 = OpConstant %int 0
%_ptr_Input_int = OpTypePointer Input %int
%Count = OpVariable %_ptr_Input_int Input
%bool = OpTypeBool
%bigColor = OpVariable %_ptr_Input_v4float Input
%int_1 = OpConstant %int 1
%_ptr_Output_v4float = OpTypePointer Output %v4float
%outColor = OpVariable %_ptr_Output_v4float Output
%float_0 = OpConstant %float 0
%int_4 = OpConstant %int 4
%uint = OpTypeInt 32 0
%v4uint = OpTypeVector %uint 4
%_ptr_Input_v4uint = OpTypePointer Input %v4uint
%v4 = OpVariable %_ptr_Input_v4uint Input
%_ptr_Input_uint = OpTypePointer Input %uint
%uint_4 = OpConstant %uint 4
%v3float = OpTypeVector %float 3
%uint_3 = OpConstant %uint 3
%int_16 = OpConstant %int 16
%int_10 = OpConstant %int 10
%int_2 = OpConstant %int 2
%int_5 = OpConstant %int 5
%int_3 = OpConstant %int 3
%f_0 = OpVariable %_ptr_Input_float Input
%main = OpFunction %void None %3
%5 = OpLabel
%f = OpVariable %_ptr_Function_float Function
%color = OpVariable %_ptr_Function_v4float Function
%i = OpVariable %_ptr_Function_int Function
%sum = OpVariable %_ptr_Function_float Function
%i_0 = OpVariable %_ptr_Function_int Function
%i_1 = OpVariable %_ptr_Function_int Function
%tv4 = OpVariable %_ptr_Function_v4float Function
%r = OpVariable %_ptr_Function_v4float Function
%i_2 = OpVariable %_ptr_Function_int Function
%i_3 = OpVariable %_ptr_Function_int Function
%i_4 = OpVariable %_ptr_Function_int Function
%A = OpVariable %_ptr_Function_int Function
%B = OpVariable %_ptr_Function_int Function
%C = OpVariable %_ptr_Function_int Function
%D = OpVariable %_ptr_Function_int Function
%9 = OpLoad %int %c
OpSelectionMerge %13 None
OpSwitch %9 %12 1 %10 2 %11
%12 = OpLabel
%39 = OpLoad %float %x
%40 = OpExtInst %float %1 Tan %39
OpStore %f %40
OpBranch %13
%10 = OpLabel
%19 = OpLoad %float %x
%20 = OpExtInst %float %1 Sin %19
OpStore %f %20
OpBranch %13
%11 = OpLabel
%23 = OpLoad %int %d
OpSelectionMerge %26 None
OpSwitch %23 %26 1 %24 2 %25
%24 = OpLabel
%27 = OpLoad %float %x
%28 = OpLoad %float %x
%29 = OpFMul %float %27 %28
%30 = OpLoad %float %x
%31 = OpFMul %float %29 %30
OpStore %f %31
OpBranch %26
%25 = OpLabel
%33 = OpLoad %float %x
%34 = OpLoad %float %x
%35 = OpFMul %float %33 %34
OpStore %f %35
OpBranch %26
%26 = OpLabel
OpBranch %13
%13 = OpLabel
%47 = OpLoad %v4float %BaseColor
OpStore %color %47
OpStore %i %int_0
OpBranch %51
%51 = OpLabel
OpLoopMerge %53 %54 None
OpBranch %55
%55 = OpLabel
%56 = OpLoad %int %i
%59 = OpLoad %int %Count
%61 = OpSLessThan %bool %56 %59
OpBranchConditional %61 %52 %53
%52 = OpLabel
%63 = OpLoad %v4float %bigColor
%64 = OpLoad %v4float %color
%65 = OpFAdd %v4float %64 %63
OpStore %color %65
OpBranch %54
%54 = OpLabel
%66 = OpLoad %int %i
%68 = OpIAdd %int %66 %int_1
OpStore %i %68
OpBranch %51
%53 = OpLabel
%71 = OpLoad %v4float %color
OpStore %outColor %71
OpStore %sum %float_0
OpStore %i_0 %int_0
OpBranch %75
%75 = OpLabel
OpLoopMerge %77 %78 None
OpBranch %79
%79 = OpLabel
%80 = OpLoad %int %i_0
%82 = OpSLessThan %bool %80 %int_4
OpBranchConditional %82 %76 %77
%76 = OpLabel
%87 = OpLoad %int %i_0
%89 = OpAccessChain %_ptr_Input_uint %v4 %87
%90 = OpLoad %uint %89
%91 = OpConvertUToF %float %90
%92 = OpLoad %float %sum
%93 = OpFAdd %float %92 %91
OpStore %sum %93
OpBranch %78
%78 = OpLabel
%94 = OpLoad %int %i_0
%95 = OpIAdd %int %94 %int_1
OpStore %i_0 %95
OpBranch %75
%77 = OpLabel
OpStore %i_1 %int_0
OpBranch %97
%97 = OpLabel
OpLoopMerge %99 %100 None
OpBranch %101
%101 = OpLabel
%102 = OpLoad %int %i_1
%103 = OpSLessThan %bool %102 %int_4
OpBranchConditional %103 %98 %99
%98 = OpLabel
%105 = OpLoad %int %i_1
%106 = OpLoad %int %i_1
%107 = OpAccessChain %_ptr_Input_uint %v4 %106
%108 = OpLoad %uint %107
%110 = OpIMul %uint %108 %uint_4
%111 = OpConvertUToF %float %110
%112 = OpAccessChain %_ptr_Function_float %tv4 %105
OpStore %112 %111
OpBranch %100
%100 = OpLabel
%113 = OpLoad %int %i_1
%114 = OpIAdd %int %113 %int_1
OpStore %i_1 %114
OpBranch %97
%99 = OpLabel
%115 = OpLoad %float %sum
%116 = OpCompositeConstruct %v4float %115 %115 %115 %115
%117 = OpLoad %v4float %tv4
%118 = OpFAdd %v4float %116 %117
%119 = OpLoad %v4float %outColor
%120 = OpFAdd %v4float %119 %118
OpStore %outColor %120
%123 = OpLoad %v4float %BaseColor
%124 = OpVectorShuffle %v3float %123 %123 0 1 2
%125 = OpLoad %v4float %r
%126 = OpVectorShuffle %v4float %125 %124 4 5 6 3
OpStore %r %126
OpStore %i_2 %int_0
OpBranch %128
%128 = OpLabel
OpLoopMerge %130 %131 None
OpBranch %132
%132 = OpLabel
%133 = OpLoad %int %i_2
%134 = OpLoad %int %Count
%135 = OpSLessThan %bool %133 %134
OpBranchConditional %135 %129 %130
%129 = OpLabel
%136 = OpLoad %float %f
%138 = OpAccessChain %_ptr_Function_float %r %uint_3
OpStore %138 %136
OpBranch %131
%131 = OpLabel
%139 = OpLoad %int %i_2
%140 = OpIAdd %int %139 %int_1
OpStore %i_2 %140
OpBranch %128
%130 = OpLabel
%141 = OpLoad %v4float %r
%142 = OpVectorShuffle %v3float %141 %141 0 1 2
%143 = OpLoad %v4float %outColor
%144 = OpVectorShuffle %v3float %143 %143 0 1 2
%145 = OpFAdd %v3float %144 %142
%146 = OpLoad %v4float %outColor
%147 = OpVectorShuffle %v4float %146 %145 4 5 6 3
OpStore %outColor %147
OpStore %i_3 %int_0
OpBranch %149
%149 = OpLabel
OpLoopMerge %151 %152 None
OpBranch %153
%153 = OpLabel
%154 = OpLoad %int %i_3
%156 = OpSLessThan %bool %154 %int_16
OpBranchConditional %156 %150 %151
%150 = OpLabel
%157 = OpLoad %float %f
%158 = OpLoad %v4float %outColor
%159 = OpVectorTimesScalar %v4float %158 %157
OpStore %outColor %159
OpBranch %152
%152 = OpLabel
%160 = OpLoad %int %i_3
%161 = OpIAdd %int %160 %int_4
OpStore %i_3 %161
OpBranch %149
%151 = OpLabel
OpStore %i_4 %int_0
OpBranch %163
%163 = OpLabel
OpLoopMerge %165 %166 None
OpBranch %167
%167 = OpLabel
%168 = OpLoad %int %i_4
%170 = OpSLessThan %bool %168 %int_10
OpBranchConditional %170 %164 %165
%164 = OpLabel
OpStore %A %int_1
%172 = OpLoad %int %i_4
%174 = OpSMod %int %172 %int_2
%175 = OpIEqual %bool %174 %int_0
OpSelectionMerge %177 None
OpBranchConditional %175 %176 %177
%176 = OpLabel
OpStore %B %int_2
OpBranch %166
%177 = OpLabel
%181 = OpLoad %int %i_4
%183 = OpSMod %int %181 %int_5
%184 = OpIEqual %bool %183 %int_0
OpSelectionMerge %186 None
OpBranchConditional %184 %185 %186
%185 = OpLabel
OpStore %B %int_2
OpBranch %165
%186 = OpLabel
%188 = OpLoad %int %i_4
%189 = OpIAdd %int %188 %int_1
OpStore %i_4 %189
OpBranch %166
%166 = OpLabel
OpBranch %163
%165 = OpLabel
OpStore %D %int_3
OpReturn
OpFunctionEnd