SPIRV-Cross/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert
Hans-Kristian Arntzen ebf463674d MSL: Allow removing clip distance user varyings.
Only safe if user knows that subsequent shader stage will not read clip
distance.
2020-04-20 09:58:40 +02:00

92 lines
4.0 KiB
GLSL

; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 8
; Bound: 56
; Schema: 0
OpCapability Shader
OpCapability ClipDistance
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %main "main" %pos_1 %_entryPointOutput_pos %_entryPointOutput_clip
OpSource HLSL 500
OpName %main "main"
OpName %VSOut "VSOut"
OpMemberName %VSOut 0 "pos"
OpMemberName %VSOut 1 "clip"
OpName %_main_vf4_ "@main(vf4;"
OpName %pos "pos"
OpName %vout "vout"
OpName %pos_0 "pos"
OpName %pos_1 "pos"
OpName %flattenTemp "flattenTemp"
OpName %param "param"
OpName %_entryPointOutput_pos "@entryPointOutput.pos"
OpName %_entryPointOutput_clip "@entryPointOutput.clip"
OpDecorate %pos_1 Location 0
OpDecorate %_entryPointOutput_pos BuiltIn Position
OpDecorate %_entryPointOutput_clip BuiltIn ClipDistance
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Function_v4float = OpTypePointer Function %v4float
%v2float = OpTypeVector %float 2
%VSOut = OpTypeStruct %v4float %v2float
%11 = OpTypeFunction %VSOut %_ptr_Function_v4float
%_ptr_Function_VSOut = OpTypePointer Function %VSOut
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%_ptr_Function_v2float = OpTypePointer Function %v2float
%_ptr_Input_v4float = OpTypePointer Input %v4float
%pos_1 = OpVariable %_ptr_Input_v4float Input
%_ptr_Output_v4float = OpTypePointer Output %v4float
%_entryPointOutput_pos = OpVariable %_ptr_Output_v4float Output
%uint = OpTypeInt 32 0
%uint_2 = OpConstant %uint 2
%_arr_float_uint_2 = OpTypeArray %float %uint_2
%_ptr_Output__arr_float_uint_2 = OpTypePointer Output %_arr_float_uint_2
%_entryPointOutput_clip = OpVariable %_ptr_Output__arr_float_uint_2 Output
%uint_0 = OpConstant %uint 0
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Output_float = OpTypePointer Output %float
%uint_1 = OpConstant %uint 1
%main = OpFunction %void None %3
%5 = OpLabel
%pos_0 = OpVariable %_ptr_Function_v4float Function
%flattenTemp = OpVariable %_ptr_Function_VSOut Function
%param = OpVariable %_ptr_Function_v4float Function
%32 = OpLoad %v4float %pos_1
OpStore %pos_0 %32
%35 = OpLoad %v4float %pos_0
OpStore %param %35
%36 = OpFunctionCall %VSOut %_main_vf4_ %param
OpStore %flattenTemp %36
%39 = OpAccessChain %_ptr_Function_v4float %flattenTemp %int_0
%40 = OpLoad %v4float %39
OpStore %_entryPointOutput_pos %40
%48 = OpAccessChain %_ptr_Function_float %flattenTemp %int_1 %uint_0
%49 = OpLoad %float %48
%51 = OpAccessChain %_ptr_Output_float %_entryPointOutput_clip %int_0
OpStore %51 %49
%53 = OpAccessChain %_ptr_Function_float %flattenTemp %int_1 %uint_1
%54 = OpLoad %float %53
%55 = OpAccessChain %_ptr_Output_float %_entryPointOutput_clip %int_1
OpStore %55 %54
OpReturn
OpFunctionEnd
%_main_vf4_ = OpFunction %VSOut None %11
%pos = OpFunctionParameter %_ptr_Function_v4float
%14 = OpLabel
%vout = OpVariable %_ptr_Function_VSOut Function
%19 = OpLoad %v4float %pos
%20 = OpAccessChain %_ptr_Function_v4float %vout %int_0
OpStore %20 %19
%22 = OpLoad %v4float %pos
%23 = OpVectorShuffle %v2float %22 %22 0 1
%25 = OpAccessChain %_ptr_Function_v2float %vout %int_1
OpStore %25 %23
%26 = OpLoad %VSOut %vout
OpReturnValue %26
OpFunctionEnd