hlsl.nonstaticMemberFunction.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1  Sequence
0:1    move second child to first child ( temp 2-component vector of float)
0:1      'i' ( global 2-component vector of float)
0:1      Constant:
0:1        1.000000
0:1        2.000000
0:5  Function Definition: type1::setmem(vf4; ( temp void)
0:5    Function Parameters: 
0:5      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:5      'm' ( in 4-component vector of float)
0:?     Sequence
0:5      move second child to first child ( temp 4-component vector of float)
0:5        memVar: direct index for structure ( temp 4-component vector of float)
0:5          '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:5          Constant:
0:5            0 (const uint)
0:5        'm' ( in 4-component vector of float)
0:6  Function Definition: type1::seti(i1; ( temp void)
0:6    Function Parameters: 
0:6      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:6      'si' ( in int)
0:?     Sequence
0:6      move second child to first child ( temp int)
0:6        i: direct index for structure ( temp int)
0:6          '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:6          Constant:
0:6            1 (const uint)
0:6        'si' ( in int)
0:9  Function Definition: type1::memFun(vf4; ( temp 4-component vector of float)
0:9    Function Parameters: 
0:9      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:9      'a' ( in 4-component vector of float)
0:?     Sequence
0:10      Branch: Return with expression
0:10        add ( temp 4-component vector of float)
0:10          vector-scale ( temp 4-component vector of float)
0:10            Convert int to float ( temp float)
0:10              i: direct index for structure ( temp int)
0:10                '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:10                Constant:
0:10                  1 (const uint)
0:10            'a' ( in 4-component vector of float)
0:10          memVar: direct index for structure ( temp 4-component vector of float)
0:10            '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:10            Constant:
0:10              0 (const uint)
0:13  Function Definition: type1::memFun(i1; ( temp int)
0:13    Function Parameters: 
0:13      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:13      'a' ( in int)
0:?     Sequence
0:14      Branch: Return with expression
0:14        Convert float to int ( temp int)
0:14          subtract ( temp float)
0:14            Convert int to float ( temp float)
0:14              add ( temp int)
0:14                i: direct index for structure ( temp int)
0:14                  '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:14                  Constant:
0:14                    1 (const uint)
0:14                'a' ( in int)
0:14            direct index ( temp float)
0:14              memVar: direct index for structure ( temp 4-component vector of float)
0:14                '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:14                Constant:
0:14                  0 (const uint)
0:14              Constant:
0:14                2 (const int)
0:19  Sequence
0:19    move second child to first child ( temp 2-component vector of float)
0:19      'j' ( global 2-component vector of float)
0:19      'i' ( global 2-component vector of float)
0:23  Function Definition: type2::memFun( ( temp 2-component vector of float)
0:23    Function Parameters: 
0:23      '@this' ( temp structure{})
0:?     Sequence
0:23      Branch: Return with expression
0:23        'i' ( global 2-component vector of float)
0:27  Function Definition: @main( ( temp 4-component vector of float)
0:27    Function Parameters: 
0:?     Sequence
0:29      Function Call: type1::setmem(vf4; ( temp void)
0:29        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:29        Constant:
0:29          2.000000
0:29          2.000000
0:29          2.000000
0:29          2.000000
0:30      Function Call: type1::seti(i1; ( temp void)
0:30        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:30        Constant:
0:30          17 (const int)
0:31      Sequence
0:31        move second child to first child ( temp 4-component vector of float)
0:31          'f4' ( temp 4-component vector of float)
0:31          Constant:
0:31            1.000000
0:31            1.000000
0:31            1.000000
0:31            1.000000
0:32      add second child into first child ( temp 4-component vector of float)
0:32        'f4' ( temp 4-component vector of float)
0:32        Function Call: type1::memFun(vf4; ( temp 4-component vector of float)
0:32          'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:32          Constant:
0:32            5.000000
0:32            5.000000
0:32            5.000000
0:32            5.000000
0:33      add second child into first child ( temp 4-component vector of float)
0:33        'f4' ( temp 4-component vector of float)
0:33        Convert int to float ( temp float)
0:33          Function Call: type1::memFun(i1; ( temp int)
0:33            'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:33            Constant:
0:33              7 (const int)
0:34      Branch: Return with expression
0:34        'f4' ( temp 4-component vector of float)
0:27  Function Definition: main( ( temp void)
0:27    Function Parameters: 
0:?     Sequence
0:27      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:27        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'i' ( global 2-component vector of float)
0:?     'j' ( global 2-component vector of float)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1  Sequence
0:1    move second child to first child ( temp 2-component vector of float)
0:1      'i' ( global 2-component vector of float)
0:1      Constant:
0:1        1.000000
0:1        2.000000
0:5  Function Definition: type1::setmem(vf4; ( temp void)
0:5    Function Parameters: 
0:5      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:5      'm' ( in 4-component vector of float)
0:?     Sequence
0:5      move second child to first child ( temp 4-component vector of float)
0:5        memVar: direct index for structure ( temp 4-component vector of float)
0:5          '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:5          Constant:
0:5            0 (const uint)
0:5        'm' ( in 4-component vector of float)
0:6  Function Definition: type1::seti(i1; ( temp void)
0:6    Function Parameters: 
0:6      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:6      'si' ( in int)
0:?     Sequence
0:6      move second child to first child ( temp int)
0:6        i: direct index for structure ( temp int)
0:6          '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:6          Constant:
0:6            1 (const uint)
0:6        'si' ( in int)
0:9  Function Definition: type1::memFun(vf4; ( temp 4-component vector of float)
0:9    Function Parameters: 
0:9      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:9      'a' ( in 4-component vector of float)
0:?     Sequence
0:10      Branch: Return with expression
0:10        add ( temp 4-component vector of float)
0:10          vector-scale ( temp 4-component vector of float)
0:10            Convert int to float ( temp float)
0:10              i: direct index for structure ( temp int)
0:10                '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:10                Constant:
0:10                  1 (const uint)
0:10            'a' ( in 4-component vector of float)
0:10          memVar: direct index for structure ( temp 4-component vector of float)
0:10            '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:10            Constant:
0:10              0 (const uint)
0:13  Function Definition: type1::memFun(i1; ( temp int)
0:13    Function Parameters: 
0:13      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:13      'a' ( in int)
0:?     Sequence
0:14      Branch: Return with expression
0:14        Convert float to int ( temp int)
0:14          subtract ( temp float)
0:14            Convert int to float ( temp float)
0:14              add ( temp int)
0:14                i: direct index for structure ( temp int)
0:14                  '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:14                  Constant:
0:14                    1 (const uint)
0:14                'a' ( in int)
0:14            direct index ( temp float)
0:14              memVar: direct index for structure ( temp 4-component vector of float)
0:14                '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:14                Constant:
0:14                  0 (const uint)
0:14              Constant:
0:14                2 (const int)
0:19  Sequence
0:19    move second child to first child ( temp 2-component vector of float)
0:19      'j' ( global 2-component vector of float)
0:19      'i' ( global 2-component vector of float)
0:23  Function Definition: type2::memFun( ( temp 2-component vector of float)
0:23    Function Parameters: 
0:23      '@this' ( temp structure{})
0:?     Sequence
0:23      Branch: Return with expression
0:23        'i' ( global 2-component vector of float)
0:27  Function Definition: @main( ( temp 4-component vector of float)
0:27    Function Parameters: 
0:?     Sequence
0:29      Function Call: type1::setmem(vf4; ( temp void)
0:29        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:29        Constant:
0:29          2.000000
0:29          2.000000
0:29          2.000000
0:29          2.000000
0:30      Function Call: type1::seti(i1; ( temp void)
0:30        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:30        Constant:
0:30          17 (const int)
0:31      Sequence
0:31        move second child to first child ( temp 4-component vector of float)
0:31          'f4' ( temp 4-component vector of float)
0:31          Constant:
0:31            1.000000
0:31            1.000000
0:31            1.000000
0:31            1.000000
0:32      add second child into first child ( temp 4-component vector of float)
0:32        'f4' ( temp 4-component vector of float)
0:32        Function Call: type1::memFun(vf4; ( temp 4-component vector of float)
0:32          'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:32          Constant:
0:32            5.000000
0:32            5.000000
0:32            5.000000
0:32            5.000000
0:33      add second child into first child ( temp 4-component vector of float)
0:33        'f4' ( temp 4-component vector of float)
0:33        Convert int to float ( temp float)
0:33          Function Call: type1::memFun(i1; ( temp int)
0:33            'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
0:33            Constant:
0:33              7 (const int)
0:34      Branch: Return with expression
0:34        'f4' ( temp 4-component vector of float)
0:27  Function Definition: main( ( temp void)
0:27    Function Parameters: 
0:?     Sequence
0:27      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:27        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'i' ( global 2-component vector of float)
0:?     'j' ( global 2-component vector of float)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 109
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "type1"
                              MemberName 9(type1) 0  "memVar"
                              MemberName 9(type1) 1  "i"
                              Name 15  "type1::setmem(vf4;"
                              Name 13  "@this"
                              Name 14  "m"
                              Name 21  "type1::seti(i1;"
                              Name 19  "@this"
                              Name 20  "si"
                              Name 26  "type1::memFun(vf4;"
                              Name 24  "@this"
                              Name 25  "a"
                              Name 31  "type1::memFun(i1;"
                              Name 29  "@this"
                              Name 30  "a"
                              Name 33  "type2"
                              Name 38  "type2::memFun("
                              Name 37  "@this"
                              Name 41  "@main("
                              Name 44  "i"
                              Name 48  "j"
                              Name 83  "test"
                              Name 85  "param"
                              Name 88  "param"
                              Name 90  "f4"
                              Name 94  "param"
                              Name 99  "param"
                              Name 109  "@entryPointOutput"
                              Decorate 109(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 1
        9(type1):             TypeStruct 7(fvec4) 8(int)
              10:             TypePointer Function 9(type1)
              11:             TypePointer Function 7(fvec4)
              12:             TypeFunction 2 10(ptr) 11(ptr)
              17:             TypePointer Function 8(int)
              18:             TypeFunction 2 10(ptr) 17(ptr)
              23:             TypeFunction 7(fvec4) 10(ptr) 11(ptr)
              28:             TypeFunction 8(int) 10(ptr) 17(ptr)
       33(type2):             TypeStruct
              34:             TypePointer Function 33(type2)
              35:             TypeVector 6(float) 2
              36:             TypeFunction 35(fvec2) 34(ptr)
              40:             TypeFunction 7(fvec4)
              43:             TypePointer Private 35(fvec2)
           44(i):     43(ptr) Variable Private
              45:    6(float) Constant 1065353216
              46:    6(float) Constant 1073741824
              47:   35(fvec2) ConstantComposite 45 46
           48(j):     43(ptr) Variable Private
              50:      8(int) Constant 0
              53:      8(int) Constant 1
              71:             TypeInt 32 0
              72:     71(int) Constant 2
              73:             TypePointer Function 6(float)
              84:    7(fvec4) ConstantComposite 46 46 46 46
              87:      8(int) Constant 17
              91:    7(fvec4) ConstantComposite 45 45 45 45
              92:    6(float) Constant 1084227584
              93:    7(fvec4) ConstantComposite 92 92 92 92
              98:      8(int) Constant 7
             108:             TypePointer Output 7(fvec4)
109(@entryPointOutput):    108(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
                              Store 44(i) 47
              49:   35(fvec2) Load 44(i)
                              Store 48(j) 49
             110:    7(fvec4) FunctionCall 41(@main()
                              Store 109(@entryPointOutput) 110
                              Return
                              FunctionEnd
15(type1::setmem(vf4;):           2 Function None 12
       13(@this):     10(ptr) FunctionParameter
           14(m):     11(ptr) FunctionParameter
              16:             Label
              51:    7(fvec4) Load 14(m)
              52:     11(ptr) AccessChain 13(@this) 50
                              Store 52 51
                              Return
                              FunctionEnd
21(type1::seti(i1;):           2 Function None 18
       19(@this):     10(ptr) FunctionParameter
          20(si):     17(ptr) FunctionParameter
              22:             Label
              54:      8(int) Load 20(si)
              55:     17(ptr) AccessChain 19(@this) 53
                              Store 55 54
                              Return
                              FunctionEnd
26(type1::memFun(vf4;):    7(fvec4) Function None 23
       24(@this):     10(ptr) FunctionParameter
           25(a):     11(ptr) FunctionParameter
              27:             Label
              56:     17(ptr) AccessChain 24(@this) 53
              57:      8(int) Load 56
              58:    6(float) ConvertSToF 57
              59:    7(fvec4) Load 25(a)
              60:    7(fvec4) VectorTimesScalar 59 58
              61:     11(ptr) AccessChain 24(@this) 50
              62:    7(fvec4) Load 61
              63:    7(fvec4) FAdd 60 62
                              ReturnValue 63
                              FunctionEnd
31(type1::memFun(i1;):      8(int) Function None 28
       29(@this):     10(ptr) FunctionParameter
           30(a):     17(ptr) FunctionParameter
              32:             Label
              66:     17(ptr) AccessChain 29(@this) 53
              67:      8(int) Load 66
              68:      8(int) Load 30(a)
              69:      8(int) IAdd 67 68
              70:    6(float) ConvertSToF 69
              74:     73(ptr) AccessChain 29(@this) 50 72
              75:    6(float) Load 74
              76:    6(float) FSub 70 75
              77:      8(int) ConvertFToS 76
                              ReturnValue 77
                              FunctionEnd
38(type2::memFun():   35(fvec2) Function None 36
       37(@this):     34(ptr) FunctionParameter
              39:             Label
              80:   35(fvec2) Load 44(i)
                              ReturnValue 80
                              FunctionEnd
      41(@main():    7(fvec4) Function None 40
              42:             Label
        83(test):     10(ptr) Variable Function
       85(param):     11(ptr) Variable Function
       88(param):     17(ptr) Variable Function
          90(f4):     11(ptr) Variable Function
       94(param):     11(ptr) Variable Function
       99(param):     17(ptr) Variable Function
                              Store 85(param) 84
              86:           2 FunctionCall 15(type1::setmem(vf4;) 83(test) 85(param)
                              Store 88(param) 87
              89:           2 FunctionCall 21(type1::seti(i1;) 83(test) 88(param)
                              Store 90(f4) 91
                              Store 94(param) 93
              95:    7(fvec4) FunctionCall 26(type1::memFun(vf4;) 83(test) 94(param)
              96:    7(fvec4) Load 90(f4)
              97:    7(fvec4) FAdd 96 95
                              Store 90(f4) 97
                              Store 99(param) 98
             100:      8(int) FunctionCall 31(type1::memFun(i1;) 83(test) 99(param)
             101:    6(float) ConvertSToF 100
             102:    7(fvec4) Load 90(f4)
             103:    7(fvec4) CompositeConstruct 101 101 101 101
             104:    7(fvec4) FAdd 102 103
                              Store 90(f4) 104
             105:    7(fvec4) Load 90(f4)
                              ReturnValue 105
                              FunctionEnd
