hlsl.spv.1.6.discard.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: foo(f1; ( temp void)
0:2    Function Parameters: 
0:2      'f' ( in float)
0:?     Sequence
0:3      Test condition and select ( temp void)
0:3        Condition
0:3        Compare Less Than ( temp bool)
0:3          'f' ( in float)
0:3          Constant:
0:3            1.000000
0:3        true case
0:4        Branch: Kill
0:8  Function Definition: @PixelShaderFunction(vf4; ( temp void)
0:8    Function Parameters: 
0:8      'input' ( in 4-component vector of float)
0:?     Sequence
0:9      Function Call: foo(f1; ( temp void)
0:9        direct index ( temp float)
0:9          'input' ( in 4-component vector of float)
0:9          Constant:
0:9            2 (const int)
0:10      Test condition and select ( temp void)
0:10        Condition
0:10        Convert float to bool ( temp bool)
0:10          direct index ( temp float)
0:10            'input' ( in 4-component vector of float)
0:10            Constant:
0:10              0 (const int)
0:10        true case
0:11        Branch: Kill
0:12      Sequence
0:12        move second child to first child ( temp float)
0:12          'f' ( temp float)
0:12          direct index ( temp float)
0:12            'input' ( in 4-component vector of float)
0:12            Constant:
0:12              0 (const int)
0:13      Branch: Kill
0:8  Function Definition: PixelShaderFunction( ( temp void)
0:8    Function Parameters: 
0:?     Sequence
0:8      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=0) in 4-component vector of float)
0:8      Function Call: @PixelShaderFunction(vf4; ( temp void)
0:?         'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'input' (layout( location=0) in 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: foo(f1; ( temp void)
0:2    Function Parameters: 
0:2      'f' ( in float)
0:?     Sequence
0:3      Test condition and select ( temp void)
0:3        Condition
0:3        Compare Less Than ( temp bool)
0:3          'f' ( in float)
0:3          Constant:
0:3            1.000000
0:3        true case
0:4        Branch: Kill
0:8  Function Definition: @PixelShaderFunction(vf4; ( temp void)
0:8    Function Parameters: 
0:8      'input' ( in 4-component vector of float)
0:?     Sequence
0:9      Function Call: foo(f1; ( temp void)
0:9        direct index ( temp float)
0:9          'input' ( in 4-component vector of float)
0:9          Constant:
0:9            2 (const int)
0:10      Test condition and select ( temp void)
0:10        Condition
0:10        Convert float to bool ( temp bool)
0:10          direct index ( temp float)
0:10            'input' ( in 4-component vector of float)
0:10            Constant:
0:10              0 (const int)
0:10        true case
0:11        Branch: Kill
0:12      Sequence
0:12        move second child to first child ( temp float)
0:12          'f' ( temp float)
0:12          direct index ( temp float)
0:12            'input' ( in 4-component vector of float)
0:12            Constant:
0:12              0 (const int)
0:13      Branch: Kill
0:8  Function Definition: PixelShaderFunction( ( temp void)
0:8    Function Parameters: 
0:?     Sequence
0:8      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=0) in 4-component vector of float)
0:8      Function Call: @PixelShaderFunction(vf4; ( temp void)
0:?         'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'input' (layout( location=0) in 4-component vector of float)

// Module Version 10600
// Generated by (magic number): 8000b
// Id's are bound by 47

                              Capability Shader
                              Capability DemoteToHelperInvocationEXT
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 42
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "PixelShaderFunction"
                              Name 10  "foo(f1;"
                              Name 9  "f"
                              Name 16  "@PixelShaderFunction(vf4;"
                              Name 15  "input"
                              Name 24  "param"
                              Name 37  "f"
                              Name 40  "input"
                              Name 42  "input"
                              Name 44  "param"
                              Decorate 42(input) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 2 7(ptr)
              12:             TypeVector 6(float) 4
              13:             TypePointer Function 12(fvec4)
              14:             TypeFunction 2 13(ptr)
              19:    6(float) Constant 1065353216
              20:             TypeBool
              25:             TypeInt 32 0
              26:     25(int) Constant 2
              30:     25(int) Constant 0
              33:    6(float) Constant 0
              41:             TypePointer Input 12(fvec4)
       42(input):     41(ptr) Variable Input
4(PixelShaderFunction):           2 Function None 3
               5:             Label
       40(input):     13(ptr) Variable Function
       44(param):     13(ptr) Variable Function
              43:   12(fvec4) Load 42(input)
                              Store 40(input) 43
              45:   12(fvec4) Load 40(input)
                              Store 44(param) 45
              46:           2 FunctionCall 16(@PixelShaderFunction(vf4;) 44(param)
                              Return
                              FunctionEnd
     10(foo(f1;):           2 Function None 8
            9(f):      7(ptr) FunctionParameter
              11:             Label
              18:    6(float) Load 9(f)
              21:    20(bool) FOrdLessThan 18 19
                              SelectionMerge 23 None
                              BranchConditional 21 22 23
              22:               Label
                                DemoteToHelperInvocationEXT
                                Branch 23
              23:             Label
                              Return
                              FunctionEnd
16(@PixelShaderFunction(vf4;):           2 Function None 14
       15(input):     13(ptr) FunctionParameter
              17:             Label
       24(param):      7(ptr) Variable Function
           37(f):      7(ptr) Variable Function
              27:      7(ptr) AccessChain 15(input) 26
              28:    6(float) Load 27
                              Store 24(param) 28
              29:           2 FunctionCall 10(foo(f1;) 24(param)
              31:      7(ptr) AccessChain 15(input) 30
              32:    6(float) Load 31
              34:    20(bool) FUnordNotEqual 32 33
                              SelectionMerge 36 None
                              BranchConditional 34 35 36
              35:               Label
                                DemoteToHelperInvocationEXT
                                Branch 36
              36:             Label
              38:      7(ptr) AccessChain 15(input) 30
              39:    6(float) Load 38
                              Store 37(f) 39
                              DemoteToHelperInvocationEXT
                              Return
                              FunctionEnd
