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

@ -71,7 +71,7 @@ ERROR: node is still EOpNull!
0:33 Function Definition: fn3(i1; (temp void)
0:33 Function Parameters:
0:33 'p0' (in int)
0:37 Function Definition: main( (temp 4-component vector of int)
0:37 Function Definition: @main( (temp 4-component vector of int)
0:37 Function Parameters:
0:? Sequence
0:38 Sequence
@ -80,114 +80,117 @@ ERROR: node is still EOpNull!
0:38 Constant:
0:38 30 (const int)
0:38 31 (const int)
0:49 Sequence
0:49 move second child to first child (temp 4-component vector of int)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
0:48 add (temp 4-component vector of int)
0:47 add (temp 4-component vector of int)
0:45 add (temp 4-component vector of int)
0:44 add (temp 4-component vector of int)
0:43 add (temp 4-component vector of int)
0:42 add (temp 4-component vector of int)
0:41 add (temp 4-component vector of int)
0:40 add (temp 4-component vector of int)
0:40 Function Call: fn1(vi4; (temp 4-component vector of int)
0:40 Constant:
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:41 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:49 Branch: Return with expression
0:48 add (temp 4-component vector of int)
0:47 add (temp 4-component vector of int)
0:45 add (temp 4-component vector of int)
0:44 add (temp 4-component vector of int)
0:43 add (temp 4-component vector of int)
0:42 add (temp 4-component vector of int)
0:41 add (temp 4-component vector of int)
0:40 add (temp 4-component vector of int)
0:40 Function Call: fn1(vi4; (temp 4-component vector of int)
0:40 Constant:
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:41 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:41 Constant:
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:41 Constant:
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:41 Constant:
0:41 0 (const uint)
0:15 Constant:
0:15 1 (const int)
0:15 2 (const int)
0:16 Constant:
0:16 42 (const int)
0:42 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:42 Constant:
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:42 Constant:
0:42 0 (const uint)
0:42 'myarray' (temp 2-element array of int)
0:41 0 (const uint)
0:15 Constant:
0:15 1 (const int)
0:15 2 (const int)
0:16 Constant:
0:16 42 (const int)
0:43 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:42 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:42 Constant:
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:42 Constant:
0:42 0 (const uint)
0:42 'myarray' (temp 2-element array of int)
0:16 Constant:
0:16 42 (const int)
0:43 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:43 Constant:
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:43 Constant:
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:43 Constant:
0:43 0 (const uint)
0:43 'myarray' (temp 2-element array of int)
0:43 Constant:
0:43 99 (const int)
0:44 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:44 Constant:
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 Constant:
0:44 false (const bool)
0:9 Constant:
0:9 false (const bool)
0:45 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:45 Constant:
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 Constant:
0:45 false (const bool)
0:45 Constant:
0:45 true (const bool)
0:47 Function Call: fn2(vi4; (temp 4-component vector of int)
0:47 Constant:
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:48 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:48 Constant:
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 Constant:
0:48 11 (const int)
0:49 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:49 Constant:
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 Constant:
0:49 12 (const int)
0:49 Branch: Return
0:43 0 (const uint)
0:43 'myarray' (temp 2-element array of int)
0:43 Constant:
0:43 99 (const int)
0:44 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:44 Constant:
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 Constant:
0:44 false (const bool)
0:9 Constant:
0:9 false (const bool)
0:45 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:45 Constant:
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 Constant:
0:45 false (const bool)
0:45 Constant:
0:45 true (const bool)
0:47 Function Call: fn2(vi4; (temp 4-component vector of int)
0:47 Constant:
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:48 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:48 Constant:
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 Constant:
0:48 11 (const int)
0:49 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:49 Constant:
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 Constant:
0:49 12 (const int)
0:37 Function Definition: main( (temp void)
0:37 Function Parameters:
0:? Sequence
0:37 move second child to first child (temp 4-component vector of int)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
0:37 Function Call: @main( (temp 4-component vector of int)
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
0:? 'cia' (const int)
0:? -4 (const int)
0:? 'cib' (const int)
0:? -42 (const int)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
Linked fragment stage:
@ -258,7 +261,7 @@ ERROR: node is still EOpNull!
0:33 Function Definition: fn3(i1; (temp void)
0:33 Function Parameters:
0:33 'p0' (in int)
0:37 Function Definition: main( (temp 4-component vector of int)
0:37 Function Definition: @main( (temp 4-component vector of int)
0:37 Function Parameters:
0:? Sequence
0:38 Sequence
@ -267,113 +270,116 @@ ERROR: node is still EOpNull!
0:38 Constant:
0:38 30 (const int)
0:38 31 (const int)
0:49 Sequence
0:49 move second child to first child (temp 4-component vector of int)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
0:48 add (temp 4-component vector of int)
0:47 add (temp 4-component vector of int)
0:45 add (temp 4-component vector of int)
0:44 add (temp 4-component vector of int)
0:43 add (temp 4-component vector of int)
0:42 add (temp 4-component vector of int)
0:41 add (temp 4-component vector of int)
0:40 add (temp 4-component vector of int)
0:40 Function Call: fn1(vi4; (temp 4-component vector of int)
0:40 Constant:
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:41 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:49 Branch: Return with expression
0:48 add (temp 4-component vector of int)
0:47 add (temp 4-component vector of int)
0:45 add (temp 4-component vector of int)
0:44 add (temp 4-component vector of int)
0:43 add (temp 4-component vector of int)
0:42 add (temp 4-component vector of int)
0:41 add (temp 4-component vector of int)
0:40 add (temp 4-component vector of int)
0:40 Function Call: fn1(vi4; (temp 4-component vector of int)
0:40 Constant:
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:40 100 (const int)
0:41 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:41 Constant:
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:41 Constant:
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 101 (const int)
0:41 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:41 Constant:
0:41 0 (const uint)
0:15 Constant:
0:15 1 (const int)
0:15 2 (const int)
0:16 Constant:
0:16 42 (const int)
0:42 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:42 Constant:
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:42 Constant:
0:42 0 (const uint)
0:42 'myarray' (temp 2-element array of int)
0:41 0 (const uint)
0:15 Constant:
0:15 1 (const int)
0:15 2 (const int)
0:16 Constant:
0:16 42 (const int)
0:43 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:42 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:42 Constant:
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 102 (const int)
0:42 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:42 Constant:
0:42 0 (const uint)
0:42 'myarray' (temp 2-element array of int)
0:16 Constant:
0:16 42 (const int)
0:43 Function Call: fn1(vi4;vi4;i1[2];i1; (temp 4-component vector of int)
0:43 Constant:
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:43 Constant:
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 103 (const int)
0:43 ui4: direct index for structure (layout(offset=0 ) uniform 4-component vector of int)
0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:43 Constant:
0:43 0 (const uint)
0:43 'myarray' (temp 2-element array of int)
0:43 Constant:
0:43 99 (const int)
0:44 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:44 Constant:
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 Constant:
0:44 false (const bool)
0:9 Constant:
0:9 false (const bool)
0:45 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:45 Constant:
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 Constant:
0:45 false (const bool)
0:45 Constant:
0:45 true (const bool)
0:47 Function Call: fn2(vi4; (temp 4-component vector of int)
0:47 Constant:
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:48 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:48 Constant:
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 Constant:
0:48 11 (const int)
0:49 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:49 Constant:
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 Constant:
0:49 12 (const int)
0:49 Branch: Return
0:43 0 (const uint)
0:43 'myarray' (temp 2-element array of int)
0:43 Constant:
0:43 99 (const int)
0:44 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:44 Constant:
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 104 (const int)
0:44 Constant:
0:44 false (const bool)
0:9 Constant:
0:9 false (const bool)
0:45 Function Call: fn1(vi4;b1;b1; (temp 4-component vector of int)
0:45 Constant:
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 105 (const int)
0:45 Constant:
0:45 false (const bool)
0:45 Constant:
0:45 true (const bool)
0:47 Function Call: fn2(vi4; (temp 4-component vector of int)
0:47 Constant:
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:47 112 (const int)
0:48 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:48 Constant:
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 110 (const int)
0:48 Constant:
0:48 11 (const int)
0:49 Function Call: fn2(vi4;i1; (temp 4-component vector of int)
0:49 Constant:
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 111 (const int)
0:49 Constant:
0:49 12 (const int)
0:37 Function Definition: main( (temp void)
0:37 Function Parameters:
0:? Sequence
0:37 move second child to first child (temp 4-component vector of int)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
0:37 Function Call: @main( (temp 4-component vector of int)
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
0:? 'cia' (const int)
0:? -4 (const int)
0:? 'cib' (const int)
0:? -42 (const int)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of int ui4, layout(offset=16 ) uniform float ufvar})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of int)
SPIR-V is not generated for failed compile or link