Web: Turn off includes, independent preprocessing path, fine tune all.

Saved about 21K, size down to 380K of MSVC x86 code.
Fixed one bug that needs to be looked at on the master branch:
The test for needing a Vulkan binding has a bug in it, "!layoutAttachment"
which does not mean "no layoutAttachment", because that is non-zero.
This is why some test and test results changed.
This commit is contained in:
John Kessenich
2019-08-13 08:00:30 -06:00
parent b9197c812e
commit deec1933e9
34 changed files with 423 additions and 198 deletions

View File

@@ -0,0 +1,102 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 74
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %colorOut
OpExecutionMode %main OriginUpperLeft
OpSource ESSL 310
OpName %main "main"
OpName %foo_f1_5__ "foo(f1[5];"
OpName %a "a"
OpName %g4 "g4"
OpName %g5 "g5"
OpName %param "param"
OpName %u "u"
OpName %param_0 "param"
OpName %colorOut "colorOut"
OpDecorate %colorOut Location 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%uint = OpTypeInt 32 0
%uint_5 = OpConstant %uint 5
%_arr_float_uint_5 = OpTypeArray %float %uint_5
%_ptr_Function__arr_float_uint_5 = OpTypePointer Function %_arr_float_uint_5
%uint_4 = OpConstant %uint 4
%_arr_float_uint_4 = OpTypeArray %float %uint_4
%13 = OpTypeFunction %_arr_float_uint_4 %_ptr_Function__arr_float_uint_5
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_Function_float = OpTypePointer Function %float
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%int_3 = OpConstant %int 3
%_ptr_Private__arr_float_uint_4 = OpTypePointer Private %_arr_float_uint_4
%g4 = OpVariable %_ptr_Private__arr_float_uint_4 Private
%_ptr_Private__arr_float_uint_5 = OpTypePointer Private %_arr_float_uint_5
%g5 = OpVariable %_ptr_Private__arr_float_uint_5 Private
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%45 = OpConstantComposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4
%bool = OpTypeBool
%v2float = OpTypeVector %float 2
%_ptr_Output_v2float = OpTypePointer Output %v2float
%colorOut = OpVariable %_ptr_Output_v2float Output
%float_5 = OpConstant %float 5
%73 = OpConstantComposite %v2float %float_4 %float_5
%main = OpFunction %void None %3
%5 = OpLabel
%param = OpVariable %_ptr_Function__arr_float_uint_5 Function
%u = OpVariable %_ptr_Function__arr_float_uint_5 Function
%param_0 = OpVariable %_ptr_Function__arr_float_uint_5 Function
%39 = OpLoad %_arr_float_uint_5 %g5
OpStore %param %39
%40 = OpFunctionCall %_arr_float_uint_4 %foo_f1_5__ %param
OpStore %g4 %40
%46 = OpLoad %_arr_float_uint_4 %g4
%48 = OpCompositeExtract %float %45 0
%49 = OpCompositeExtract %float %46 0
%50 = OpFOrdEqual %bool %48 %49
%51 = OpCompositeExtract %float %45 1
%52 = OpCompositeExtract %float %46 1
%53 = OpFOrdEqual %bool %51 %52
%54 = OpLogicalAnd %bool %50 %53
%55 = OpCompositeExtract %float %45 2
%56 = OpCompositeExtract %float %46 2
%57 = OpFOrdEqual %bool %55 %56
%58 = OpLogicalAnd %bool %54 %57
%59 = OpCompositeExtract %float %45 3
%60 = OpCompositeExtract %float %46 3
%61 = OpFOrdEqual %bool %59 %60
%62 = OpLogicalAnd %bool %58 %61
OpSelectionMerge %64 None
OpBranchConditional %62 %63 %64
%63 = OpLabel
OpBranch %64
%64 = OpLabel
%67 = OpLoad %_arr_float_uint_5 %u
OpStore %param_0 %67
%68 = OpFunctionCall %_arr_float_uint_4 %foo_f1_5__ %param_0
OpStore %colorOut %73
OpReturn
OpFunctionEnd
%foo_f1_5__ = OpFunction %_arr_float_uint_4 None %13
%a = OpFunctionParameter %_ptr_Function__arr_float_uint_5
%16 = OpLabel
%20 = OpAccessChain %_ptr_Function_float %a %int_0
%21 = OpLoad %float %20
%23 = OpAccessChain %_ptr_Function_float %a %int_1
%24 = OpLoad %float %23
%26 = OpAccessChain %_ptr_Function_float %a %int_2
%27 = OpLoad %float %26
%29 = OpAccessChain %_ptr_Function_float %a %int_3
%30 = OpLoad %float %29
%31 = OpCompositeConstruct %_arr_float_uint_4 %21 %24 %27 %30
OpReturnValue %31
OpFunctionEnd