glslang/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
Jeremy Hayes 6d5b40f051 Generate separate stores for partially swizzled memory stores
Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to.

Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector.

While this change generates more SPIR-V instructions, it is necessary for correctness.

Fixes #2518.
2021-07-28 14:55:45 -06:00

211 lines
10 KiB
Plaintext

spv.320.meshShaderUserDefined.mesh
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 143
Capability MeshShadingNV
Extension "SPV_NV_mesh_shader"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshNV 4 "main" 12 19 37 106
ExecutionMode 4 LocalSize 32 1 1
ExecutionMode 4 OutputVertices 81
ExecutionMode 4 OutputPrimitivesNV 32
ExecutionMode 4 OutputTrianglesNV
Source ESSL 320
SourceExtension "GL_NV_mesh_shader"
Name 4 "main"
Name 8 "iid"
Name 12 "gl_LocalInvocationID"
Name 18 "gid"
Name 19 "gl_WorkGroupID"
Name 33 "myblock"
MemberName 33(myblock) 0 "f"
MemberName 33(myblock) 1 "fArr"
MemberName 33(myblock) 2 "pos"
MemberName 33(myblock) 3 "posArr"
MemberName 33(myblock) 4 "m"
MemberName 33(myblock) 5 "mArr"
Name 37 "blk"
Name 102 "myblock2"
MemberName 102(myblock2) 0 "f"
MemberName 102(myblock2) 1 "pos"
MemberName 102(myblock2) 2 "m"
Name 106 "blk2"
Decorate 12(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 33(myblock) 0 PerPrimitiveNV
MemberDecorate 33(myblock) 1 PerPrimitiveNV
MemberDecorate 33(myblock) 2 PerPrimitiveNV
MemberDecorate 33(myblock) 3 PerPrimitiveNV
MemberDecorate 33(myblock) 4 PerPrimitiveNV
MemberDecorate 33(myblock) 5 PerPrimitiveNV
Decorate 33(myblock) Block
Decorate 37(blk) Location 0
Decorate 102(myblock2) Block
Decorate 106(blk2) Location 20
Decorate 142 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: TypeInt 32 0
10: TypeVector 9(int) 3
11: TypePointer Input 10(ivec3)
12(gl_LocalInvocationID): 11(ptr) Variable Input
13: 9(int) Constant 0
14: TypePointer Input 9(int)
19(gl_WorkGroupID): 11(ptr) Variable Input
23: TypeFloat 32
24: 9(int) Constant 4
25: TypeArray 23(float) 24
26: TypeVector 23(float) 3
27: TypeVector 23(float) 4
28: TypeArray 27(fvec4) 24
29: TypeMatrix 27(fvec4) 4
30: TypeMatrix 26(fvec3) 3
31: 9(int) Constant 2
32: TypeArray 30 31
33(myblock): TypeStruct 23(float) 25 26(fvec3) 28 29 32
34: 9(int) Constant 32
35: TypeArray 33(myblock) 34
36: TypePointer Output 35
37(blk): 36(ptr) Variable Output
39: 6(int) Constant 0
40: 23(float) Constant 1093664768
41: TypePointer Output 23(float)
44: 6(int) Constant 1
52: 6(int) Constant 2
54: 23(float) Constant 1096810496
55: 23(float) Constant 1097859072
56: 23(float) Constant 1095761920
57: 26(fvec3) ConstantComposite 54 55 56
58: TypePointer Output 26(fvec3)
64: 6(int) Constant 3
69: 9(int) Constant 1
74: 9(int) Constant 3
78: 6(int) Constant 4
80: 23(float) Constant 1098907648
81: 27(fvec4) ConstantComposite 56 54 55 80
82: TypePointer Output 27(fvec4)
87: 6(int) Constant 5
96: 23(float) Constant 1099431936
97: 23(float) Constant 1099956224
98: 23(float) Constant 1100480512
99: 26(fvec3) ConstantComposite 96 97 98
101: 9(int) Constant 264
102(myblock2): TypeStruct 23(float) 27(fvec4) 29
103: 9(int) Constant 81
104: TypeArray 102(myblock2) 103
105: TypePointer Output 104
106(blk2): 105(ptr) Variable Output
112: 23(float) Constant 1101004800
116: 23(float) Constant 1101529088
117: 23(float) Constant 1102053376
118: 23(float) Constant 1102577664
119: 23(float) Constant 1103101952
120: 27(fvec4) ConstantComposite 116 117 118 119
132: 23(float) Constant 1105723392
142: 10(ivec3) ConstantComposite 34 69 69
4(main): 2 Function None 3
5: Label
8(iid): 7(ptr) Variable Function
18(gid): 7(ptr) Variable Function
15: 14(ptr) AccessChain 12(gl_LocalInvocationID) 13
16: 9(int) Load 15
17: 6(int) Bitcast 16
Store 8(iid) 17
20: 14(ptr) AccessChain 19(gl_WorkGroupID) 13
21: 9(int) Load 20
22: 6(int) Bitcast 21
Store 18(gid) 22
38: 6(int) Load 8(iid)
42: 41(ptr) AccessChain 37(blk) 38 39
Store 42 40
43: 6(int) Load 8(iid)
45: 6(int) IAdd 43 44
46: 6(int) Load 18(gid)
47: 6(int) Load 8(iid)
48: 41(ptr) AccessChain 37(blk) 47 39
49: 23(float) Load 48
50: 41(ptr) AccessChain 37(blk) 45 44 46
Store 50 49
51: 6(int) Load 8(iid)
53: 6(int) SDiv 51 52
59: 58(ptr) AccessChain 37(blk) 53 52
60: 26(fvec3) Load 59
61: 26(fvec3) VectorShuffle 60 57 5 3 4
Store 59 61
62: 6(int) Load 8(iid)
63: 6(int) IMul 62 52
65: 6(int) Load 8(iid)
66: 6(int) SDiv 65 52
67: 58(ptr) AccessChain 37(blk) 66 52
68: 26(fvec3) Load 67
70: 41(ptr) AccessChain 37(blk) 63 64 44 69
71: 23(float) CompositeExtract 68 0
Store 70 71
72: 41(ptr) AccessChain 37(blk) 63 64 44 31
73: 23(float) CompositeExtract 68 1
Store 72 73
75: 41(ptr) AccessChain 37(blk) 63 64 44 74
76: 23(float) CompositeExtract 68 2
Store 75 76
77: 6(int) Load 8(iid)
79: 6(int) SDiv 77 78
83: 82(ptr) AccessChain 37(blk) 79 78 52
84: 27(fvec4) Load 83
85: 27(fvec4) VectorShuffle 84 81 7 6 5 4
Store 83 85
86: 6(int) Load 8(iid)
88: 6(int) Load 8(iid)
89: 6(int) SDiv 88 78
90: 41(ptr) AccessChain 37(blk) 89 78 52 74
91: 23(float) Load 90
92: 41(ptr) AccessChain 37(blk) 86 87 39 44 69
Store 92 91
93: 6(int) Load 8(iid)
94: 6(int) IMul 93 78
95: 6(int) Load 18(gid)
100: 58(ptr) AccessChain 37(blk) 94 87 44 95
Store 100 99
MemoryBarrier 69 101
ControlBarrier 31 31 101
107: 6(int) Load 8(iid)
108: 6(int) Load 8(iid)
109: 6(int) ISub 108 44
110: 41(ptr) AccessChain 106(blk2) 109 39
111: 23(float) Load 110
113: 23(float) FAdd 111 112
114: 41(ptr) AccessChain 106(blk2) 107 39
Store 114 113
115: 6(int) Load 8(iid)
121: 82(ptr) AccessChain 106(blk2) 115 44
Store 121 120
122: 6(int) Load 8(iid)
123: 6(int) IAdd 122 44
124: 6(int) Load 18(gid)
125: 6(int) Load 8(iid)
126: 82(ptr) AccessChain 106(blk2) 125 44
127: 27(fvec4) Load 126
128: 82(ptr) AccessChain 106(blk2) 123 52 124
Store 128 127
129: 6(int) Load 8(iid)
130: 6(int) IAdd 129 44
131: 6(int) Load 18(gid)
133: 41(ptr) AccessChain 106(blk2) 130 52 131 31
Store 133 132
134: 6(int) Load 8(iid)
135: 6(int) IAdd 134 52
136: 6(int) Load 8(iid)
137: 6(int) IAdd 136 44
138: 6(int) Load 18(gid)
139: 82(ptr) AccessChain 106(blk2) 137 52 138
140: 27(fvec4) Load 139
141: 82(ptr) AccessChain 106(blk2) 135 52 64
Store 141 140
MemoryBarrier 69 101
ControlBarrier 31 31 101
Return
FunctionEnd