glslang/Test/baseResults/hlsl.struct.split.call.vert.out
steve-lunarg 5d3023af03 HLSL: Type sanitization: create non-IO types for var decl and fn param/ret
This introduces parallel types for IO-type containing aggregates used as
non-entry point function parameters or return types, or declared as variables.
Further uses of the same original type will share the same sanitized deep
structure.

This is intended to be used with the wrap-entry-point branch.
2017-02-06 22:58:32 -07:00

394 lines
22 KiB
Plaintext

hlsl.struct.split.call.vert
Shader version: 450
0:? Sequence
0:17 Function Definition: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; (temp void)
0:17 Function Parameters:
0:17 'fn1_in' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 'fn1_out' (in structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:? Sequence
0:18 add (temp 4-component vector of float)
0:18 Pos_in: direct index for structure (temp 4-component vector of float)
0:18 'fn1_in' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:18 Constant:
0:18 1 (const int)
0:18 Pos_out: direct index for structure (temp 4-component vector of float)
0:18 'fn1_out' (in structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:18 Constant:
0:18 1 (const int)
0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Function Parameters:
0:22 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:? Sequence
0:25 move second child to first child (temp int)
0:25 x0_out: direct index for structure (temp int)
0:25 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:25 Constant:
0:25 0 (const int)
0:25 x0_in: direct index for structure (temp int)
0:25 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:25 Constant:
0:25 0 (const int)
0:26 move second child to first child (temp 4-component vector of float)
0:26 Pos_out: direct index for structure (temp 4-component vector of float)
0:26 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:26 Constant:
0:26 1 (const int)
0:26 Pos_in: direct index for structure (temp 4-component vector of float)
0:26 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:26 Constant:
0:26 1 (const int)
0:27 move second child to first child (temp int)
0:27 x1_out: direct index for structure (temp int)
0:27 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:27 Constant:
0:27 2 (const int)
0:27 x1_in: direct index for structure (temp int)
0:27 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:27 Constant:
0:27 2 (const int)
0:29 Function Call: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; (temp void)
0:29 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:29 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:31 Branch: Return with expression
0:31 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Function Definition: main( (temp void)
0:22 Function Parameters:
0:? Sequence
0:22 Sequence
0:22 move second child to first child (temp int)
0:22 x0_in: direct index for structure (temp int)
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 0 (const int)
0:? 'x0_in' (layout(location=0 ) in int)
0:22 move second child to first child (temp 4-component vector of float)
0:22 Pos_in: direct index for structure (temp 4-component vector of float)
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 1 (const int)
0:? 'Pos_in' (in 4-component vector of float Position)
0:22 move second child to first child (temp int)
0:22 x1_in: direct index for structure (temp int)
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 2 (const int)
0:? 'x1_in' (layout(location=1 ) in int)
0:22 Sequence
0:22 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 move second child to first child (temp int)
0:22 x0_out: direct index for structure (temp int)
0:22 '@entryPointOutput' (layout(location=0 ) out structure{temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:22 x0_out: direct index for structure (temp int)
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput_Pos_out' (out 4-component vector of float Position)
0:22 Pos_out: direct index for structure (temp 4-component vector of float Position)
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child (temp int)
0:22 x1_out: direct index for structure (temp int)
0:22 '@entryPointOutput' (layout(location=0 ) out structure{temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:22 x1_out: direct index for structure (temp int)
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Constant:
0:22 2 (const int)
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out structure{temp int x0_out, temp int x1_out})
0:? 'x0_in' (layout(location=0 ) in int)
0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'x1_in' (layout(location=1 ) in int)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos_out})
Linked vertex stage:
Shader version: 450
0:? Sequence
0:17 Function Definition: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; (temp void)
0:17 Function Parameters:
0:17 'fn1_in' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:17 'fn1_out' (in structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:? Sequence
0:18 add (temp 4-component vector of float)
0:18 Pos_in: direct index for structure (temp 4-component vector of float)
0:18 'fn1_in' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:18 Constant:
0:18 1 (const int)
0:18 Pos_out: direct index for structure (temp 4-component vector of float)
0:18 'fn1_out' (in structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:18 Constant:
0:18 1 (const int)
0:22 Function Definition: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Function Parameters:
0:22 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:? Sequence
0:25 move second child to first child (temp int)
0:25 x0_out: direct index for structure (temp int)
0:25 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:25 Constant:
0:25 0 (const int)
0:25 x0_in: direct index for structure (temp int)
0:25 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:25 Constant:
0:25 0 (const int)
0:26 move second child to first child (temp 4-component vector of float)
0:26 Pos_out: direct index for structure (temp 4-component vector of float)
0:26 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:26 Constant:
0:26 1 (const int)
0:26 Pos_in: direct index for structure (temp 4-component vector of float)
0:26 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:26 Constant:
0:26 1 (const int)
0:27 move second child to first child (temp int)
0:27 x1_out: direct index for structure (temp int)
0:27 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:27 Constant:
0:27 2 (const int)
0:27 x1_in: direct index for structure (temp int)
0:27 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:27 Constant:
0:27 2 (const int)
0:29 Function Call: Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11; (temp void)
0:29 'vsin' (in structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:29 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:31 Branch: Return with expression
0:31 'vsout' (temp structure{temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Function Definition: main( (temp void)
0:22 Function Parameters:
0:? Sequence
0:22 Sequence
0:22 move second child to first child (temp int)
0:22 x0_in: direct index for structure (temp int)
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 0 (const int)
0:? 'x0_in' (layout(location=0 ) in int)
0:22 move second child to first child (temp 4-component vector of float)
0:22 Pos_in: direct index for structure (temp 4-component vector of float)
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 1 (const int)
0:? 'Pos_in' (in 4-component vector of float Position)
0:22 move second child to first child (temp int)
0:22 x1_in: direct index for structure (temp int)
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 Constant:
0:22 2 (const int)
0:? 'x1_in' (layout(location=1 ) in int)
0:22 Sequence
0:22 move second child to first child (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:? 'vsin' (temp structure{temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 move second child to first child (temp int)
0:22 x0_out: direct index for structure (temp int)
0:22 '@entryPointOutput' (layout(location=0 ) out structure{temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:22 x0_out: direct index for structure (temp int)
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput_Pos_out' (out 4-component vector of float Position)
0:22 Pos_out: direct index for structure (temp 4-component vector of float Position)
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child (temp int)
0:22 x1_out: direct index for structure (temp int)
0:22 '@entryPointOutput' (layout(location=0 ) out structure{temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:22 x1_out: direct index for structure (temp int)
0:22 'flattenTemp' (temp structure{temp int x0_out, temp 4-component vector of float Position Pos_out, temp int x1_out})
0:22 Constant:
0:22 2 (const int)
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out structure{temp int x0_out, temp int x1_out})
0:? 'x0_in' (layout(location=0 ) in int)
0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'x1_in' (layout(location=1 ) in int)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos_out})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 95
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 64 68 71 80 86 94
Name 4 "main"
Name 9 "VS_INPUT"
MemberName 9(VS_INPUT) 0 "x0_in"
MemberName 9(VS_INPUT) 1 "Pos_in"
MemberName 9(VS_INPUT) 2 "x1_in"
Name 11 "VS_OUTPUT"
MemberName 11(VS_OUTPUT) 0 "x0_out"
MemberName 11(VS_OUTPUT) 1 "Pos_out"
MemberName 11(VS_OUTPUT) 2 "x1_out"
Name 16 "Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;"
Name 14 "fn1_in"
Name 15 "fn1_out"
Name 18 "VS_INPUT"
MemberName 18(VS_INPUT) 0 "x0_in"
MemberName 18(VS_INPUT) 1 "Pos_in"
MemberName 18(VS_INPUT) 2 "x1_in"
Name 20 "VS_OUTPUT"
MemberName 20(VS_OUTPUT) 0 "x0_out"
MemberName 20(VS_OUTPUT) 1 "Pos_out"
MemberName 20(VS_OUTPUT) 2 "x1_out"
Name 23 "@main(struct-VS_INPUT-i1-vf4-i11;"
Name 22 "vsin"
Name 32 "vsout"
Name 45 "param"
Name 47 "param"
Name 62 "vsin"
Name 64 "x0_in"
Name 68 "Pos_in"
Name 71 "x1_in"
Name 74 "flattenTemp"
Name 75 "param"
Name 78 "VS_OUTPUT"
MemberName 78(VS_OUTPUT) 0 "x0_out"
MemberName 78(VS_OUTPUT) 1 "x1_out"
Name 80 "@entryPointOutput"
Name 86 "@entryPointOutput_Pos_out"
Name 92 "PerVertex_out"
MemberName 92(PerVertex_out) 0 "@entryPointOutput_Pos_out"
Name 94 "PerVertex_out"
MemberDecorate 20(VS_OUTPUT) 1 BuiltIn Position
Decorate 64(x0_in) Location 0
Decorate 68(Pos_in) BuiltIn Position
Decorate 71(x1_in) Location 1
Decorate 80(@entryPointOutput) Location 0
Decorate 86(@entryPointOutput_Pos_out) BuiltIn Position
MemberDecorate 92(PerVertex_out) 0 BuiltIn Position
Decorate 92(PerVertex_out) Block
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypeFloat 32
8: TypeVector 7(float) 4
9(VS_INPUT): TypeStruct 6(int) 8(fvec4) 6(int)
10: TypePointer Function 9(VS_INPUT)
11(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int)
12: TypePointer Function 11(VS_OUTPUT)
13: TypeFunction 2 10(ptr) 12(ptr)
18(VS_INPUT): TypeStruct 6(int) 8(fvec4) 6(int)
19: TypePointer Function 18(VS_INPUT)
20(VS_OUTPUT): TypeStruct 6(int) 8(fvec4) 6(int)
21: TypeFunction 20(VS_OUTPUT) 19(ptr)
25: 6(int) Constant 1
26: TypePointer Function 8(fvec4)
33: 6(int) Constant 0
34: TypePointer Function 6(int)
41: 6(int) Constant 2
51: TypePointer Function 20(VS_OUTPUT)
63: TypePointer Input 6(int)
64(x0_in): 63(ptr) Variable Input
67: TypePointer Input 8(fvec4)
68(Pos_in): 67(ptr) Variable Input
71(x1_in): 63(ptr) Variable Input
78(VS_OUTPUT): TypeStruct 6(int) 6(int)
79: TypePointer Output 78(VS_OUTPUT)
80(@entryPointOutput): 79(ptr) Variable Output
83: TypePointer Output 6(int)
85: TypePointer Output 8(fvec4)
86(@entryPointOutput_Pos_out): 85(ptr) Variable Output
92(PerVertex_out): TypeStruct 8(fvec4)
93: TypePointer Output 92(PerVertex_out)
94(PerVertex_out): 93(ptr) Variable Output
4(main): 2 Function None 3
5: Label
62(vsin): 19(ptr) Variable Function
74(flattenTemp): 51(ptr) Variable Function
75(param): 19(ptr) Variable Function
65: 6(int) Load 64(x0_in)
66: 34(ptr) AccessChain 62(vsin) 33
Store 66 65
69: 8(fvec4) Load 68(Pos_in)
70: 26(ptr) AccessChain 62(vsin) 25
Store 70 69
72: 6(int) Load 71(x1_in)
73: 34(ptr) AccessChain 62(vsin) 41
Store 73 72
76:18(VS_INPUT) Load 62(vsin)
Store 75(param) 76
77:20(VS_OUTPUT) FunctionCall 23(@main(struct-VS_INPUT-i1-vf4-i11;) 75(param)
Store 74(flattenTemp) 77
81: 34(ptr) AccessChain 74(flattenTemp) 33
82: 6(int) Load 81
84: 83(ptr) AccessChain 80(@entryPointOutput) 33
Store 84 82
87: 26(ptr) AccessChain 74(flattenTemp) 25
88: 8(fvec4) Load 87
Store 86(@entryPointOutput_Pos_out) 88
89: 34(ptr) AccessChain 74(flattenTemp) 41
90: 6(int) Load 89
91: 83(ptr) AccessChain 80(@entryPointOutput) 25
Store 91 90
Return
FunctionEnd
16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;): 2 Function None 13
14(fn1_in): 10(ptr) FunctionParameter
15(fn1_out): 12(ptr) FunctionParameter
17: Label
27: 26(ptr) AccessChain 14(fn1_in) 25
28: 8(fvec4) Load 27
29: 26(ptr) AccessChain 15(fn1_out) 25
30: 8(fvec4) Load 29
31: 8(fvec4) FAdd 28 30
Return
FunctionEnd
23(@main(struct-VS_INPUT-i1-vf4-i11;):20(VS_OUTPUT) Function None 21
22(vsin): 19(ptr) FunctionParameter
24: Label
32(vsout): 12(ptr) Variable Function
45(param): 19(ptr) Variable Function
47(param): 12(ptr) Variable Function
52: 51(ptr) Variable Function
35: 34(ptr) AccessChain 22(vsin) 33
36: 6(int) Load 35
37: 34(ptr) AccessChain 32(vsout) 33
Store 37 36
38: 26(ptr) AccessChain 22(vsin) 25
39: 8(fvec4) Load 38
40: 26(ptr) AccessChain 32(vsout) 25
Store 40 39
42: 34(ptr) AccessChain 22(vsin) 41
43: 6(int) Load 42
44: 34(ptr) AccessChain 32(vsout) 41
Store 44 43
46:18(VS_INPUT) Load 22(vsin)
Store 45(param) 46
48:11(VS_OUTPUT) Load 32(vsout)
Store 47(param) 48
49: 2 FunctionCall 16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;) 45(param) 47(param)
50:11(VS_OUTPUT) Load 32(vsout)
53: 6(int) CompositeExtract 50 0
54: 34(ptr) AccessChain 52 33
Store 54 53
55: 8(fvec4) CompositeExtract 50 1
56: 26(ptr) AccessChain 52 25
Store 56 55
57: 6(int) CompositeExtract 50 2
58: 34(ptr) AccessChain 52 41
Store 58 57
59:20(VS_OUTPUT) Load 52
ReturnValue 59
FunctionEnd