glslang/Test/baseResults/spv.multiStructFuncall.frag.out
Greg Fischer 11c24e9adb Do true SPV type check for function array arg linkage
Previous check was missing type difference between uniform array
actual arg with stride decoration and the formal arg without. Now
does logical or component-wise copy where needed.

Fixes #2637
2021-05-20 10:51:14 -06:00

117 lines
5.5 KiB
Plaintext

spv.multiStructFuncall.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 65
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "S"
MemberName 9(S) 0 "m"
Name 12 "fooConst(struct-S-mf441;"
Name 11 "s"
Name 17 "foo(struct-S-mf441;"
Name 16 "s"
Name 20 "fooOut(struct-S-mf441;"
Name 19 "s"
Name 22 "S"
MemberName 22(S) 0 "m"
Name 23 "blockName"
MemberName 23(blockName) 0 "s1"
Name 25 ""
Name 31 "arg"
Name 38 "s2"
Name 41 "param"
Name 47 "param"
Name 50 "param"
Name 61 "param"
MemberDecorate 22(S) 0 ColMajor
MemberDecorate 22(S) 0 Offset 0
MemberDecorate 22(S) 0 MatrixStride 16
MemberDecorate 23(blockName) 0 Offset 0
Decorate 23(blockName) BufferBlock
Decorate 25 DescriptorSet 0
Decorate 25 Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeMatrix 7(fvec4) 4
9(S): TypeStruct 8
10: TypeFunction 2 9(S)
14: TypePointer Function 9(S)
15: TypeFunction 2 14(ptr)
22(S): TypeStruct 8
23(blockName): TypeStruct 22(S)
24: TypePointer Uniform 23(blockName)
25: 24(ptr) Variable Uniform
26: TypeInt 32 1
27: 26(int) Constant 0
28: TypePointer Uniform 22(S)
33: TypePointer Function 8
37: TypePointer Private 9(S)
38(s2): 37(ptr) Variable Private
59: TypePointer Uniform 8
4(main): 2 Function None 3
5: Label
31(arg): 14(ptr) Variable Function
41(param): 14(ptr) Variable Function
47(param): 14(ptr) Variable Function
50(param): 14(ptr) Variable Function
61(param): 14(ptr) Variable Function
29: 28(ptr) AccessChain 25 27
30: 22(S) Load 29
32: 8 CompositeExtract 30 0
34: 33(ptr) AccessChain 31(arg) 27
Store 34 32
35: 9(S) Load 31(arg)
36: 2 FunctionCall 12(fooConst(struct-S-mf441;) 35
39: 9(S) Load 38(s2)
40: 2 FunctionCall 12(fooConst(struct-S-mf441;) 39
42: 28(ptr) AccessChain 25 27
43: 22(S) Load 42
44: 8 CompositeExtract 43 0
45: 33(ptr) AccessChain 41(param) 27
Store 45 44
46: 2 FunctionCall 17(foo(struct-S-mf441;) 41(param)
48: 9(S) Load 38(s2)
Store 47(param) 48
49: 2 FunctionCall 17(foo(struct-S-mf441;) 47(param)
51: 28(ptr) AccessChain 25 27
52: 22(S) Load 51
53: 8 CompositeExtract 52 0
54: 33(ptr) AccessChain 50(param) 27
Store 54 53
55: 2 FunctionCall 20(fooOut(struct-S-mf441;) 50(param)
56: 9(S) Load 50(param)
57: 28(ptr) AccessChain 25 27
58: 8 CompositeExtract 56 0
60: 59(ptr) AccessChain 57 27
Store 60 58
62: 9(S) Load 38(s2)
Store 61(param) 62
63: 2 FunctionCall 20(fooOut(struct-S-mf441;) 61(param)
64: 9(S) Load 61(param)
Store 38(s2) 64
Return
FunctionEnd
12(fooConst(struct-S-mf441;): 2 Function None 10
11(s): 9(S) FunctionParameter
13: Label
Return
FunctionEnd
17(foo(struct-S-mf441;): 2 Function None 15
16(s): 14(ptr) FunctionParameter
18: Label
Return
FunctionEnd
20(fooOut(struct-S-mf441;): 2 Function None 15
19(s): 14(ptr) FunctionParameter
21: Label
Return
FunctionEnd