Fix #809: smear scalar condition in OpSelect for selecting vector operands.

This commit is contained in:
John Kessenich
2017-03-30 10:09:28 -06:00
parent 4dc835c369
commit e434ad923e
6 changed files with 72 additions and 56 deletions

View File

@@ -1,12 +1,12 @@
spv.deepRvalue.frag
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 150
// Id's are bound by 152
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 144
EntryPoint Fragment 4 "main" 146
ExecutionMode 4 OriginUpperLeft
Source GLSL 330
Name 4 "main"
@@ -21,12 +21,12 @@ spv.deepRvalue.frag
Name 106 "h"
Name 107 "i"
Name 111 "samp2D"
Name 129 "str"
MemberName 129(str) 0 "a"
MemberName 129(str) 1 "b"
MemberName 129(str) 2 "c"
Name 131 "t"
Name 144 "gl_FragColor"
Name 131 "str"
MemberName 131(str) 0 "a"
MemberName 131(str) 1 "b"
MemberName 131(str) 2 "c"
Name 133 "t"
Name 146 "gl_FragColor"
Decorate 111(samp2D) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
@@ -77,19 +77,20 @@ spv.deepRvalue.frag
115: 113(fvec2) ConstantComposite 114 114
119: 6(float) Constant 1036831949
120: TypeBool
128: TypeArray 113(fvec2) 84
129(str): TypeStruct 81(int) 128 120(bool)
130: TypePointer Function 129(str)
132: 113(fvec2) ConstantComposite 10 11
133: 6(float) Constant 1082130432
134: 113(fvec2) ConstantComposite 133 12
135: 6(float) Constant 1086324736
136: 113(fvec2) ConstantComposite 135 13
137: 128 ConstantComposite 132 134 136
138: 120(bool) ConstantTrue
139: 129(str) ConstantComposite 82 137 138
143: TypePointer Output 7(fvec4)
144(gl_FragColor): 143(ptr) Variable Output
124: TypeVector 120(bool) 4
130: TypeArray 113(fvec2) 84
131(str): TypeStruct 81(int) 130 120(bool)
132: TypePointer Function 131(str)
134: 113(fvec2) ConstantComposite 10 11
135: 6(float) Constant 1082130432
136: 113(fvec2) ConstantComposite 135 12
137: 6(float) Constant 1086324736
138: 113(fvec2) ConstantComposite 137 13
139: 130 ConstantComposite 134 136 138
140: 120(bool) ConstantTrue
141: 131(str) ConstantComposite 82 139 140
145: TypePointer Output 7(fvec4)
146(gl_FragColor): 145(ptr) Variable Output
4(main): 2 Function None 3
5: Label
35(m): 34(ptr) Variable Function
@@ -98,7 +99,7 @@ spv.deepRvalue.frag
87(g): 79(ptr) Variable Function
106(h): 79(ptr) Variable Function
107(i): 79(ptr) Variable Function
131(t): 130(ptr) Variable Function
133(t): 132(ptr) Variable Function
Store 9(v1) 14
Store 15(v2) 20
Store 21(v3) 26
@@ -174,21 +175,22 @@ spv.deepRvalue.frag
121: 120(bool) FOrdGreaterThan 118 119
122: 7(fvec4) Load 9(v1)
123: 7(fvec4) Load 15(v2)
124: 7(fvec4) Select 121 122 123
125: 6(float) CompositeExtract 124 3
126: 6(float) Load 107(i)
127: 6(float) FAdd 126 125
Store 107(i) 127
Store 131(t) 139
140: 6(float) CompositeExtract 139 1 2 1
141: 6(float) Load 107(i)
142: 6(float) FAdd 141 140
Store 107(i) 142
145: 6(float) Load 80(f)
146: 6(float) Load 87(g)
147: 6(float) Load 106(h)
148: 6(float) Load 107(i)
149: 7(fvec4) CompositeConstruct 145 146 147 148
Store 144(gl_FragColor) 149
125: 124(bvec4) CompositeConstruct 121 121 121 121
126: 7(fvec4) Select 125 122 123
127: 6(float) CompositeExtract 126 3
128: 6(float) Load 107(i)
129: 6(float) FAdd 128 127
Store 107(i) 129
Store 133(t) 141
142: 6(float) CompositeExtract 141 1 2 1
143: 6(float) Load 107(i)
144: 6(float) FAdd 143 142
Store 107(i) 144
147: 6(float) Load 80(f)
148: 6(float) Load 87(g)
149: 6(float) Load 106(h)
150: 6(float) Load 107(i)
151: 7(fvec4) CompositeConstruct 147 148 149 150
Store 146(gl_FragColor) 151
Return
FunctionEnd