SPIRV-Cross/shaders-ue4-no-opt/asm/vert/loop-accesschain-writethrough.asm.invalid.vert
Dan Sinclair f40c629821 Roll SPIRV-Tools, SPIRV-Headers and GLSLang
This CL updates the three depdencies and updates the tests to handle the
new validation errors which are produced.
2019-12-02 16:17:21 -05:00

260 lines
13 KiB
GLSL

; SPIR-V
; Version: 1.0
; Generator: Google spiregg; 0
; Bound: 181
; Schema: 0
OpCapability Shader
OpExtension "SPV_GOOGLE_hlsl_functionality1"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %ScatterMainVS "main" %gl_VertexIndex %gl_InstanceIndex %out_var_TEXCOORD0 %out_var_TEXCOORD1 %out_var_TEXCOORD2 %out_var_TEXCOORD3 %out_var_TEXCOORD4 %out_var_TEXCOORD5 %out_var_TEXCOORD6 %gl_Position
OpSource HLSL 600
OpName %type__Globals "type.$Globals"
OpMemberName %type__Globals 0 "ViewportSize"
OpMemberName %type__Globals 1 "ScatteringScaling"
OpMemberName %type__Globals 2 "CocRadiusToCircumscribedRadius"
OpName %_Globals "$Globals"
OpName %type_StructuredBuffer_v4float "type.StructuredBuffer.v4float"
OpName %ScatterDrawList "ScatterDrawList"
OpName %out_var_TEXCOORD0 "out.var.TEXCOORD0"
OpName %out_var_TEXCOORD1 "out.var.TEXCOORD1"
OpName %out_var_TEXCOORD2 "out.var.TEXCOORD2"
OpName %out_var_TEXCOORD3 "out.var.TEXCOORD3"
OpName %out_var_TEXCOORD4 "out.var.TEXCOORD4"
OpName %out_var_TEXCOORD5 "out.var.TEXCOORD5"
OpName %out_var_TEXCOORD6 "out.var.TEXCOORD6"
OpName %ScatterMainVS "ScatterMainVS"
OpDecorate %gl_VertexIndex BuiltIn VertexIndex
OpDecorateString %gl_VertexIndex UserSemantic "SV_VertexID"
OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex
OpDecorateString %gl_InstanceIndex UserSemantic "SV_InstanceID"
OpDecorateString %out_var_TEXCOORD0 UserSemantic "TEXCOORD0"
OpDecorateString %out_var_TEXCOORD1 UserSemantic "TEXCOORD1"
OpDecorateString %out_var_TEXCOORD2 UserSemantic "TEXCOORD2"
OpDecorateString %out_var_TEXCOORD3 UserSemantic "TEXCOORD3"
OpDecorateString %out_var_TEXCOORD4 UserSemantic "TEXCOORD4"
OpDecorateString %out_var_TEXCOORD5 UserSemantic "TEXCOORD5"
OpDecorateString %out_var_TEXCOORD6 UserSemantic "TEXCOORD6"
OpDecorate %gl_Position BuiltIn Position
OpDecorateString %gl_Position UserSemantic "SV_POSITION"
OpDecorate %out_var_TEXCOORD0 Location 0
OpDecorate %out_var_TEXCOORD1 Location 1
OpDecorate %out_var_TEXCOORD2 Location 2
OpDecorate %out_var_TEXCOORD3 Location 3
OpDecorate %out_var_TEXCOORD4 Location 4
OpDecorate %out_var_TEXCOORD5 Location 5
OpDecorate %out_var_TEXCOORD6 Location 6
OpDecorate %_Globals DescriptorSet 0
OpDecorate %_Globals Binding 1
OpDecorate %ScatterDrawList DescriptorSet 0
OpDecorate %ScatterDrawList Binding 0
OpMemberDecorate %type__Globals 0 Offset 0
OpMemberDecorate %type__Globals 1 Offset 16
OpMemberDecorate %type__Globals 2 Offset 20
OpDecorate %type__Globals Block
OpDecorate %_runtimearr_v4float ArrayStride 16
OpMemberDecorate %type_StructuredBuffer_v4float 0 Offset 0
OpMemberDecorate %type_StructuredBuffer_v4float 0 NonWritable
OpDecorate %type_StructuredBuffer_v4float BufferBlock
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%v2float = OpTypeVector %float 2
%int = OpTypeInt 32 1
%uint = OpTypeInt 32 0
%uint_2 = OpConstant %uint 2
%uint_4 = OpConstant %uint 4
%_arr_v4float_uint_4 = OpTypeArray %v4float %uint_4
%float_0_5 = OpConstant %float 0.5
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%float_1 = OpConstant %float 1
%uint_16 = OpConstant %uint 16
%float_0 = OpConstant %float 0
%uint_0 = OpConstant %uint 0
%uint_5 = OpConstant %uint 5
%uint_1 = OpConstant %uint 1
%int_3 = OpConstant %int 3
%float_n0_5 = OpConstant %float -0.5
%int_2 = OpConstant %int 2
%float_2 = OpConstant %float 2
%39 = OpConstantComposite %v2float %float_2 %float_2
%40 = OpConstantComposite %v2float %float_1 %float_1
%41 = OpConstantComposite %v2float %float_0_5 %float_0_5
%type__Globals = OpTypeStruct %v4float %float %float
%_ptr_Uniform_type__Globals = OpTypePointer Uniform %type__Globals
%_runtimearr_v4float = OpTypeRuntimeArray %v4float
%type_StructuredBuffer_v4float = OpTypeStruct %_runtimearr_v4float
%_ptr_Uniform_type_StructuredBuffer_v4float = OpTypePointer Uniform %type_StructuredBuffer_v4float
%_ptr_Input_uint = OpTypePointer Input %uint
%_ptr_Output_v2float = OpTypePointer Output %v2float
%_ptr_Output_v4float = OpTypePointer Output %v4float
%void = OpTypeVoid
%48 = OpTypeFunction %void
%_ptr_Function_v2float = OpTypePointer Function %v2float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function__arr_v4float_uint_4 = OpTypePointer Function %_arr_v4float_uint_4
%_arr_float_uint_4 = OpTypeArray %float %uint_4
%_ptr_Function__arr_float_uint_4 = OpTypePointer Function %_arr_float_uint_4
%_arr_v2float_uint_4 = OpTypeArray %v2float %uint_4
%_ptr_Function__arr_v2float_uint_4 = OpTypePointer Function %_arr_v2float_uint_4
%_ptr_Function_float = OpTypePointer Function %float
%bool = OpTypeBool
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_ptr_Uniform_float = OpTypePointer Uniform %float
%_Globals = OpVariable %_ptr_Uniform_type__Globals Uniform
%ScatterDrawList = OpVariable %_ptr_Uniform_type_StructuredBuffer_v4float Uniform
%gl_VertexIndex = OpVariable %_ptr_Input_uint Input
%gl_InstanceIndex = OpVariable %_ptr_Input_uint Input
%out_var_TEXCOORD0 = OpVariable %_ptr_Output_v2float Output
%out_var_TEXCOORD1 = OpVariable %_ptr_Output_v4float Output
%out_var_TEXCOORD2 = OpVariable %_ptr_Output_v4float Output
%out_var_TEXCOORD3 = OpVariable %_ptr_Output_v4float Output
%out_var_TEXCOORD4 = OpVariable %_ptr_Output_v4float Output
%out_var_TEXCOORD5 = OpVariable %_ptr_Output_v4float Output
%out_var_TEXCOORD6 = OpVariable %_ptr_Output_v4float Output
%gl_Position = OpVariable %_ptr_Output_v4float Output
%ScatterMainVS = OpFunction %void None %48
%60 = OpLabel
%61 = OpVariable %_ptr_Function__arr_v4float_uint_4 Function
%62 = OpVariable %_ptr_Function__arr_float_uint_4 Function
%63 = OpVariable %_ptr_Function__arr_v2float_uint_4 Function
%64 = OpLoad %uint %gl_VertexIndex
%65 = OpLoad %uint %gl_InstanceIndex
%66 = OpUDiv %uint %64 %uint_4
%67 = OpIMul %uint %66 %uint_4
%68 = OpISub %uint %64 %67
%69 = OpIMul %uint %uint_16 %65
%70 = OpIAdd %uint %69 %66
OpBranch %71
%71 = OpLabel
%72 = OpPhi %float %float_0 %60 %73 %74
%75 = OpPhi %uint %uint_0 %60 %76 %74
%77 = OpULessThan %bool %75 %uint_4
OpLoopMerge %78 %74 Unroll
OpBranchConditional %77 %79 %78
%79 = OpLabel
%80 = OpIMul %uint %uint_5 %70
%81 = OpIAdd %uint %80 %75
%82 = OpIAdd %uint %81 %uint_1
%83 = OpAccessChain %_ptr_Uniform_v4float %ScatterDrawList %int_0 %82
%84 = OpLoad %v4float %83
%85 = OpCompositeExtract %float %84 0
%86 = OpCompositeExtract %float %84 1
%87 = OpCompositeExtract %float %84 2
%88 = OpCompositeConstruct %v4float %85 %86 %87 %float_0
%89 = OpAccessChain %_ptr_Function_v4float %61 %75
OpStore %89 %88
%90 = OpCompositeExtract %float %84 3
%91 = OpAccessChain %_ptr_Function_float %62 %75
OpStore %91 %90
%92 = OpIEqual %bool %75 %uint_0
OpSelectionMerge %74 None
OpBranchConditional %92 %93 %94
%93 = OpLabel
%95 = OpLoad %float %91
OpBranch %74
%94 = OpLabel
%96 = OpLoad %float %91
%97 = OpExtInst %float %1 FMax %72 %96
OpBranch %74
%74 = OpLabel
%73 = OpPhi %float %95 %93 %97 %94
%98 = OpLoad %float %91
%99 = OpFDiv %float %float_n0_5 %98
%100 = OpAccessChain %_ptr_Function_float %63 %75 %int_0
OpStore %100 %99
%101 = OpLoad %float %91
%102 = OpFMul %float %float_0_5 %101
%103 = OpFAdd %float %102 %float_0_5
%104 = OpAccessChain %_ptr_Function_float %63 %75 %int_1
OpStore %104 %103
%76 = OpIAdd %uint %75 %uint_1
OpBranch %71
%78 = OpLabel
%105 = OpAccessChain %_ptr_Function_v4float %61 %int_0
%106 = OpLoad %v4float %105
%107 = OpCompositeExtract %float %106 0
%108 = OpCompositeExtract %float %106 1
%109 = OpCompositeExtract %float %106 2
%110 = OpAccessChain %_ptr_Function_float %62 %int_0
%111 = OpLoad %float %110
%112 = OpCompositeConstruct %v4float %107 %108 %109 %111
%113 = OpAccessChain %_ptr_Function_v4float %61 %int_1
%114 = OpLoad %v4float %113
%115 = OpCompositeExtract %float %114 0
%116 = OpCompositeExtract %float %114 1
%117 = OpCompositeExtract %float %114 2
%118 = OpAccessChain %_ptr_Function_float %62 %int_1
%119 = OpLoad %float %118
%120 = OpCompositeConstruct %v4float %115 %116 %117 %119
%121 = OpAccessChain %_ptr_Function_v4float %61 %int_2
%122 = OpLoad %v4float %121
%123 = OpCompositeExtract %float %122 0
%124 = OpCompositeExtract %float %122 1
%125 = OpCompositeExtract %float %122 2
%126 = OpAccessChain %_ptr_Function_float %62 %int_2
%127 = OpLoad %float %126
%128 = OpCompositeConstruct %v4float %123 %124 %125 %127
%129 = OpAccessChain %_ptr_Function_v4float %61 %int_3
%130 = OpLoad %v4float %129
%131 = OpCompositeExtract %float %130 0
%132 = OpCompositeExtract %float %130 1
%133 = OpCompositeExtract %float %130 2
%134 = OpAccessChain %_ptr_Function_float %62 %int_3
%135 = OpLoad %float %134
%136 = OpCompositeConstruct %v4float %131 %132 %133 %135
%137 = OpAccessChain %_ptr_Uniform_float %_Globals %int_1
%138 = OpLoad %float %137
%139 = OpCompositeConstruct %v2float %138 %138
%140 = OpIMul %uint %uint_5 %70
%141 = OpAccessChain %_ptr_Uniform_v4float %ScatterDrawList %int_0 %140
%142 = OpLoad %v4float %141
%143 = OpVectorShuffle %v2float %142 %142 0 1
%144 = OpFMul %v2float %139 %143
%145 = OpAccessChain %_ptr_Function_v2float %63 %int_0
%146 = OpLoad %v2float %145
%147 = OpAccessChain %_ptr_Function_v2float %63 %int_1
%148 = OpLoad %v2float %147
%149 = OpVectorShuffle %v4float %146 %148 0 1 2 3
%150 = OpAccessChain %_ptr_Function_v2float %63 %int_2
%151 = OpLoad %v2float %150
%152 = OpAccessChain %_ptr_Function_v2float %63 %int_3
%153 = OpLoad %v2float %152
%154 = OpVectorShuffle %v4float %151 %153 0 1 2 3
%155 = OpUMod %uint %68 %uint_2
%156 = OpConvertUToF %float %155
%157 = OpUDiv %uint %68 %uint_2
%158 = OpConvertUToF %float %157
%159 = OpCompositeConstruct %v2float %156 %158
%160 = OpFMul %v2float %159 %39
%161 = OpFSub %v2float %160 %40
%162 = OpAccessChain %_ptr_Uniform_float %_Globals %int_2
%163 = OpLoad %float %162
%164 = OpFMul %float %72 %163
%165 = OpFAdd %float %164 %float_1
%166 = OpCompositeConstruct %v2float %165 %165
%167 = OpFMul %v2float %166 %161
%168 = OpFAdd %v2float %167 %144
%169 = OpFAdd %v2float %168 %41
%170 = OpAccessChain %_ptr_Uniform_v4float %_Globals %int_0
%171 = OpLoad %v4float %170
%172 = OpVectorShuffle %v2float %171 %171 2 3
%173 = OpFMul %v2float %169 %172
%174 = OpCompositeExtract %float %173 0
%175 = OpFMul %float %174 %float_2
%176 = OpFSub %float %175 %float_1
%177 = OpCompositeExtract %float %173 1
%178 = OpFMul %float %177 %float_2
%179 = OpFSub %float %float_1 %178
%180 = OpCompositeConstruct %v4float %176 %179 %float_0 %float_1
OpStore %out_var_TEXCOORD0 %144
OpStore %out_var_TEXCOORD1 %112
OpStore %out_var_TEXCOORD2 %120
OpStore %out_var_TEXCOORD3 %128
OpStore %out_var_TEXCOORD4 %136
OpStore %out_var_TEXCOORD5 %149
OpStore %out_var_TEXCOORD6 %154
OpStore %gl_Position %180
OpReturn
OpFunctionEnd