glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.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

87 lines
4.0 KiB
Plaintext

hlsl.partialFlattenLocal.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 164
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 86 89
Source HLSL 500
Name 4 "main"
Name 86 "pos"
Name 89 "@entryPointOutput"
Decorate 86(pos) Location 0
Decorate 89(@entryPointOutput) BuiltIn Position
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
14: TypeVector 6(float) 3
15: TypeInt 32 0
16: 15(int) Constant 3
17: TypeArray 14(fvec3) 16
18: TypeVector 6(float) 2
19: 15(int) Constant 2
20: TypeArray 18(fvec2) 19
21: TypeInt 32 1
25: 21(int) Constant 0
31: 21(int) Constant 1
32: 6(float) Constant 0
33: 14(fvec3) ConstantComposite 32 32 32
34: TypePointer Function 14(fvec3)
37: 6(float) Constant 1065353216
38: 18(fvec2) ConstantComposite 32 37
39: TypePointer Function 18(fvec2)
42: TypePointer Function 6(float)
54: TypeBool
64: 15(int) Constant 0
67: 15(int) Constant 1
85: TypePointer Input 7(fvec4)
86(pos): 85(ptr) Variable Input
88: TypePointer Output 7(fvec4)
89(@entryPointOutput): 88(ptr) Variable Output
135: TypePointer Function 17
137: TypePointer Function 20
4(main): 2 Function None 3
5: Label
138: 137(ptr) Variable Function
136: 135(ptr) Variable Function
87: 7(fvec4) Load 86(pos)
141: 34(ptr) AccessChain 136 25
Store 141 33
142: 39(ptr) AccessChain 138 25
Store 142 38
Branch 104
104: Label
163: 21(int) Phi 25 5 123 108
107: 54(bool) SLessThan 163 31
LoopMerge 124 108 None
BranchConditional 107 108 124
108: Label
143: 39(ptr) AccessChain 138 163
112: 18(fvec2) Load 143
144: 34(ptr) AccessChain 136 163
114: 14(fvec3) Load 144
115: 18(fvec2) VectorShuffle 114 114 0 1
116: 18(fvec2) FAdd 115 112
145: 42(ptr) AccessChain 136 163 64
118: 6(float) CompositeExtract 116 0
Store 145 118
146: 42(ptr) AccessChain 136 163 67
120: 6(float) CompositeExtract 116 1
Store 146 120
123: 21(int) IAdd 163 31
Branch 104
124: Label
148: 17 Load 136
162: 14(fvec3) CompositeExtract 148 0
129: 6(float) CompositeExtract 162 0
130: 6(float) CompositeExtract 162 1
131: 6(float) CompositeExtract 162 2
132: 7(fvec4) CompositeConstruct 129 130 131 32
133: 7(fvec4) FAdd 87 132
Store 89(@entryPointOutput) 133
Return
FunctionEnd