glslang/Test/baseResults/spv.interpOps.frag.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

174 lines
8.5 KiB
Plaintext

spv.interpOps.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 120
Capability Shader
Capability InterpolationFunction
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 13 24 36 49 55 86 118
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 9 "f4"
Name 13 "if1"
Name 24 "if2"
Name 36 "if3"
Name 49 "if4"
Name 55 "samp"
Name 86 "offset"
Name 118 "fragColor"
Decorate 13(if1) Location 0
Decorate 24(if2) Location 1
Decorate 36(if3) Location 2
Decorate 49(if4) Location 3
Decorate 55(samp) Flat
Decorate 55(samp) Location 4
Decorate 86(offset) Flat
Decorate 86(offset) Location 5
Decorate 118(fragColor) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: 6(float) Constant 0
11: 7(fvec4) ConstantComposite 10 10 10 10
12: TypePointer Input 6(float)
13(if1): 12(ptr) Variable Input
15: TypeInt 32 0
16: 15(int) Constant 0
17: TypePointer Function 6(float)
22: TypeVector 6(float) 2
23: TypePointer Input 22(fvec2)
24(if2): 23(ptr) Variable Input
31: 15(int) Constant 1
34: TypeVector 6(float) 3
35: TypePointer Input 34(fvec3)
36(if3): 35(ptr) Variable Input
45: 15(int) Constant 2
48: TypePointer Input 7(fvec4)
49(if4): 48(ptr) Variable Input
53: TypeInt 32 1
54: TypePointer Input 53(int)
55(samp): 54(ptr) Variable Input
86(offset): 23(ptr) Variable Input
117: TypePointer Output 7(fvec4)
118(fragColor): 117(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(f4): 8(ptr) Variable Function
Store 9(f4) 11
14: 6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 13(if1)
18: 17(ptr) AccessChain 9(f4) 16
19: 6(float) Load 18
20: 6(float) FAdd 19 14
21: 17(ptr) AccessChain 9(f4) 16
Store 21 20
25: 22(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 24(if2)
26: 7(fvec4) Load 9(f4)
27: 22(fvec2) VectorShuffle 26 26 0 1
28: 22(fvec2) FAdd 27 25
29: 17(ptr) AccessChain 9(f4) 16
30: 6(float) CompositeExtract 28 0
Store 29 30
32: 17(ptr) AccessChain 9(f4) 31
33: 6(float) CompositeExtract 28 1
Store 32 33
37: 34(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 36(if3)
38: 7(fvec4) Load 9(f4)
39: 34(fvec3) VectorShuffle 38 38 0 1 2
40: 34(fvec3) FAdd 39 37
41: 17(ptr) AccessChain 9(f4) 16
42: 6(float) CompositeExtract 40 0
Store 41 42
43: 17(ptr) AccessChain 9(f4) 31
44: 6(float) CompositeExtract 40 1
Store 43 44
46: 17(ptr) AccessChain 9(f4) 45
47: 6(float) CompositeExtract 40 2
Store 46 47
50: 7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 49(if4)
51: 7(fvec4) Load 9(f4)
52: 7(fvec4) FAdd 51 50
Store 9(f4) 52
56: 53(int) Load 55(samp)
57: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 56
58: 17(ptr) AccessChain 9(f4) 16
59: 6(float) Load 58
60: 6(float) FAdd 59 57
61: 17(ptr) AccessChain 9(f4) 16
Store 61 60
62: 53(int) Load 55(samp)
63: 22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 62
64: 7(fvec4) Load 9(f4)
65: 22(fvec2) VectorShuffle 64 64 0 1
66: 22(fvec2) FAdd 65 63
67: 17(ptr) AccessChain 9(f4) 16
68: 6(float) CompositeExtract 66 0
Store 67 68
69: 17(ptr) AccessChain 9(f4) 31
70: 6(float) CompositeExtract 66 1
Store 69 70
71: 53(int) Load 55(samp)
72: 34(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 36(if3) 71
73: 7(fvec4) Load 9(f4)
74: 34(fvec3) VectorShuffle 73 73 0 1 2
75: 34(fvec3) FAdd 74 72
76: 17(ptr) AccessChain 9(f4) 16
77: 6(float) CompositeExtract 75 0
Store 76 77
78: 17(ptr) AccessChain 9(f4) 31
79: 6(float) CompositeExtract 75 1
Store 78 79
80: 17(ptr) AccessChain 9(f4) 45
81: 6(float) CompositeExtract 75 2
Store 80 81
82: 53(int) Load 55(samp)
83: 7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 49(if4) 82
84: 7(fvec4) Load 9(f4)
85: 7(fvec4) FAdd 84 83
Store 9(f4) 85
87: 22(fvec2) Load 86(offset)
88: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 87
89: 17(ptr) AccessChain 9(f4) 16
90: 6(float) Load 89
91: 6(float) FAdd 90 88
92: 17(ptr) AccessChain 9(f4) 16
Store 92 91
93: 22(fvec2) Load 86(offset)
94: 22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 93
95: 7(fvec4) Load 9(f4)
96: 22(fvec2) VectorShuffle 95 95 0 1
97: 22(fvec2) FAdd 96 94
98: 17(ptr) AccessChain 9(f4) 16
99: 6(float) CompositeExtract 97 0
Store 98 99
100: 17(ptr) AccessChain 9(f4) 31
101: 6(float) CompositeExtract 97 1
Store 100 101
102: 22(fvec2) Load 86(offset)
103: 34(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 36(if3) 102
104: 7(fvec4) Load 9(f4)
105: 34(fvec3) VectorShuffle 104 104 0 1 2
106: 34(fvec3) FAdd 105 103
107: 17(ptr) AccessChain 9(f4) 16
108: 6(float) CompositeExtract 106 0
Store 107 108
109: 17(ptr) AccessChain 9(f4) 31
110: 6(float) CompositeExtract 106 1
Store 109 110
111: 17(ptr) AccessChain 9(f4) 45
112: 6(float) CompositeExtract 106 2
Store 111 112
113: 22(fvec2) Load 86(offset)
114: 7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 49(if4) 113
115: 7(fvec4) Load 9(f4)
116: 7(fvec4) FAdd 115 114
Store 9(f4) 116
119: 7(fvec4) Load 9(f4)
Store 118(fragColor) 119
Return
FunctionEnd