hlsl.logical.unary.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
0:12    Function Parameters: 
0:?     Sequence
0:13      Negate conditional ( temp bool)
0:13        Convert int to bool ( temp bool)
0:13          ival: direct index for structure ( uniform int)
0:13            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:13            Constant:
0:13              0 (const uint)
0:14      Negate conditional ( temp 4-component vector of bool)
0:14        Convert int to bool ( temp 4-component vector of bool)
0:14          ival4: direct index for structure ( uniform 4-component vector of int)
0:14            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:14            Constant:
0:14              1 (const uint)
0:16      Negate conditional ( temp bool)
0:16        Convert float to bool ( temp bool)
0:16          fval: direct index for structure ( uniform float)
0:16            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:16            Constant:
0:16              2 (const uint)
0:17      Negate conditional ( temp 4-component vector of bool)
0:17        Convert float to bool ( temp 4-component vector of bool)
0:17          fval4: direct index for structure ( uniform 4-component vector of float)
0:17            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:17            Constant:
0:17              3 (const uint)
0:19      Test condition and select ( temp void)
0:19        Condition
0:19        Convert int to bool ( temp bool)
0:19          ival: direct index for structure ( uniform int)
0:19            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:19            Constant:
0:19              0 (const uint)
0:19        true case is null
0:20      Test condition and select ( temp void)
0:20        Condition
0:20        Convert float to bool ( temp bool)
0:20          fval: direct index for structure ( uniform float)
0:20            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:20            Constant:
0:20              2 (const uint)
0:20        true case is null
0:21      Test condition and select ( temp void)
0:21        Condition
0:21        Negate conditional ( temp bool)
0:21          Convert int to bool ( temp bool)
0:21            ival: direct index for structure ( uniform int)
0:21              'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:21              Constant:
0:21                0 (const uint)
0:21        true case is null
0:22      Test condition and select ( temp void)
0:22        Condition
0:22        Negate conditional ( temp bool)
0:22          Convert float to bool ( temp bool)
0:22            fval: direct index for structure ( uniform float)
0:22              'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:22              Constant:
0:22                2 (const uint)
0:22        true case is null
0:25      move second child to first child ( temp 4-component vector of float)
0:25        Color: direct index for structure ( temp 4-component vector of float)
0:25          'psout' ( temp structure{ temp 4-component vector of float Color})
0:25          Constant:
0:25            0 (const int)
0:25        Constant:
0:25          1.000000
0:25          1.000000
0:25          1.000000
0:25          1.000000
0:26      Branch: Return with expression
0:26        'psout' ( temp structure{ temp 4-component vector of float Color})
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      Sequence
0:12        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:12          Color: direct index for structure ( temp 4-component vector of float)
0:12            Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:12            Constant:
0:12              0 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
0:12    Function Parameters: 
0:?     Sequence
0:13      Negate conditional ( temp bool)
0:13        Convert int to bool ( temp bool)
0:13          ival: direct index for structure ( uniform int)
0:13            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:13            Constant:
0:13              0 (const uint)
0:14      Negate conditional ( temp 4-component vector of bool)
0:14        Convert int to bool ( temp 4-component vector of bool)
0:14          ival4: direct index for structure ( uniform 4-component vector of int)
0:14            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:14            Constant:
0:14              1 (const uint)
0:16      Negate conditional ( temp bool)
0:16        Convert float to bool ( temp bool)
0:16          fval: direct index for structure ( uniform float)
0:16            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:16            Constant:
0:16              2 (const uint)
0:17      Negate conditional ( temp 4-component vector of bool)
0:17        Convert float to bool ( temp 4-component vector of bool)
0:17          fval4: direct index for structure ( uniform 4-component vector of float)
0:17            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:17            Constant:
0:17              3 (const uint)
0:19      Test condition and select ( temp void)
0:19        Condition
0:19        Convert int to bool ( temp bool)
0:19          ival: direct index for structure ( uniform int)
0:19            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:19            Constant:
0:19              0 (const uint)
0:19        true case is null
0:20      Test condition and select ( temp void)
0:20        Condition
0:20        Convert float to bool ( temp bool)
0:20          fval: direct index for structure ( uniform float)
0:20            'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:20            Constant:
0:20              2 (const uint)
0:20        true case is null
0:21      Test condition and select ( temp void)
0:21        Condition
0:21        Negate conditional ( temp bool)
0:21          Convert int to bool ( temp bool)
0:21            ival: direct index for structure ( uniform int)
0:21              'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:21              Constant:
0:21                0 (const uint)
0:21        true case is null
0:22      Test condition and select ( temp void)
0:22        Condition
0:22        Negate conditional ( temp bool)
0:22          Convert float to bool ( temp bool)
0:22            fval: direct index for structure ( uniform float)
0:22              'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:22              Constant:
0:22                2 (const uint)
0:22        true case is null
0:25      move second child to first child ( temp 4-component vector of float)
0:25        Color: direct index for structure ( temp 4-component vector of float)
0:25          'psout' ( temp structure{ temp 4-component vector of float Color})
0:25          Constant:
0:25            0 (const int)
0:25        Constant:
0:25          1.000000
0:25          1.000000
0:25          1.000000
0:25          1.000000
0:26      Branch: Return with expression
0:26        'psout' ( temp structure{ temp 4-component vector of float Color})
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      Sequence
0:12        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:12          Color: direct index for structure ( temp 4-component vector of float)
0:12            Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:12            Constant:
0:12              0 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int ival,  uniform 4-component vector of int ival4,  uniform float fval,  uniform 4-component vector of float fval4})
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 84

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 81
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              Name 10  "@main("
                              Name 14  "$Global"
                              MemberName 14($Global) 0  "ival"
                              MemberName 14($Global) 1  "ival4"
                              MemberName 14($Global) 2  "fval"
                              MemberName 14($Global) 3  "fval4"
                              Name 16  ""
                              Name 72  "psout"
                              Name 81  "@entryPointOutput.Color"
                              MemberDecorate 14($Global) 0 Offset 0
                              MemberDecorate 14($Global) 1 Offset 16
                              MemberDecorate 14($Global) 2 Offset 32
                              MemberDecorate 14($Global) 3 Offset 48
                              Decorate 14($Global) Block
                              Decorate 16 DescriptorSet 0
                              Decorate 16 Binding 0
                              Decorate 81(@entryPointOutput.Color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
    8(PS_OUTPUT):             TypeStruct 7(fvec4)
               9:             TypeFunction 8(PS_OUTPUT)
              12:             TypeInt 32 1
              13:             TypeVector 12(int) 4
     14($Global):             TypeStruct 12(int) 13(ivec4) 6(float) 7(fvec4)
              15:             TypePointer Uniform 14($Global)
              16:     15(ptr) Variable Uniform
              17:     12(int) Constant 0
              18:             TypePointer Uniform 12(int)
              21:             TypeBool
              22:             TypeInt 32 0
              23:     22(int) Constant 0
              26:     12(int) Constant 1
              27:             TypePointer Uniform 13(ivec4)
              30:             TypeVector 21(bool) 4
              31:             TypeVector 22(int) 4
              32:   31(ivec4) ConstantComposite 23 23 23 23
              35:     12(int) Constant 2
              36:             TypePointer Uniform 6(float)
              39:    6(float) Constant 0
              42:     12(int) Constant 3
              43:             TypePointer Uniform 7(fvec4)
              46:    7(fvec4) ConstantComposite 39 39 39 39
              71:             TypePointer Function 8(PS_OUTPUT)
              73:    6(float) Constant 1065353216
              74:    7(fvec4) ConstantComposite 73 73 73 73
              75:             TypePointer Function 7(fvec4)
              80:             TypePointer Output 7(fvec4)
81(@entryPointOutput.Color):     80(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              82:8(PS_OUTPUT) FunctionCall 10(@main()
              83:    7(fvec4) CompositeExtract 82 0
                              Store 81(@entryPointOutput.Color) 83
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
       72(psout):     71(ptr) Variable Function
              19:     18(ptr) AccessChain 16 17
              20:     12(int) Load 19
              24:    21(bool) INotEqual 20 23
              25:    21(bool) LogicalNot 24
              28:     27(ptr) AccessChain 16 26
              29:   13(ivec4) Load 28
              33:   30(bvec4) INotEqual 29 32
              34:   30(bvec4) LogicalNot 33
              37:     36(ptr) AccessChain 16 35
              38:    6(float) Load 37
              40:    21(bool) FOrdNotEqual 38 39
              41:    21(bool) LogicalNot 40
              44:     43(ptr) AccessChain 16 42
              45:    7(fvec4) Load 44
              47:   30(bvec4) FOrdNotEqual 45 46
              48:   30(bvec4) LogicalNot 47
              49:     18(ptr) AccessChain 16 17
              50:     12(int) Load 49
              51:    21(bool) INotEqual 50 23
                              SelectionMerge 53 None
                              BranchConditional 51 52 53
              52:               Label
                                Branch 53
              53:             Label
              54:     36(ptr) AccessChain 16 35
              55:    6(float) Load 54
              56:    21(bool) FOrdNotEqual 55 39
                              SelectionMerge 58 None
                              BranchConditional 56 57 58
              57:               Label
                                Branch 58
              58:             Label
              59:     18(ptr) AccessChain 16 17
              60:     12(int) Load 59
              61:    21(bool) INotEqual 60 23
              62:    21(bool) LogicalNot 61
                              SelectionMerge 64 None
                              BranchConditional 62 63 64
              63:               Label
                                Branch 64
              64:             Label
              65:     36(ptr) AccessChain 16 35
              66:    6(float) Load 65
              67:    21(bool) FOrdNotEqual 66 39
              68:    21(bool) LogicalNot 67
                              SelectionMerge 70 None
                              BranchConditional 68 69 70
              69:               Label
                                Branch 70
              70:             Label
              76:     75(ptr) AccessChain 72(psout) 17
                              Store 76 74
              77:8(PS_OUTPUT) Load 72(psout)
                              ReturnValue 77
                              FunctionEnd
