hlsl.self_cast.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5  Function Definition: @main( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:?       Sequence
0:8        Sequence
0:8          move second child to first child ( temp structure{})
0:8            'b' ( temp structure{})
0:8            'a' ( temp structure{})
0:?       Sequence
0:13        Sequence
0:13          move second child to first child ( temp structure{ temp float f})
0:13            'b' ( temp structure{ temp float f})
0:13            'a' ( temp structure{ temp float f})
0:?       Sequence
0:18        Sequence
0:18          move second child to first child ( temp 2-element array of structure{})
0:18            'b' ( temp 2-element array of structure{})
0:18            'a' ( temp 2-element array of structure{})
0:?       Sequence
0:23        Sequence
0:23          move second child to first child ( temp 2-element array of structure{ temp float f})
0:23            'b' ( temp 2-element array of structure{ temp float f})
0:23            'a' ( temp 2-element array of structure{ temp float f})
0:5  Function Definition: main( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      Function Call: @main( ( temp void)
0:?   Linker Objects


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5  Function Definition: @main( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:?       Sequence
0:8        Sequence
0:8          move second child to first child ( temp structure{})
0:8            'b' ( temp structure{})
0:8            'a' ( temp structure{})
0:?       Sequence
0:13        Sequence
0:13          move second child to first child ( temp structure{ temp float f})
0:13            'b' ( temp structure{ temp float f})
0:13            'a' ( temp structure{ temp float f})
0:?       Sequence
0:18        Sequence
0:18          move second child to first child ( temp 2-element array of structure{})
0:18            'b' ( temp 2-element array of structure{})
0:18            'a' ( temp 2-element array of structure{})
0:?       Sequence
0:23        Sequence
0:23          move second child to first child ( temp 2-element array of structure{ temp float f})
0:23            'b' ( temp 2-element array of structure{ temp float f})
0:23            'a' ( temp 2-element array of structure{ temp float f})
0:5  Function Definition: main( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      Function Call: @main( ( temp void)
0:?   Linker Objects

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 6  "@main("
                              Name 8  "Test0"
                              Name 10  "b"
                              Name 11  "a"
                              Name 14  "Test1"
                              MemberName 14(Test1) 0  "f"
                              Name 16  "b"
                              Name 17  "a"
                              Name 23  "b"
                              Name 24  "a"
                              Name 28  "b"
                              Name 29  "a"
               2:             TypeVoid
               3:             TypeFunction 2
        8(Test0):             TypeStruct
               9:             TypePointer Function 8(Test0)
              13:             TypeFloat 32
       14(Test1):             TypeStruct 13(float)
              15:             TypePointer Function 14(Test1)
              19:             TypeInt 32 0
              20:     19(int) Constant 2
              21:             TypeArray 8(Test0) 20
              22:             TypePointer Function 21
              26:             TypeArray 14(Test1) 20
              27:             TypePointer Function 26
         4(main):           2 Function None 3
               5:             Label
              31:           2 FunctionCall 6(@main()
                              Return
                              FunctionEnd
       6(@main():           2 Function None 3
               7:             Label
           10(b):      9(ptr) Variable Function
           11(a):      9(ptr) Variable Function
           16(b):     15(ptr) Variable Function
           17(a):     15(ptr) Variable Function
           23(b):     22(ptr) Variable Function
           24(a):     22(ptr) Variable Function
           28(b):     27(ptr) Variable Function
           29(a):     27(ptr) Variable Function
              12:    8(Test0) Load 11(a)
                              Store 10(b) 12
              18:   14(Test1) Load 17(a)
                              Store 16(b) 18
              25:          21 Load 24(a)
                              Store 23(b) 25
              30:          26 Load 29(a)
                              Store 28(b) 30
                              Return
                              FunctionEnd
