HLSL: Wrap the entry-point; need to write 'in' args, and support 'inout' args.

This needs some render testing, but is destined to be part of master.

This also leads to a variety of other simplifications.
 - IO are global symbols, so only need one list of linkage nodes (deferred)
 - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized
 - several parts of splitting/flattening are now localized
This commit is contained in:
John Kessenich
2017-01-19 15:41:47 -07:00
parent 18adbdbbb8
commit 02467d8d94
171 changed files with 37604 additions and 32679 deletions

View File

@@ -2,7 +2,7 @@ hlsl.load.rwtexture.array.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Definition: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Parameters:
0:? Sequence
0:44 imageLoad (temp 4-component vector of float)
@@ -58,24 +58,28 @@ gl_FragCoord origin is upper left
0:54 1 (const int)
0:54 Constant:
0:54 1.000000
0:56 Sequence
0:56 Sequence
0:56 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:56 Color: direct index for structure (temp 4-component vector of float)
0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:56 Depth: direct index for structure (temp float)
0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 1 (const int)
0:56 Branch: Return
0:56 Branch: Return with expression
0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Definition: main( (temp void)
0:40 Function Parameters:
0:? Sequence
0:40 Sequence
0:40 move second child to first child (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Call: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
0:40 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:40 Depth: direct index for structure (temp float)
0:40 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
@@ -92,6 +96,8 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray)
0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -101,7 +107,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Definition: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Parameters:
0:? Sequence
0:44 imageLoad (temp 4-component vector of float)
@@ -157,24 +163,28 @@ gl_FragCoord origin is upper left
0:54 1 (const int)
0:54 Constant:
0:54 1.000000
0:56 Sequence
0:56 Sequence
0:56 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:56 Color: direct index for structure (temp 4-component vector of float)
0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:56 Depth: direct index for structure (temp float)
0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 1 (const int)
0:56 Branch: Return
0:56 Branch: Return with expression
0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Definition: main( (temp void)
0:40 Function Parameters:
0:? Sequence
0:40 Sequence
0:40 move second child to first child (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Function Call: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
0:40 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:40 Depth: direct index for structure (temp float)
0:40 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
@@ -191,193 +201,206 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray)
0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 112
// Id's are bound by 119
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 74 78
EntryPoint Fragment 4 "main" 82 86
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 9 "g_tTex1df4a"
Name 15 "$Global"
MemberName 15($Global) 0 "c1"
MemberName 15($Global) 1 "c2"
MemberName 15($Global) 2 "c3"
MemberName 15($Global) 3 "c4"
MemberName 15($Global) 4 "o1"
MemberName 15($Global) 5 "o2"
MemberName 15($Global) 6 "o3"
MemberName 15($Global) 7 "o4"
Name 17 ""
Name 26 "g_tTex1di4a"
Name 34 "g_tTex1du4a"
Name 42 "g_tTex2df4a"
Name 51 "g_tTex2di4a"
Name 58 "g_tTex2du4a"
Name 63 "PS_OUTPUT"
MemberName 63(PS_OUTPUT) 0 "Color"
MemberName 63(PS_OUTPUT) 1 "Depth"
Name 65 "psout"
Name 74 "Color"
Name 78 "Depth"
Name 84 "g_sSamp"
Name 87 "g_tTex1df4"
Name 90 "g_tTex1di4"
Name 93 "g_tTex1du4"
Name 96 "g_tTex2df4"
Name 99 "g_tTex2di4"
Name 102 "g_tTex2du4"
Name 105 "g_tTex3df4"
Name 108 "g_tTex3di4"
Name 111 "g_tTex3du4"
Decorate 9(g_tTex1df4a) DescriptorSet 0
MemberDecorate 15($Global) 0 Offset 0
MemberDecorate 15($Global) 1 Offset 8
MemberDecorate 15($Global) 2 Offset 16
MemberDecorate 15($Global) 3 Offset 32
MemberDecorate 15($Global) 4 Offset 48
MemberDecorate 15($Global) 5 Offset 56
MemberDecorate 15($Global) 6 Offset 64
MemberDecorate 15($Global) 7 Offset 80
Decorate 15($Global) Block
Decorate 17 DescriptorSet 0
Decorate 26(g_tTex1di4a) DescriptorSet 0
Decorate 34(g_tTex1du4a) DescriptorSet 0
Decorate 42(g_tTex2df4a) DescriptorSet 0
Decorate 51(g_tTex2di4a) DescriptorSet 0
Decorate 58(g_tTex2du4a) DescriptorSet 0
Decorate 74(Color) Location 0
Decorate 78(Depth) BuiltIn FragDepth
Decorate 84(g_sSamp) DescriptorSet 0
Decorate 84(g_sSamp) Binding 0
Decorate 87(g_tTex1df4) DescriptorSet 0
Decorate 87(g_tTex1df4) Binding 0
Decorate 90(g_tTex1di4) DescriptorSet 0
Decorate 93(g_tTex1du4) DescriptorSet 0
Decorate 96(g_tTex2df4) DescriptorSet 0
Decorate 99(g_tTex2di4) DescriptorSet 0
Decorate 102(g_tTex2du4) DescriptorSet 0
Decorate 105(g_tTex3df4) DescriptorSet 0
Decorate 108(g_tTex3di4) DescriptorSet 0
Decorate 111(g_tTex3du4) DescriptorSet 0
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
MemberName 8(PS_OUTPUT) 1 "Depth"
Name 10 "@main("
Name 14 "g_tTex1df4a"
Name 20 "$Global"
MemberName 20($Global) 0 "c1"
MemberName 20($Global) 1 "c2"
MemberName 20($Global) 2 "c3"
MemberName 20($Global) 3 "c4"
MemberName 20($Global) 4 "o1"
MemberName 20($Global) 5 "o2"
MemberName 20($Global) 6 "o3"
MemberName 20($Global) 7 "o4"
Name 22 ""
Name 30 "g_tTex1di4a"
Name 38 "g_tTex1du4a"
Name 46 "g_tTex2df4a"
Name 55 "g_tTex2di4a"
Name 62 "g_tTex2du4a"
Name 68 "psout"
Name 79 "flattenTemp"
Name 82 "Color"
Name 86 "Depth"
Name 91 "g_sSamp"
Name 94 "g_tTex1df4"
Name 97 "g_tTex1di4"
Name 100 "g_tTex1du4"
Name 103 "g_tTex2df4"
Name 106 "g_tTex2di4"
Name 109 "g_tTex2du4"
Name 112 "g_tTex3df4"
Name 115 "g_tTex3di4"
Name 118 "g_tTex3du4"
Decorate 14(g_tTex1df4a) DescriptorSet 0
MemberDecorate 20($Global) 0 Offset 0
MemberDecorate 20($Global) 1 Offset 8
MemberDecorate 20($Global) 2 Offset 16
MemberDecorate 20($Global) 3 Offset 32
MemberDecorate 20($Global) 4 Offset 48
MemberDecorate 20($Global) 5 Offset 56
MemberDecorate 20($Global) 6 Offset 64
MemberDecorate 20($Global) 7 Offset 80
Decorate 20($Global) Block
Decorate 22 DescriptorSet 0
Decorate 30(g_tTex1di4a) DescriptorSet 0
Decorate 38(g_tTex1du4a) DescriptorSet 0
Decorate 46(g_tTex2df4a) DescriptorSet 0
Decorate 55(g_tTex2di4a) DescriptorSet 0
Decorate 62(g_tTex2du4a) DescriptorSet 0
Decorate 82(Color) Location 0
Decorate 86(Depth) BuiltIn FragDepth
Decorate 91(g_sSamp) DescriptorSet 0
Decorate 91(g_sSamp) Binding 0
Decorate 94(g_tTex1df4) DescriptorSet 0
Decorate 94(g_tTex1df4) Binding 0
Decorate 97(g_tTex1di4) DescriptorSet 0
Decorate 100(g_tTex1du4) DescriptorSet 0
Decorate 103(g_tTex2df4) DescriptorSet 0
Decorate 106(g_tTex2di4) DescriptorSet 0
Decorate 109(g_tTex2du4) DescriptorSet 0
Decorate 112(g_tTex3df4) DescriptorSet 0
Decorate 115(g_tTex3di4) DescriptorSet 0
Decorate 118(g_tTex3du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeImage 6(float) 1D array nonsampled format:Rgba32f
8: TypePointer UniformConstant 7
9(g_tTex1df4a): 8(ptr) Variable UniformConstant
11: TypeInt 32 1
12: TypeVector 11(int) 2
13: TypeVector 11(int) 3
14: TypeVector 11(int) 4
15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
16: TypePointer Uniform 15($Global)
17: 16(ptr) Variable Uniform
18: 11(int) Constant 1
19: TypePointer Uniform 12(ivec2)
22: TypeVector 6(float) 4
24: TypeImage 11(int) 1D array nonsampled format:Rgba32i
25: TypePointer UniformConstant 24
26(g_tTex1di4a): 25(ptr) Variable UniformConstant
31: TypeInt 32 0
32: TypeImage 31(int) 1D array nonsampled format:Rgba32ui
33: TypePointer UniformConstant 32
34(g_tTex1du4a): 33(ptr) Variable UniformConstant
38: TypeVector 31(int) 4
40: TypeImage 6(float) 2D array nonsampled format:Rgba32f
41: TypePointer UniformConstant 40
42(g_tTex2df4a): 41(ptr) Variable UniformConstant
44: 11(int) Constant 2
45: TypePointer Uniform 13(ivec3)
49: TypeImage 11(int) 2D array nonsampled format:Rgba32i
50: TypePointer UniformConstant 49
51(g_tTex2di4a): 50(ptr) Variable UniformConstant
56: TypeImage 31(int) 2D array nonsampled format:Rgba32ui
57: TypePointer UniformConstant 56
58(g_tTex2du4a): 57(ptr) Variable UniformConstant
63(PS_OUTPUT): TypeStruct 22(fvec4) 6(float)
64: TypePointer Function 63(PS_OUTPUT)
66: 11(int) Constant 0
67: 6(float) Constant 1065353216
68: 22(fvec4) ConstantComposite 67 67 67 67
69: TypePointer Function 22(fvec4)
71: TypePointer Function 6(float)
73: TypePointer Output 22(fvec4)
74(Color): 73(ptr) Variable Output
77: TypePointer Output 6(float)
78(Depth): 77(ptr) Variable Output
82: TypeSampler
83: TypePointer UniformConstant 82
84(g_sSamp): 83(ptr) Variable UniformConstant
85: TypeImage 6(float) 1D nonsampled format:Rgba32f
86: TypePointer UniformConstant 85
87(g_tTex1df4): 86(ptr) Variable UniformConstant
88: TypeImage 11(int) 1D nonsampled format:Rgba32i
89: TypePointer UniformConstant 88
90(g_tTex1di4): 89(ptr) Variable UniformConstant
91: TypeImage 31(int) 1D nonsampled format:Rgba32ui
92: TypePointer UniformConstant 91
93(g_tTex1du4): 92(ptr) Variable UniformConstant
94: TypeImage 6(float) 2D nonsampled format:Rgba32f
95: TypePointer UniformConstant 94
96(g_tTex2df4): 95(ptr) Variable UniformConstant
97: TypeImage 11(int) 2D nonsampled format:Rgba32i
98: TypePointer UniformConstant 97
99(g_tTex2di4): 98(ptr) Variable UniformConstant
100: TypeImage 31(int) 2D nonsampled format:Rgba32ui
101: TypePointer UniformConstant 100
102(g_tTex2du4): 101(ptr) Variable UniformConstant
103: TypeImage 6(float) 3D nonsampled format:Rgba32f
104: TypePointer UniformConstant 103
105(g_tTex3df4): 104(ptr) Variable UniformConstant
106: TypeImage 11(int) 3D nonsampled format:Rgba32i
107: TypePointer UniformConstant 106
108(g_tTex3di4): 107(ptr) Variable UniformConstant
109: TypeImage 31(int) 3D nonsampled format:Rgba32ui
110: TypePointer UniformConstant 109
111(g_tTex3du4): 110(ptr) Variable UniformConstant
7: TypeVector 6(float) 4
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypeImage 6(float) 1D array nonsampled format:Rgba32f
13: TypePointer UniformConstant 12
14(g_tTex1df4a): 13(ptr) Variable UniformConstant
16: TypeInt 32 1
17: TypeVector 16(int) 2
18: TypeVector 16(int) 3
19: TypeVector 16(int) 4
20($Global): TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4)
21: TypePointer Uniform 20($Global)
22: 21(ptr) Variable Uniform
23: 16(int) Constant 1
24: TypePointer Uniform 17(ivec2)
28: TypeImage 16(int) 1D array nonsampled format:Rgba32i
29: TypePointer UniformConstant 28
30(g_tTex1di4a): 29(ptr) Variable UniformConstant
35: TypeInt 32 0
36: TypeImage 35(int) 1D array nonsampled format:Rgba32ui
37: TypePointer UniformConstant 36
38(g_tTex1du4a): 37(ptr) Variable UniformConstant
42: TypeVector 35(int) 4
44: TypeImage 6(float) 2D array nonsampled format:Rgba32f
45: TypePointer UniformConstant 44
46(g_tTex2df4a): 45(ptr) Variable UniformConstant
48: 16(int) Constant 2
49: TypePointer Uniform 18(ivec3)
53: TypeImage 16(int) 2D array nonsampled format:Rgba32i
54: TypePointer UniformConstant 53
55(g_tTex2di4a): 54(ptr) Variable UniformConstant
60: TypeImage 35(int) 2D array nonsampled format:Rgba32ui
61: TypePointer UniformConstant 60
62(g_tTex2du4a): 61(ptr) Variable UniformConstant
67: TypePointer Function 8(PS_OUTPUT)
69: 16(int) Constant 0
70: 6(float) Constant 1065353216
71: 7(fvec4) ConstantComposite 70 70 70 70
72: TypePointer Function 7(fvec4)
74: TypePointer Function 6(float)
81: TypePointer Output 7(fvec4)
82(Color): 81(ptr) Variable Output
85: TypePointer Output 6(float)
86(Depth): 85(ptr) Variable Output
89: TypeSampler
90: TypePointer UniformConstant 89
91(g_sSamp): 90(ptr) Variable UniformConstant
92: TypeImage 6(float) 1D nonsampled format:Rgba32f
93: TypePointer UniformConstant 92
94(g_tTex1df4): 93(ptr) Variable UniformConstant
95: TypeImage 16(int) 1D nonsampled format:Rgba32i
96: TypePointer UniformConstant 95
97(g_tTex1di4): 96(ptr) Variable UniformConstant
98: TypeImage 35(int) 1D nonsampled format:Rgba32ui
99: TypePointer UniformConstant 98
100(g_tTex1du4): 99(ptr) Variable UniformConstant
101: TypeImage 6(float) 2D nonsampled format:Rgba32f
102: TypePointer UniformConstant 101
103(g_tTex2df4): 102(ptr) Variable UniformConstant
104: TypeImage 16(int) 2D nonsampled format:Rgba32i
105: TypePointer UniformConstant 104
106(g_tTex2di4): 105(ptr) Variable UniformConstant
107: TypeImage 35(int) 2D nonsampled format:Rgba32ui
108: TypePointer UniformConstant 107
109(g_tTex2du4): 108(ptr) Variable UniformConstant
110: TypeImage 6(float) 3D nonsampled format:Rgba32f
111: TypePointer UniformConstant 110
112(g_tTex3df4): 111(ptr) Variable UniformConstant
113: TypeImage 16(int) 3D nonsampled format:Rgba32i
114: TypePointer UniformConstant 113
115(g_tTex3di4): 114(ptr) Variable UniformConstant
116: TypeImage 35(int) 3D nonsampled format:Rgba32ui
117: TypePointer UniformConstant 116
118(g_tTex3du4): 117(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
65(psout): 64(ptr) Variable Function
10: 7 Load 9(g_tTex1df4a)
20: 19(ptr) AccessChain 17 18
21: 12(ivec2) Load 20
23: 22(fvec4) ImageRead 10 21
27: 24 Load 26(g_tTex1di4a)
28: 19(ptr) AccessChain 17 18
29: 12(ivec2) Load 28
30: 14(ivec4) ImageRead 27 29
35: 32 Load 34(g_tTex1du4a)
36: 19(ptr) AccessChain 17 18
37: 12(ivec2) Load 36
39: 38(ivec4) ImageRead 35 37
43: 40 Load 42(g_tTex2df4a)
46: 45(ptr) AccessChain 17 44
47: 13(ivec3) Load 46
48: 22(fvec4) ImageRead 43 47
52: 49 Load 51(g_tTex2di4a)
53: 45(ptr) AccessChain 17 44
54: 13(ivec3) Load 53
55: 14(ivec4) ImageRead 52 54
59: 56 Load 58(g_tTex2du4a)
60: 45(ptr) AccessChain 17 44
61: 13(ivec3) Load 60
62: 38(ivec4) ImageRead 59 61
70: 69(ptr) AccessChain 65(psout) 66
Store 70 68
72: 71(ptr) AccessChain 65(psout) 18
Store 72 67
75: 69(ptr) AccessChain 65(psout) 66
76: 22(fvec4) Load 75
Store 74(Color) 76
79: 71(ptr) AccessChain 65(psout) 18
80: 6(float) Load 79
Store 78(Depth) 80
79(flattenTemp): 67(ptr) Variable Function
80:8(PS_OUTPUT) FunctionCall 10(@main()
Store 79(flattenTemp) 80
83: 72(ptr) AccessChain 79(flattenTemp) 69
84: 7(fvec4) Load 83
Store 82(Color) 84
87: 74(ptr) AccessChain 79(flattenTemp) 23
88: 6(float) Load 87
Store 86(Depth) 88
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
68(psout): 67(ptr) Variable Function
15: 12 Load 14(g_tTex1df4a)
25: 24(ptr) AccessChain 22 23
26: 17(ivec2) Load 25
27: 7(fvec4) ImageRead 15 26
31: 28 Load 30(g_tTex1di4a)
32: 24(ptr) AccessChain 22 23
33: 17(ivec2) Load 32
34: 19(ivec4) ImageRead 31 33
39: 36 Load 38(g_tTex1du4a)
40: 24(ptr) AccessChain 22 23
41: 17(ivec2) Load 40
43: 42(ivec4) ImageRead 39 41
47: 44 Load 46(g_tTex2df4a)
50: 49(ptr) AccessChain 22 48
51: 18(ivec3) Load 50
52: 7(fvec4) ImageRead 47 51
56: 53 Load 55(g_tTex2di4a)
57: 49(ptr) AccessChain 22 48
58: 18(ivec3) Load 57
59: 19(ivec4) ImageRead 56 58
63: 60 Load 62(g_tTex2du4a)
64: 49(ptr) AccessChain 22 48
65: 18(ivec3) Load 64
66: 42(ivec4) ImageRead 63 65
73: 72(ptr) AccessChain 68(psout) 69
Store 73 71
75: 74(ptr) AccessChain 68(psout) 23
Store 75 70
76:8(PS_OUTPUT) Load 68(psout)
ReturnValue 76
FunctionEnd