hlsl.entry-out.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7  Function Definition: fun(struct-OutParam-vf2-vi21; (temp void)
0:7    Function Parameters: 
0:7      'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:?     Sequence
0:8      move second child to first child (temp 2-component vector of float)
0:8        v: direct index for structure (temp 2-component vector of float)
0:8          'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:8          Constant:
0:8            0 (const int)
0:8        Constant:
0:8          0.400000
0:8          0.400000
0:9      move second child to first child (temp 2-component vector of int)
0:9        i: direct index for structure (temp 2-component vector of int)
0:9          'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:9          Constant:
0:9            1 (const int)
0:9        Constant:
0:9          7 (const int)
0:9          7 (const int)
0:13  Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float)
0:13    Function Parameters: 
0:13      'input' (layout(location=0 ) in 4-component vector of float)
0:13      'out1' (layout(location=1 ) out 4-component vector of float)
0:13      'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:13      'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:?     Sequence
0:14      move second child to first child (temp 4-component vector of float)
0:14        'out1' (layout(location=1 ) out 4-component vector of float)
0:14        'input' (layout(location=0 ) in 4-component vector of float)
0:15      move second child to first child (temp 2-component vector of float)
0:?         'v' (layout(location=2 ) out 2-component vector of float)
0:15        Constant:
0:15          2.000000
0:15          2.000000
0:16      move second child to first child (temp 2-component vector of int)
0:?         'i' (layout(location=3 ) out 2-component vector of int)
0:16        Constant:
0:16          3 (const int)
0:16          3 (const int)
0:18      move second child to first child (temp 2-component vector of float)
0:18        v: direct index for structure (temp 2-component vector of float)
0:18          'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:18          Constant:
0:18            0 (const int)
0:18        Constant:
0:18          12.000000
0:18          12.000000
0:19      move second child to first child (temp 2-component vector of int)
0:19        i: direct index for structure (temp 2-component vector of int)
0:19          'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:19          Constant:
0:19            1 (const int)
0:19        Constant:
0:19          13 (const int)
0:19          13 (const int)
0:20      Comma (temp void)
0:20        Function Call: fun(struct-OutParam-vf2-vi21; (temp void)
0:20          'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:20        Sequence
0:20          move second child to first child (temp 2-component vector of float)
0:?             'v' (layout(location=4 ) out 2-component vector of float)
0:20            v: direct index for structure (temp 2-component vector of float)
0:20              'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:20              Constant:
0:20                0 (const int)
0:20          move second child to first child (temp 2-component vector of int)
0:?             'i' (layout(location=5 ) out 2-component vector of int)
0:20            i: direct index for structure (temp 2-component vector of int)
0:20              'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:20              Constant:
0:20                1 (const int)
0:22      Sequence
0:22        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:22          'out1' (layout(location=1 ) out 4-component vector of float)
0:22        Branch: Return
0:?   Linker Objects
0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?     'input' (layout(location=0 ) in 4-component vector of float)
0:?     'out1' (layout(location=1 ) out 4-component vector of float)
0:?     'v' (layout(location=2 ) out 2-component vector of float)
0:?     'i' (layout(location=3 ) out 2-component vector of int)
0:?     'v' (layout(location=4 ) out 2-component vector of float)
0:?     'i' (layout(location=5 ) out 2-component vector of int)


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:7  Function Definition: fun(struct-OutParam-vf2-vi21; (temp void)
0:7    Function Parameters: 
0:7      'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:?     Sequence
0:8      move second child to first child (temp 2-component vector of float)
0:8        v: direct index for structure (temp 2-component vector of float)
0:8          'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:8          Constant:
0:8            0 (const int)
0:8        Constant:
0:8          0.400000
0:8          0.400000
0:9      move second child to first child (temp 2-component vector of int)
0:9        i: direct index for structure (temp 2-component vector of int)
0:9          'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:9          Constant:
0:9            1 (const int)
0:9        Constant:
0:9          7 (const int)
0:9          7 (const int)
0:13  Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float)
0:13    Function Parameters: 
0:13      'input' (layout(location=0 ) in 4-component vector of float)
0:13      'out1' (layout(location=1 ) out 4-component vector of float)
0:13      'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:13      'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:?     Sequence
0:14      move second child to first child (temp 4-component vector of float)
0:14        'out1' (layout(location=1 ) out 4-component vector of float)
0:14        'input' (layout(location=0 ) in 4-component vector of float)
0:15      move second child to first child (temp 2-component vector of float)
0:?         'v' (layout(location=2 ) out 2-component vector of float)
0:15        Constant:
0:15          2.000000
0:15          2.000000
0:16      move second child to first child (temp 2-component vector of int)
0:?         'i' (layout(location=3 ) out 2-component vector of int)
0:16        Constant:
0:16          3 (const int)
0:16          3 (const int)
0:18      move second child to first child (temp 2-component vector of float)
0:18        v: direct index for structure (temp 2-component vector of float)
0:18          'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:18          Constant:
0:18            0 (const int)
0:18        Constant:
0:18          12.000000
0:18          12.000000
0:19      move second child to first child (temp 2-component vector of int)
0:19        i: direct index for structure (temp 2-component vector of int)
0:19          'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:19          Constant:
0:19            1 (const int)
0:19        Constant:
0:19          13 (const int)
0:19          13 (const int)
0:20      Comma (temp void)
0:20        Function Call: fun(struct-OutParam-vf2-vi21; (temp void)
0:20          'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:20        Sequence
0:20          move second child to first child (temp 2-component vector of float)
0:?             'v' (layout(location=4 ) out 2-component vector of float)
0:20            v: direct index for structure (temp 2-component vector of float)
0:20              'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:20              Constant:
0:20                0 (const int)
0:20          move second child to first child (temp 2-component vector of int)
0:?             'i' (layout(location=5 ) out 2-component vector of int)
0:20            i: direct index for structure (temp 2-component vector of int)
0:20              'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
0:20              Constant:
0:20                1 (const int)
0:22      Sequence
0:22        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:22          'out1' (layout(location=1 ) out 4-component vector of float)
0:22        Branch: Return
0:?   Linker Objects
0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?     'input' (layout(location=0 ) in 4-component vector of float)
0:?     'out1' (layout(location=1 ) out 4-component vector of float)
0:?     'v' (layout(location=2 ) out 2-component vector of float)
0:?     'i' (layout(location=3 ) out 2-component vector of int)
0:?     'v' (layout(location=4 ) out 2-component vector of float)
0:?     'i' (layout(location=5 ) out 2-component vector of int)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 28 30 33 37 51 54 57
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "PixelShaderFunction"
                              Name 10  "OutParam"
                              MemberName 10(OutParam) 0  "v"
                              MemberName 10(OutParam) 1  "i"
                              Name 14  "fun(struct-OutParam-vf2-vi21;"
                              Name 13  "op"
                              Name 28  "out1"
                              Name 30  "input"
                              Name 33  "v"
                              Name 37  "i"
                              Name 40  "local"
                              Name 47  "tempArg"
                              Name 48  "param"
                              Name 51  "v"
                              Name 54  "i"
                              Name 57  "@entryPointOutput"
                              Decorate 28(out1) Location 1
                              Decorate 30(input) Location 0
                              Decorate 33(v) Location 2
                              Decorate 37(i) Location 3
                              Decorate 51(v) Location 4
                              Decorate 54(i) Location 5
                              Decorate 57(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 2
               8:             TypeInt 32 1
               9:             TypeVector 8(int) 2
    10(OutParam):             TypeStruct 7(fvec2) 9(ivec2)
              11:             TypePointer Function 10(OutParam)
              12:             TypeFunction 2 11(ptr)
              16:      8(int) Constant 0
              17:    6(float) Constant 1053609165
              18:    7(fvec2) ConstantComposite 17 17
              19:             TypePointer Function 7(fvec2)
              21:      8(int) Constant 1
              22:      8(int) Constant 7
              23:    9(ivec2) ConstantComposite 22 22
              24:             TypePointer Function 9(ivec2)
              26:             TypeVector 6(float) 4
              27:             TypePointer Output 26(fvec4)
        28(out1):     27(ptr) Variable Output
              29:             TypePointer Input 26(fvec4)
       30(input):     29(ptr) Variable Input
              32:             TypePointer Output 7(fvec2)
           33(v):     32(ptr) Variable Output
              34:    6(float) Constant 1073741824
              35:    7(fvec2) ConstantComposite 34 34
              36:             TypePointer Output 9(ivec2)
           37(i):     36(ptr) Variable Output
              38:      8(int) Constant 3
              39:    9(ivec2) ConstantComposite 38 38
              41:    6(float) Constant 1094713344
              42:    7(fvec2) ConstantComposite 41 41
              44:      8(int) Constant 13
              45:    9(ivec2) ConstantComposite 44 44
           51(v):     32(ptr) Variable Output
           54(i):     36(ptr) Variable Output
57(@entryPointOutput):     27(ptr) Variable Output
4(PixelShaderFunction):           2 Function None 3
               5:             Label
       40(local):     11(ptr) Variable Function
     47(tempArg):     11(ptr) Variable Function
       48(param):     11(ptr) Variable Function
              31:   26(fvec4) Load 30(input)
                              Store 28(out1) 31
                              Store 33(v) 35
                              Store 37(i) 39
              43:     19(ptr) AccessChain 40(local) 16
                              Store 43 42
              46:     24(ptr) AccessChain 40(local) 21
                              Store 46 45
              49:           2 FunctionCall 14(fun(struct-OutParam-vf2-vi21;) 48(param)
              50:10(OutParam) Load 48(param)
                              Store 47(tempArg) 50
              52:     19(ptr) AccessChain 47(tempArg) 16
              53:    7(fvec2) Load 52
                              Store 51(v) 53
              55:     24(ptr) AccessChain 47(tempArg) 21
              56:    9(ivec2) Load 55
                              Store 54(i) 56
              58:   26(fvec4) Load 28(out1)
                              Store 57(@entryPointOutput) 58
                              Return
                              FunctionEnd
14(fun(struct-OutParam-vf2-vi21;):           2 Function None 12
          13(op):     11(ptr) FunctionParameter
              15:             Label
              20:     19(ptr) AccessChain 13(op) 16
                              Store 20 18
              25:     24(ptr) AccessChain 13(op) 21
                              Store 25 23
                              Return
                              FunctionEnd
