Add GL_EXT_shader_subgroup_extended_types support
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 2c9fcd8..cfee167 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -6837,8 +6837,9 @@
default: assert(0 && "Unhandled subgroup operation!");
}
- const bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
- const bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
+
+ const bool isUnsigned = isTypeUnsignedInt(typeProxy);
+ const bool isFloat = isTypeFloat(typeProxy);
const bool isBool = typeProxy == glslang::EbtBool;
spv::Op opCode = spv::OpNop;
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 931ba8d..49bcca6 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -11,7 +11,7 @@
Source GLSL 400
Name 4 "main"
Name 9 "arraySize"
- Name 14 "foo(vf4[s2769];"
+ Name 14 "foo(vf4[s4393];"
Name 13 "p"
Name 17 "builtin_spec_constant("
Name 20 "color"
@@ -102,10 +102,10 @@
Store 20(color) 46
48: 10 Load 22(ucol)
Store 47(param) 48
- 49: 2 FunctionCall 14(foo(vf4[s2769];) 47(param)
+ 49: 2 FunctionCall 14(foo(vf4[s4393];) 47(param)
Return
FunctionEnd
-14(foo(vf4[s2769];): 2 Function None 12
+14(foo(vf4[s4393];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
new file mode 100644
index 0000000..453d6fc
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
@@ -0,0 +1,4280 @@
+spv.subgroupExtendedTypesArithmetic.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 3665
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformArithmetic
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_arithmetic"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 31 "Buffers"
+ MemberName 31(Buffers) 0 "i8"
+ MemberName 31(Buffers) 1 "u8"
+ MemberName 31(Buffers) 2 "i16"
+ MemberName 31(Buffers) 3 "u16"
+ MemberName 31(Buffers) 4 "i64"
+ MemberName 31(Buffers) 5 "u64"
+ MemberName 31(Buffers) 6 "f16"
+ Name 34 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 31(Buffers) 0 Offset 0
+ MemberDecorate 31(Buffers) 1 Offset 4
+ MemberDecorate 31(Buffers) 2 Offset 8
+ MemberDecorate 31(Buffers) 3 Offset 16
+ MemberDecorate 31(Buffers) 4 Offset 32
+ MemberDecorate 31(Buffers) 5 Offset 64
+ MemberDecorate 31(Buffers) 6 Offset 96
+ Decorate 31(Buffers) Block
+ Decorate 34(data) DescriptorSet 0
+ Decorate 34(data) Binding 0
+ Decorate 3664 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4)
+ 32: TypeArray 31(Buffers) 15
+ 33: TypePointer StorageBuffer 32
+ 34(data): 33(ptr) Variable StorageBuffer
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 6(int) Constant 0
+ 39: TypePointer StorageBuffer 17(int8_t)
+ 42: 6(int) Constant 3
+ 46: 36(int) Constant 1
+ 47: TypeVector 17(int8_t) 2
+ 48: TypePointer StorageBuffer 18(i8vec4)
+ 57: 36(int) Constant 2
+ 58: TypeVector 17(int8_t) 3
+ 67: 36(int) Constant 3
+ 593: TypePointer StorageBuffer 19(int8_t)
+ 599: TypeVector 19(int8_t) 2
+ 600: TypePointer StorageBuffer 20(i8vec4)
+ 609: TypeVector 19(int8_t) 3
+ 1143: TypePointer StorageBuffer 21(int16_t)
+ 1149: TypeVector 21(int16_t) 2
+ 1150: TypePointer StorageBuffer 22(i16vec4)
+ 1159: TypeVector 21(int16_t) 3
+ 1693: TypePointer StorageBuffer 23(int16_t)
+ 1699: TypeVector 23(int16_t) 2
+ 1700: TypePointer StorageBuffer 24(i16vec4)
+ 1709: TypeVector 23(int16_t) 3
+ 2243: 36(int) Constant 4
+ 2244: TypePointer StorageBuffer 25(int64_t)
+ 2250: TypeVector 25(int64_t) 2
+ 2251: TypePointer StorageBuffer 26(i64vec4)
+ 2260: TypeVector 25(int64_t) 3
+ 2794: 36(int) Constant 5
+ 2795: TypePointer StorageBuffer 27(int64_t)
+ 2801: TypeVector 27(int64_t) 2
+ 2802: TypePointer StorageBuffer 28(i64vec4)
+ 2811: TypeVector 27(int64_t) 3
+ 3345: 36(int) Constant 6
+ 3346: TypePointer StorageBuffer 29(float16_t)
+ 3352: TypeVector 29(float16_t) 2
+ 3353: TypePointer StorageBuffer 30(f16vec4)
+ 3362: TypeVector 29(float16_t) 3
+ 3661: TypeVector 6(int) 3
+ 3662: 6(int) Constant 8
+ 3663: 6(int) Constant 1
+ 3664: 3661(ivec3) ConstantComposite 3662 3663 3663
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 35: 6(int) Load 8(invocation)
+ 40: 39(ptr) AccessChain 34(data) 37 37 38
+ 41: 17(int8_t) Load 40
+ 43: 17(int8_t) GroupNonUniformIAdd 42 Reduce 41
+ 44: 39(ptr) AccessChain 34(data) 35 37 38
+ Store 44 43
+ 45: 6(int) Load 8(invocation)
+ 49: 48(ptr) AccessChain 34(data) 46 37
+ 50: 18(i8vec4) Load 49
+ 51: 47(i8vec2) VectorShuffle 50 50 0 1
+ 52: 47(i8vec2) GroupNonUniformIAdd 42 Reduce 51
+ 53: 48(ptr) AccessChain 34(data) 45 37
+ 54: 18(i8vec4) Load 53
+ 55: 18(i8vec4) VectorShuffle 54 52 4 5 2 3
+ Store 53 55
+ 56: 6(int) Load 8(invocation)
+ 59: 48(ptr) AccessChain 34(data) 57 37
+ 60: 18(i8vec4) Load 59
+ 61: 58(i8vec3) VectorShuffle 60 60 0 1 2
+ 62: 58(i8vec3) GroupNonUniformIAdd 42 Reduce 61
+ 63: 48(ptr) AccessChain 34(data) 56 37
+ 64: 18(i8vec4) Load 63
+ 65: 18(i8vec4) VectorShuffle 64 62 4 5 6 3
+ Store 63 65
+ 66: 6(int) Load 8(invocation)
+ 68: 48(ptr) AccessChain 34(data) 67 37
+ 69: 18(i8vec4) Load 68
+ 70: 18(i8vec4) GroupNonUniformIAdd 42 Reduce 69
+ 71: 48(ptr) AccessChain 34(data) 66 37
+ Store 71 70
+ 72: 6(int) Load 8(invocation)
+ 73: 39(ptr) AccessChain 34(data) 37 37 38
+ 74: 17(int8_t) Load 73
+ 75: 17(int8_t) GroupNonUniformIMul 42 Reduce 74
+ 76: 39(ptr) AccessChain 34(data) 72 37 38
+ Store 76 75
+ 77: 6(int) Load 8(invocation)
+ 78: 48(ptr) AccessChain 34(data) 46 37
+ 79: 18(i8vec4) Load 78
+ 80: 47(i8vec2) VectorShuffle 79 79 0 1
+ 81: 47(i8vec2) GroupNonUniformIMul 42 Reduce 80
+ 82: 48(ptr) AccessChain 34(data) 77 37
+ 83: 18(i8vec4) Load 82
+ 84: 18(i8vec4) VectorShuffle 83 81 4 5 2 3
+ Store 82 84
+ 85: 6(int) Load 8(invocation)
+ 86: 48(ptr) AccessChain 34(data) 57 37
+ 87: 18(i8vec4) Load 86
+ 88: 58(i8vec3) VectorShuffle 87 87 0 1 2
+ 89: 58(i8vec3) GroupNonUniformIMul 42 Reduce 88
+ 90: 48(ptr) AccessChain 34(data) 85 37
+ 91: 18(i8vec4) Load 90
+ 92: 18(i8vec4) VectorShuffle 91 89 4 5 6 3
+ Store 90 92
+ 93: 6(int) Load 8(invocation)
+ 94: 48(ptr) AccessChain 34(data) 67 37
+ 95: 18(i8vec4) Load 94
+ 96: 18(i8vec4) GroupNonUniformIMul 42 Reduce 95
+ 97: 48(ptr) AccessChain 34(data) 93 37
+ Store 97 96
+ 98: 6(int) Load 8(invocation)
+ 99: 39(ptr) AccessChain 34(data) 37 37 38
+ 100: 17(int8_t) Load 99
+ 101: 17(int8_t) GroupNonUniformSMin 42 Reduce 100
+ 102: 39(ptr) AccessChain 34(data) 98 37 38
+ Store 102 101
+ 103: 6(int) Load 8(invocation)
+ 104: 48(ptr) AccessChain 34(data) 46 37
+ 105: 18(i8vec4) Load 104
+ 106: 47(i8vec2) VectorShuffle 105 105 0 1
+ 107: 47(i8vec2) GroupNonUniformSMin 42 Reduce 106
+ 108: 48(ptr) AccessChain 34(data) 103 37
+ 109: 18(i8vec4) Load 108
+ 110: 18(i8vec4) VectorShuffle 109 107 4 5 2 3
+ Store 108 110
+ 111: 6(int) Load 8(invocation)
+ 112: 48(ptr) AccessChain 34(data) 57 37
+ 113: 18(i8vec4) Load 112
+ 114: 58(i8vec3) VectorShuffle 113 113 0 1 2
+ 115: 58(i8vec3) GroupNonUniformSMin 42 Reduce 114
+ 116: 48(ptr) AccessChain 34(data) 111 37
+ 117: 18(i8vec4) Load 116
+ 118: 18(i8vec4) VectorShuffle 117 115 4 5 6 3
+ Store 116 118
+ 119: 6(int) Load 8(invocation)
+ 120: 48(ptr) AccessChain 34(data) 67 37
+ 121: 18(i8vec4) Load 120
+ 122: 18(i8vec4) GroupNonUniformSMin 42 Reduce 121
+ 123: 48(ptr) AccessChain 34(data) 119 37
+ Store 123 122
+ 124: 6(int) Load 8(invocation)
+ 125: 39(ptr) AccessChain 34(data) 37 37 38
+ 126: 17(int8_t) Load 125
+ 127: 17(int8_t) GroupNonUniformSMax 42 Reduce 126
+ 128: 39(ptr) AccessChain 34(data) 124 37 38
+ Store 128 127
+ 129: 6(int) Load 8(invocation)
+ 130: 48(ptr) AccessChain 34(data) 46 37
+ 131: 18(i8vec4) Load 130
+ 132: 47(i8vec2) VectorShuffle 131 131 0 1
+ 133: 47(i8vec2) GroupNonUniformSMax 42 Reduce 132
+ 134: 48(ptr) AccessChain 34(data) 129 37
+ 135: 18(i8vec4) Load 134
+ 136: 18(i8vec4) VectorShuffle 135 133 4 5 2 3
+ Store 134 136
+ 137: 6(int) Load 8(invocation)
+ 138: 48(ptr) AccessChain 34(data) 57 37
+ 139: 18(i8vec4) Load 138
+ 140: 58(i8vec3) VectorShuffle 139 139 0 1 2
+ 141: 58(i8vec3) GroupNonUniformSMax 42 Reduce 140
+ 142: 48(ptr) AccessChain 34(data) 137 37
+ 143: 18(i8vec4) Load 142
+ 144: 18(i8vec4) VectorShuffle 143 141 4 5 6 3
+ Store 142 144
+ 145: 6(int) Load 8(invocation)
+ 146: 48(ptr) AccessChain 34(data) 67 37
+ 147: 18(i8vec4) Load 146
+ 148: 18(i8vec4) GroupNonUniformSMax 42 Reduce 147
+ 149: 48(ptr) AccessChain 34(data) 145 37
+ Store 149 148
+ 150: 6(int) Load 8(invocation)
+ 151: 39(ptr) AccessChain 34(data) 37 37 38
+ 152: 17(int8_t) Load 151
+ 153: 17(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 152
+ 154: 39(ptr) AccessChain 34(data) 150 37 38
+ Store 154 153
+ 155: 6(int) Load 8(invocation)
+ 156: 48(ptr) AccessChain 34(data) 46 37
+ 157: 18(i8vec4) Load 156
+ 158: 47(i8vec2) VectorShuffle 157 157 0 1
+ 159: 47(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 158
+ 160: 48(ptr) AccessChain 34(data) 155 37
+ 161: 18(i8vec4) Load 160
+ 162: 18(i8vec4) VectorShuffle 161 159 4 5 2 3
+ Store 160 162
+ 163: 6(int) Load 8(invocation)
+ 164: 48(ptr) AccessChain 34(data) 57 37
+ 165: 18(i8vec4) Load 164
+ 166: 58(i8vec3) VectorShuffle 165 165 0 1 2
+ 167: 58(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 166
+ 168: 48(ptr) AccessChain 34(data) 163 37
+ 169: 18(i8vec4) Load 168
+ 170: 18(i8vec4) VectorShuffle 169 167 4 5 6 3
+ Store 168 170
+ 171: 6(int) Load 8(invocation)
+ 172: 48(ptr) AccessChain 34(data) 67 37
+ 173: 18(i8vec4) Load 172
+ 174: 18(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 173
+ 175: 48(ptr) AccessChain 34(data) 171 37
+ Store 175 174
+ 176: 6(int) Load 8(invocation)
+ 177: 39(ptr) AccessChain 34(data) 37 37 38
+ 178: 17(int8_t) Load 177
+ 179: 17(int8_t) GroupNonUniformBitwiseOr 42 Reduce 178
+ 180: 39(ptr) AccessChain 34(data) 176 37 38
+ Store 180 179
+ 181: 6(int) Load 8(invocation)
+ 182: 48(ptr) AccessChain 34(data) 46 37
+ 183: 18(i8vec4) Load 182
+ 184: 47(i8vec2) VectorShuffle 183 183 0 1
+ 185: 47(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 184
+ 186: 48(ptr) AccessChain 34(data) 181 37
+ 187: 18(i8vec4) Load 186
+ 188: 18(i8vec4) VectorShuffle 187 185 4 5 2 3
+ Store 186 188
+ 189: 6(int) Load 8(invocation)
+ 190: 48(ptr) AccessChain 34(data) 57 37
+ 191: 18(i8vec4) Load 190
+ 192: 58(i8vec3) VectorShuffle 191 191 0 1 2
+ 193: 58(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 192
+ 194: 48(ptr) AccessChain 34(data) 189 37
+ 195: 18(i8vec4) Load 194
+ 196: 18(i8vec4) VectorShuffle 195 193 4 5 6 3
+ Store 194 196
+ 197: 6(int) Load 8(invocation)
+ 198: 48(ptr) AccessChain 34(data) 67 37
+ 199: 18(i8vec4) Load 198
+ 200: 18(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 199
+ 201: 48(ptr) AccessChain 34(data) 197 37
+ Store 201 200
+ 202: 6(int) Load 8(invocation)
+ 203: 39(ptr) AccessChain 34(data) 37 37 38
+ 204: 17(int8_t) Load 203
+ 205: 17(int8_t) GroupNonUniformBitwiseXor 42 Reduce 204
+ 206: 39(ptr) AccessChain 34(data) 202 37 38
+ Store 206 205
+ 207: 6(int) Load 8(invocation)
+ 208: 48(ptr) AccessChain 34(data) 46 37
+ 209: 18(i8vec4) Load 208
+ 210: 47(i8vec2) VectorShuffle 209 209 0 1
+ 211: 47(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 210
+ 212: 48(ptr) AccessChain 34(data) 207 37
+ 213: 18(i8vec4) Load 212
+ 214: 18(i8vec4) VectorShuffle 213 211 4 5 2 3
+ Store 212 214
+ 215: 6(int) Load 8(invocation)
+ 216: 48(ptr) AccessChain 34(data) 57 37
+ 217: 18(i8vec4) Load 216
+ 218: 58(i8vec3) VectorShuffle 217 217 0 1 2
+ 219: 58(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 218
+ 220: 48(ptr) AccessChain 34(data) 215 37
+ 221: 18(i8vec4) Load 220
+ 222: 18(i8vec4) VectorShuffle 221 219 4 5 6 3
+ Store 220 222
+ 223: 6(int) Load 8(invocation)
+ 224: 48(ptr) AccessChain 34(data) 67 37
+ 225: 18(i8vec4) Load 224
+ 226: 18(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 225
+ 227: 48(ptr) AccessChain 34(data) 223 37
+ Store 227 226
+ 228: 6(int) Load 8(invocation)
+ 229: 39(ptr) AccessChain 34(data) 37 37 38
+ 230: 17(int8_t) Load 229
+ 231: 17(int8_t) GroupNonUniformIAdd 42 InclusiveScan 230
+ 232: 39(ptr) AccessChain 34(data) 228 37 38
+ Store 232 231
+ 233: 6(int) Load 8(invocation)
+ 234: 48(ptr) AccessChain 34(data) 46 37
+ 235: 18(i8vec4) Load 234
+ 236: 47(i8vec2) VectorShuffle 235 235 0 1
+ 237: 47(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 236
+ 238: 48(ptr) AccessChain 34(data) 233 37
+ 239: 18(i8vec4) Load 238
+ 240: 18(i8vec4) VectorShuffle 239 237 4 5 2 3
+ Store 238 240
+ 241: 6(int) Load 8(invocation)
+ 242: 48(ptr) AccessChain 34(data) 57 37
+ 243: 18(i8vec4) Load 242
+ 244: 58(i8vec3) VectorShuffle 243 243 0 1 2
+ 245: 58(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 244
+ 246: 48(ptr) AccessChain 34(data) 241 37
+ 247: 18(i8vec4) Load 246
+ 248: 18(i8vec4) VectorShuffle 247 245 4 5 6 3
+ Store 246 248
+ 249: 6(int) Load 8(invocation)
+ 250: 48(ptr) AccessChain 34(data) 67 37
+ 251: 18(i8vec4) Load 250
+ 252: 18(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 251
+ 253: 48(ptr) AccessChain 34(data) 249 37
+ Store 253 252
+ 254: 6(int) Load 8(invocation)
+ 255: 39(ptr) AccessChain 34(data) 37 37 38
+ 256: 17(int8_t) Load 255
+ 257: 17(int8_t) GroupNonUniformIMul 42 InclusiveScan 256
+ 258: 39(ptr) AccessChain 34(data) 254 37 38
+ Store 258 257
+ 259: 6(int) Load 8(invocation)
+ 260: 48(ptr) AccessChain 34(data) 46 37
+ 261: 18(i8vec4) Load 260
+ 262: 47(i8vec2) VectorShuffle 261 261 0 1
+ 263: 47(i8vec2) GroupNonUniformIMul 42 InclusiveScan 262
+ 264: 48(ptr) AccessChain 34(data) 259 37
+ 265: 18(i8vec4) Load 264
+ 266: 18(i8vec4) VectorShuffle 265 263 4 5 2 3
+ Store 264 266
+ 267: 6(int) Load 8(invocation)
+ 268: 48(ptr) AccessChain 34(data) 57 37
+ 269: 18(i8vec4) Load 268
+ 270: 58(i8vec3) VectorShuffle 269 269 0 1 2
+ 271: 58(i8vec3) GroupNonUniformIMul 42 InclusiveScan 270
+ 272: 48(ptr) AccessChain 34(data) 267 37
+ 273: 18(i8vec4) Load 272
+ 274: 18(i8vec4) VectorShuffle 273 271 4 5 6 3
+ Store 272 274
+ 275: 6(int) Load 8(invocation)
+ 276: 48(ptr) AccessChain 34(data) 67 37
+ 277: 18(i8vec4) Load 276
+ 278: 18(i8vec4) GroupNonUniformIMul 42 InclusiveScan 277
+ 279: 48(ptr) AccessChain 34(data) 275 37
+ Store 279 278
+ 280: 6(int) Load 8(invocation)
+ 281: 39(ptr) AccessChain 34(data) 37 37 38
+ 282: 17(int8_t) Load 281
+ 283: 17(int8_t) GroupNonUniformSMin 42 InclusiveScan 282
+ 284: 39(ptr) AccessChain 34(data) 280 37 38
+ Store 284 283
+ 285: 6(int) Load 8(invocation)
+ 286: 48(ptr) AccessChain 34(data) 46 37
+ 287: 18(i8vec4) Load 286
+ 288: 47(i8vec2) VectorShuffle 287 287 0 1
+ 289: 47(i8vec2) GroupNonUniformSMin 42 InclusiveScan 288
+ 290: 48(ptr) AccessChain 34(data) 285 37
+ 291: 18(i8vec4) Load 290
+ 292: 18(i8vec4) VectorShuffle 291 289 4 5 2 3
+ Store 290 292
+ 293: 6(int) Load 8(invocation)
+ 294: 48(ptr) AccessChain 34(data) 57 37
+ 295: 18(i8vec4) Load 294
+ 296: 58(i8vec3) VectorShuffle 295 295 0 1 2
+ 297: 58(i8vec3) GroupNonUniformSMin 42 InclusiveScan 296
+ 298: 48(ptr) AccessChain 34(data) 293 37
+ 299: 18(i8vec4) Load 298
+ 300: 18(i8vec4) VectorShuffle 299 297 4 5 6 3
+ Store 298 300
+ 301: 6(int) Load 8(invocation)
+ 302: 48(ptr) AccessChain 34(data) 67 37
+ 303: 18(i8vec4) Load 302
+ 304: 18(i8vec4) GroupNonUniformSMin 42 InclusiveScan 303
+ 305: 48(ptr) AccessChain 34(data) 301 37
+ Store 305 304
+ 306: 6(int) Load 8(invocation)
+ 307: 39(ptr) AccessChain 34(data) 37 37 38
+ 308: 17(int8_t) Load 307
+ 309: 17(int8_t) GroupNonUniformSMax 42 InclusiveScan 308
+ 310: 39(ptr) AccessChain 34(data) 306 37 38
+ Store 310 309
+ 311: 6(int) Load 8(invocation)
+ 312: 48(ptr) AccessChain 34(data) 46 37
+ 313: 18(i8vec4) Load 312
+ 314: 47(i8vec2) VectorShuffle 313 313 0 1
+ 315: 47(i8vec2) GroupNonUniformSMax 42 InclusiveScan 314
+ 316: 48(ptr) AccessChain 34(data) 311 37
+ 317: 18(i8vec4) Load 316
+ 318: 18(i8vec4) VectorShuffle 317 315 4 5 2 3
+ Store 316 318
+ 319: 6(int) Load 8(invocation)
+ 320: 48(ptr) AccessChain 34(data) 57 37
+ 321: 18(i8vec4) Load 320
+ 322: 58(i8vec3) VectorShuffle 321 321 0 1 2
+ 323: 58(i8vec3) GroupNonUniformSMax 42 InclusiveScan 322
+ 324: 48(ptr) AccessChain 34(data) 319 37
+ 325: 18(i8vec4) Load 324
+ 326: 18(i8vec4) VectorShuffle 325 323 4 5 6 3
+ Store 324 326
+ 327: 6(int) Load 8(invocation)
+ 328: 48(ptr) AccessChain 34(data) 67 37
+ 329: 18(i8vec4) Load 328
+ 330: 18(i8vec4) GroupNonUniformSMax 42 InclusiveScan 329
+ 331: 48(ptr) AccessChain 34(data) 327 37
+ Store 331 330
+ 332: 6(int) Load 8(invocation)
+ 333: 39(ptr) AccessChain 34(data) 37 37 38
+ 334: 17(int8_t) Load 333
+ 335: 17(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 334
+ 336: 39(ptr) AccessChain 34(data) 332 37 38
+ Store 336 335
+ 337: 6(int) Load 8(invocation)
+ 338: 48(ptr) AccessChain 34(data) 46 37
+ 339: 18(i8vec4) Load 338
+ 340: 47(i8vec2) VectorShuffle 339 339 0 1
+ 341: 47(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 340
+ 342: 48(ptr) AccessChain 34(data) 337 37
+ 343: 18(i8vec4) Load 342
+ 344: 18(i8vec4) VectorShuffle 343 341 4 5 2 3
+ Store 342 344
+ 345: 6(int) Load 8(invocation)
+ 346: 48(ptr) AccessChain 34(data) 57 37
+ 347: 18(i8vec4) Load 346
+ 348: 58(i8vec3) VectorShuffle 347 347 0 1 2
+ 349: 58(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 348
+ 350: 48(ptr) AccessChain 34(data) 345 37
+ 351: 18(i8vec4) Load 350
+ 352: 18(i8vec4) VectorShuffle 351 349 4 5 6 3
+ Store 350 352
+ 353: 6(int) Load 8(invocation)
+ 354: 48(ptr) AccessChain 34(data) 67 37
+ 355: 18(i8vec4) Load 354
+ 356: 18(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 355
+ 357: 48(ptr) AccessChain 34(data) 353 37
+ Store 357 356
+ 358: 6(int) Load 8(invocation)
+ 359: 39(ptr) AccessChain 34(data) 37 37 38
+ 360: 17(int8_t) Load 359
+ 361: 17(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 360
+ 362: 39(ptr) AccessChain 34(data) 358 37 38
+ Store 362 361
+ 363: 6(int) Load 8(invocation)
+ 364: 48(ptr) AccessChain 34(data) 46 37
+ 365: 18(i8vec4) Load 364
+ 366: 47(i8vec2) VectorShuffle 365 365 0 1
+ 367: 47(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 366
+ 368: 48(ptr) AccessChain 34(data) 363 37
+ 369: 18(i8vec4) Load 368
+ 370: 18(i8vec4) VectorShuffle 369 367 4 5 2 3
+ Store 368 370
+ 371: 6(int) Load 8(invocation)
+ 372: 48(ptr) AccessChain 34(data) 57 37
+ 373: 18(i8vec4) Load 372
+ 374: 58(i8vec3) VectorShuffle 373 373 0 1 2
+ 375: 58(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 374
+ 376: 48(ptr) AccessChain 34(data) 371 37
+ 377: 18(i8vec4) Load 376
+ 378: 18(i8vec4) VectorShuffle 377 375 4 5 6 3
+ Store 376 378
+ 379: 6(int) Load 8(invocation)
+ 380: 48(ptr) AccessChain 34(data) 67 37
+ 381: 18(i8vec4) Load 380
+ 382: 18(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 381
+ 383: 48(ptr) AccessChain 34(data) 379 37
+ Store 383 382
+ 384: 6(int) Load 8(invocation)
+ 385: 39(ptr) AccessChain 34(data) 37 37 38
+ 386: 17(int8_t) Load 385
+ 387: 17(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 386
+ 388: 39(ptr) AccessChain 34(data) 384 37 38
+ Store 388 387
+ 389: 6(int) Load 8(invocation)
+ 390: 48(ptr) AccessChain 34(data) 46 37
+ 391: 18(i8vec4) Load 390
+ 392: 47(i8vec2) VectorShuffle 391 391 0 1
+ 393: 47(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 392
+ 394: 48(ptr) AccessChain 34(data) 389 37
+ 395: 18(i8vec4) Load 394
+ 396: 18(i8vec4) VectorShuffle 395 393 4 5 2 3
+ Store 394 396
+ 397: 6(int) Load 8(invocation)
+ 398: 48(ptr) AccessChain 34(data) 57 37
+ 399: 18(i8vec4) Load 398
+ 400: 58(i8vec3) VectorShuffle 399 399 0 1 2
+ 401: 58(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 400
+ 402: 48(ptr) AccessChain 34(data) 397 37
+ 403: 18(i8vec4) Load 402
+ 404: 18(i8vec4) VectorShuffle 403 401 4 5 6 3
+ Store 402 404
+ 405: 6(int) Load 8(invocation)
+ 406: 48(ptr) AccessChain 34(data) 67 37
+ 407: 18(i8vec4) Load 406
+ 408: 18(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 407
+ 409: 48(ptr) AccessChain 34(data) 405 37
+ Store 409 408
+ 410: 6(int) Load 8(invocation)
+ 411: 39(ptr) AccessChain 34(data) 37 37 38
+ 412: 17(int8_t) Load 411
+ 413: 17(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 412
+ 414: 39(ptr) AccessChain 34(data) 410 37 38
+ Store 414 413
+ 415: 6(int) Load 8(invocation)
+ 416: 48(ptr) AccessChain 34(data) 46 37
+ 417: 18(i8vec4) Load 416
+ 418: 47(i8vec2) VectorShuffle 417 417 0 1
+ 419: 47(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 418
+ 420: 48(ptr) AccessChain 34(data) 415 37
+ 421: 18(i8vec4) Load 420
+ 422: 18(i8vec4) VectorShuffle 421 419 4 5 2 3
+ Store 420 422
+ 423: 6(int) Load 8(invocation)
+ 424: 48(ptr) AccessChain 34(data) 57 37
+ 425: 18(i8vec4) Load 424
+ 426: 58(i8vec3) VectorShuffle 425 425 0 1 2
+ 427: 58(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 426
+ 428: 48(ptr) AccessChain 34(data) 423 37
+ 429: 18(i8vec4) Load 428
+ 430: 18(i8vec4) VectorShuffle 429 427 4 5 6 3
+ Store 428 430
+ 431: 6(int) Load 8(invocation)
+ 432: 48(ptr) AccessChain 34(data) 67 37
+ 433: 18(i8vec4) Load 432
+ 434: 18(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 433
+ 435: 48(ptr) AccessChain 34(data) 431 37
+ Store 435 434
+ 436: 6(int) Load 8(invocation)
+ 437: 39(ptr) AccessChain 34(data) 37 37 38
+ 438: 17(int8_t) Load 437
+ 439: 17(int8_t) GroupNonUniformIMul 42 ExclusiveScan 438
+ 440: 39(ptr) AccessChain 34(data) 436 37 38
+ Store 440 439
+ 441: 6(int) Load 8(invocation)
+ 442: 48(ptr) AccessChain 34(data) 46 37
+ 443: 18(i8vec4) Load 442
+ 444: 47(i8vec2) VectorShuffle 443 443 0 1
+ 445: 47(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 444
+ 446: 48(ptr) AccessChain 34(data) 441 37
+ 447: 18(i8vec4) Load 446
+ 448: 18(i8vec4) VectorShuffle 447 445 4 5 2 3
+ Store 446 448
+ 449: 6(int) Load 8(invocation)
+ 450: 48(ptr) AccessChain 34(data) 57 37
+ 451: 18(i8vec4) Load 450
+ 452: 58(i8vec3) VectorShuffle 451 451 0 1 2
+ 453: 58(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 452
+ 454: 48(ptr) AccessChain 34(data) 449 37
+ 455: 18(i8vec4) Load 454
+ 456: 18(i8vec4) VectorShuffle 455 453 4 5 6 3
+ Store 454 456
+ 457: 6(int) Load 8(invocation)
+ 458: 48(ptr) AccessChain 34(data) 67 37
+ 459: 18(i8vec4) Load 458
+ 460: 18(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 459
+ 461: 48(ptr) AccessChain 34(data) 457 37
+ Store 461 460
+ 462: 6(int) Load 8(invocation)
+ 463: 39(ptr) AccessChain 34(data) 37 37 38
+ 464: 17(int8_t) Load 463
+ 465: 17(int8_t) GroupNonUniformSMin 42 ExclusiveScan 464
+ 466: 39(ptr) AccessChain 34(data) 462 37 38
+ Store 466 465
+ 467: 6(int) Load 8(invocation)
+ 468: 48(ptr) AccessChain 34(data) 46 37
+ 469: 18(i8vec4) Load 468
+ 470: 47(i8vec2) VectorShuffle 469 469 0 1
+ 471: 47(i8vec2) GroupNonUniformSMin 42 ExclusiveScan 470
+ 472: 48(ptr) AccessChain 34(data) 467 37
+ 473: 18(i8vec4) Load 472
+ 474: 18(i8vec4) VectorShuffle 473 471 4 5 2 3
+ Store 472 474
+ 475: 6(int) Load 8(invocation)
+ 476: 48(ptr) AccessChain 34(data) 57 37
+ 477: 18(i8vec4) Load 476
+ 478: 58(i8vec3) VectorShuffle 477 477 0 1 2
+ 479: 58(i8vec3) GroupNonUniformSMin 42 ExclusiveScan 478
+ 480: 48(ptr) AccessChain 34(data) 475 37
+ 481: 18(i8vec4) Load 480
+ 482: 18(i8vec4) VectorShuffle 481 479 4 5 6 3
+ Store 480 482
+ 483: 6(int) Load 8(invocation)
+ 484: 48(ptr) AccessChain 34(data) 67 37
+ 485: 18(i8vec4) Load 484
+ 486: 18(i8vec4) GroupNonUniformSMin 42 ExclusiveScan 485
+ 487: 48(ptr) AccessChain 34(data) 483 37
+ Store 487 486
+ 488: 6(int) Load 8(invocation)
+ 489: 39(ptr) AccessChain 34(data) 37 37 38
+ 490: 17(int8_t) Load 489
+ 491: 17(int8_t) GroupNonUniformSMax 42 ExclusiveScan 490
+ 492: 39(ptr) AccessChain 34(data) 488 37 38
+ Store 492 491
+ 493: 6(int) Load 8(invocation)
+ 494: 48(ptr) AccessChain 34(data) 46 37
+ 495: 18(i8vec4) Load 494
+ 496: 47(i8vec2) VectorShuffle 495 495 0 1
+ 497: 47(i8vec2) GroupNonUniformSMax 42 ExclusiveScan 496
+ 498: 48(ptr) AccessChain 34(data) 493 37
+ 499: 18(i8vec4) Load 498
+ 500: 18(i8vec4) VectorShuffle 499 497 4 5 2 3
+ Store 498 500
+ 501: 6(int) Load 8(invocation)
+ 502: 48(ptr) AccessChain 34(data) 57 37
+ 503: 18(i8vec4) Load 502
+ 504: 58(i8vec3) VectorShuffle 503 503 0 1 2
+ 505: 58(i8vec3) GroupNonUniformSMax 42 ExclusiveScan 504
+ 506: 48(ptr) AccessChain 34(data) 501 37
+ 507: 18(i8vec4) Load 506
+ 508: 18(i8vec4) VectorShuffle 507 505 4 5 6 3
+ Store 506 508
+ 509: 6(int) Load 8(invocation)
+ 510: 48(ptr) AccessChain 34(data) 67 37
+ 511: 18(i8vec4) Load 510
+ 512: 18(i8vec4) GroupNonUniformSMax 42 ExclusiveScan 511
+ 513: 48(ptr) AccessChain 34(data) 509 37
+ Store 513 512
+ 514: 6(int) Load 8(invocation)
+ 515: 39(ptr) AccessChain 34(data) 37 37 38
+ 516: 17(int8_t) Load 515
+ 517: 17(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 516
+ 518: 39(ptr) AccessChain 34(data) 514 37 38
+ Store 518 517
+ 519: 6(int) Load 8(invocation)
+ 520: 48(ptr) AccessChain 34(data) 46 37
+ 521: 18(i8vec4) Load 520
+ 522: 47(i8vec2) VectorShuffle 521 521 0 1
+ 523: 47(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 522
+ 524: 48(ptr) AccessChain 34(data) 519 37
+ 525: 18(i8vec4) Load 524
+ 526: 18(i8vec4) VectorShuffle 525 523 4 5 2 3
+ Store 524 526
+ 527: 6(int) Load 8(invocation)
+ 528: 48(ptr) AccessChain 34(data) 57 37
+ 529: 18(i8vec4) Load 528
+ 530: 58(i8vec3) VectorShuffle 529 529 0 1 2
+ 531: 58(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 530
+ 532: 48(ptr) AccessChain 34(data) 527 37
+ 533: 18(i8vec4) Load 532
+ 534: 18(i8vec4) VectorShuffle 533 531 4 5 6 3
+ Store 532 534
+ 535: 6(int) Load 8(invocation)
+ 536: 48(ptr) AccessChain 34(data) 67 37
+ 537: 18(i8vec4) Load 536
+ 538: 18(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 537
+ 539: 48(ptr) AccessChain 34(data) 535 37
+ Store 539 538
+ 540: 6(int) Load 8(invocation)
+ 541: 39(ptr) AccessChain 34(data) 37 37 38
+ 542: 17(int8_t) Load 541
+ 543: 17(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 542
+ 544: 39(ptr) AccessChain 34(data) 540 37 38
+ Store 544 543
+ 545: 6(int) Load 8(invocation)
+ 546: 48(ptr) AccessChain 34(data) 46 37
+ 547: 18(i8vec4) Load 546
+ 548: 47(i8vec2) VectorShuffle 547 547 0 1
+ 549: 47(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 548
+ 550: 48(ptr) AccessChain 34(data) 545 37
+ 551: 18(i8vec4) Load 550
+ 552: 18(i8vec4) VectorShuffle 551 549 4 5 2 3
+ Store 550 552
+ 553: 6(int) Load 8(invocation)
+ 554: 48(ptr) AccessChain 34(data) 57 37
+ 555: 18(i8vec4) Load 554
+ 556: 58(i8vec3) VectorShuffle 555 555 0 1 2
+ 557: 58(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 556
+ 558: 48(ptr) AccessChain 34(data) 553 37
+ 559: 18(i8vec4) Load 558
+ 560: 18(i8vec4) VectorShuffle 559 557 4 5 6 3
+ Store 558 560
+ 561: 6(int) Load 8(invocation)
+ 562: 48(ptr) AccessChain 34(data) 67 37
+ 563: 18(i8vec4) Load 562
+ 564: 18(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 563
+ 565: 48(ptr) AccessChain 34(data) 561 37
+ Store 565 564
+ 566: 6(int) Load 8(invocation)
+ 567: 39(ptr) AccessChain 34(data) 37 37 38
+ 568: 17(int8_t) Load 567
+ 569: 17(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 568
+ 570: 39(ptr) AccessChain 34(data) 566 37 38
+ Store 570 569
+ 571: 6(int) Load 8(invocation)
+ 572: 48(ptr) AccessChain 34(data) 46 37
+ 573: 18(i8vec4) Load 572
+ 574: 47(i8vec2) VectorShuffle 573 573 0 1
+ 575: 47(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 574
+ 576: 48(ptr) AccessChain 34(data) 571 37
+ 577: 18(i8vec4) Load 576
+ 578: 18(i8vec4) VectorShuffle 577 575 4 5 2 3
+ Store 576 578
+ 579: 6(int) Load 8(invocation)
+ 580: 48(ptr) AccessChain 34(data) 57 37
+ 581: 18(i8vec4) Load 580
+ 582: 58(i8vec3) VectorShuffle 581 581 0 1 2
+ 583: 58(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 582
+ 584: 48(ptr) AccessChain 34(data) 579 37
+ 585: 18(i8vec4) Load 584
+ 586: 18(i8vec4) VectorShuffle 585 583 4 5 6 3
+ Store 584 586
+ 587: 6(int) Load 8(invocation)
+ 588: 48(ptr) AccessChain 34(data) 67 37
+ 589: 18(i8vec4) Load 588
+ 590: 18(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 589
+ 591: 48(ptr) AccessChain 34(data) 587 37
+ Store 591 590
+ 592: 6(int) Load 8(invocation)
+ 594: 593(ptr) AccessChain 34(data) 37 46 38
+ 595: 19(int8_t) Load 594
+ 596: 19(int8_t) GroupNonUniformIAdd 42 Reduce 595
+ 597: 593(ptr) AccessChain 34(data) 592 46 38
+ Store 597 596
+ 598: 6(int) Load 8(invocation)
+ 601: 600(ptr) AccessChain 34(data) 46 46
+ 602: 20(i8vec4) Load 601
+ 603: 599(i8vec2) VectorShuffle 602 602 0 1
+ 604: 599(i8vec2) GroupNonUniformIAdd 42 Reduce 603
+ 605: 600(ptr) AccessChain 34(data) 598 46
+ 606: 20(i8vec4) Load 605
+ 607: 20(i8vec4) VectorShuffle 606 604 4 5 2 3
+ Store 605 607
+ 608: 6(int) Load 8(invocation)
+ 610: 600(ptr) AccessChain 34(data) 57 46
+ 611: 20(i8vec4) Load 610
+ 612: 609(i8vec3) VectorShuffle 611 611 0 1 2
+ 613: 609(i8vec3) GroupNonUniformIAdd 42 Reduce 612
+ 614: 600(ptr) AccessChain 34(data) 608 46
+ 615: 20(i8vec4) Load 614
+ 616: 20(i8vec4) VectorShuffle 615 613 4 5 6 3
+ Store 614 616
+ 617: 6(int) Load 8(invocation)
+ 618: 600(ptr) AccessChain 34(data) 67 46
+ 619: 20(i8vec4) Load 618
+ 620: 20(i8vec4) GroupNonUniformIAdd 42 Reduce 619
+ 621: 600(ptr) AccessChain 34(data) 617 46
+ Store 621 620
+ 622: 6(int) Load 8(invocation)
+ 623: 593(ptr) AccessChain 34(data) 37 46 38
+ 624: 19(int8_t) Load 623
+ 625: 19(int8_t) GroupNonUniformIMul 42 Reduce 624
+ 626: 593(ptr) AccessChain 34(data) 622 46 38
+ Store 626 625
+ 627: 6(int) Load 8(invocation)
+ 628: 600(ptr) AccessChain 34(data) 46 46
+ 629: 20(i8vec4) Load 628
+ 630: 599(i8vec2) VectorShuffle 629 629 0 1
+ 631: 599(i8vec2) GroupNonUniformIMul 42 Reduce 630
+ 632: 600(ptr) AccessChain 34(data) 627 46
+ 633: 20(i8vec4) Load 632
+ 634: 20(i8vec4) VectorShuffle 633 631 4 5 2 3
+ Store 632 634
+ 635: 6(int) Load 8(invocation)
+ 636: 600(ptr) AccessChain 34(data) 57 46
+ 637: 20(i8vec4) Load 636
+ 638: 609(i8vec3) VectorShuffle 637 637 0 1 2
+ 639: 609(i8vec3) GroupNonUniformIMul 42 Reduce 638
+ 640: 600(ptr) AccessChain 34(data) 635 46
+ 641: 20(i8vec4) Load 640
+ 642: 20(i8vec4) VectorShuffle 641 639 4 5 6 3
+ Store 640 642
+ 643: 6(int) Load 8(invocation)
+ 644: 600(ptr) AccessChain 34(data) 67 46
+ 645: 20(i8vec4) Load 644
+ 646: 20(i8vec4) GroupNonUniformIMul 42 Reduce 645
+ 647: 600(ptr) AccessChain 34(data) 643 46
+ Store 647 646
+ 648: 6(int) Load 8(invocation)
+ 649: 593(ptr) AccessChain 34(data) 37 46 38
+ 650: 19(int8_t) Load 649
+ 651: 19(int8_t) GroupNonUniformUMin 42 Reduce 650
+ 652: 593(ptr) AccessChain 34(data) 648 46 38
+ Store 652 651
+ 653: 6(int) Load 8(invocation)
+ 654: 600(ptr) AccessChain 34(data) 46 46
+ 655: 20(i8vec4) Load 654
+ 656: 599(i8vec2) VectorShuffle 655 655 0 1
+ 657: 599(i8vec2) GroupNonUniformUMin 42 Reduce 656
+ 658: 600(ptr) AccessChain 34(data) 653 46
+ 659: 20(i8vec4) Load 658
+ 660: 20(i8vec4) VectorShuffle 659 657 4 5 2 3
+ Store 658 660
+ 661: 6(int) Load 8(invocation)
+ 662: 600(ptr) AccessChain 34(data) 57 46
+ 663: 20(i8vec4) Load 662
+ 664: 609(i8vec3) VectorShuffle 663 663 0 1 2
+ 665: 609(i8vec3) GroupNonUniformUMin 42 Reduce 664
+ 666: 600(ptr) AccessChain 34(data) 661 46
+ 667: 20(i8vec4) Load 666
+ 668: 20(i8vec4) VectorShuffle 667 665 4 5 6 3
+ Store 666 668
+ 669: 6(int) Load 8(invocation)
+ 670: 600(ptr) AccessChain 34(data) 67 46
+ 671: 20(i8vec4) Load 670
+ 672: 20(i8vec4) GroupNonUniformUMin 42 Reduce 671
+ 673: 600(ptr) AccessChain 34(data) 669 46
+ Store 673 672
+ 674: 6(int) Load 8(invocation)
+ 675: 593(ptr) AccessChain 34(data) 37 46 38
+ 676: 19(int8_t) Load 675
+ 677: 19(int8_t) GroupNonUniformUMax 42 Reduce 676
+ 678: 593(ptr) AccessChain 34(data) 674 46 38
+ Store 678 677
+ 679: 6(int) Load 8(invocation)
+ 680: 600(ptr) AccessChain 34(data) 46 46
+ 681: 20(i8vec4) Load 680
+ 682: 599(i8vec2) VectorShuffle 681 681 0 1
+ 683: 599(i8vec2) GroupNonUniformUMax 42 Reduce 682
+ 684: 600(ptr) AccessChain 34(data) 679 46
+ 685: 20(i8vec4) Load 684
+ 686: 20(i8vec4) VectorShuffle 685 683 4 5 2 3
+ Store 684 686
+ 687: 6(int) Load 8(invocation)
+ 688: 600(ptr) AccessChain 34(data) 57 46
+ 689: 20(i8vec4) Load 688
+ 690: 609(i8vec3) VectorShuffle 689 689 0 1 2
+ 691: 609(i8vec3) GroupNonUniformUMax 42 Reduce 690
+ 692: 600(ptr) AccessChain 34(data) 687 46
+ 693: 20(i8vec4) Load 692
+ 694: 20(i8vec4) VectorShuffle 693 691 4 5 6 3
+ Store 692 694
+ 695: 6(int) Load 8(invocation)
+ 696: 600(ptr) AccessChain 34(data) 67 46
+ 697: 20(i8vec4) Load 696
+ 698: 20(i8vec4) GroupNonUniformUMax 42 Reduce 697
+ 699: 600(ptr) AccessChain 34(data) 695 46
+ Store 699 698
+ 700: 6(int) Load 8(invocation)
+ 701: 593(ptr) AccessChain 34(data) 37 46 38
+ 702: 19(int8_t) Load 701
+ 703: 19(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 702
+ 704: 593(ptr) AccessChain 34(data) 700 46 38
+ Store 704 703
+ 705: 6(int) Load 8(invocation)
+ 706: 600(ptr) AccessChain 34(data) 46 46
+ 707: 20(i8vec4) Load 706
+ 708: 599(i8vec2) VectorShuffle 707 707 0 1
+ 709: 599(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 708
+ 710: 600(ptr) AccessChain 34(data) 705 46
+ 711: 20(i8vec4) Load 710
+ 712: 20(i8vec4) VectorShuffle 711 709 4 5 2 3
+ Store 710 712
+ 713: 6(int) Load 8(invocation)
+ 714: 600(ptr) AccessChain 34(data) 57 46
+ 715: 20(i8vec4) Load 714
+ 716: 609(i8vec3) VectorShuffle 715 715 0 1 2
+ 717: 609(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 716
+ 718: 600(ptr) AccessChain 34(data) 713 46
+ 719: 20(i8vec4) Load 718
+ 720: 20(i8vec4) VectorShuffle 719 717 4 5 6 3
+ Store 718 720
+ 721: 6(int) Load 8(invocation)
+ 722: 600(ptr) AccessChain 34(data) 67 46
+ 723: 20(i8vec4) Load 722
+ 724: 20(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 723
+ 725: 600(ptr) AccessChain 34(data) 721 46
+ Store 725 724
+ 726: 6(int) Load 8(invocation)
+ 727: 593(ptr) AccessChain 34(data) 37 46 38
+ 728: 19(int8_t) Load 727
+ 729: 19(int8_t) GroupNonUniformBitwiseOr 42 Reduce 728
+ 730: 593(ptr) AccessChain 34(data) 726 46 38
+ Store 730 729
+ 731: 6(int) Load 8(invocation)
+ 732: 600(ptr) AccessChain 34(data) 46 46
+ 733: 20(i8vec4) Load 732
+ 734: 599(i8vec2) VectorShuffle 733 733 0 1
+ 735: 599(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 734
+ 736: 600(ptr) AccessChain 34(data) 731 46
+ 737: 20(i8vec4) Load 736
+ 738: 20(i8vec4) VectorShuffle 737 735 4 5 2 3
+ Store 736 738
+ 739: 6(int) Load 8(invocation)
+ 740: 600(ptr) AccessChain 34(data) 57 46
+ 741: 20(i8vec4) Load 740
+ 742: 609(i8vec3) VectorShuffle 741 741 0 1 2
+ 743: 609(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 742
+ 744: 600(ptr) AccessChain 34(data) 739 46
+ 745: 20(i8vec4) Load 744
+ 746: 20(i8vec4) VectorShuffle 745 743 4 5 6 3
+ Store 744 746
+ 747: 6(int) Load 8(invocation)
+ 748: 600(ptr) AccessChain 34(data) 67 46
+ 749: 20(i8vec4) Load 748
+ 750: 20(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 749
+ 751: 600(ptr) AccessChain 34(data) 747 46
+ Store 751 750
+ 752: 6(int) Load 8(invocation)
+ 753: 593(ptr) AccessChain 34(data) 37 46 38
+ 754: 19(int8_t) Load 753
+ 755: 19(int8_t) GroupNonUniformBitwiseXor 42 Reduce 754
+ 756: 593(ptr) AccessChain 34(data) 752 46 38
+ Store 756 755
+ 757: 6(int) Load 8(invocation)
+ 758: 600(ptr) AccessChain 34(data) 46 46
+ 759: 20(i8vec4) Load 758
+ 760: 599(i8vec2) VectorShuffle 759 759 0 1
+ 761: 599(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 760
+ 762: 600(ptr) AccessChain 34(data) 757 46
+ 763: 20(i8vec4) Load 762
+ 764: 20(i8vec4) VectorShuffle 763 761 4 5 2 3
+ Store 762 764
+ 765: 6(int) Load 8(invocation)
+ 766: 600(ptr) AccessChain 34(data) 57 46
+ 767: 20(i8vec4) Load 766
+ 768: 609(i8vec3) VectorShuffle 767 767 0 1 2
+ 769: 609(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 768
+ 770: 600(ptr) AccessChain 34(data) 765 46
+ 771: 20(i8vec4) Load 770
+ 772: 20(i8vec4) VectorShuffle 771 769 4 5 6 3
+ Store 770 772
+ 773: 6(int) Load 8(invocation)
+ 774: 600(ptr) AccessChain 34(data) 67 46
+ 775: 20(i8vec4) Load 774
+ 776: 20(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 775
+ 777: 600(ptr) AccessChain 34(data) 773 46
+ Store 777 776
+ 778: 6(int) Load 8(invocation)
+ 779: 593(ptr) AccessChain 34(data) 37 46 38
+ 780: 19(int8_t) Load 779
+ 781: 19(int8_t) GroupNonUniformIAdd 42 InclusiveScan 780
+ 782: 593(ptr) AccessChain 34(data) 778 46 38
+ Store 782 781
+ 783: 6(int) Load 8(invocation)
+ 784: 600(ptr) AccessChain 34(data) 46 46
+ 785: 20(i8vec4) Load 784
+ 786: 599(i8vec2) VectorShuffle 785 785 0 1
+ 787: 599(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 786
+ 788: 600(ptr) AccessChain 34(data) 783 46
+ 789: 20(i8vec4) Load 788
+ 790: 20(i8vec4) VectorShuffle 789 787 4 5 2 3
+ Store 788 790
+ 791: 6(int) Load 8(invocation)
+ 792: 600(ptr) AccessChain 34(data) 57 46
+ 793: 20(i8vec4) Load 792
+ 794: 609(i8vec3) VectorShuffle 793 793 0 1 2
+ 795: 609(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 794
+ 796: 600(ptr) AccessChain 34(data) 791 46
+ 797: 20(i8vec4) Load 796
+ 798: 20(i8vec4) VectorShuffle 797 795 4 5 6 3
+ Store 796 798
+ 799: 6(int) Load 8(invocation)
+ 800: 600(ptr) AccessChain 34(data) 67 46
+ 801: 20(i8vec4) Load 800
+ 802: 20(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 801
+ 803: 600(ptr) AccessChain 34(data) 799 46
+ Store 803 802
+ 804: 6(int) Load 8(invocation)
+ 805: 593(ptr) AccessChain 34(data) 37 46 38
+ 806: 19(int8_t) Load 805
+ 807: 19(int8_t) GroupNonUniformIMul 42 InclusiveScan 806
+ 808: 593(ptr) AccessChain 34(data) 804 46 38
+ Store 808 807
+ 809: 6(int) Load 8(invocation)
+ 810: 600(ptr) AccessChain 34(data) 46 46
+ 811: 20(i8vec4) Load 810
+ 812: 599(i8vec2) VectorShuffle 811 811 0 1
+ 813: 599(i8vec2) GroupNonUniformIMul 42 InclusiveScan 812
+ 814: 600(ptr) AccessChain 34(data) 809 46
+ 815: 20(i8vec4) Load 814
+ 816: 20(i8vec4) VectorShuffle 815 813 4 5 2 3
+ Store 814 816
+ 817: 6(int) Load 8(invocation)
+ 818: 600(ptr) AccessChain 34(data) 57 46
+ 819: 20(i8vec4) Load 818
+ 820: 609(i8vec3) VectorShuffle 819 819 0 1 2
+ 821: 609(i8vec3) GroupNonUniformIMul 42 InclusiveScan 820
+ 822: 600(ptr) AccessChain 34(data) 817 46
+ 823: 20(i8vec4) Load 822
+ 824: 20(i8vec4) VectorShuffle 823 821 4 5 6 3
+ Store 822 824
+ 825: 6(int) Load 8(invocation)
+ 826: 600(ptr) AccessChain 34(data) 67 46
+ 827: 20(i8vec4) Load 826
+ 828: 20(i8vec4) GroupNonUniformIMul 42 InclusiveScan 827
+ 829: 600(ptr) AccessChain 34(data) 825 46
+ Store 829 828
+ 830: 6(int) Load 8(invocation)
+ 831: 593(ptr) AccessChain 34(data) 37 46 38
+ 832: 19(int8_t) Load 831
+ 833: 19(int8_t) GroupNonUniformUMin 42 InclusiveScan 832
+ 834: 593(ptr) AccessChain 34(data) 830 46 38
+ Store 834 833
+ 835: 6(int) Load 8(invocation)
+ 836: 600(ptr) AccessChain 34(data) 46 46
+ 837: 20(i8vec4) Load 836
+ 838: 599(i8vec2) VectorShuffle 837 837 0 1
+ 839: 599(i8vec2) GroupNonUniformUMin 42 InclusiveScan 838
+ 840: 600(ptr) AccessChain 34(data) 835 46
+ 841: 20(i8vec4) Load 840
+ 842: 20(i8vec4) VectorShuffle 841 839 4 5 2 3
+ Store 840 842
+ 843: 6(int) Load 8(invocation)
+ 844: 600(ptr) AccessChain 34(data) 57 46
+ 845: 20(i8vec4) Load 844
+ 846: 609(i8vec3) VectorShuffle 845 845 0 1 2
+ 847: 609(i8vec3) GroupNonUniformUMin 42 InclusiveScan 846
+ 848: 600(ptr) AccessChain 34(data) 843 46
+ 849: 20(i8vec4) Load 848
+ 850: 20(i8vec4) VectorShuffle 849 847 4 5 6 3
+ Store 848 850
+ 851: 6(int) Load 8(invocation)
+ 852: 600(ptr) AccessChain 34(data) 67 46
+ 853: 20(i8vec4) Load 852
+ 854: 20(i8vec4) GroupNonUniformUMin 42 InclusiveScan 853
+ 855: 600(ptr) AccessChain 34(data) 851 46
+ Store 855 854
+ 856: 6(int) Load 8(invocation)
+ 857: 593(ptr) AccessChain 34(data) 37 46 38
+ 858: 19(int8_t) Load 857
+ 859: 19(int8_t) GroupNonUniformUMax 42 InclusiveScan 858
+ 860: 593(ptr) AccessChain 34(data) 856 46 38
+ Store 860 859
+ 861: 6(int) Load 8(invocation)
+ 862: 600(ptr) AccessChain 34(data) 46 46
+ 863: 20(i8vec4) Load 862
+ 864: 599(i8vec2) VectorShuffle 863 863 0 1
+ 865: 599(i8vec2) GroupNonUniformUMax 42 InclusiveScan 864
+ 866: 600(ptr) AccessChain 34(data) 861 46
+ 867: 20(i8vec4) Load 866
+ 868: 20(i8vec4) VectorShuffle 867 865 4 5 2 3
+ Store 866 868
+ 869: 6(int) Load 8(invocation)
+ 870: 600(ptr) AccessChain 34(data) 57 46
+ 871: 20(i8vec4) Load 870
+ 872: 609(i8vec3) VectorShuffle 871 871 0 1 2
+ 873: 609(i8vec3) GroupNonUniformUMax 42 InclusiveScan 872
+ 874: 600(ptr) AccessChain 34(data) 869 46
+ 875: 20(i8vec4) Load 874
+ 876: 20(i8vec4) VectorShuffle 875 873 4 5 6 3
+ Store 874 876
+ 877: 6(int) Load 8(invocation)
+ 878: 600(ptr) AccessChain 34(data) 67 46
+ 879: 20(i8vec4) Load 878
+ 880: 20(i8vec4) GroupNonUniformUMax 42 InclusiveScan 879
+ 881: 600(ptr) AccessChain 34(data) 877 46
+ Store 881 880
+ 882: 6(int) Load 8(invocation)
+ 883: 593(ptr) AccessChain 34(data) 37 46 38
+ 884: 19(int8_t) Load 883
+ 885: 19(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 884
+ 886: 593(ptr) AccessChain 34(data) 882 46 38
+ Store 886 885
+ 887: 6(int) Load 8(invocation)
+ 888: 600(ptr) AccessChain 34(data) 46 46
+ 889: 20(i8vec4) Load 888
+ 890: 599(i8vec2) VectorShuffle 889 889 0 1
+ 891: 599(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 890
+ 892: 600(ptr) AccessChain 34(data) 887 46
+ 893: 20(i8vec4) Load 892
+ 894: 20(i8vec4) VectorShuffle 893 891 4 5 2 3
+ Store 892 894
+ 895: 6(int) Load 8(invocation)
+ 896: 600(ptr) AccessChain 34(data) 57 46
+ 897: 20(i8vec4) Load 896
+ 898: 609(i8vec3) VectorShuffle 897 897 0 1 2
+ 899: 609(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 898
+ 900: 600(ptr) AccessChain 34(data) 895 46
+ 901: 20(i8vec4) Load 900
+ 902: 20(i8vec4) VectorShuffle 901 899 4 5 6 3
+ Store 900 902
+ 903: 6(int) Load 8(invocation)
+ 904: 600(ptr) AccessChain 34(data) 67 46
+ 905: 20(i8vec4) Load 904
+ 906: 20(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 905
+ 907: 600(ptr) AccessChain 34(data) 903 46
+ Store 907 906
+ 908: 6(int) Load 8(invocation)
+ 909: 593(ptr) AccessChain 34(data) 37 46 38
+ 910: 19(int8_t) Load 909
+ 911: 19(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 910
+ 912: 593(ptr) AccessChain 34(data) 908 46 38
+ Store 912 911
+ 913: 6(int) Load 8(invocation)
+ 914: 600(ptr) AccessChain 34(data) 46 46
+ 915: 20(i8vec4) Load 914
+ 916: 599(i8vec2) VectorShuffle 915 915 0 1
+ 917: 599(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 916
+ 918: 600(ptr) AccessChain 34(data) 913 46
+ 919: 20(i8vec4) Load 918
+ 920: 20(i8vec4) VectorShuffle 919 917 4 5 2 3
+ Store 918 920
+ 921: 6(int) Load 8(invocation)
+ 922: 600(ptr) AccessChain 34(data) 57 46
+ 923: 20(i8vec4) Load 922
+ 924: 609(i8vec3) VectorShuffle 923 923 0 1 2
+ 925: 609(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 924
+ 926: 600(ptr) AccessChain 34(data) 921 46
+ 927: 20(i8vec4) Load 926
+ 928: 20(i8vec4) VectorShuffle 927 925 4 5 6 3
+ Store 926 928
+ 929: 6(int) Load 8(invocation)
+ 930: 600(ptr) AccessChain 34(data) 67 46
+ 931: 20(i8vec4) Load 930
+ 932: 20(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 931
+ 933: 600(ptr) AccessChain 34(data) 929 46
+ Store 933 932
+ 934: 6(int) Load 8(invocation)
+ 935: 593(ptr) AccessChain 34(data) 37 46 38
+ 936: 19(int8_t) Load 935
+ 937: 19(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 936
+ 938: 593(ptr) AccessChain 34(data) 934 46 38
+ Store 938 937
+ 939: 6(int) Load 8(invocation)
+ 940: 600(ptr) AccessChain 34(data) 46 46
+ 941: 20(i8vec4) Load 940
+ 942: 599(i8vec2) VectorShuffle 941 941 0 1
+ 943: 599(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 942
+ 944: 600(ptr) AccessChain 34(data) 939 46
+ 945: 20(i8vec4) Load 944
+ 946: 20(i8vec4) VectorShuffle 945 943 4 5 2 3
+ Store 944 946
+ 947: 6(int) Load 8(invocation)
+ 948: 600(ptr) AccessChain 34(data) 57 46
+ 949: 20(i8vec4) Load 948
+ 950: 609(i8vec3) VectorShuffle 949 949 0 1 2
+ 951: 609(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 950
+ 952: 600(ptr) AccessChain 34(data) 947 46
+ 953: 20(i8vec4) Load 952
+ 954: 20(i8vec4) VectorShuffle 953 951 4 5 6 3
+ Store 952 954
+ 955: 6(int) Load 8(invocation)
+ 956: 600(ptr) AccessChain 34(data) 67 46
+ 957: 20(i8vec4) Load 956
+ 958: 20(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 957
+ 959: 600(ptr) AccessChain 34(data) 955 46
+ Store 959 958
+ 960: 6(int) Load 8(invocation)
+ 961: 593(ptr) AccessChain 34(data) 37 46 38
+ 962: 19(int8_t) Load 961
+ 963: 19(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 962
+ 964: 593(ptr) AccessChain 34(data) 960 46 38
+ Store 964 963
+ 965: 6(int) Load 8(invocation)
+ 966: 600(ptr) AccessChain 34(data) 46 46
+ 967: 20(i8vec4) Load 966
+ 968: 599(i8vec2) VectorShuffle 967 967 0 1
+ 969: 599(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 968
+ 970: 600(ptr) AccessChain 34(data) 965 46
+ 971: 20(i8vec4) Load 970
+ 972: 20(i8vec4) VectorShuffle 971 969 4 5 2 3
+ Store 970 972
+ 973: 6(int) Load 8(invocation)
+ 974: 600(ptr) AccessChain 34(data) 57 46
+ 975: 20(i8vec4) Load 974
+ 976: 609(i8vec3) VectorShuffle 975 975 0 1 2
+ 977: 609(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 976
+ 978: 600(ptr) AccessChain 34(data) 973 46
+ 979: 20(i8vec4) Load 978
+ 980: 20(i8vec4) VectorShuffle 979 977 4 5 6 3
+ Store 978 980
+ 981: 6(int) Load 8(invocation)
+ 982: 600(ptr) AccessChain 34(data) 67 46
+ 983: 20(i8vec4) Load 982
+ 984: 20(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 983
+ 985: 600(ptr) AccessChain 34(data) 981 46
+ Store 985 984
+ 986: 6(int) Load 8(invocation)
+ 987: 593(ptr) AccessChain 34(data) 37 46 38
+ 988: 19(int8_t) Load 987
+ 989: 19(int8_t) GroupNonUniformIMul 42 ExclusiveScan 988
+ 990: 593(ptr) AccessChain 34(data) 986 46 38
+ Store 990 989
+ 991: 6(int) Load 8(invocation)
+ 992: 600(ptr) AccessChain 34(data) 46 46
+ 993: 20(i8vec4) Load 992
+ 994: 599(i8vec2) VectorShuffle 993 993 0 1
+ 995: 599(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 994
+ 996: 600(ptr) AccessChain 34(data) 991 46
+ 997: 20(i8vec4) Load 996
+ 998: 20(i8vec4) VectorShuffle 997 995 4 5 2 3
+ Store 996 998
+ 999: 6(int) Load 8(invocation)
+ 1000: 600(ptr) AccessChain 34(data) 57 46
+ 1001: 20(i8vec4) Load 1000
+ 1002: 609(i8vec3) VectorShuffle 1001 1001 0 1 2
+ 1003: 609(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 1002
+ 1004: 600(ptr) AccessChain 34(data) 999 46
+ 1005: 20(i8vec4) Load 1004
+ 1006: 20(i8vec4) VectorShuffle 1005 1003 4 5 6 3
+ Store 1004 1006
+ 1007: 6(int) Load 8(invocation)
+ 1008: 600(ptr) AccessChain 34(data) 67 46
+ 1009: 20(i8vec4) Load 1008
+ 1010: 20(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 1009
+ 1011: 600(ptr) AccessChain 34(data) 1007 46
+ Store 1011 1010
+ 1012: 6(int) Load 8(invocation)
+ 1013: 593(ptr) AccessChain 34(data) 37 46 38
+ 1014: 19(int8_t) Load 1013
+ 1015: 19(int8_t) GroupNonUniformUMin 42 ExclusiveScan 1014
+ 1016: 593(ptr) AccessChain 34(data) 1012 46 38
+ Store 1016 1015
+ 1017: 6(int) Load 8(invocation)
+ 1018: 600(ptr) AccessChain 34(data) 46 46
+ 1019: 20(i8vec4) Load 1018
+ 1020: 599(i8vec2) VectorShuffle 1019 1019 0 1
+ 1021: 599(i8vec2) GroupNonUniformUMin 42 ExclusiveScan 1020
+ 1022: 600(ptr) AccessChain 34(data) 1017 46
+ 1023: 20(i8vec4) Load 1022
+ 1024: 20(i8vec4) VectorShuffle 1023 1021 4 5 2 3
+ Store 1022 1024
+ 1025: 6(int) Load 8(invocation)
+ 1026: 600(ptr) AccessChain 34(data) 57 46
+ 1027: 20(i8vec4) Load 1026
+ 1028: 609(i8vec3) VectorShuffle 1027 1027 0 1 2
+ 1029: 609(i8vec3) GroupNonUniformUMin 42 ExclusiveScan 1028
+ 1030: 600(ptr) AccessChain 34(data) 1025 46
+ 1031: 20(i8vec4) Load 1030
+ 1032: 20(i8vec4) VectorShuffle 1031 1029 4 5 6 3
+ Store 1030 1032
+ 1033: 6(int) Load 8(invocation)
+ 1034: 600(ptr) AccessChain 34(data) 67 46
+ 1035: 20(i8vec4) Load 1034
+ 1036: 20(i8vec4) GroupNonUniformUMin 42 ExclusiveScan 1035
+ 1037: 600(ptr) AccessChain 34(data) 1033 46
+ Store 1037 1036
+ 1038: 6(int) Load 8(invocation)
+ 1039: 593(ptr) AccessChain 34(data) 37 46 38
+ 1040: 19(int8_t) Load 1039
+ 1041: 19(int8_t) GroupNonUniformUMax 42 ExclusiveScan 1040
+ 1042: 593(ptr) AccessChain 34(data) 1038 46 38
+ Store 1042 1041
+ 1043: 6(int) Load 8(invocation)
+ 1044: 600(ptr) AccessChain 34(data) 46 46
+ 1045: 20(i8vec4) Load 1044
+ 1046: 599(i8vec2) VectorShuffle 1045 1045 0 1
+ 1047: 599(i8vec2) GroupNonUniformUMax 42 ExclusiveScan 1046
+ 1048: 600(ptr) AccessChain 34(data) 1043 46
+ 1049: 20(i8vec4) Load 1048
+ 1050: 20(i8vec4) VectorShuffle 1049 1047 4 5 2 3
+ Store 1048 1050
+ 1051: 6(int) Load 8(invocation)
+ 1052: 600(ptr) AccessChain 34(data) 57 46
+ 1053: 20(i8vec4) Load 1052
+ 1054: 609(i8vec3) VectorShuffle 1053 1053 0 1 2
+ 1055: 609(i8vec3) GroupNonUniformUMax 42 ExclusiveScan 1054
+ 1056: 600(ptr) AccessChain 34(data) 1051 46
+ 1057: 20(i8vec4) Load 1056
+ 1058: 20(i8vec4) VectorShuffle 1057 1055 4 5 6 3
+ Store 1056 1058
+ 1059: 6(int) Load 8(invocation)
+ 1060: 600(ptr) AccessChain 34(data) 67 46
+ 1061: 20(i8vec4) Load 1060
+ 1062: 20(i8vec4) GroupNonUniformUMax 42 ExclusiveScan 1061
+ 1063: 600(ptr) AccessChain 34(data) 1059 46
+ Store 1063 1062
+ 1064: 6(int) Load 8(invocation)
+ 1065: 593(ptr) AccessChain 34(data) 37 46 38
+ 1066: 19(int8_t) Load 1065
+ 1067: 19(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1066
+ 1068: 593(ptr) AccessChain 34(data) 1064 46 38
+ Store 1068 1067
+ 1069: 6(int) Load 8(invocation)
+ 1070: 600(ptr) AccessChain 34(data) 46 46
+ 1071: 20(i8vec4) Load 1070
+ 1072: 599(i8vec2) VectorShuffle 1071 1071 0 1
+ 1073: 599(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1072
+ 1074: 600(ptr) AccessChain 34(data) 1069 46
+ 1075: 20(i8vec4) Load 1074
+ 1076: 20(i8vec4) VectorShuffle 1075 1073 4 5 2 3
+ Store 1074 1076
+ 1077: 6(int) Load 8(invocation)
+ 1078: 600(ptr) AccessChain 34(data) 57 46
+ 1079: 20(i8vec4) Load 1078
+ 1080: 609(i8vec3) VectorShuffle 1079 1079 0 1 2
+ 1081: 609(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1080
+ 1082: 600(ptr) AccessChain 34(data) 1077 46
+ 1083: 20(i8vec4) Load 1082
+ 1084: 20(i8vec4) VectorShuffle 1083 1081 4 5 6 3
+ Store 1082 1084
+ 1085: 6(int) Load 8(invocation)
+ 1086: 600(ptr) AccessChain 34(data) 67 46
+ 1087: 20(i8vec4) Load 1086
+ 1088: 20(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1087
+ 1089: 600(ptr) AccessChain 34(data) 1085 46
+ Store 1089 1088
+ 1090: 6(int) Load 8(invocation)
+ 1091: 593(ptr) AccessChain 34(data) 37 46 38
+ 1092: 19(int8_t) Load 1091
+ 1093: 19(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1092
+ 1094: 593(ptr) AccessChain 34(data) 1090 46 38
+ Store 1094 1093
+ 1095: 6(int) Load 8(invocation)
+ 1096: 600(ptr) AccessChain 34(data) 46 46
+ 1097: 20(i8vec4) Load 1096
+ 1098: 599(i8vec2) VectorShuffle 1097 1097 0 1
+ 1099: 599(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1098
+ 1100: 600(ptr) AccessChain 34(data) 1095 46
+ 1101: 20(i8vec4) Load 1100
+ 1102: 20(i8vec4) VectorShuffle 1101 1099 4 5 2 3
+ Store 1100 1102
+ 1103: 6(int) Load 8(invocation)
+ 1104: 600(ptr) AccessChain 34(data) 57 46
+ 1105: 20(i8vec4) Load 1104
+ 1106: 609(i8vec3) VectorShuffle 1105 1105 0 1 2
+ 1107: 609(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1106
+ 1108: 600(ptr) AccessChain 34(data) 1103 46
+ 1109: 20(i8vec4) Load 1108
+ 1110: 20(i8vec4) VectorShuffle 1109 1107 4 5 6 3
+ Store 1108 1110
+ 1111: 6(int) Load 8(invocation)
+ 1112: 600(ptr) AccessChain 34(data) 67 46
+ 1113: 20(i8vec4) Load 1112
+ 1114: 20(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1113
+ 1115: 600(ptr) AccessChain 34(data) 1111 46
+ Store 1115 1114
+ 1116: 6(int) Load 8(invocation)
+ 1117: 593(ptr) AccessChain 34(data) 37 46 38
+ 1118: 19(int8_t) Load 1117
+ 1119: 19(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1118
+ 1120: 593(ptr) AccessChain 34(data) 1116 46 38
+ Store 1120 1119
+ 1121: 6(int) Load 8(invocation)
+ 1122: 600(ptr) AccessChain 34(data) 46 46
+ 1123: 20(i8vec4) Load 1122
+ 1124: 599(i8vec2) VectorShuffle 1123 1123 0 1
+ 1125: 599(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1124
+ 1126: 600(ptr) AccessChain 34(data) 1121 46
+ 1127: 20(i8vec4) Load 1126
+ 1128: 20(i8vec4) VectorShuffle 1127 1125 4 5 2 3
+ Store 1126 1128
+ 1129: 6(int) Load 8(invocation)
+ 1130: 600(ptr) AccessChain 34(data) 57 46
+ 1131: 20(i8vec4) Load 1130
+ 1132: 609(i8vec3) VectorShuffle 1131 1131 0 1 2
+ 1133: 609(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1132
+ 1134: 600(ptr) AccessChain 34(data) 1129 46
+ 1135: 20(i8vec4) Load 1134
+ 1136: 20(i8vec4) VectorShuffle 1135 1133 4 5 6 3
+ Store 1134 1136
+ 1137: 6(int) Load 8(invocation)
+ 1138: 600(ptr) AccessChain 34(data) 67 46
+ 1139: 20(i8vec4) Load 1138
+ 1140: 20(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1139
+ 1141: 600(ptr) AccessChain 34(data) 1137 46
+ Store 1141 1140
+ 1142: 6(int) Load 8(invocation)
+ 1144: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1145: 21(int16_t) Load 1144
+ 1146: 21(int16_t) GroupNonUniformIAdd 42 Reduce 1145
+ 1147: 1143(ptr) AccessChain 34(data) 1142 57 38
+ Store 1147 1146
+ 1148: 6(int) Load 8(invocation)
+ 1151: 1150(ptr) AccessChain 34(data) 46 57
+ 1152: 22(i16vec4) Load 1151
+ 1153:1149(i16vec2) VectorShuffle 1152 1152 0 1
+ 1154:1149(i16vec2) GroupNonUniformIAdd 42 Reduce 1153
+ 1155: 1150(ptr) AccessChain 34(data) 1148 57
+ 1156: 22(i16vec4) Load 1155
+ 1157: 22(i16vec4) VectorShuffle 1156 1154 4 5 2 3
+ Store 1155 1157
+ 1158: 6(int) Load 8(invocation)
+ 1160: 1150(ptr) AccessChain 34(data) 57 57
+ 1161: 22(i16vec4) Load 1160
+ 1162:1159(i16vec3) VectorShuffle 1161 1161 0 1 2
+ 1163:1159(i16vec3) GroupNonUniformIAdd 42 Reduce 1162
+ 1164: 1150(ptr) AccessChain 34(data) 1158 57
+ 1165: 22(i16vec4) Load 1164
+ 1166: 22(i16vec4) VectorShuffle 1165 1163 4 5 6 3
+ Store 1164 1166
+ 1167: 6(int) Load 8(invocation)
+ 1168: 1150(ptr) AccessChain 34(data) 67 57
+ 1169: 22(i16vec4) Load 1168
+ 1170: 22(i16vec4) GroupNonUniformIAdd 42 Reduce 1169
+ 1171: 1150(ptr) AccessChain 34(data) 1167 57
+ Store 1171 1170
+ 1172: 6(int) Load 8(invocation)
+ 1173: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1174: 21(int16_t) Load 1173
+ 1175: 21(int16_t) GroupNonUniformIMul 42 Reduce 1174
+ 1176: 1143(ptr) AccessChain 34(data) 1172 57 38
+ Store 1176 1175
+ 1177: 6(int) Load 8(invocation)
+ 1178: 1150(ptr) AccessChain 34(data) 46 57
+ 1179: 22(i16vec4) Load 1178
+ 1180:1149(i16vec2) VectorShuffle 1179 1179 0 1
+ 1181:1149(i16vec2) GroupNonUniformIMul 42 Reduce 1180
+ 1182: 1150(ptr) AccessChain 34(data) 1177 57
+ 1183: 22(i16vec4) Load 1182
+ 1184: 22(i16vec4) VectorShuffle 1183 1181 4 5 2 3
+ Store 1182 1184
+ 1185: 6(int) Load 8(invocation)
+ 1186: 1150(ptr) AccessChain 34(data) 57 57
+ 1187: 22(i16vec4) Load 1186
+ 1188:1159(i16vec3) VectorShuffle 1187 1187 0 1 2
+ 1189:1159(i16vec3) GroupNonUniformIMul 42 Reduce 1188
+ 1190: 1150(ptr) AccessChain 34(data) 1185 57
+ 1191: 22(i16vec4) Load 1190
+ 1192: 22(i16vec4) VectorShuffle 1191 1189 4 5 6 3
+ Store 1190 1192
+ 1193: 6(int) Load 8(invocation)
+ 1194: 1150(ptr) AccessChain 34(data) 67 57
+ 1195: 22(i16vec4) Load 1194
+ 1196: 22(i16vec4) GroupNonUniformIMul 42 Reduce 1195
+ 1197: 1150(ptr) AccessChain 34(data) 1193 57
+ Store 1197 1196
+ 1198: 6(int) Load 8(invocation)
+ 1199: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1200: 21(int16_t) Load 1199
+ 1201: 21(int16_t) GroupNonUniformSMin 42 Reduce 1200
+ 1202: 1143(ptr) AccessChain 34(data) 1198 57 38
+ Store 1202 1201
+ 1203: 6(int) Load 8(invocation)
+ 1204: 1150(ptr) AccessChain 34(data) 46 57
+ 1205: 22(i16vec4) Load 1204
+ 1206:1149(i16vec2) VectorShuffle 1205 1205 0 1
+ 1207:1149(i16vec2) GroupNonUniformSMin 42 Reduce 1206
+ 1208: 1150(ptr) AccessChain 34(data) 1203 57
+ 1209: 22(i16vec4) Load 1208
+ 1210: 22(i16vec4) VectorShuffle 1209 1207 4 5 2 3
+ Store 1208 1210
+ 1211: 6(int) Load 8(invocation)
+ 1212: 1150(ptr) AccessChain 34(data) 57 57
+ 1213: 22(i16vec4) Load 1212
+ 1214:1159(i16vec3) VectorShuffle 1213 1213 0 1 2
+ 1215:1159(i16vec3) GroupNonUniformSMin 42 Reduce 1214
+ 1216: 1150(ptr) AccessChain 34(data) 1211 57
+ 1217: 22(i16vec4) Load 1216
+ 1218: 22(i16vec4) VectorShuffle 1217 1215 4 5 6 3
+ Store 1216 1218
+ 1219: 6(int) Load 8(invocation)
+ 1220: 1150(ptr) AccessChain 34(data) 67 57
+ 1221: 22(i16vec4) Load 1220
+ 1222: 22(i16vec4) GroupNonUniformSMin 42 Reduce 1221
+ 1223: 1150(ptr) AccessChain 34(data) 1219 57
+ Store 1223 1222
+ 1224: 6(int) Load 8(invocation)
+ 1225: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1226: 21(int16_t) Load 1225
+ 1227: 21(int16_t) GroupNonUniformSMax 42 Reduce 1226
+ 1228: 1143(ptr) AccessChain 34(data) 1224 57 38
+ Store 1228 1227
+ 1229: 6(int) Load 8(invocation)
+ 1230: 1150(ptr) AccessChain 34(data) 46 57
+ 1231: 22(i16vec4) Load 1230
+ 1232:1149(i16vec2) VectorShuffle 1231 1231 0 1
+ 1233:1149(i16vec2) GroupNonUniformSMax 42 Reduce 1232
+ 1234: 1150(ptr) AccessChain 34(data) 1229 57
+ 1235: 22(i16vec4) Load 1234
+ 1236: 22(i16vec4) VectorShuffle 1235 1233 4 5 2 3
+ Store 1234 1236
+ 1237: 6(int) Load 8(invocation)
+ 1238: 1150(ptr) AccessChain 34(data) 57 57
+ 1239: 22(i16vec4) Load 1238
+ 1240:1159(i16vec3) VectorShuffle 1239 1239 0 1 2
+ 1241:1159(i16vec3) GroupNonUniformSMax 42 Reduce 1240
+ 1242: 1150(ptr) AccessChain 34(data) 1237 57
+ 1243: 22(i16vec4) Load 1242
+ 1244: 22(i16vec4) VectorShuffle 1243 1241 4 5 6 3
+ Store 1242 1244
+ 1245: 6(int) Load 8(invocation)
+ 1246: 1150(ptr) AccessChain 34(data) 67 57
+ 1247: 22(i16vec4) Load 1246
+ 1248: 22(i16vec4) GroupNonUniformSMax 42 Reduce 1247
+ 1249: 1150(ptr) AccessChain 34(data) 1245 57
+ Store 1249 1248
+ 1250: 6(int) Load 8(invocation)
+ 1251: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1252: 21(int16_t) Load 1251
+ 1253: 21(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1252
+ 1254: 1143(ptr) AccessChain 34(data) 1250 57 38
+ Store 1254 1253
+ 1255: 6(int) Load 8(invocation)
+ 1256: 1150(ptr) AccessChain 34(data) 46 57
+ 1257: 22(i16vec4) Load 1256
+ 1258:1149(i16vec2) VectorShuffle 1257 1257 0 1
+ 1259:1149(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1258
+ 1260: 1150(ptr) AccessChain 34(data) 1255 57
+ 1261: 22(i16vec4) Load 1260
+ 1262: 22(i16vec4) VectorShuffle 1261 1259 4 5 2 3
+ Store 1260 1262
+ 1263: 6(int) Load 8(invocation)
+ 1264: 1150(ptr) AccessChain 34(data) 57 57
+ 1265: 22(i16vec4) Load 1264
+ 1266:1159(i16vec3) VectorShuffle 1265 1265 0 1 2
+ 1267:1159(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1266
+ 1268: 1150(ptr) AccessChain 34(data) 1263 57
+ 1269: 22(i16vec4) Load 1268
+ 1270: 22(i16vec4) VectorShuffle 1269 1267 4 5 6 3
+ Store 1268 1270
+ 1271: 6(int) Load 8(invocation)
+ 1272: 1150(ptr) AccessChain 34(data) 67 57
+ 1273: 22(i16vec4) Load 1272
+ 1274: 22(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1273
+ 1275: 1150(ptr) AccessChain 34(data) 1271 57
+ Store 1275 1274
+ 1276: 6(int) Load 8(invocation)
+ 1277: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1278: 21(int16_t) Load 1277
+ 1279: 21(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1278
+ 1280: 1143(ptr) AccessChain 34(data) 1276 57 38
+ Store 1280 1279
+ 1281: 6(int) Load 8(invocation)
+ 1282: 1150(ptr) AccessChain 34(data) 46 57
+ 1283: 22(i16vec4) Load 1282
+ 1284:1149(i16vec2) VectorShuffle 1283 1283 0 1
+ 1285:1149(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1284
+ 1286: 1150(ptr) AccessChain 34(data) 1281 57
+ 1287: 22(i16vec4) Load 1286
+ 1288: 22(i16vec4) VectorShuffle 1287 1285 4 5 2 3
+ Store 1286 1288
+ 1289: 6(int) Load 8(invocation)
+ 1290: 1150(ptr) AccessChain 34(data) 57 57
+ 1291: 22(i16vec4) Load 1290
+ 1292:1159(i16vec3) VectorShuffle 1291 1291 0 1 2
+ 1293:1159(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1292
+ 1294: 1150(ptr) AccessChain 34(data) 1289 57
+ 1295: 22(i16vec4) Load 1294
+ 1296: 22(i16vec4) VectorShuffle 1295 1293 4 5 6 3
+ Store 1294 1296
+ 1297: 6(int) Load 8(invocation)
+ 1298: 1150(ptr) AccessChain 34(data) 67 57
+ 1299: 22(i16vec4) Load 1298
+ 1300: 22(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1299
+ 1301: 1150(ptr) AccessChain 34(data) 1297 57
+ Store 1301 1300
+ 1302: 6(int) Load 8(invocation)
+ 1303: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1304: 21(int16_t) Load 1303
+ 1305: 21(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1304
+ 1306: 1143(ptr) AccessChain 34(data) 1302 57 38
+ Store 1306 1305
+ 1307: 6(int) Load 8(invocation)
+ 1308: 1150(ptr) AccessChain 34(data) 46 57
+ 1309: 22(i16vec4) Load 1308
+ 1310:1149(i16vec2) VectorShuffle 1309 1309 0 1
+ 1311:1149(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1310
+ 1312: 1150(ptr) AccessChain 34(data) 1307 57
+ 1313: 22(i16vec4) Load 1312
+ 1314: 22(i16vec4) VectorShuffle 1313 1311 4 5 2 3
+ Store 1312 1314
+ 1315: 6(int) Load 8(invocation)
+ 1316: 1150(ptr) AccessChain 34(data) 57 57
+ 1317: 22(i16vec4) Load 1316
+ 1318:1159(i16vec3) VectorShuffle 1317 1317 0 1 2
+ 1319:1159(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1318
+ 1320: 1150(ptr) AccessChain 34(data) 1315 57
+ 1321: 22(i16vec4) Load 1320
+ 1322: 22(i16vec4) VectorShuffle 1321 1319 4 5 6 3
+ Store 1320 1322
+ 1323: 6(int) Load 8(invocation)
+ 1324: 1150(ptr) AccessChain 34(data) 67 57
+ 1325: 22(i16vec4) Load 1324
+ 1326: 22(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1325
+ 1327: 1150(ptr) AccessChain 34(data) 1323 57
+ Store 1327 1326
+ 1328: 6(int) Load 8(invocation)
+ 1329: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1330: 21(int16_t) Load 1329
+ 1331: 21(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1330
+ 1332: 1143(ptr) AccessChain 34(data) 1328 57 38
+ Store 1332 1331
+ 1333: 6(int) Load 8(invocation)
+ 1334: 1150(ptr) AccessChain 34(data) 46 57
+ 1335: 22(i16vec4) Load 1334
+ 1336:1149(i16vec2) VectorShuffle 1335 1335 0 1
+ 1337:1149(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1336
+ 1338: 1150(ptr) AccessChain 34(data) 1333 57
+ 1339: 22(i16vec4) Load 1338
+ 1340: 22(i16vec4) VectorShuffle 1339 1337 4 5 2 3
+ Store 1338 1340
+ 1341: 6(int) Load 8(invocation)
+ 1342: 1150(ptr) AccessChain 34(data) 57 57
+ 1343: 22(i16vec4) Load 1342
+ 1344:1159(i16vec3) VectorShuffle 1343 1343 0 1 2
+ 1345:1159(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1344
+ 1346: 1150(ptr) AccessChain 34(data) 1341 57
+ 1347: 22(i16vec4) Load 1346
+ 1348: 22(i16vec4) VectorShuffle 1347 1345 4 5 6 3
+ Store 1346 1348
+ 1349: 6(int) Load 8(invocation)
+ 1350: 1150(ptr) AccessChain 34(data) 67 57
+ 1351: 22(i16vec4) Load 1350
+ 1352: 22(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1351
+ 1353: 1150(ptr) AccessChain 34(data) 1349 57
+ Store 1353 1352
+ 1354: 6(int) Load 8(invocation)
+ 1355: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1356: 21(int16_t) Load 1355
+ 1357: 21(int16_t) GroupNonUniformIMul 42 InclusiveScan 1356
+ 1358: 1143(ptr) AccessChain 34(data) 1354 57 38
+ Store 1358 1357
+ 1359: 6(int) Load 8(invocation)
+ 1360: 1150(ptr) AccessChain 34(data) 46 57
+ 1361: 22(i16vec4) Load 1360
+ 1362:1149(i16vec2) VectorShuffle 1361 1361 0 1
+ 1363:1149(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1362
+ 1364: 1150(ptr) AccessChain 34(data) 1359 57
+ 1365: 22(i16vec4) Load 1364
+ 1366: 22(i16vec4) VectorShuffle 1365 1363 4 5 2 3
+ Store 1364 1366
+ 1367: 6(int) Load 8(invocation)
+ 1368: 1150(ptr) AccessChain 34(data) 57 57
+ 1369: 22(i16vec4) Load 1368
+ 1370:1159(i16vec3) VectorShuffle 1369 1369 0 1 2
+ 1371:1159(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1370
+ 1372: 1150(ptr) AccessChain 34(data) 1367 57
+ 1373: 22(i16vec4) Load 1372
+ 1374: 22(i16vec4) VectorShuffle 1373 1371 4 5 6 3
+ Store 1372 1374
+ 1375: 6(int) Load 8(invocation)
+ 1376: 1150(ptr) AccessChain 34(data) 67 57
+ 1377: 22(i16vec4) Load 1376
+ 1378: 22(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1377
+ 1379: 1150(ptr) AccessChain 34(data) 1375 57
+ Store 1379 1378
+ 1380: 6(int) Load 8(invocation)
+ 1381: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1382: 21(int16_t) Load 1381
+ 1383: 21(int16_t) GroupNonUniformSMin 42 InclusiveScan 1382
+ 1384: 1143(ptr) AccessChain 34(data) 1380 57 38
+ Store 1384 1383
+ 1385: 6(int) Load 8(invocation)
+ 1386: 1150(ptr) AccessChain 34(data) 46 57
+ 1387: 22(i16vec4) Load 1386
+ 1388:1149(i16vec2) VectorShuffle 1387 1387 0 1
+ 1389:1149(i16vec2) GroupNonUniformSMin 42 InclusiveScan 1388
+ 1390: 1150(ptr) AccessChain 34(data) 1385 57
+ 1391: 22(i16vec4) Load 1390
+ 1392: 22(i16vec4) VectorShuffle 1391 1389 4 5 2 3
+ Store 1390 1392
+ 1393: 6(int) Load 8(invocation)
+ 1394: 1150(ptr) AccessChain 34(data) 57 57
+ 1395: 22(i16vec4) Load 1394
+ 1396:1159(i16vec3) VectorShuffle 1395 1395 0 1 2
+ 1397:1159(i16vec3) GroupNonUniformSMin 42 InclusiveScan 1396
+ 1398: 1150(ptr) AccessChain 34(data) 1393 57
+ 1399: 22(i16vec4) Load 1398
+ 1400: 22(i16vec4) VectorShuffle 1399 1397 4 5 6 3
+ Store 1398 1400
+ 1401: 6(int) Load 8(invocation)
+ 1402: 1150(ptr) AccessChain 34(data) 67 57
+ 1403: 22(i16vec4) Load 1402
+ 1404: 22(i16vec4) GroupNonUniformSMin 42 InclusiveScan 1403
+ 1405: 1150(ptr) AccessChain 34(data) 1401 57
+ Store 1405 1404
+ 1406: 6(int) Load 8(invocation)
+ 1407: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1408: 21(int16_t) Load 1407
+ 1409: 21(int16_t) GroupNonUniformSMax 42 InclusiveScan 1408
+ 1410: 1143(ptr) AccessChain 34(data) 1406 57 38
+ Store 1410 1409
+ 1411: 6(int) Load 8(invocation)
+ 1412: 1150(ptr) AccessChain 34(data) 46 57
+ 1413: 22(i16vec4) Load 1412
+ 1414:1149(i16vec2) VectorShuffle 1413 1413 0 1
+ 1415:1149(i16vec2) GroupNonUniformSMax 42 InclusiveScan 1414
+ 1416: 1150(ptr) AccessChain 34(data) 1411 57
+ 1417: 22(i16vec4) Load 1416
+ 1418: 22(i16vec4) VectorShuffle 1417 1415 4 5 2 3
+ Store 1416 1418
+ 1419: 6(int) Load 8(invocation)
+ 1420: 1150(ptr) AccessChain 34(data) 57 57
+ 1421: 22(i16vec4) Load 1420
+ 1422:1159(i16vec3) VectorShuffle 1421 1421 0 1 2
+ 1423:1159(i16vec3) GroupNonUniformSMax 42 InclusiveScan 1422
+ 1424: 1150(ptr) AccessChain 34(data) 1419 57
+ 1425: 22(i16vec4) Load 1424
+ 1426: 22(i16vec4) VectorShuffle 1425 1423 4 5 6 3
+ Store 1424 1426
+ 1427: 6(int) Load 8(invocation)
+ 1428: 1150(ptr) AccessChain 34(data) 67 57
+ 1429: 22(i16vec4) Load 1428
+ 1430: 22(i16vec4) GroupNonUniformSMax 42 InclusiveScan 1429
+ 1431: 1150(ptr) AccessChain 34(data) 1427 57
+ Store 1431 1430
+ 1432: 6(int) Load 8(invocation)
+ 1433: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1434: 21(int16_t) Load 1433
+ 1435: 21(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1434
+ 1436: 1143(ptr) AccessChain 34(data) 1432 57 38
+ Store 1436 1435
+ 1437: 6(int) Load 8(invocation)
+ 1438: 1150(ptr) AccessChain 34(data) 46 57
+ 1439: 22(i16vec4) Load 1438
+ 1440:1149(i16vec2) VectorShuffle 1439 1439 0 1
+ 1441:1149(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1440
+ 1442: 1150(ptr) AccessChain 34(data) 1437 57
+ 1443: 22(i16vec4) Load 1442
+ 1444: 22(i16vec4) VectorShuffle 1443 1441 4 5 2 3
+ Store 1442 1444
+ 1445: 6(int) Load 8(invocation)
+ 1446: 1150(ptr) AccessChain 34(data) 57 57
+ 1447: 22(i16vec4) Load 1446
+ 1448:1159(i16vec3) VectorShuffle 1447 1447 0 1 2
+ 1449:1159(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1448
+ 1450: 1150(ptr) AccessChain 34(data) 1445 57
+ 1451: 22(i16vec4) Load 1450
+ 1452: 22(i16vec4) VectorShuffle 1451 1449 4 5 6 3
+ Store 1450 1452
+ 1453: 6(int) Load 8(invocation)
+ 1454: 1150(ptr) AccessChain 34(data) 67 57
+ 1455: 22(i16vec4) Load 1454
+ 1456: 22(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1455
+ 1457: 1150(ptr) AccessChain 34(data) 1453 57
+ Store 1457 1456
+ 1458: 6(int) Load 8(invocation)
+ 1459: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1460: 21(int16_t) Load 1459
+ 1461: 21(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1460
+ 1462: 1143(ptr) AccessChain 34(data) 1458 57 38
+ Store 1462 1461
+ 1463: 6(int) Load 8(invocation)
+ 1464: 1150(ptr) AccessChain 34(data) 46 57
+ 1465: 22(i16vec4) Load 1464
+ 1466:1149(i16vec2) VectorShuffle 1465 1465 0 1
+ 1467:1149(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1466
+ 1468: 1150(ptr) AccessChain 34(data) 1463 57
+ 1469: 22(i16vec4) Load 1468
+ 1470: 22(i16vec4) VectorShuffle 1469 1467 4 5 2 3
+ Store 1468 1470
+ 1471: 6(int) Load 8(invocation)
+ 1472: 1150(ptr) AccessChain 34(data) 57 57
+ 1473: 22(i16vec4) Load 1472
+ 1474:1159(i16vec3) VectorShuffle 1473 1473 0 1 2
+ 1475:1159(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1474
+ 1476: 1150(ptr) AccessChain 34(data) 1471 57
+ 1477: 22(i16vec4) Load 1476
+ 1478: 22(i16vec4) VectorShuffle 1477 1475 4 5 6 3
+ Store 1476 1478
+ 1479: 6(int) Load 8(invocation)
+ 1480: 1150(ptr) AccessChain 34(data) 67 57
+ 1481: 22(i16vec4) Load 1480
+ 1482: 22(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1481
+ 1483: 1150(ptr) AccessChain 34(data) 1479 57
+ Store 1483 1482
+ 1484: 6(int) Load 8(invocation)
+ 1485: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1486: 21(int16_t) Load 1485
+ 1487: 21(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1486
+ 1488: 1143(ptr) AccessChain 34(data) 1484 57 38
+ Store 1488 1487
+ 1489: 6(int) Load 8(invocation)
+ 1490: 1150(ptr) AccessChain 34(data) 46 57
+ 1491: 22(i16vec4) Load 1490
+ 1492:1149(i16vec2) VectorShuffle 1491 1491 0 1
+ 1493:1149(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1492
+ 1494: 1150(ptr) AccessChain 34(data) 1489 57
+ 1495: 22(i16vec4) Load 1494
+ 1496: 22(i16vec4) VectorShuffle 1495 1493 4 5 2 3
+ Store 1494 1496
+ 1497: 6(int) Load 8(invocation)
+ 1498: 1150(ptr) AccessChain 34(data) 57 57
+ 1499: 22(i16vec4) Load 1498
+ 1500:1159(i16vec3) VectorShuffle 1499 1499 0 1 2
+ 1501:1159(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1500
+ 1502: 1150(ptr) AccessChain 34(data) 1497 57
+ 1503: 22(i16vec4) Load 1502
+ 1504: 22(i16vec4) VectorShuffle 1503 1501 4 5 6 3
+ Store 1502 1504
+ 1505: 6(int) Load 8(invocation)
+ 1506: 1150(ptr) AccessChain 34(data) 67 57
+ 1507: 22(i16vec4) Load 1506
+ 1508: 22(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1507
+ 1509: 1150(ptr) AccessChain 34(data) 1505 57
+ Store 1509 1508
+ 1510: 6(int) Load 8(invocation)
+ 1511: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1512: 21(int16_t) Load 1511
+ 1513: 21(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 1512
+ 1514: 1143(ptr) AccessChain 34(data) 1510 57 38
+ Store 1514 1513
+ 1515: 6(int) Load 8(invocation)
+ 1516: 1150(ptr) AccessChain 34(data) 46 57
+ 1517: 22(i16vec4) Load 1516
+ 1518:1149(i16vec2) VectorShuffle 1517 1517 0 1
+ 1519:1149(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 1518
+ 1520: 1150(ptr) AccessChain 34(data) 1515 57
+ 1521: 22(i16vec4) Load 1520
+ 1522: 22(i16vec4) VectorShuffle 1521 1519 4 5 2 3
+ Store 1520 1522
+ 1523: 6(int) Load 8(invocation)
+ 1524: 1150(ptr) AccessChain 34(data) 57 57
+ 1525: 22(i16vec4) Load 1524
+ 1526:1159(i16vec3) VectorShuffle 1525 1525 0 1 2
+ 1527:1159(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 1526
+ 1528: 1150(ptr) AccessChain 34(data) 1523 57
+ 1529: 22(i16vec4) Load 1528
+ 1530: 22(i16vec4) VectorShuffle 1529 1527 4 5 6 3
+ Store 1528 1530
+ 1531: 6(int) Load 8(invocation)
+ 1532: 1150(ptr) AccessChain 34(data) 67 57
+ 1533: 22(i16vec4) Load 1532
+ 1534: 22(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 1533
+ 1535: 1150(ptr) AccessChain 34(data) 1531 57
+ Store 1535 1534
+ 1536: 6(int) Load 8(invocation)
+ 1537: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1538: 21(int16_t) Load 1537
+ 1539: 21(int16_t) GroupNonUniformIMul 42 ExclusiveScan 1538
+ 1540: 1143(ptr) AccessChain 34(data) 1536 57 38
+ Store 1540 1539
+ 1541: 6(int) Load 8(invocation)
+ 1542: 1150(ptr) AccessChain 34(data) 46 57
+ 1543: 22(i16vec4) Load 1542
+ 1544:1149(i16vec2) VectorShuffle 1543 1543 0 1
+ 1545:1149(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 1544
+ 1546: 1150(ptr) AccessChain 34(data) 1541 57
+ 1547: 22(i16vec4) Load 1546
+ 1548: 22(i16vec4) VectorShuffle 1547 1545 4 5 2 3
+ Store 1546 1548
+ 1549: 6(int) Load 8(invocation)
+ 1550: 1150(ptr) AccessChain 34(data) 57 57
+ 1551: 22(i16vec4) Load 1550
+ 1552:1159(i16vec3) VectorShuffle 1551 1551 0 1 2
+ 1553:1159(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 1552
+ 1554: 1150(ptr) AccessChain 34(data) 1549 57
+ 1555: 22(i16vec4) Load 1554
+ 1556: 22(i16vec4) VectorShuffle 1555 1553 4 5 6 3
+ Store 1554 1556
+ 1557: 6(int) Load 8(invocation)
+ 1558: 1150(ptr) AccessChain 34(data) 67 57
+ 1559: 22(i16vec4) Load 1558
+ 1560: 22(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 1559
+ 1561: 1150(ptr) AccessChain 34(data) 1557 57
+ Store 1561 1560
+ 1562: 6(int) Load 8(invocation)
+ 1563: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1564: 21(int16_t) Load 1563
+ 1565: 21(int16_t) GroupNonUniformSMin 42 ExclusiveScan 1564
+ 1566: 1143(ptr) AccessChain 34(data) 1562 57 38
+ Store 1566 1565
+ 1567: 6(int) Load 8(invocation)
+ 1568: 1150(ptr) AccessChain 34(data) 46 57
+ 1569: 22(i16vec4) Load 1568
+ 1570:1149(i16vec2) VectorShuffle 1569 1569 0 1
+ 1571:1149(i16vec2) GroupNonUniformSMin 42 ExclusiveScan 1570
+ 1572: 1150(ptr) AccessChain 34(data) 1567 57
+ 1573: 22(i16vec4) Load 1572
+ 1574: 22(i16vec4) VectorShuffle 1573 1571 4 5 2 3
+ Store 1572 1574
+ 1575: 6(int) Load 8(invocation)
+ 1576: 1150(ptr) AccessChain 34(data) 57 57
+ 1577: 22(i16vec4) Load 1576
+ 1578:1159(i16vec3) VectorShuffle 1577 1577 0 1 2
+ 1579:1159(i16vec3) GroupNonUniformSMin 42 ExclusiveScan 1578
+ 1580: 1150(ptr) AccessChain 34(data) 1575 57
+ 1581: 22(i16vec4) Load 1580
+ 1582: 22(i16vec4) VectorShuffle 1581 1579 4 5 6 3
+ Store 1580 1582
+ 1583: 6(int) Load 8(invocation)
+ 1584: 1150(ptr) AccessChain 34(data) 67 57
+ 1585: 22(i16vec4) Load 1584
+ 1586: 22(i16vec4) GroupNonUniformSMin 42 ExclusiveScan 1585
+ 1587: 1150(ptr) AccessChain 34(data) 1583 57
+ Store 1587 1586
+ 1588: 6(int) Load 8(invocation)
+ 1589: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1590: 21(int16_t) Load 1589
+ 1591: 21(int16_t) GroupNonUniformSMax 42 ExclusiveScan 1590
+ 1592: 1143(ptr) AccessChain 34(data) 1588 57 38
+ Store 1592 1591
+ 1593: 6(int) Load 8(invocation)
+ 1594: 1150(ptr) AccessChain 34(data) 46 57
+ 1595: 22(i16vec4) Load 1594
+ 1596:1149(i16vec2) VectorShuffle 1595 1595 0 1
+ 1597:1149(i16vec2) GroupNonUniformSMax 42 ExclusiveScan 1596
+ 1598: 1150(ptr) AccessChain 34(data) 1593 57
+ 1599: 22(i16vec4) Load 1598
+ 1600: 22(i16vec4) VectorShuffle 1599 1597 4 5 2 3
+ Store 1598 1600
+ 1601: 6(int) Load 8(invocation)
+ 1602: 1150(ptr) AccessChain 34(data) 57 57
+ 1603: 22(i16vec4) Load 1602
+ 1604:1159(i16vec3) VectorShuffle 1603 1603 0 1 2
+ 1605:1159(i16vec3) GroupNonUniformSMax 42 ExclusiveScan 1604
+ 1606: 1150(ptr) AccessChain 34(data) 1601 57
+ 1607: 22(i16vec4) Load 1606
+ 1608: 22(i16vec4) VectorShuffle 1607 1605 4 5 6 3
+ Store 1606 1608
+ 1609: 6(int) Load 8(invocation)
+ 1610: 1150(ptr) AccessChain 34(data) 67 57
+ 1611: 22(i16vec4) Load 1610
+ 1612: 22(i16vec4) GroupNonUniformSMax 42 ExclusiveScan 1611
+ 1613: 1150(ptr) AccessChain 34(data) 1609 57
+ Store 1613 1612
+ 1614: 6(int) Load 8(invocation)
+ 1615: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1616: 21(int16_t) Load 1615
+ 1617: 21(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1616
+ 1618: 1143(ptr) AccessChain 34(data) 1614 57 38
+ Store 1618 1617
+ 1619: 6(int) Load 8(invocation)
+ 1620: 1150(ptr) AccessChain 34(data) 46 57
+ 1621: 22(i16vec4) Load 1620
+ 1622:1149(i16vec2) VectorShuffle 1621 1621 0 1
+ 1623:1149(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1622
+ 1624: 1150(ptr) AccessChain 34(data) 1619 57
+ 1625: 22(i16vec4) Load 1624
+ 1626: 22(i16vec4) VectorShuffle 1625 1623 4 5 2 3
+ Store 1624 1626
+ 1627: 6(int) Load 8(invocation)
+ 1628: 1150(ptr) AccessChain 34(data) 57 57
+ 1629: 22(i16vec4) Load 1628
+ 1630:1159(i16vec3) VectorShuffle 1629 1629 0 1 2
+ 1631:1159(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1630
+ 1632: 1150(ptr) AccessChain 34(data) 1627 57
+ 1633: 22(i16vec4) Load 1632
+ 1634: 22(i16vec4) VectorShuffle 1633 1631 4 5 6 3
+ Store 1632 1634
+ 1635: 6(int) Load 8(invocation)
+ 1636: 1150(ptr) AccessChain 34(data) 67 57
+ 1637: 22(i16vec4) Load 1636
+ 1638: 22(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1637
+ 1639: 1150(ptr) AccessChain 34(data) 1635 57
+ Store 1639 1638
+ 1640: 6(int) Load 8(invocation)
+ 1641: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1642: 21(int16_t) Load 1641
+ 1643: 21(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1642
+ 1644: 1143(ptr) AccessChain 34(data) 1640 57 38
+ Store 1644 1643
+ 1645: 6(int) Load 8(invocation)
+ 1646: 1150(ptr) AccessChain 34(data) 46 57
+ 1647: 22(i16vec4) Load 1646
+ 1648:1149(i16vec2) VectorShuffle 1647 1647 0 1
+ 1649:1149(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1648
+ 1650: 1150(ptr) AccessChain 34(data) 1645 57
+ 1651: 22(i16vec4) Load 1650
+ 1652: 22(i16vec4) VectorShuffle 1651 1649 4 5 2 3
+ Store 1650 1652
+ 1653: 6(int) Load 8(invocation)
+ 1654: 1150(ptr) AccessChain 34(data) 57 57
+ 1655: 22(i16vec4) Load 1654
+ 1656:1159(i16vec3) VectorShuffle 1655 1655 0 1 2
+ 1657:1159(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1656
+ 1658: 1150(ptr) AccessChain 34(data) 1653 57
+ 1659: 22(i16vec4) Load 1658
+ 1660: 22(i16vec4) VectorShuffle 1659 1657 4 5 6 3
+ Store 1658 1660
+ 1661: 6(int) Load 8(invocation)
+ 1662: 1150(ptr) AccessChain 34(data) 67 57
+ 1663: 22(i16vec4) Load 1662
+ 1664: 22(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1663
+ 1665: 1150(ptr) AccessChain 34(data) 1661 57
+ Store 1665 1664
+ 1666: 6(int) Load 8(invocation)
+ 1667: 1143(ptr) AccessChain 34(data) 37 57 38
+ 1668: 21(int16_t) Load 1667
+ 1669: 21(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1668
+ 1670: 1143(ptr) AccessChain 34(data) 1666 57 38
+ Store 1670 1669
+ 1671: 6(int) Load 8(invocation)
+ 1672: 1150(ptr) AccessChain 34(data) 46 57
+ 1673: 22(i16vec4) Load 1672
+ 1674:1149(i16vec2) VectorShuffle 1673 1673 0 1
+ 1675:1149(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1674
+ 1676: 1150(ptr) AccessChain 34(data) 1671 57
+ 1677: 22(i16vec4) Load 1676
+ 1678: 22(i16vec4) VectorShuffle 1677 1675 4 5 2 3
+ Store 1676 1678
+ 1679: 6(int) Load 8(invocation)
+ 1680: 1150(ptr) AccessChain 34(data) 57 57
+ 1681: 22(i16vec4) Load 1680
+ 1682:1159(i16vec3) VectorShuffle 1681 1681 0 1 2
+ 1683:1159(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1682
+ 1684: 1150(ptr) AccessChain 34(data) 1679 57
+ 1685: 22(i16vec4) Load 1684
+ 1686: 22(i16vec4) VectorShuffle 1685 1683 4 5 6 3
+ Store 1684 1686
+ 1687: 6(int) Load 8(invocation)
+ 1688: 1150(ptr) AccessChain 34(data) 67 57
+ 1689: 22(i16vec4) Load 1688
+ 1690: 22(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1689
+ 1691: 1150(ptr) AccessChain 34(data) 1687 57
+ Store 1691 1690
+ 1692: 6(int) Load 8(invocation)
+ 1694: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1695: 23(int16_t) Load 1694
+ 1696: 23(int16_t) GroupNonUniformIAdd 42 Reduce 1695
+ 1697: 1693(ptr) AccessChain 34(data) 1692 67 38
+ Store 1697 1696
+ 1698: 6(int) Load 8(invocation)
+ 1701: 1700(ptr) AccessChain 34(data) 46 67
+ 1702: 24(i16vec4) Load 1701
+ 1703:1699(i16vec2) VectorShuffle 1702 1702 0 1
+ 1704:1699(i16vec2) GroupNonUniformIAdd 42 Reduce 1703
+ 1705: 1700(ptr) AccessChain 34(data) 1698 67
+ 1706: 24(i16vec4) Load 1705
+ 1707: 24(i16vec4) VectorShuffle 1706 1704 4 5 2 3
+ Store 1705 1707
+ 1708: 6(int) Load 8(invocation)
+ 1710: 1700(ptr) AccessChain 34(data) 57 67
+ 1711: 24(i16vec4) Load 1710
+ 1712:1709(i16vec3) VectorShuffle 1711 1711 0 1 2
+ 1713:1709(i16vec3) GroupNonUniformIAdd 42 Reduce 1712
+ 1714: 1700(ptr) AccessChain 34(data) 1708 67
+ 1715: 24(i16vec4) Load 1714
+ 1716: 24(i16vec4) VectorShuffle 1715 1713 4 5 6 3
+ Store 1714 1716
+ 1717: 6(int) Load 8(invocation)
+ 1718: 1700(ptr) AccessChain 34(data) 67 67
+ 1719: 24(i16vec4) Load 1718
+ 1720: 24(i16vec4) GroupNonUniformIAdd 42 Reduce 1719
+ 1721: 1700(ptr) AccessChain 34(data) 1717 67
+ Store 1721 1720
+ 1722: 6(int) Load 8(invocation)
+ 1723: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1724: 23(int16_t) Load 1723
+ 1725: 23(int16_t) GroupNonUniformIMul 42 Reduce 1724
+ 1726: 1693(ptr) AccessChain 34(data) 1722 67 38
+ Store 1726 1725
+ 1727: 6(int) Load 8(invocation)
+ 1728: 1700(ptr) AccessChain 34(data) 46 67
+ 1729: 24(i16vec4) Load 1728
+ 1730:1699(i16vec2) VectorShuffle 1729 1729 0 1
+ 1731:1699(i16vec2) GroupNonUniformIMul 42 Reduce 1730
+ 1732: 1700(ptr) AccessChain 34(data) 1727 67
+ 1733: 24(i16vec4) Load 1732
+ 1734: 24(i16vec4) VectorShuffle 1733 1731 4 5 2 3
+ Store 1732 1734
+ 1735: 6(int) Load 8(invocation)
+ 1736: 1700(ptr) AccessChain 34(data) 57 67
+ 1737: 24(i16vec4) Load 1736
+ 1738:1709(i16vec3) VectorShuffle 1737 1737 0 1 2
+ 1739:1709(i16vec3) GroupNonUniformIMul 42 Reduce 1738
+ 1740: 1700(ptr) AccessChain 34(data) 1735 67
+ 1741: 24(i16vec4) Load 1740
+ 1742: 24(i16vec4) VectorShuffle 1741 1739 4 5 6 3
+ Store 1740 1742
+ 1743: 6(int) Load 8(invocation)
+ 1744: 1700(ptr) AccessChain 34(data) 67 67
+ 1745: 24(i16vec4) Load 1744
+ 1746: 24(i16vec4) GroupNonUniformIMul 42 Reduce 1745
+ 1747: 1700(ptr) AccessChain 34(data) 1743 67
+ Store 1747 1746
+ 1748: 6(int) Load 8(invocation)
+ 1749: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1750: 23(int16_t) Load 1749
+ 1751: 23(int16_t) GroupNonUniformUMin 42 Reduce 1750
+ 1752: 1693(ptr) AccessChain 34(data) 1748 67 38
+ Store 1752 1751
+ 1753: 6(int) Load 8(invocation)
+ 1754: 1700(ptr) AccessChain 34(data) 46 67
+ 1755: 24(i16vec4) Load 1754
+ 1756:1699(i16vec2) VectorShuffle 1755 1755 0 1
+ 1757:1699(i16vec2) GroupNonUniformUMin 42 Reduce 1756
+ 1758: 1700(ptr) AccessChain 34(data) 1753 67
+ 1759: 24(i16vec4) Load 1758
+ 1760: 24(i16vec4) VectorShuffle 1759 1757 4 5 2 3
+ Store 1758 1760
+ 1761: 6(int) Load 8(invocation)
+ 1762: 1700(ptr) AccessChain 34(data) 57 67
+ 1763: 24(i16vec4) Load 1762
+ 1764:1709(i16vec3) VectorShuffle 1763 1763 0 1 2
+ 1765:1709(i16vec3) GroupNonUniformUMin 42 Reduce 1764
+ 1766: 1700(ptr) AccessChain 34(data) 1761 67
+ 1767: 24(i16vec4) Load 1766
+ 1768: 24(i16vec4) VectorShuffle 1767 1765 4 5 6 3
+ Store 1766 1768
+ 1769: 6(int) Load 8(invocation)
+ 1770: 1700(ptr) AccessChain 34(data) 67 67
+ 1771: 24(i16vec4) Load 1770
+ 1772: 24(i16vec4) GroupNonUniformUMin 42 Reduce 1771
+ 1773: 1700(ptr) AccessChain 34(data) 1769 67
+ Store 1773 1772
+ 1774: 6(int) Load 8(invocation)
+ 1775: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1776: 23(int16_t) Load 1775
+ 1777: 23(int16_t) GroupNonUniformUMax 42 Reduce 1776
+ 1778: 1693(ptr) AccessChain 34(data) 1774 67 38
+ Store 1778 1777
+ 1779: 6(int) Load 8(invocation)
+ 1780: 1700(ptr) AccessChain 34(data) 46 67
+ 1781: 24(i16vec4) Load 1780
+ 1782:1699(i16vec2) VectorShuffle 1781 1781 0 1
+ 1783:1699(i16vec2) GroupNonUniformUMax 42 Reduce 1782
+ 1784: 1700(ptr) AccessChain 34(data) 1779 67
+ 1785: 24(i16vec4) Load 1784
+ 1786: 24(i16vec4) VectorShuffle 1785 1783 4 5 2 3
+ Store 1784 1786
+ 1787: 6(int) Load 8(invocation)
+ 1788: 1700(ptr) AccessChain 34(data) 57 67
+ 1789: 24(i16vec4) Load 1788
+ 1790:1709(i16vec3) VectorShuffle 1789 1789 0 1 2
+ 1791:1709(i16vec3) GroupNonUniformUMax 42 Reduce 1790
+ 1792: 1700(ptr) AccessChain 34(data) 1787 67
+ 1793: 24(i16vec4) Load 1792
+ 1794: 24(i16vec4) VectorShuffle 1793 1791 4 5 6 3
+ Store 1792 1794
+ 1795: 6(int) Load 8(invocation)
+ 1796: 1700(ptr) AccessChain 34(data) 67 67
+ 1797: 24(i16vec4) Load 1796
+ 1798: 24(i16vec4) GroupNonUniformUMax 42 Reduce 1797
+ 1799: 1700(ptr) AccessChain 34(data) 1795 67
+ Store 1799 1798
+ 1800: 6(int) Load 8(invocation)
+ 1801: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1802: 23(int16_t) Load 1801
+ 1803: 23(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1802
+ 1804: 1693(ptr) AccessChain 34(data) 1800 67 38
+ Store 1804 1803
+ 1805: 6(int) Load 8(invocation)
+ 1806: 1700(ptr) AccessChain 34(data) 46 67
+ 1807: 24(i16vec4) Load 1806
+ 1808:1699(i16vec2) VectorShuffle 1807 1807 0 1
+ 1809:1699(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1808
+ 1810: 1700(ptr) AccessChain 34(data) 1805 67
+ 1811: 24(i16vec4) Load 1810
+ 1812: 24(i16vec4) VectorShuffle 1811 1809 4 5 2 3
+ Store 1810 1812
+ 1813: 6(int) Load 8(invocation)
+ 1814: 1700(ptr) AccessChain 34(data) 57 67
+ 1815: 24(i16vec4) Load 1814
+ 1816:1709(i16vec3) VectorShuffle 1815 1815 0 1 2
+ 1817:1709(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1816
+ 1818: 1700(ptr) AccessChain 34(data) 1813 67
+ 1819: 24(i16vec4) Load 1818
+ 1820: 24(i16vec4) VectorShuffle 1819 1817 4 5 6 3
+ Store 1818 1820
+ 1821: 6(int) Load 8(invocation)
+ 1822: 1700(ptr) AccessChain 34(data) 67 67
+ 1823: 24(i16vec4) Load 1822
+ 1824: 24(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1823
+ 1825: 1700(ptr) AccessChain 34(data) 1821 67
+ Store 1825 1824
+ 1826: 6(int) Load 8(invocation)
+ 1827: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1828: 23(int16_t) Load 1827
+ 1829: 23(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1828
+ 1830: 1693(ptr) AccessChain 34(data) 1826 67 38
+ Store 1830 1829
+ 1831: 6(int) Load 8(invocation)
+ 1832: 1700(ptr) AccessChain 34(data) 46 67
+ 1833: 24(i16vec4) Load 1832
+ 1834:1699(i16vec2) VectorShuffle 1833 1833 0 1
+ 1835:1699(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1834
+ 1836: 1700(ptr) AccessChain 34(data) 1831 67
+ 1837: 24(i16vec4) Load 1836
+ 1838: 24(i16vec4) VectorShuffle 1837 1835 4 5 2 3
+ Store 1836 1838
+ 1839: 6(int) Load 8(invocation)
+ 1840: 1700(ptr) AccessChain 34(data) 57 67
+ 1841: 24(i16vec4) Load 1840
+ 1842:1709(i16vec3) VectorShuffle 1841 1841 0 1 2
+ 1843:1709(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1842
+ 1844: 1700(ptr) AccessChain 34(data) 1839 67
+ 1845: 24(i16vec4) Load 1844
+ 1846: 24(i16vec4) VectorShuffle 1845 1843 4 5 6 3
+ Store 1844 1846
+ 1847: 6(int) Load 8(invocation)
+ 1848: 1700(ptr) AccessChain 34(data) 67 67
+ 1849: 24(i16vec4) Load 1848
+ 1850: 24(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1849
+ 1851: 1700(ptr) AccessChain 34(data) 1847 67
+ Store 1851 1850
+ 1852: 6(int) Load 8(invocation)
+ 1853: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1854: 23(int16_t) Load 1853
+ 1855: 23(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1854
+ 1856: 1693(ptr) AccessChain 34(data) 1852 67 38
+ Store 1856 1855
+ 1857: 6(int) Load 8(invocation)
+ 1858: 1700(ptr) AccessChain 34(data) 46 67
+ 1859: 24(i16vec4) Load 1858
+ 1860:1699(i16vec2) VectorShuffle 1859 1859 0 1
+ 1861:1699(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1860
+ 1862: 1700(ptr) AccessChain 34(data) 1857 67
+ 1863: 24(i16vec4) Load 1862
+ 1864: 24(i16vec4) VectorShuffle 1863 1861 4 5 2 3
+ Store 1862 1864
+ 1865: 6(int) Load 8(invocation)
+ 1866: 1700(ptr) AccessChain 34(data) 57 67
+ 1867: 24(i16vec4) Load 1866
+ 1868:1709(i16vec3) VectorShuffle 1867 1867 0 1 2
+ 1869:1709(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1868
+ 1870: 1700(ptr) AccessChain 34(data) 1865 67
+ 1871: 24(i16vec4) Load 1870
+ 1872: 24(i16vec4) VectorShuffle 1871 1869 4 5 6 3
+ Store 1870 1872
+ 1873: 6(int) Load 8(invocation)
+ 1874: 1700(ptr) AccessChain 34(data) 67 67
+ 1875: 24(i16vec4) Load 1874
+ 1876: 24(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1875
+ 1877: 1700(ptr) AccessChain 34(data) 1873 67
+ Store 1877 1876
+ 1878: 6(int) Load 8(invocation)
+ 1879: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1880: 23(int16_t) Load 1879
+ 1881: 23(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1880
+ 1882: 1693(ptr) AccessChain 34(data) 1878 67 38
+ Store 1882 1881
+ 1883: 6(int) Load 8(invocation)
+ 1884: 1700(ptr) AccessChain 34(data) 46 67
+ 1885: 24(i16vec4) Load 1884
+ 1886:1699(i16vec2) VectorShuffle 1885 1885 0 1
+ 1887:1699(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1886
+ 1888: 1700(ptr) AccessChain 34(data) 1883 67
+ 1889: 24(i16vec4) Load 1888
+ 1890: 24(i16vec4) VectorShuffle 1889 1887 4 5 2 3
+ Store 1888 1890
+ 1891: 6(int) Load 8(invocation)
+ 1892: 1700(ptr) AccessChain 34(data) 57 67
+ 1893: 24(i16vec4) Load 1892
+ 1894:1709(i16vec3) VectorShuffle 1893 1893 0 1 2
+ 1895:1709(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1894
+ 1896: 1700(ptr) AccessChain 34(data) 1891 67
+ 1897: 24(i16vec4) Load 1896
+ 1898: 24(i16vec4) VectorShuffle 1897 1895 4 5 6 3
+ Store 1896 1898
+ 1899: 6(int) Load 8(invocation)
+ 1900: 1700(ptr) AccessChain 34(data) 67 67
+ 1901: 24(i16vec4) Load 1900
+ 1902: 24(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1901
+ 1903: 1700(ptr) AccessChain 34(data) 1899 67
+ Store 1903 1902
+ 1904: 6(int) Load 8(invocation)
+ 1905: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1906: 23(int16_t) Load 1905
+ 1907: 23(int16_t) GroupNonUniformIMul 42 InclusiveScan 1906
+ 1908: 1693(ptr) AccessChain 34(data) 1904 67 38
+ Store 1908 1907
+ 1909: 6(int) Load 8(invocation)
+ 1910: 1700(ptr) AccessChain 34(data) 46 67
+ 1911: 24(i16vec4) Load 1910
+ 1912:1699(i16vec2) VectorShuffle 1911 1911 0 1
+ 1913:1699(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1912
+ 1914: 1700(ptr) AccessChain 34(data) 1909 67
+ 1915: 24(i16vec4) Load 1914
+ 1916: 24(i16vec4) VectorShuffle 1915 1913 4 5 2 3
+ Store 1914 1916
+ 1917: 6(int) Load 8(invocation)
+ 1918: 1700(ptr) AccessChain 34(data) 57 67
+ 1919: 24(i16vec4) Load 1918
+ 1920:1709(i16vec3) VectorShuffle 1919 1919 0 1 2
+ 1921:1709(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1920
+ 1922: 1700(ptr) AccessChain 34(data) 1917 67
+ 1923: 24(i16vec4) Load 1922
+ 1924: 24(i16vec4) VectorShuffle 1923 1921 4 5 6 3
+ Store 1922 1924
+ 1925: 6(int) Load 8(invocation)
+ 1926: 1700(ptr) AccessChain 34(data) 67 67
+ 1927: 24(i16vec4) Load 1926
+ 1928: 24(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1927
+ 1929: 1700(ptr) AccessChain 34(data) 1925 67
+ Store 1929 1928
+ 1930: 6(int) Load 8(invocation)
+ 1931: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1932: 23(int16_t) Load 1931
+ 1933: 23(int16_t) GroupNonUniformUMin 42 InclusiveScan 1932
+ 1934: 1693(ptr) AccessChain 34(data) 1930 67 38
+ Store 1934 1933
+ 1935: 6(int) Load 8(invocation)
+ 1936: 1700(ptr) AccessChain 34(data) 46 67
+ 1937: 24(i16vec4) Load 1936
+ 1938:1699(i16vec2) VectorShuffle 1937 1937 0 1
+ 1939:1699(i16vec2) GroupNonUniformUMin 42 InclusiveScan 1938
+ 1940: 1700(ptr) AccessChain 34(data) 1935 67
+ 1941: 24(i16vec4) Load 1940
+ 1942: 24(i16vec4) VectorShuffle 1941 1939 4 5 2 3
+ Store 1940 1942
+ 1943: 6(int) Load 8(invocation)
+ 1944: 1700(ptr) AccessChain 34(data) 57 67
+ 1945: 24(i16vec4) Load 1944
+ 1946:1709(i16vec3) VectorShuffle 1945 1945 0 1 2
+ 1947:1709(i16vec3) GroupNonUniformUMin 42 InclusiveScan 1946
+ 1948: 1700(ptr) AccessChain 34(data) 1943 67
+ 1949: 24(i16vec4) Load 1948
+ 1950: 24(i16vec4) VectorShuffle 1949 1947 4 5 6 3
+ Store 1948 1950
+ 1951: 6(int) Load 8(invocation)
+ 1952: 1700(ptr) AccessChain 34(data) 67 67
+ 1953: 24(i16vec4) Load 1952
+ 1954: 24(i16vec4) GroupNonUniformUMin 42 InclusiveScan 1953
+ 1955: 1700(ptr) AccessChain 34(data) 1951 67
+ Store 1955 1954
+ 1956: 6(int) Load 8(invocation)
+ 1957: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1958: 23(int16_t) Load 1957
+ 1959: 23(int16_t) GroupNonUniformUMax 42 InclusiveScan 1958
+ 1960: 1693(ptr) AccessChain 34(data) 1956 67 38
+ Store 1960 1959
+ 1961: 6(int) Load 8(invocation)
+ 1962: 1700(ptr) AccessChain 34(data) 46 67
+ 1963: 24(i16vec4) Load 1962
+ 1964:1699(i16vec2) VectorShuffle 1963 1963 0 1
+ 1965:1699(i16vec2) GroupNonUniformUMax 42 InclusiveScan 1964
+ 1966: 1700(ptr) AccessChain 34(data) 1961 67
+ 1967: 24(i16vec4) Load 1966
+ 1968: 24(i16vec4) VectorShuffle 1967 1965 4 5 2 3
+ Store 1966 1968
+ 1969: 6(int) Load 8(invocation)
+ 1970: 1700(ptr) AccessChain 34(data) 57 67
+ 1971: 24(i16vec4) Load 1970
+ 1972:1709(i16vec3) VectorShuffle 1971 1971 0 1 2
+ 1973:1709(i16vec3) GroupNonUniformUMax 42 InclusiveScan 1972
+ 1974: 1700(ptr) AccessChain 34(data) 1969 67
+ 1975: 24(i16vec4) Load 1974
+ 1976: 24(i16vec4) VectorShuffle 1975 1973 4 5 6 3
+ Store 1974 1976
+ 1977: 6(int) Load 8(invocation)
+ 1978: 1700(ptr) AccessChain 34(data) 67 67
+ 1979: 24(i16vec4) Load 1978
+ 1980: 24(i16vec4) GroupNonUniformUMax 42 InclusiveScan 1979
+ 1981: 1700(ptr) AccessChain 34(data) 1977 67
+ Store 1981 1980
+ 1982: 6(int) Load 8(invocation)
+ 1983: 1693(ptr) AccessChain 34(data) 37 67 38
+ 1984: 23(int16_t) Load 1983
+ 1985: 23(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1984
+ 1986: 1693(ptr) AccessChain 34(data) 1982 67 38
+ Store 1986 1985
+ 1987: 6(int) Load 8(invocation)
+ 1988: 1700(ptr) AccessChain 34(data) 46 67
+ 1989: 24(i16vec4) Load 1988
+ 1990:1699(i16vec2) VectorShuffle 1989 1989 0 1
+ 1991:1699(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1990
+ 1992: 1700(ptr) AccessChain 34(data) 1987 67
+ 1993: 24(i16vec4) Load 1992
+ 1994: 24(i16vec4) VectorShuffle 1993 1991 4 5 2 3
+ Store 1992 1994
+ 1995: 6(int) Load 8(invocation)
+ 1996: 1700(ptr) AccessChain 34(data) 57 67
+ 1997: 24(i16vec4) Load 1996
+ 1998:1709(i16vec3) VectorShuffle 1997 1997 0 1 2
+ 1999:1709(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1998
+ 2000: 1700(ptr) AccessChain 34(data) 1995 67
+ 2001: 24(i16vec4) Load 2000
+ 2002: 24(i16vec4) VectorShuffle 2001 1999 4 5 6 3
+ Store 2000 2002
+ 2003: 6(int) Load 8(invocation)
+ 2004: 1700(ptr) AccessChain 34(data) 67 67
+ 2005: 24(i16vec4) Load 2004
+ 2006: 24(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2005
+ 2007: 1700(ptr) AccessChain 34(data) 2003 67
+ Store 2007 2006
+ 2008: 6(int) Load 8(invocation)
+ 2009: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2010: 23(int16_t) Load 2009
+ 2011: 23(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2010
+ 2012: 1693(ptr) AccessChain 34(data) 2008 67 38
+ Store 2012 2011
+ 2013: 6(int) Load 8(invocation)
+ 2014: 1700(ptr) AccessChain 34(data) 46 67
+ 2015: 24(i16vec4) Load 2014
+ 2016:1699(i16vec2) VectorShuffle 2015 2015 0 1
+ 2017:1699(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2016
+ 2018: 1700(ptr) AccessChain 34(data) 2013 67
+ 2019: 24(i16vec4) Load 2018
+ 2020: 24(i16vec4) VectorShuffle 2019 2017 4 5 2 3
+ Store 2018 2020
+ 2021: 6(int) Load 8(invocation)
+ 2022: 1700(ptr) AccessChain 34(data) 57 67
+ 2023: 24(i16vec4) Load 2022
+ 2024:1709(i16vec3) VectorShuffle 2023 2023 0 1 2
+ 2025:1709(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2024
+ 2026: 1700(ptr) AccessChain 34(data) 2021 67
+ 2027: 24(i16vec4) Load 2026
+ 2028: 24(i16vec4) VectorShuffle 2027 2025 4 5 6 3
+ Store 2026 2028
+ 2029: 6(int) Load 8(invocation)
+ 2030: 1700(ptr) AccessChain 34(data) 67 67
+ 2031: 24(i16vec4) Load 2030
+ 2032: 24(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2031
+ 2033: 1700(ptr) AccessChain 34(data) 2029 67
+ Store 2033 2032
+ 2034: 6(int) Load 8(invocation)
+ 2035: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2036: 23(int16_t) Load 2035
+ 2037: 23(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2036
+ 2038: 1693(ptr) AccessChain 34(data) 2034 67 38
+ Store 2038 2037
+ 2039: 6(int) Load 8(invocation)
+ 2040: 1700(ptr) AccessChain 34(data) 46 67
+ 2041: 24(i16vec4) Load 2040
+ 2042:1699(i16vec2) VectorShuffle 2041 2041 0 1
+ 2043:1699(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2042
+ 2044: 1700(ptr) AccessChain 34(data) 2039 67
+ 2045: 24(i16vec4) Load 2044
+ 2046: 24(i16vec4) VectorShuffle 2045 2043 4 5 2 3
+ Store 2044 2046
+ 2047: 6(int) Load 8(invocation)
+ 2048: 1700(ptr) AccessChain 34(data) 57 67
+ 2049: 24(i16vec4) Load 2048
+ 2050:1709(i16vec3) VectorShuffle 2049 2049 0 1 2
+ 2051:1709(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2050
+ 2052: 1700(ptr) AccessChain 34(data) 2047 67
+ 2053: 24(i16vec4) Load 2052
+ 2054: 24(i16vec4) VectorShuffle 2053 2051 4 5 6 3
+ Store 2052 2054
+ 2055: 6(int) Load 8(invocation)
+ 2056: 1700(ptr) AccessChain 34(data) 67 67
+ 2057: 24(i16vec4) Load 2056
+ 2058: 24(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2057
+ 2059: 1700(ptr) AccessChain 34(data) 2055 67
+ Store 2059 2058
+ 2060: 6(int) Load 8(invocation)
+ 2061: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2062: 23(int16_t) Load 2061
+ 2063: 23(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 2062
+ 2064: 1693(ptr) AccessChain 34(data) 2060 67 38
+ Store 2064 2063
+ 2065: 6(int) Load 8(invocation)
+ 2066: 1700(ptr) AccessChain 34(data) 46 67
+ 2067: 24(i16vec4) Load 2066
+ 2068:1699(i16vec2) VectorShuffle 2067 2067 0 1
+ 2069:1699(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 2068
+ 2070: 1700(ptr) AccessChain 34(data) 2065 67
+ 2071: 24(i16vec4) Load 2070
+ 2072: 24(i16vec4) VectorShuffle 2071 2069 4 5 2 3
+ Store 2070 2072
+ 2073: 6(int) Load 8(invocation)
+ 2074: 1700(ptr) AccessChain 34(data) 57 67
+ 2075: 24(i16vec4) Load 2074
+ 2076:1709(i16vec3) VectorShuffle 2075 2075 0 1 2
+ 2077:1709(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 2076
+ 2078: 1700(ptr) AccessChain 34(data) 2073 67
+ 2079: 24(i16vec4) Load 2078
+ 2080: 24(i16vec4) VectorShuffle 2079 2077 4 5 6 3
+ Store 2078 2080
+ 2081: 6(int) Load 8(invocation)
+ 2082: 1700(ptr) AccessChain 34(data) 67 67
+ 2083: 24(i16vec4) Load 2082
+ 2084: 24(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 2083
+ 2085: 1700(ptr) AccessChain 34(data) 2081 67
+ Store 2085 2084
+ 2086: 6(int) Load 8(invocation)
+ 2087: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2088: 23(int16_t) Load 2087
+ 2089: 23(int16_t) GroupNonUniformIMul 42 ExclusiveScan 2088
+ 2090: 1693(ptr) AccessChain 34(data) 2086 67 38
+ Store 2090 2089
+ 2091: 6(int) Load 8(invocation)
+ 2092: 1700(ptr) AccessChain 34(data) 46 67
+ 2093: 24(i16vec4) Load 2092
+ 2094:1699(i16vec2) VectorShuffle 2093 2093 0 1
+ 2095:1699(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 2094
+ 2096: 1700(ptr) AccessChain 34(data) 2091 67
+ 2097: 24(i16vec4) Load 2096
+ 2098: 24(i16vec4) VectorShuffle 2097 2095 4 5 2 3
+ Store 2096 2098
+ 2099: 6(int) Load 8(invocation)
+ 2100: 1700(ptr) AccessChain 34(data) 57 67
+ 2101: 24(i16vec4) Load 2100
+ 2102:1709(i16vec3) VectorShuffle 2101 2101 0 1 2
+ 2103:1709(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 2102
+ 2104: 1700(ptr) AccessChain 34(data) 2099 67
+ 2105: 24(i16vec4) Load 2104
+ 2106: 24(i16vec4) VectorShuffle 2105 2103 4 5 6 3
+ Store 2104 2106
+ 2107: 6(int) Load 8(invocation)
+ 2108: 1700(ptr) AccessChain 34(data) 67 67
+ 2109: 24(i16vec4) Load 2108
+ 2110: 24(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 2109
+ 2111: 1700(ptr) AccessChain 34(data) 2107 67
+ Store 2111 2110
+ 2112: 6(int) Load 8(invocation)
+ 2113: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2114: 23(int16_t) Load 2113
+ 2115: 23(int16_t) GroupNonUniformUMin 42 ExclusiveScan 2114
+ 2116: 1693(ptr) AccessChain 34(data) 2112 67 38
+ Store 2116 2115
+ 2117: 6(int) Load 8(invocation)
+ 2118: 1700(ptr) AccessChain 34(data) 46 67
+ 2119: 24(i16vec4) Load 2118
+ 2120:1699(i16vec2) VectorShuffle 2119 2119 0 1
+ 2121:1699(i16vec2) GroupNonUniformUMin 42 ExclusiveScan 2120
+ 2122: 1700(ptr) AccessChain 34(data) 2117 67
+ 2123: 24(i16vec4) Load 2122
+ 2124: 24(i16vec4) VectorShuffle 2123 2121 4 5 2 3
+ Store 2122 2124
+ 2125: 6(int) Load 8(invocation)
+ 2126: 1700(ptr) AccessChain 34(data) 57 67
+ 2127: 24(i16vec4) Load 2126
+ 2128:1709(i16vec3) VectorShuffle 2127 2127 0 1 2
+ 2129:1709(i16vec3) GroupNonUniformUMin 42 ExclusiveScan 2128
+ 2130: 1700(ptr) AccessChain 34(data) 2125 67
+ 2131: 24(i16vec4) Load 2130
+ 2132: 24(i16vec4) VectorShuffle 2131 2129 4 5 6 3
+ Store 2130 2132
+ 2133: 6(int) Load 8(invocation)
+ 2134: 1700(ptr) AccessChain 34(data) 67 67
+ 2135: 24(i16vec4) Load 2134
+ 2136: 24(i16vec4) GroupNonUniformUMin 42 ExclusiveScan 2135
+ 2137: 1700(ptr) AccessChain 34(data) 2133 67
+ Store 2137 2136
+ 2138: 6(int) Load 8(invocation)
+ 2139: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2140: 23(int16_t) Load 2139
+ 2141: 23(int16_t) GroupNonUniformUMax 42 ExclusiveScan 2140
+ 2142: 1693(ptr) AccessChain 34(data) 2138 67 38
+ Store 2142 2141
+ 2143: 6(int) Load 8(invocation)
+ 2144: 1700(ptr) AccessChain 34(data) 46 67
+ 2145: 24(i16vec4) Load 2144
+ 2146:1699(i16vec2) VectorShuffle 2145 2145 0 1
+ 2147:1699(i16vec2) GroupNonUniformUMax 42 ExclusiveScan 2146
+ 2148: 1700(ptr) AccessChain 34(data) 2143 67
+ 2149: 24(i16vec4) Load 2148
+ 2150: 24(i16vec4) VectorShuffle 2149 2147 4 5 2 3
+ Store 2148 2150
+ 2151: 6(int) Load 8(invocation)
+ 2152: 1700(ptr) AccessChain 34(data) 57 67
+ 2153: 24(i16vec4) Load 2152
+ 2154:1709(i16vec3) VectorShuffle 2153 2153 0 1 2
+ 2155:1709(i16vec3) GroupNonUniformUMax 42 ExclusiveScan 2154
+ 2156: 1700(ptr) AccessChain 34(data) 2151 67
+ 2157: 24(i16vec4) Load 2156
+ 2158: 24(i16vec4) VectorShuffle 2157 2155 4 5 6 3
+ Store 2156 2158
+ 2159: 6(int) Load 8(invocation)
+ 2160: 1700(ptr) AccessChain 34(data) 67 67
+ 2161: 24(i16vec4) Load 2160
+ 2162: 24(i16vec4) GroupNonUniformUMax 42 ExclusiveScan 2161
+ 2163: 1700(ptr) AccessChain 34(data) 2159 67
+ Store 2163 2162
+ 2164: 6(int) Load 8(invocation)
+ 2165: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2166: 23(int16_t) Load 2165
+ 2167: 23(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2166
+ 2168: 1693(ptr) AccessChain 34(data) 2164 67 38
+ Store 2168 2167
+ 2169: 6(int) Load 8(invocation)
+ 2170: 1700(ptr) AccessChain 34(data) 46 67
+ 2171: 24(i16vec4) Load 2170
+ 2172:1699(i16vec2) VectorShuffle 2171 2171 0 1
+ 2173:1699(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2172
+ 2174: 1700(ptr) AccessChain 34(data) 2169 67
+ 2175: 24(i16vec4) Load 2174
+ 2176: 24(i16vec4) VectorShuffle 2175 2173 4 5 2 3
+ Store 2174 2176
+ 2177: 6(int) Load 8(invocation)
+ 2178: 1700(ptr) AccessChain 34(data) 57 67
+ 2179: 24(i16vec4) Load 2178
+ 2180:1709(i16vec3) VectorShuffle 2179 2179 0 1 2
+ 2181:1709(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2180
+ 2182: 1700(ptr) AccessChain 34(data) 2177 67
+ 2183: 24(i16vec4) Load 2182
+ 2184: 24(i16vec4) VectorShuffle 2183 2181 4 5 6 3
+ Store 2182 2184
+ 2185: 6(int) Load 8(invocation)
+ 2186: 1700(ptr) AccessChain 34(data) 67 67
+ 2187: 24(i16vec4) Load 2186
+ 2188: 24(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2187
+ 2189: 1700(ptr) AccessChain 34(data) 2185 67
+ Store 2189 2188
+ 2190: 6(int) Load 8(invocation)
+ 2191: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2192: 23(int16_t) Load 2191
+ 2193: 23(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2192
+ 2194: 1693(ptr) AccessChain 34(data) 2190 67 38
+ Store 2194 2193
+ 2195: 6(int) Load 8(invocation)
+ 2196: 1700(ptr) AccessChain 34(data) 46 67
+ 2197: 24(i16vec4) Load 2196
+ 2198:1699(i16vec2) VectorShuffle 2197 2197 0 1
+ 2199:1699(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2198
+ 2200: 1700(ptr) AccessChain 34(data) 2195 67
+ 2201: 24(i16vec4) Load 2200
+ 2202: 24(i16vec4) VectorShuffle 2201 2199 4 5 2 3
+ Store 2200 2202
+ 2203: 6(int) Load 8(invocation)
+ 2204: 1700(ptr) AccessChain 34(data) 57 67
+ 2205: 24(i16vec4) Load 2204
+ 2206:1709(i16vec3) VectorShuffle 2205 2205 0 1 2
+ 2207:1709(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2206
+ 2208: 1700(ptr) AccessChain 34(data) 2203 67
+ 2209: 24(i16vec4) Load 2208
+ 2210: 24(i16vec4) VectorShuffle 2209 2207 4 5 6 3
+ Store 2208 2210
+ 2211: 6(int) Load 8(invocation)
+ 2212: 1700(ptr) AccessChain 34(data) 67 67
+ 2213: 24(i16vec4) Load 2212
+ 2214: 24(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2213
+ 2215: 1700(ptr) AccessChain 34(data) 2211 67
+ Store 2215 2214
+ 2216: 6(int) Load 8(invocation)
+ 2217: 1693(ptr) AccessChain 34(data) 37 67 38
+ 2218: 23(int16_t) Load 2217
+ 2219: 23(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2218
+ 2220: 1693(ptr) AccessChain 34(data) 2216 67 38
+ Store 2220 2219
+ 2221: 6(int) Load 8(invocation)
+ 2222: 1700(ptr) AccessChain 34(data) 46 67
+ 2223: 24(i16vec4) Load 2222
+ 2224:1699(i16vec2) VectorShuffle 2223 2223 0 1
+ 2225:1699(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2224
+ 2226: 1700(ptr) AccessChain 34(data) 2221 67
+ 2227: 24(i16vec4) Load 2226
+ 2228: 24(i16vec4) VectorShuffle 2227 2225 4 5 2 3
+ Store 2226 2228
+ 2229: 6(int) Load 8(invocation)
+ 2230: 1700(ptr) AccessChain 34(data) 57 67
+ 2231: 24(i16vec4) Load 2230
+ 2232:1709(i16vec3) VectorShuffle 2231 2231 0 1 2
+ 2233:1709(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2232
+ 2234: 1700(ptr) AccessChain 34(data) 2229 67
+ 2235: 24(i16vec4) Load 2234
+ 2236: 24(i16vec4) VectorShuffle 2235 2233 4 5 6 3
+ Store 2234 2236
+ 2237: 6(int) Load 8(invocation)
+ 2238: 1700(ptr) AccessChain 34(data) 67 67
+ 2239: 24(i16vec4) Load 2238
+ 2240: 24(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2239
+ 2241: 1700(ptr) AccessChain 34(data) 2237 67
+ Store 2241 2240
+ 2242: 6(int) Load 8(invocation)
+ 2245: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2246: 25(int64_t) Load 2245
+ 2247: 25(int64_t) GroupNonUniformIAdd 42 Reduce 2246
+ 2248: 2244(ptr) AccessChain 34(data) 2242 2243 38
+ Store 2248 2247
+ 2249: 6(int) Load 8(invocation)
+ 2252: 2251(ptr) AccessChain 34(data) 46 2243
+ 2253: 26(i64vec4) Load 2252
+ 2254:2250(i64vec2) VectorShuffle 2253 2253 0 1
+ 2255:2250(i64vec2) GroupNonUniformIAdd 42 Reduce 2254
+ 2256: 2251(ptr) AccessChain 34(data) 2249 2243
+ 2257: 26(i64vec4) Load 2256
+ 2258: 26(i64vec4) VectorShuffle 2257 2255 4 5 2 3
+ Store 2256 2258
+ 2259: 6(int) Load 8(invocation)
+ 2261: 2251(ptr) AccessChain 34(data) 57 2243
+ 2262: 26(i64vec4) Load 2261
+ 2263:2260(i64vec3) VectorShuffle 2262 2262 0 1 2
+ 2264:2260(i64vec3) GroupNonUniformIAdd 42 Reduce 2263
+ 2265: 2251(ptr) AccessChain 34(data) 2259 2243
+ 2266: 26(i64vec4) Load 2265
+ 2267: 26(i64vec4) VectorShuffle 2266 2264 4 5 6 3
+ Store 2265 2267
+ 2268: 6(int) Load 8(invocation)
+ 2269: 2251(ptr) AccessChain 34(data) 67 2243
+ 2270: 26(i64vec4) Load 2269
+ 2271: 26(i64vec4) GroupNonUniformIAdd 42 Reduce 2270
+ 2272: 2251(ptr) AccessChain 34(data) 2268 2243
+ Store 2272 2271
+ 2273: 6(int) Load 8(invocation)
+ 2274: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2275: 25(int64_t) Load 2274
+ 2276: 25(int64_t) GroupNonUniformIMul 42 Reduce 2275
+ 2277: 2244(ptr) AccessChain 34(data) 2273 2243 38
+ Store 2277 2276
+ 2278: 6(int) Load 8(invocation)
+ 2279: 2251(ptr) AccessChain 34(data) 46 2243
+ 2280: 26(i64vec4) Load 2279
+ 2281:2250(i64vec2) VectorShuffle 2280 2280 0 1
+ 2282:2250(i64vec2) GroupNonUniformIMul 42 Reduce 2281
+ 2283: 2251(ptr) AccessChain 34(data) 2278 2243
+ 2284: 26(i64vec4) Load 2283
+ 2285: 26(i64vec4) VectorShuffle 2284 2282 4 5 2 3
+ Store 2283 2285
+ 2286: 6(int) Load 8(invocation)
+ 2287: 2251(ptr) AccessChain 34(data) 57 2243
+ 2288: 26(i64vec4) Load 2287
+ 2289:2260(i64vec3) VectorShuffle 2288 2288 0 1 2
+ 2290:2260(i64vec3) GroupNonUniformIMul 42 Reduce 2289
+ 2291: 2251(ptr) AccessChain 34(data) 2286 2243
+ 2292: 26(i64vec4) Load 2291
+ 2293: 26(i64vec4) VectorShuffle 2292 2290 4 5 6 3
+ Store 2291 2293
+ 2294: 6(int) Load 8(invocation)
+ 2295: 2251(ptr) AccessChain 34(data) 67 2243
+ 2296: 26(i64vec4) Load 2295
+ 2297: 26(i64vec4) GroupNonUniformIMul 42 Reduce 2296
+ 2298: 2251(ptr) AccessChain 34(data) 2294 2243
+ Store 2298 2297
+ 2299: 6(int) Load 8(invocation)
+ 2300: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2301: 25(int64_t) Load 2300
+ 2302: 25(int64_t) GroupNonUniformSMin 42 Reduce 2301
+ 2303: 2244(ptr) AccessChain 34(data) 2299 2243 38
+ Store 2303 2302
+ 2304: 6(int) Load 8(invocation)
+ 2305: 2251(ptr) AccessChain 34(data) 46 2243
+ 2306: 26(i64vec4) Load 2305
+ 2307:2250(i64vec2) VectorShuffle 2306 2306 0 1
+ 2308:2250(i64vec2) GroupNonUniformSMin 42 Reduce 2307
+ 2309: 2251(ptr) AccessChain 34(data) 2304 2243
+ 2310: 26(i64vec4) Load 2309
+ 2311: 26(i64vec4) VectorShuffle 2310 2308 4 5 2 3
+ Store 2309 2311
+ 2312: 6(int) Load 8(invocation)
+ 2313: 2251(ptr) AccessChain 34(data) 57 2243
+ 2314: 26(i64vec4) Load 2313
+ 2315:2260(i64vec3) VectorShuffle 2314 2314 0 1 2
+ 2316:2260(i64vec3) GroupNonUniformSMin 42 Reduce 2315
+ 2317: 2251(ptr) AccessChain 34(data) 2312 2243
+ 2318: 26(i64vec4) Load 2317
+ 2319: 26(i64vec4) VectorShuffle 2318 2316 4 5 6 3
+ Store 2317 2319
+ 2320: 6(int) Load 8(invocation)
+ 2321: 2251(ptr) AccessChain 34(data) 67 2243
+ 2322: 26(i64vec4) Load 2321
+ 2323: 26(i64vec4) GroupNonUniformSMin 42 Reduce 2322
+ 2324: 2251(ptr) AccessChain 34(data) 2320 2243
+ Store 2324 2323
+ 2325: 6(int) Load 8(invocation)
+ 2326: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2327: 25(int64_t) Load 2326
+ 2328: 25(int64_t) GroupNonUniformSMax 42 Reduce 2327
+ 2329: 2244(ptr) AccessChain 34(data) 2325 2243 38
+ Store 2329 2328
+ 2330: 6(int) Load 8(invocation)
+ 2331: 2251(ptr) AccessChain 34(data) 46 2243
+ 2332: 26(i64vec4) Load 2331
+ 2333:2250(i64vec2) VectorShuffle 2332 2332 0 1
+ 2334:2250(i64vec2) GroupNonUniformSMax 42 Reduce 2333
+ 2335: 2251(ptr) AccessChain 34(data) 2330 2243
+ 2336: 26(i64vec4) Load 2335
+ 2337: 26(i64vec4) VectorShuffle 2336 2334 4 5 2 3
+ Store 2335 2337
+ 2338: 6(int) Load 8(invocation)
+ 2339: 2251(ptr) AccessChain 34(data) 57 2243
+ 2340: 26(i64vec4) Load 2339
+ 2341:2260(i64vec3) VectorShuffle 2340 2340 0 1 2
+ 2342:2260(i64vec3) GroupNonUniformSMax 42 Reduce 2341
+ 2343: 2251(ptr) AccessChain 34(data) 2338 2243
+ 2344: 26(i64vec4) Load 2343
+ 2345: 26(i64vec4) VectorShuffle 2344 2342 4 5 6 3
+ Store 2343 2345
+ 2346: 6(int) Load 8(invocation)
+ 2347: 2251(ptr) AccessChain 34(data) 67 2243
+ 2348: 26(i64vec4) Load 2347
+ 2349: 26(i64vec4) GroupNonUniformSMax 42 Reduce 2348
+ 2350: 2251(ptr) AccessChain 34(data) 2346 2243
+ Store 2350 2349
+ 2351: 6(int) Load 8(invocation)
+ 2352: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2353: 25(int64_t) Load 2352
+ 2354: 25(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2353
+ 2355: 2244(ptr) AccessChain 34(data) 2351 2243 38
+ Store 2355 2354
+ 2356: 6(int) Load 8(invocation)
+ 2357: 2251(ptr) AccessChain 34(data) 46 2243
+ 2358: 26(i64vec4) Load 2357
+ 2359:2250(i64vec2) VectorShuffle 2358 2358 0 1
+ 2360:2250(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2359
+ 2361: 2251(ptr) AccessChain 34(data) 2356 2243
+ 2362: 26(i64vec4) Load 2361
+ 2363: 26(i64vec4) VectorShuffle 2362 2360 4 5 2 3
+ Store 2361 2363
+ 2364: 6(int) Load 8(invocation)
+ 2365: 2251(ptr) AccessChain 34(data) 57 2243
+ 2366: 26(i64vec4) Load 2365
+ 2367:2260(i64vec3) VectorShuffle 2366 2366 0 1 2
+ 2368:2260(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2367
+ 2369: 2251(ptr) AccessChain 34(data) 2364 2243
+ 2370: 26(i64vec4) Load 2369
+ 2371: 26(i64vec4) VectorShuffle 2370 2368 4 5 6 3
+ Store 2369 2371
+ 2372: 6(int) Load 8(invocation)
+ 2373: 2251(ptr) AccessChain 34(data) 67 2243
+ 2374: 26(i64vec4) Load 2373
+ 2375: 26(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2374
+ 2376: 2251(ptr) AccessChain 34(data) 2372 2243
+ Store 2376 2375
+ 2377: 6(int) Load 8(invocation)
+ 2378: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2379: 25(int64_t) Load 2378
+ 2380: 25(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2379
+ 2381: 2244(ptr) AccessChain 34(data) 2377 2243 38
+ Store 2381 2380
+ 2382: 6(int) Load 8(invocation)
+ 2383: 2251(ptr) AccessChain 34(data) 46 2243
+ 2384: 26(i64vec4) Load 2383
+ 2385:2250(i64vec2) VectorShuffle 2384 2384 0 1
+ 2386:2250(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2385
+ 2387: 2251(ptr) AccessChain 34(data) 2382 2243
+ 2388: 26(i64vec4) Load 2387
+ 2389: 26(i64vec4) VectorShuffle 2388 2386 4 5 2 3
+ Store 2387 2389
+ 2390: 6(int) Load 8(invocation)
+ 2391: 2251(ptr) AccessChain 34(data) 57 2243
+ 2392: 26(i64vec4) Load 2391
+ 2393:2260(i64vec3) VectorShuffle 2392 2392 0 1 2
+ 2394:2260(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2393
+ 2395: 2251(ptr) AccessChain 34(data) 2390 2243
+ 2396: 26(i64vec4) Load 2395
+ 2397: 26(i64vec4) VectorShuffle 2396 2394 4 5 6 3
+ Store 2395 2397
+ 2398: 6(int) Load 8(invocation)
+ 2399: 2251(ptr) AccessChain 34(data) 67 2243
+ 2400: 26(i64vec4) Load 2399
+ 2401: 26(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2400
+ 2402: 2251(ptr) AccessChain 34(data) 2398 2243
+ Store 2402 2401
+ 2403: 6(int) Load 8(invocation)
+ 2404: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2405: 25(int64_t) Load 2404
+ 2406: 25(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2405
+ 2407: 2244(ptr) AccessChain 34(data) 2403 2243 38
+ Store 2407 2406
+ 2408: 6(int) Load 8(invocation)
+ 2409: 2251(ptr) AccessChain 34(data) 46 2243
+ 2410: 26(i64vec4) Load 2409
+ 2411:2250(i64vec2) VectorShuffle 2410 2410 0 1
+ 2412:2250(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2411
+ 2413: 2251(ptr) AccessChain 34(data) 2408 2243
+ 2414: 26(i64vec4) Load 2413
+ 2415: 26(i64vec4) VectorShuffle 2414 2412 4 5 2 3
+ Store 2413 2415
+ 2416: 6(int) Load 8(invocation)
+ 2417: 2251(ptr) AccessChain 34(data) 57 2243
+ 2418: 26(i64vec4) Load 2417
+ 2419:2260(i64vec3) VectorShuffle 2418 2418 0 1 2
+ 2420:2260(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2419
+ 2421: 2251(ptr) AccessChain 34(data) 2416 2243
+ 2422: 26(i64vec4) Load 2421
+ 2423: 26(i64vec4) VectorShuffle 2422 2420 4 5 6 3
+ Store 2421 2423
+ 2424: 6(int) Load 8(invocation)
+ 2425: 2251(ptr) AccessChain 34(data) 67 2243
+ 2426: 26(i64vec4) Load 2425
+ 2427: 26(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2426
+ 2428: 2251(ptr) AccessChain 34(data) 2424 2243
+ Store 2428 2427
+ 2429: 6(int) Load 8(invocation)
+ 2430: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2431: 25(int64_t) Load 2430
+ 2432: 25(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2431
+ 2433: 2244(ptr) AccessChain 34(data) 2429 2243 38
+ Store 2433 2432
+ 2434: 6(int) Load 8(invocation)
+ 2435: 2251(ptr) AccessChain 34(data) 46 2243
+ 2436: 26(i64vec4) Load 2435
+ 2437:2250(i64vec2) VectorShuffle 2436 2436 0 1
+ 2438:2250(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2437
+ 2439: 2251(ptr) AccessChain 34(data) 2434 2243
+ 2440: 26(i64vec4) Load 2439
+ 2441: 26(i64vec4) VectorShuffle 2440 2438 4 5 2 3
+ Store 2439 2441
+ 2442: 6(int) Load 8(invocation)
+ 2443: 2251(ptr) AccessChain 34(data) 57 2243
+ 2444: 26(i64vec4) Load 2443
+ 2445:2260(i64vec3) VectorShuffle 2444 2444 0 1 2
+ 2446:2260(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2445
+ 2447: 2251(ptr) AccessChain 34(data) 2442 2243
+ 2448: 26(i64vec4) Load 2447
+ 2449: 26(i64vec4) VectorShuffle 2448 2446 4 5 6 3
+ Store 2447 2449
+ 2450: 6(int) Load 8(invocation)
+ 2451: 2251(ptr) AccessChain 34(data) 67 2243
+ 2452: 26(i64vec4) Load 2451
+ 2453: 26(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 2452
+ 2454: 2251(ptr) AccessChain 34(data) 2450 2243
+ Store 2454 2453
+ 2455: 6(int) Load 8(invocation)
+ 2456: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2457: 25(int64_t) Load 2456
+ 2458: 25(int64_t) GroupNonUniformIMul 42 InclusiveScan 2457
+ 2459: 2244(ptr) AccessChain 34(data) 2455 2243 38
+ Store 2459 2458
+ 2460: 6(int) Load 8(invocation)
+ 2461: 2251(ptr) AccessChain 34(data) 46 2243
+ 2462: 26(i64vec4) Load 2461
+ 2463:2250(i64vec2) VectorShuffle 2462 2462 0 1
+ 2464:2250(i64vec2) GroupNonUniformIMul 42 InclusiveScan 2463
+ 2465: 2251(ptr) AccessChain 34(data) 2460 2243
+ 2466: 26(i64vec4) Load 2465
+ 2467: 26(i64vec4) VectorShuffle 2466 2464 4 5 2 3
+ Store 2465 2467
+ 2468: 6(int) Load 8(invocation)
+ 2469: 2251(ptr) AccessChain 34(data) 57 2243
+ 2470: 26(i64vec4) Load 2469
+ 2471:2260(i64vec3) VectorShuffle 2470 2470 0 1 2
+ 2472:2260(i64vec3) GroupNonUniformIMul 42 InclusiveScan 2471
+ 2473: 2251(ptr) AccessChain 34(data) 2468 2243
+ 2474: 26(i64vec4) Load 2473
+ 2475: 26(i64vec4) VectorShuffle 2474 2472 4 5 6 3
+ Store 2473 2475
+ 2476: 6(int) Load 8(invocation)
+ 2477: 2251(ptr) AccessChain 34(data) 67 2243
+ 2478: 26(i64vec4) Load 2477
+ 2479: 26(i64vec4) GroupNonUniformIMul 42 InclusiveScan 2478
+ 2480: 2251(ptr) AccessChain 34(data) 2476 2243
+ Store 2480 2479
+ 2481: 6(int) Load 8(invocation)
+ 2482: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2483: 25(int64_t) Load 2482
+ 2484: 25(int64_t) GroupNonUniformSMin 42 InclusiveScan 2483
+ 2485: 2244(ptr) AccessChain 34(data) 2481 2243 38
+ Store 2485 2484
+ 2486: 6(int) Load 8(invocation)
+ 2487: 2251(ptr) AccessChain 34(data) 46 2243
+ 2488: 26(i64vec4) Load 2487
+ 2489:2250(i64vec2) VectorShuffle 2488 2488 0 1
+ 2490:2250(i64vec2) GroupNonUniformSMin 42 InclusiveScan 2489
+ 2491: 2251(ptr) AccessChain 34(data) 2486 2243
+ 2492: 26(i64vec4) Load 2491
+ 2493: 26(i64vec4) VectorShuffle 2492 2490 4 5 2 3
+ Store 2491 2493
+ 2494: 6(int) Load 8(invocation)
+ 2495: 2251(ptr) AccessChain 34(data) 57 2243
+ 2496: 26(i64vec4) Load 2495
+ 2497:2260(i64vec3) VectorShuffle 2496 2496 0 1 2
+ 2498:2260(i64vec3) GroupNonUniformSMin 42 InclusiveScan 2497
+ 2499: 2251(ptr) AccessChain 34(data) 2494 2243
+ 2500: 26(i64vec4) Load 2499
+ 2501: 26(i64vec4) VectorShuffle 2500 2498 4 5 6 3
+ Store 2499 2501
+ 2502: 6(int) Load 8(invocation)
+ 2503: 2251(ptr) AccessChain 34(data) 67 2243
+ 2504: 26(i64vec4) Load 2503
+ 2505: 26(i64vec4) GroupNonUniformSMin 42 InclusiveScan 2504
+ 2506: 2251(ptr) AccessChain 34(data) 2502 2243
+ Store 2506 2505
+ 2507: 6(int) Load 8(invocation)
+ 2508: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2509: 25(int64_t) Load 2508
+ 2510: 25(int64_t) GroupNonUniformSMax 42 InclusiveScan 2509
+ 2511: 2244(ptr) AccessChain 34(data) 2507 2243 38
+ Store 2511 2510
+ 2512: 6(int) Load 8(invocation)
+ 2513: 2251(ptr) AccessChain 34(data) 46 2243
+ 2514: 26(i64vec4) Load 2513
+ 2515:2250(i64vec2) VectorShuffle 2514 2514 0 1
+ 2516:2250(i64vec2) GroupNonUniformSMax 42 InclusiveScan 2515
+ 2517: 2251(ptr) AccessChain 34(data) 2512 2243
+ 2518: 26(i64vec4) Load 2517
+ 2519: 26(i64vec4) VectorShuffle 2518 2516 4 5 2 3
+ Store 2517 2519
+ 2520: 6(int) Load 8(invocation)
+ 2521: 2251(ptr) AccessChain 34(data) 57 2243
+ 2522: 26(i64vec4) Load 2521
+ 2523:2260(i64vec3) VectorShuffle 2522 2522 0 1 2
+ 2524:2260(i64vec3) GroupNonUniformSMax 42 InclusiveScan 2523
+ 2525: 2251(ptr) AccessChain 34(data) 2520 2243
+ 2526: 26(i64vec4) Load 2525
+ 2527: 26(i64vec4) VectorShuffle 2526 2524 4 5 6 3
+ Store 2525 2527
+ 2528: 6(int) Load 8(invocation)
+ 2529: 2251(ptr) AccessChain 34(data) 67 2243
+ 2530: 26(i64vec4) Load 2529
+ 2531: 26(i64vec4) GroupNonUniformSMax 42 InclusiveScan 2530
+ 2532: 2251(ptr) AccessChain 34(data) 2528 2243
+ Store 2532 2531
+ 2533: 6(int) Load 8(invocation)
+ 2534: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2535: 25(int64_t) Load 2534
+ 2536: 25(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2535
+ 2537: 2244(ptr) AccessChain 34(data) 2533 2243 38
+ Store 2537 2536
+ 2538: 6(int) Load 8(invocation)
+ 2539: 2251(ptr) AccessChain 34(data) 46 2243
+ 2540: 26(i64vec4) Load 2539
+ 2541:2250(i64vec2) VectorShuffle 2540 2540 0 1
+ 2542:2250(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2541
+ 2543: 2251(ptr) AccessChain 34(data) 2538 2243
+ 2544: 26(i64vec4) Load 2543
+ 2545: 26(i64vec4) VectorShuffle 2544 2542 4 5 2 3
+ Store 2543 2545
+ 2546: 6(int) Load 8(invocation)
+ 2547: 2251(ptr) AccessChain 34(data) 57 2243
+ 2548: 26(i64vec4) Load 2547
+ 2549:2260(i64vec3) VectorShuffle 2548 2548 0 1 2
+ 2550:2260(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2549
+ 2551: 2251(ptr) AccessChain 34(data) 2546 2243
+ 2552: 26(i64vec4) Load 2551
+ 2553: 26(i64vec4) VectorShuffle 2552 2550 4 5 6 3
+ Store 2551 2553
+ 2554: 6(int) Load 8(invocation)
+ 2555: 2251(ptr) AccessChain 34(data) 67 2243
+ 2556: 26(i64vec4) Load 2555
+ 2557: 26(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2556
+ 2558: 2251(ptr) AccessChain 34(data) 2554 2243
+ Store 2558 2557
+ 2559: 6(int) Load 8(invocation)
+ 2560: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2561: 25(int64_t) Load 2560
+ 2562: 25(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2561
+ 2563: 2244(ptr) AccessChain 34(data) 2559 2243 38
+ Store 2563 2562
+ 2564: 6(int) Load 8(invocation)
+ 2565: 2251(ptr) AccessChain 34(data) 46 2243
+ 2566: 26(i64vec4) Load 2565
+ 2567:2250(i64vec2) VectorShuffle 2566 2566 0 1
+ 2568:2250(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2567
+ 2569: 2251(ptr) AccessChain 34(data) 2564 2243
+ 2570: 26(i64vec4) Load 2569
+ 2571: 26(i64vec4) VectorShuffle 2570 2568 4 5 2 3
+ Store 2569 2571
+ 2572: 6(int) Load 8(invocation)
+ 2573: 2251(ptr) AccessChain 34(data) 57 2243
+ 2574: 26(i64vec4) Load 2573
+ 2575:2260(i64vec3) VectorShuffle 2574 2574 0 1 2
+ 2576:2260(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2575
+ 2577: 2251(ptr) AccessChain 34(data) 2572 2243
+ 2578: 26(i64vec4) Load 2577
+ 2579: 26(i64vec4) VectorShuffle 2578 2576 4 5 6 3
+ Store 2577 2579
+ 2580: 6(int) Load 8(invocation)
+ 2581: 2251(ptr) AccessChain 34(data) 67 2243
+ 2582: 26(i64vec4) Load 2581
+ 2583: 26(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2582
+ 2584: 2251(ptr) AccessChain 34(data) 2580 2243
+ Store 2584 2583
+ 2585: 6(int) Load 8(invocation)
+ 2586: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2587: 25(int64_t) Load 2586
+ 2588: 25(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2587
+ 2589: 2244(ptr) AccessChain 34(data) 2585 2243 38
+ Store 2589 2588
+ 2590: 6(int) Load 8(invocation)
+ 2591: 2251(ptr) AccessChain 34(data) 46 2243
+ 2592: 26(i64vec4) Load 2591
+ 2593:2250(i64vec2) VectorShuffle 2592 2592 0 1
+ 2594:2250(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2593
+ 2595: 2251(ptr) AccessChain 34(data) 2590 2243
+ 2596: 26(i64vec4) Load 2595
+ 2597: 26(i64vec4) VectorShuffle 2596 2594 4 5 2 3
+ Store 2595 2597
+ 2598: 6(int) Load 8(invocation)
+ 2599: 2251(ptr) AccessChain 34(data) 57 2243
+ 2600: 26(i64vec4) Load 2599
+ 2601:2260(i64vec3) VectorShuffle 2600 2600 0 1 2
+ 2602:2260(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2601
+ 2603: 2251(ptr) AccessChain 34(data) 2598 2243
+ 2604: 26(i64vec4) Load 2603
+ 2605: 26(i64vec4) VectorShuffle 2604 2602 4 5 6 3
+ Store 2603 2605
+ 2606: 6(int) Load 8(invocation)
+ 2607: 2251(ptr) AccessChain 34(data) 67 2243
+ 2608: 26(i64vec4) Load 2607
+ 2609: 26(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2608
+ 2610: 2251(ptr) AccessChain 34(data) 2606 2243
+ Store 2610 2609
+ 2611: 6(int) Load 8(invocation)
+ 2612: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2613: 25(int64_t) Load 2612
+ 2614: 25(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 2613
+ 2615: 2244(ptr) AccessChain 34(data) 2611 2243 38
+ Store 2615 2614
+ 2616: 6(int) Load 8(invocation)
+ 2617: 2251(ptr) AccessChain 34(data) 46 2243
+ 2618: 26(i64vec4) Load 2617
+ 2619:2250(i64vec2) VectorShuffle 2618 2618 0 1
+ 2620:2250(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 2619
+ 2621: 2251(ptr) AccessChain 34(data) 2616 2243
+ 2622: 26(i64vec4) Load 2621
+ 2623: 26(i64vec4) VectorShuffle 2622 2620 4 5 2 3
+ Store 2621 2623
+ 2624: 6(int) Load 8(invocation)
+ 2625: 2251(ptr) AccessChain 34(data) 57 2243
+ 2626: 26(i64vec4) Load 2625
+ 2627:2260(i64vec3) VectorShuffle 2626 2626 0 1 2
+ 2628:2260(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 2627
+ 2629: 2251(ptr) AccessChain 34(data) 2624 2243
+ 2630: 26(i64vec4) Load 2629
+ 2631: 26(i64vec4) VectorShuffle 2630 2628 4 5 6 3
+ Store 2629 2631
+ 2632: 6(int) Load 8(invocation)
+ 2633: 2251(ptr) AccessChain 34(data) 67 2243
+ 2634: 26(i64vec4) Load 2633
+ 2635: 26(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 2634
+ 2636: 2251(ptr) AccessChain 34(data) 2632 2243
+ Store 2636 2635
+ 2637: 6(int) Load 8(invocation)
+ 2638: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2639: 25(int64_t) Load 2638
+ 2640: 25(int64_t) GroupNonUniformIMul 42 ExclusiveScan 2639
+ 2641: 2244(ptr) AccessChain 34(data) 2637 2243 38
+ Store 2641 2640
+ 2642: 6(int) Load 8(invocation)
+ 2643: 2251(ptr) AccessChain 34(data) 46 2243
+ 2644: 26(i64vec4) Load 2643
+ 2645:2250(i64vec2) VectorShuffle 2644 2644 0 1
+ 2646:2250(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 2645
+ 2647: 2251(ptr) AccessChain 34(data) 2642 2243
+ 2648: 26(i64vec4) Load 2647
+ 2649: 26(i64vec4) VectorShuffle 2648 2646 4 5 2 3
+ Store 2647 2649
+ 2650: 6(int) Load 8(invocation)
+ 2651: 2251(ptr) AccessChain 34(data) 57 2243
+ 2652: 26(i64vec4) Load 2651
+ 2653:2260(i64vec3) VectorShuffle 2652 2652 0 1 2
+ 2654:2260(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 2653
+ 2655: 2251(ptr) AccessChain 34(data) 2650 2243
+ 2656: 26(i64vec4) Load 2655
+ 2657: 26(i64vec4) VectorShuffle 2656 2654 4 5 6 3
+ Store 2655 2657
+ 2658: 6(int) Load 8(invocation)
+ 2659: 2251(ptr) AccessChain 34(data) 67 2243
+ 2660: 26(i64vec4) Load 2659
+ 2661: 26(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 2660
+ 2662: 2251(ptr) AccessChain 34(data) 2658 2243
+ Store 2662 2661
+ 2663: 6(int) Load 8(invocation)
+ 2664: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2665: 25(int64_t) Load 2664
+ 2666: 25(int64_t) GroupNonUniformSMin 42 ExclusiveScan 2665
+ 2667: 2244(ptr) AccessChain 34(data) 2663 2243 38
+ Store 2667 2666
+ 2668: 6(int) Load 8(invocation)
+ 2669: 2251(ptr) AccessChain 34(data) 46 2243
+ 2670: 26(i64vec4) Load 2669
+ 2671:2250(i64vec2) VectorShuffle 2670 2670 0 1
+ 2672:2250(i64vec2) GroupNonUniformSMin 42 ExclusiveScan 2671
+ 2673: 2251(ptr) AccessChain 34(data) 2668 2243
+ 2674: 26(i64vec4) Load 2673
+ 2675: 26(i64vec4) VectorShuffle 2674 2672 4 5 2 3
+ Store 2673 2675
+ 2676: 6(int) Load 8(invocation)
+ 2677: 2251(ptr) AccessChain 34(data) 57 2243
+ 2678: 26(i64vec4) Load 2677
+ 2679:2260(i64vec3) VectorShuffle 2678 2678 0 1 2
+ 2680:2260(i64vec3) GroupNonUniformSMin 42 ExclusiveScan 2679
+ 2681: 2251(ptr) AccessChain 34(data) 2676 2243
+ 2682: 26(i64vec4) Load 2681
+ 2683: 26(i64vec4) VectorShuffle 2682 2680 4 5 6 3
+ Store 2681 2683
+ 2684: 6(int) Load 8(invocation)
+ 2685: 2251(ptr) AccessChain 34(data) 67 2243
+ 2686: 26(i64vec4) Load 2685
+ 2687: 26(i64vec4) GroupNonUniformSMin 42 ExclusiveScan 2686
+ 2688: 2251(ptr) AccessChain 34(data) 2684 2243
+ Store 2688 2687
+ 2689: 6(int) Load 8(invocation)
+ 2690: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2691: 25(int64_t) Load 2690
+ 2692: 25(int64_t) GroupNonUniformSMax 42 ExclusiveScan 2691
+ 2693: 2244(ptr) AccessChain 34(data) 2689 2243 38
+ Store 2693 2692
+ 2694: 6(int) Load 8(invocation)
+ 2695: 2251(ptr) AccessChain 34(data) 46 2243
+ 2696: 26(i64vec4) Load 2695
+ 2697:2250(i64vec2) VectorShuffle 2696 2696 0 1
+ 2698:2250(i64vec2) GroupNonUniformSMax 42 ExclusiveScan 2697
+ 2699: 2251(ptr) AccessChain 34(data) 2694 2243
+ 2700: 26(i64vec4) Load 2699
+ 2701: 26(i64vec4) VectorShuffle 2700 2698 4 5 2 3
+ Store 2699 2701
+ 2702: 6(int) Load 8(invocation)
+ 2703: 2251(ptr) AccessChain 34(data) 57 2243
+ 2704: 26(i64vec4) Load 2703
+ 2705:2260(i64vec3) VectorShuffle 2704 2704 0 1 2
+ 2706:2260(i64vec3) GroupNonUniformSMax 42 ExclusiveScan 2705
+ 2707: 2251(ptr) AccessChain 34(data) 2702 2243
+ 2708: 26(i64vec4) Load 2707
+ 2709: 26(i64vec4) VectorShuffle 2708 2706 4 5 6 3
+ Store 2707 2709
+ 2710: 6(int) Load 8(invocation)
+ 2711: 2251(ptr) AccessChain 34(data) 67 2243
+ 2712: 26(i64vec4) Load 2711
+ 2713: 26(i64vec4) GroupNonUniformSMax 42 ExclusiveScan 2712
+ 2714: 2251(ptr) AccessChain 34(data) 2710 2243
+ Store 2714 2713
+ 2715: 6(int) Load 8(invocation)
+ 2716: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2717: 25(int64_t) Load 2716
+ 2718: 25(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2717
+ 2719: 2244(ptr) AccessChain 34(data) 2715 2243 38
+ Store 2719 2718
+ 2720: 6(int) Load 8(invocation)
+ 2721: 2251(ptr) AccessChain 34(data) 46 2243
+ 2722: 26(i64vec4) Load 2721
+ 2723:2250(i64vec2) VectorShuffle 2722 2722 0 1
+ 2724:2250(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2723
+ 2725: 2251(ptr) AccessChain 34(data) 2720 2243
+ 2726: 26(i64vec4) Load 2725
+ 2727: 26(i64vec4) VectorShuffle 2726 2724 4 5 2 3
+ Store 2725 2727
+ 2728: 6(int) Load 8(invocation)
+ 2729: 2251(ptr) AccessChain 34(data) 57 2243
+ 2730: 26(i64vec4) Load 2729
+ 2731:2260(i64vec3) VectorShuffle 2730 2730 0 1 2
+ 2732:2260(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2731
+ 2733: 2251(ptr) AccessChain 34(data) 2728 2243
+ 2734: 26(i64vec4) Load 2733
+ 2735: 26(i64vec4) VectorShuffle 2734 2732 4 5 6 3
+ Store 2733 2735
+ 2736: 6(int) Load 8(invocation)
+ 2737: 2251(ptr) AccessChain 34(data) 67 2243
+ 2738: 26(i64vec4) Load 2737
+ 2739: 26(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2738
+ 2740: 2251(ptr) AccessChain 34(data) 2736 2243
+ Store 2740 2739
+ 2741: 6(int) Load 8(invocation)
+ 2742: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2743: 25(int64_t) Load 2742
+ 2744: 25(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2743
+ 2745: 2244(ptr) AccessChain 34(data) 2741 2243 38
+ Store 2745 2744
+ 2746: 6(int) Load 8(invocation)
+ 2747: 2251(ptr) AccessChain 34(data) 46 2243
+ 2748: 26(i64vec4) Load 2747
+ 2749:2250(i64vec2) VectorShuffle 2748 2748 0 1
+ 2750:2250(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2749
+ 2751: 2251(ptr) AccessChain 34(data) 2746 2243
+ 2752: 26(i64vec4) Load 2751
+ 2753: 26(i64vec4) VectorShuffle 2752 2750 4 5 2 3
+ Store 2751 2753
+ 2754: 6(int) Load 8(invocation)
+ 2755: 2251(ptr) AccessChain 34(data) 57 2243
+ 2756: 26(i64vec4) Load 2755
+ 2757:2260(i64vec3) VectorShuffle 2756 2756 0 1 2
+ 2758:2260(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2757
+ 2759: 2251(ptr) AccessChain 34(data) 2754 2243
+ 2760: 26(i64vec4) Load 2759
+ 2761: 26(i64vec4) VectorShuffle 2760 2758 4 5 6 3
+ Store 2759 2761
+ 2762: 6(int) Load 8(invocation)
+ 2763: 2251(ptr) AccessChain 34(data) 67 2243
+ 2764: 26(i64vec4) Load 2763
+ 2765: 26(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2764
+ 2766: 2251(ptr) AccessChain 34(data) 2762 2243
+ Store 2766 2765
+ 2767: 6(int) Load 8(invocation)
+ 2768: 2244(ptr) AccessChain 34(data) 37 2243 38
+ 2769: 25(int64_t) Load 2768
+ 2770: 25(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2769
+ 2771: 2244(ptr) AccessChain 34(data) 2767 2243 38
+ Store 2771 2770
+ 2772: 6(int) Load 8(invocation)
+ 2773: 2251(ptr) AccessChain 34(data) 46 2243
+ 2774: 26(i64vec4) Load 2773
+ 2775:2250(i64vec2) VectorShuffle 2774 2774 0 1
+ 2776:2250(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2775
+ 2777: 2251(ptr) AccessChain 34(data) 2772 2243
+ 2778: 26(i64vec4) Load 2777
+ 2779: 26(i64vec4) VectorShuffle 2778 2776 4 5 2 3
+ Store 2777 2779
+ 2780: 6(int) Load 8(invocation)
+ 2781: 2251(ptr) AccessChain 34(data) 57 2243
+ 2782: 26(i64vec4) Load 2781
+ 2783:2260(i64vec3) VectorShuffle 2782 2782 0 1 2
+ 2784:2260(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2783
+ 2785: 2251(ptr) AccessChain 34(data) 2780 2243
+ 2786: 26(i64vec4) Load 2785
+ 2787: 26(i64vec4) VectorShuffle 2786 2784 4 5 6 3
+ Store 2785 2787
+ 2788: 6(int) Load 8(invocation)
+ 2789: 2251(ptr) AccessChain 34(data) 67 2243
+ 2790: 26(i64vec4) Load 2789
+ 2791: 26(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2790
+ 2792: 2251(ptr) AccessChain 34(data) 2788 2243
+ Store 2792 2791
+ 2793: 6(int) Load 8(invocation)
+ 2796: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2797: 27(int64_t) Load 2796
+ 2798: 27(int64_t) GroupNonUniformIAdd 42 Reduce 2797
+ 2799: 2795(ptr) AccessChain 34(data) 2793 2794 38
+ Store 2799 2798
+ 2800: 6(int) Load 8(invocation)
+ 2803: 2802(ptr) AccessChain 34(data) 46 2794
+ 2804: 28(i64vec4) Load 2803
+ 2805:2801(i64vec2) VectorShuffle 2804 2804 0 1
+ 2806:2801(i64vec2) GroupNonUniformIAdd 42 Reduce 2805
+ 2807: 2802(ptr) AccessChain 34(data) 2800 2794
+ 2808: 28(i64vec4) Load 2807
+ 2809: 28(i64vec4) VectorShuffle 2808 2806 4 5 2 3
+ Store 2807 2809
+ 2810: 6(int) Load 8(invocation)
+ 2812: 2802(ptr) AccessChain 34(data) 57 2794
+ 2813: 28(i64vec4) Load 2812
+ 2814:2811(i64vec3) VectorShuffle 2813 2813 0 1 2
+ 2815:2811(i64vec3) GroupNonUniformIAdd 42 Reduce 2814
+ 2816: 2802(ptr) AccessChain 34(data) 2810 2794
+ 2817: 28(i64vec4) Load 2816
+ 2818: 28(i64vec4) VectorShuffle 2817 2815 4 5 6 3
+ Store 2816 2818
+ 2819: 6(int) Load 8(invocation)
+ 2820: 2802(ptr) AccessChain 34(data) 67 2794
+ 2821: 28(i64vec4) Load 2820
+ 2822: 28(i64vec4) GroupNonUniformIAdd 42 Reduce 2821
+ 2823: 2802(ptr) AccessChain 34(data) 2819 2794
+ Store 2823 2822
+ 2824: 6(int) Load 8(invocation)
+ 2825: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2826: 27(int64_t) Load 2825
+ 2827: 27(int64_t) GroupNonUniformIMul 42 Reduce 2826
+ 2828: 2795(ptr) AccessChain 34(data) 2824 2794 38
+ Store 2828 2827
+ 2829: 6(int) Load 8(invocation)
+ 2830: 2802(ptr) AccessChain 34(data) 46 2794
+ 2831: 28(i64vec4) Load 2830
+ 2832:2801(i64vec2) VectorShuffle 2831 2831 0 1
+ 2833:2801(i64vec2) GroupNonUniformIMul 42 Reduce 2832
+ 2834: 2802(ptr) AccessChain 34(data) 2829 2794
+ 2835: 28(i64vec4) Load 2834
+ 2836: 28(i64vec4) VectorShuffle 2835 2833 4 5 2 3
+ Store 2834 2836
+ 2837: 6(int) Load 8(invocation)
+ 2838: 2802(ptr) AccessChain 34(data) 57 2794
+ 2839: 28(i64vec4) Load 2838
+ 2840:2811(i64vec3) VectorShuffle 2839 2839 0 1 2
+ 2841:2811(i64vec3) GroupNonUniformIMul 42 Reduce 2840
+ 2842: 2802(ptr) AccessChain 34(data) 2837 2794
+ 2843: 28(i64vec4) Load 2842
+ 2844: 28(i64vec4) VectorShuffle 2843 2841 4 5 6 3
+ Store 2842 2844
+ 2845: 6(int) Load 8(invocation)
+ 2846: 2802(ptr) AccessChain 34(data) 67 2794
+ 2847: 28(i64vec4) Load 2846
+ 2848: 28(i64vec4) GroupNonUniformIMul 42 Reduce 2847
+ 2849: 2802(ptr) AccessChain 34(data) 2845 2794
+ Store 2849 2848
+ 2850: 6(int) Load 8(invocation)
+ 2851: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2852: 27(int64_t) Load 2851
+ 2853: 27(int64_t) GroupNonUniformUMin 42 Reduce 2852
+ 2854: 2795(ptr) AccessChain 34(data) 2850 2794 38
+ Store 2854 2853
+ 2855: 6(int) Load 8(invocation)
+ 2856: 2802(ptr) AccessChain 34(data) 46 2794
+ 2857: 28(i64vec4) Load 2856
+ 2858:2801(i64vec2) VectorShuffle 2857 2857 0 1
+ 2859:2801(i64vec2) GroupNonUniformUMin 42 Reduce 2858
+ 2860: 2802(ptr) AccessChain 34(data) 2855 2794
+ 2861: 28(i64vec4) Load 2860
+ 2862: 28(i64vec4) VectorShuffle 2861 2859 4 5 2 3
+ Store 2860 2862
+ 2863: 6(int) Load 8(invocation)
+ 2864: 2802(ptr) AccessChain 34(data) 57 2794
+ 2865: 28(i64vec4) Load 2864
+ 2866:2811(i64vec3) VectorShuffle 2865 2865 0 1 2
+ 2867:2811(i64vec3) GroupNonUniformUMin 42 Reduce 2866
+ 2868: 2802(ptr) AccessChain 34(data) 2863 2794
+ 2869: 28(i64vec4) Load 2868
+ 2870: 28(i64vec4) VectorShuffle 2869 2867 4 5 6 3
+ Store 2868 2870
+ 2871: 6(int) Load 8(invocation)
+ 2872: 2802(ptr) AccessChain 34(data) 67 2794
+ 2873: 28(i64vec4) Load 2872
+ 2874: 28(i64vec4) GroupNonUniformUMin 42 Reduce 2873
+ 2875: 2802(ptr) AccessChain 34(data) 2871 2794
+ Store 2875 2874
+ 2876: 6(int) Load 8(invocation)
+ 2877: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2878: 27(int64_t) Load 2877
+ 2879: 27(int64_t) GroupNonUniformUMax 42 Reduce 2878
+ 2880: 2795(ptr) AccessChain 34(data) 2876 2794 38
+ Store 2880 2879
+ 2881: 6(int) Load 8(invocation)
+ 2882: 2802(ptr) AccessChain 34(data) 46 2794
+ 2883: 28(i64vec4) Load 2882
+ 2884:2801(i64vec2) VectorShuffle 2883 2883 0 1
+ 2885:2801(i64vec2) GroupNonUniformUMax 42 Reduce 2884
+ 2886: 2802(ptr) AccessChain 34(data) 2881 2794
+ 2887: 28(i64vec4) Load 2886
+ 2888: 28(i64vec4) VectorShuffle 2887 2885 4 5 2 3
+ Store 2886 2888
+ 2889: 6(int) Load 8(invocation)
+ 2890: 2802(ptr) AccessChain 34(data) 57 2794
+ 2891: 28(i64vec4) Load 2890
+ 2892:2811(i64vec3) VectorShuffle 2891 2891 0 1 2
+ 2893:2811(i64vec3) GroupNonUniformUMax 42 Reduce 2892
+ 2894: 2802(ptr) AccessChain 34(data) 2889 2794
+ 2895: 28(i64vec4) Load 2894
+ 2896: 28(i64vec4) VectorShuffle 2895 2893 4 5 6 3
+ Store 2894 2896
+ 2897: 6(int) Load 8(invocation)
+ 2898: 2802(ptr) AccessChain 34(data) 67 2794
+ 2899: 28(i64vec4) Load 2898
+ 2900: 28(i64vec4) GroupNonUniformUMax 42 Reduce 2899
+ 2901: 2802(ptr) AccessChain 34(data) 2897 2794
+ Store 2901 2900
+ 2902: 6(int) Load 8(invocation)
+ 2903: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2904: 27(int64_t) Load 2903
+ 2905: 27(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2904
+ 2906: 2795(ptr) AccessChain 34(data) 2902 2794 38
+ Store 2906 2905
+ 2907: 6(int) Load 8(invocation)
+ 2908: 2802(ptr) AccessChain 34(data) 46 2794
+ 2909: 28(i64vec4) Load 2908
+ 2910:2801(i64vec2) VectorShuffle 2909 2909 0 1
+ 2911:2801(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2910
+ 2912: 2802(ptr) AccessChain 34(data) 2907 2794
+ 2913: 28(i64vec4) Load 2912
+ 2914: 28(i64vec4) VectorShuffle 2913 2911 4 5 2 3
+ Store 2912 2914
+ 2915: 6(int) Load 8(invocation)
+ 2916: 2802(ptr) AccessChain 34(data) 57 2794
+ 2917: 28(i64vec4) Load 2916
+ 2918:2811(i64vec3) VectorShuffle 2917 2917 0 1 2
+ 2919:2811(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2918
+ 2920: 2802(ptr) AccessChain 34(data) 2915 2794
+ 2921: 28(i64vec4) Load 2920
+ 2922: 28(i64vec4) VectorShuffle 2921 2919 4 5 6 3
+ Store 2920 2922
+ 2923: 6(int) Load 8(invocation)
+ 2924: 2802(ptr) AccessChain 34(data) 67 2794
+ 2925: 28(i64vec4) Load 2924
+ 2926: 28(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2925
+ 2927: 2802(ptr) AccessChain 34(data) 2923 2794
+ Store 2927 2926
+ 2928: 6(int) Load 8(invocation)
+ 2929: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2930: 27(int64_t) Load 2929
+ 2931: 27(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2930
+ 2932: 2795(ptr) AccessChain 34(data) 2928 2794 38
+ Store 2932 2931
+ 2933: 6(int) Load 8(invocation)
+ 2934: 2802(ptr) AccessChain 34(data) 46 2794
+ 2935: 28(i64vec4) Load 2934
+ 2936:2801(i64vec2) VectorShuffle 2935 2935 0 1
+ 2937:2801(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2936
+ 2938: 2802(ptr) AccessChain 34(data) 2933 2794
+ 2939: 28(i64vec4) Load 2938
+ 2940: 28(i64vec4) VectorShuffle 2939 2937 4 5 2 3
+ Store 2938 2940
+ 2941: 6(int) Load 8(invocation)
+ 2942: 2802(ptr) AccessChain 34(data) 57 2794
+ 2943: 28(i64vec4) Load 2942
+ 2944:2811(i64vec3) VectorShuffle 2943 2943 0 1 2
+ 2945:2811(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2944
+ 2946: 2802(ptr) AccessChain 34(data) 2941 2794
+ 2947: 28(i64vec4) Load 2946
+ 2948: 28(i64vec4) VectorShuffle 2947 2945 4 5 6 3
+ Store 2946 2948
+ 2949: 6(int) Load 8(invocation)
+ 2950: 2802(ptr) AccessChain 34(data) 67 2794
+ 2951: 28(i64vec4) Load 2950
+ 2952: 28(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2951
+ 2953: 2802(ptr) AccessChain 34(data) 2949 2794
+ Store 2953 2952
+ 2954: 6(int) Load 8(invocation)
+ 2955: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2956: 27(int64_t) Load 2955
+ 2957: 27(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2956
+ 2958: 2795(ptr) AccessChain 34(data) 2954 2794 38
+ Store 2958 2957
+ 2959: 6(int) Load 8(invocation)
+ 2960: 2802(ptr) AccessChain 34(data) 46 2794
+ 2961: 28(i64vec4) Load 2960
+ 2962:2801(i64vec2) VectorShuffle 2961 2961 0 1
+ 2963:2801(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2962
+ 2964: 2802(ptr) AccessChain 34(data) 2959 2794
+ 2965: 28(i64vec4) Load 2964
+ 2966: 28(i64vec4) VectorShuffle 2965 2963 4 5 2 3
+ Store 2964 2966
+ 2967: 6(int) Load 8(invocation)
+ 2968: 2802(ptr) AccessChain 34(data) 57 2794
+ 2969: 28(i64vec4) Load 2968
+ 2970:2811(i64vec3) VectorShuffle 2969 2969 0 1 2
+ 2971:2811(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2970
+ 2972: 2802(ptr) AccessChain 34(data) 2967 2794
+ 2973: 28(i64vec4) Load 2972
+ 2974: 28(i64vec4) VectorShuffle 2973 2971 4 5 6 3
+ Store 2972 2974
+ 2975: 6(int) Load 8(invocation)
+ 2976: 2802(ptr) AccessChain 34(data) 67 2794
+ 2977: 28(i64vec4) Load 2976
+ 2978: 28(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2977
+ 2979: 2802(ptr) AccessChain 34(data) 2975 2794
+ Store 2979 2978
+ 2980: 6(int) Load 8(invocation)
+ 2981: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 2982: 27(int64_t) Load 2981
+ 2983: 27(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2982
+ 2984: 2795(ptr) AccessChain 34(data) 2980 2794 38
+ Store 2984 2983
+ 2985: 6(int) Load 8(invocation)
+ 2986: 2802(ptr) AccessChain 34(data) 46 2794
+ 2987: 28(i64vec4) Load 2986
+ 2988:2801(i64vec2) VectorShuffle 2987 2987 0 1
+ 2989:2801(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2988
+ 2990: 2802(ptr) AccessChain 34(data) 2985 2794
+ 2991: 28(i64vec4) Load 2990
+ 2992: 28(i64vec4) VectorShuffle 2991 2989 4 5 2 3
+ Store 2990 2992
+ 2993: 6(int) Load 8(invocation)
+ 2994: 2802(ptr) AccessChain 34(data) 57 2794
+ 2995: 28(i64vec4) Load 2994
+ 2996:2811(i64vec3) VectorShuffle 2995 2995 0 1 2
+ 2997:2811(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2996
+ 2998: 2802(ptr) AccessChain 34(data) 2993 2794
+ 2999: 28(i64vec4) Load 2998
+ 3000: 28(i64vec4) VectorShuffle 2999 2997 4 5 6 3
+ Store 2998 3000
+ 3001: 6(int) Load 8(invocation)
+ 3002: 2802(ptr) AccessChain 34(data) 67 2794
+ 3003: 28(i64vec4) Load 3002
+ 3004: 28(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 3003
+ 3005: 2802(ptr) AccessChain 34(data) 3001 2794
+ Store 3005 3004
+ 3006: 6(int) Load 8(invocation)
+ 3007: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3008: 27(int64_t) Load 3007
+ 3009: 27(int64_t) GroupNonUniformIMul 42 InclusiveScan 3008
+ 3010: 2795(ptr) AccessChain 34(data) 3006 2794 38
+ Store 3010 3009
+ 3011: 6(int) Load 8(invocation)
+ 3012: 2802(ptr) AccessChain 34(data) 46 2794
+ 3013: 28(i64vec4) Load 3012
+ 3014:2801(i64vec2) VectorShuffle 3013 3013 0 1
+ 3015:2801(i64vec2) GroupNonUniformIMul 42 InclusiveScan 3014
+ 3016: 2802(ptr) AccessChain 34(data) 3011 2794
+ 3017: 28(i64vec4) Load 3016
+ 3018: 28(i64vec4) VectorShuffle 3017 3015 4 5 2 3
+ Store 3016 3018
+ 3019: 6(int) Load 8(invocation)
+ 3020: 2802(ptr) AccessChain 34(data) 57 2794
+ 3021: 28(i64vec4) Load 3020
+ 3022:2811(i64vec3) VectorShuffle 3021 3021 0 1 2
+ 3023:2811(i64vec3) GroupNonUniformIMul 42 InclusiveScan 3022
+ 3024: 2802(ptr) AccessChain 34(data) 3019 2794
+ 3025: 28(i64vec4) Load 3024
+ 3026: 28(i64vec4) VectorShuffle 3025 3023 4 5 6 3
+ Store 3024 3026
+ 3027: 6(int) Load 8(invocation)
+ 3028: 2802(ptr) AccessChain 34(data) 67 2794
+ 3029: 28(i64vec4) Load 3028
+ 3030: 28(i64vec4) GroupNonUniformIMul 42 InclusiveScan 3029
+ 3031: 2802(ptr) AccessChain 34(data) 3027 2794
+ Store 3031 3030
+ 3032: 6(int) Load 8(invocation)
+ 3033: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3034: 27(int64_t) Load 3033
+ 3035: 27(int64_t) GroupNonUniformUMin 42 InclusiveScan 3034
+ 3036: 2795(ptr) AccessChain 34(data) 3032 2794 38
+ Store 3036 3035
+ 3037: 6(int) Load 8(invocation)
+ 3038: 2802(ptr) AccessChain 34(data) 46 2794
+ 3039: 28(i64vec4) Load 3038
+ 3040:2801(i64vec2) VectorShuffle 3039 3039 0 1
+ 3041:2801(i64vec2) GroupNonUniformUMin 42 InclusiveScan 3040
+ 3042: 2802(ptr) AccessChain 34(data) 3037 2794
+ 3043: 28(i64vec4) Load 3042
+ 3044: 28(i64vec4) VectorShuffle 3043 3041 4 5 2 3
+ Store 3042 3044
+ 3045: 6(int) Load 8(invocation)
+ 3046: 2802(ptr) AccessChain 34(data) 57 2794
+ 3047: 28(i64vec4) Load 3046
+ 3048:2811(i64vec3) VectorShuffle 3047 3047 0 1 2
+ 3049:2811(i64vec3) GroupNonUniformUMin 42 InclusiveScan 3048
+ 3050: 2802(ptr) AccessChain 34(data) 3045 2794
+ 3051: 28(i64vec4) Load 3050
+ 3052: 28(i64vec4) VectorShuffle 3051 3049 4 5 6 3
+ Store 3050 3052
+ 3053: 6(int) Load 8(invocation)
+ 3054: 2802(ptr) AccessChain 34(data) 67 2794
+ 3055: 28(i64vec4) Load 3054
+ 3056: 28(i64vec4) GroupNonUniformUMin 42 InclusiveScan 3055
+ 3057: 2802(ptr) AccessChain 34(data) 3053 2794
+ Store 3057 3056
+ 3058: 6(int) Load 8(invocation)
+ 3059: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3060: 27(int64_t) Load 3059
+ 3061: 27(int64_t) GroupNonUniformUMax 42 InclusiveScan 3060
+ 3062: 2795(ptr) AccessChain 34(data) 3058 2794 38
+ Store 3062 3061
+ 3063: 6(int) Load 8(invocation)
+ 3064: 2802(ptr) AccessChain 34(data) 46 2794
+ 3065: 28(i64vec4) Load 3064
+ 3066:2801(i64vec2) VectorShuffle 3065 3065 0 1
+ 3067:2801(i64vec2) GroupNonUniformUMax 42 InclusiveScan 3066
+ 3068: 2802(ptr) AccessChain 34(data) 3063 2794
+ 3069: 28(i64vec4) Load 3068
+ 3070: 28(i64vec4) VectorShuffle 3069 3067 4 5 2 3
+ Store 3068 3070
+ 3071: 6(int) Load 8(invocation)
+ 3072: 2802(ptr) AccessChain 34(data) 57 2794
+ 3073: 28(i64vec4) Load 3072
+ 3074:2811(i64vec3) VectorShuffle 3073 3073 0 1 2
+ 3075:2811(i64vec3) GroupNonUniformUMax 42 InclusiveScan 3074
+ 3076: 2802(ptr) AccessChain 34(data) 3071 2794
+ 3077: 28(i64vec4) Load 3076
+ 3078: 28(i64vec4) VectorShuffle 3077 3075 4 5 6 3
+ Store 3076 3078
+ 3079: 6(int) Load 8(invocation)
+ 3080: 2802(ptr) AccessChain 34(data) 67 2794
+ 3081: 28(i64vec4) Load 3080
+ 3082: 28(i64vec4) GroupNonUniformUMax 42 InclusiveScan 3081
+ 3083: 2802(ptr) AccessChain 34(data) 3079 2794
+ Store 3083 3082
+ 3084: 6(int) Load 8(invocation)
+ 3085: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3086: 27(int64_t) Load 3085
+ 3087: 27(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 3086
+ 3088: 2795(ptr) AccessChain 34(data) 3084 2794 38
+ Store 3088 3087
+ 3089: 6(int) Load 8(invocation)
+ 3090: 2802(ptr) AccessChain 34(data) 46 2794
+ 3091: 28(i64vec4) Load 3090
+ 3092:2801(i64vec2) VectorShuffle 3091 3091 0 1
+ 3093:2801(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 3092
+ 3094: 2802(ptr) AccessChain 34(data) 3089 2794
+ 3095: 28(i64vec4) Load 3094
+ 3096: 28(i64vec4) VectorShuffle 3095 3093 4 5 2 3
+ Store 3094 3096
+ 3097: 6(int) Load 8(invocation)
+ 3098: 2802(ptr) AccessChain 34(data) 57 2794
+ 3099: 28(i64vec4) Load 3098
+ 3100:2811(i64vec3) VectorShuffle 3099 3099 0 1 2
+ 3101:2811(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 3100
+ 3102: 2802(ptr) AccessChain 34(data) 3097 2794
+ 3103: 28(i64vec4) Load 3102
+ 3104: 28(i64vec4) VectorShuffle 3103 3101 4 5 6 3
+ Store 3102 3104
+ 3105: 6(int) Load 8(invocation)
+ 3106: 2802(ptr) AccessChain 34(data) 67 2794
+ 3107: 28(i64vec4) Load 3106
+ 3108: 28(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 3107
+ 3109: 2802(ptr) AccessChain 34(data) 3105 2794
+ Store 3109 3108
+ 3110: 6(int) Load 8(invocation)
+ 3111: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3112: 27(int64_t) Load 3111
+ 3113: 27(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 3112
+ 3114: 2795(ptr) AccessChain 34(data) 3110 2794 38
+ Store 3114 3113
+ 3115: 6(int) Load 8(invocation)
+ 3116: 2802(ptr) AccessChain 34(data) 46 2794
+ 3117: 28(i64vec4) Load 3116
+ 3118:2801(i64vec2) VectorShuffle 3117 3117 0 1
+ 3119:2801(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 3118
+ 3120: 2802(ptr) AccessChain 34(data) 3115 2794
+ 3121: 28(i64vec4) Load 3120
+ 3122: 28(i64vec4) VectorShuffle 3121 3119 4 5 2 3
+ Store 3120 3122
+ 3123: 6(int) Load 8(invocation)
+ 3124: 2802(ptr) AccessChain 34(data) 57 2794
+ 3125: 28(i64vec4) Load 3124
+ 3126:2811(i64vec3) VectorShuffle 3125 3125 0 1 2
+ 3127:2811(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 3126
+ 3128: 2802(ptr) AccessChain 34(data) 3123 2794
+ 3129: 28(i64vec4) Load 3128
+ 3130: 28(i64vec4) VectorShuffle 3129 3127 4 5 6 3
+ Store 3128 3130
+ 3131: 6(int) Load 8(invocation)
+ 3132: 2802(ptr) AccessChain 34(data) 67 2794
+ 3133: 28(i64vec4) Load 3132
+ 3134: 28(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 3133
+ 3135: 2802(ptr) AccessChain 34(data) 3131 2794
+ Store 3135 3134
+ 3136: 6(int) Load 8(invocation)
+ 3137: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3138: 27(int64_t) Load 3137
+ 3139: 27(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 3138
+ 3140: 2795(ptr) AccessChain 34(data) 3136 2794 38
+ Store 3140 3139
+ 3141: 6(int) Load 8(invocation)
+ 3142: 2802(ptr) AccessChain 34(data) 46 2794
+ 3143: 28(i64vec4) Load 3142
+ 3144:2801(i64vec2) VectorShuffle 3143 3143 0 1
+ 3145:2801(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 3144
+ 3146: 2802(ptr) AccessChain 34(data) 3141 2794
+ 3147: 28(i64vec4) Load 3146
+ 3148: 28(i64vec4) VectorShuffle 3147 3145 4 5 2 3
+ Store 3146 3148
+ 3149: 6(int) Load 8(invocation)
+ 3150: 2802(ptr) AccessChain 34(data) 57 2794
+ 3151: 28(i64vec4) Load 3150
+ 3152:2811(i64vec3) VectorShuffle 3151 3151 0 1 2
+ 3153:2811(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 3152
+ 3154: 2802(ptr) AccessChain 34(data) 3149 2794
+ 3155: 28(i64vec4) Load 3154
+ 3156: 28(i64vec4) VectorShuffle 3155 3153 4 5 6 3
+ Store 3154 3156
+ 3157: 6(int) Load 8(invocation)
+ 3158: 2802(ptr) AccessChain 34(data) 67 2794
+ 3159: 28(i64vec4) Load 3158
+ 3160: 28(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3159
+ 3161: 2802(ptr) AccessChain 34(data) 3157 2794
+ Store 3161 3160
+ 3162: 6(int) Load 8(invocation)
+ 3163: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3164: 27(int64_t) Load 3163
+ 3165: 27(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3164
+ 3166: 2795(ptr) AccessChain 34(data) 3162 2794 38
+ Store 3166 3165
+ 3167: 6(int) Load 8(invocation)
+ 3168: 2802(ptr) AccessChain 34(data) 46 2794
+ 3169: 28(i64vec4) Load 3168
+ 3170:2801(i64vec2) VectorShuffle 3169 3169 0 1
+ 3171:2801(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3170
+ 3172: 2802(ptr) AccessChain 34(data) 3167 2794
+ 3173: 28(i64vec4) Load 3172
+ 3174: 28(i64vec4) VectorShuffle 3173 3171 4 5 2 3
+ Store 3172 3174
+ 3175: 6(int) Load 8(invocation)
+ 3176: 2802(ptr) AccessChain 34(data) 57 2794
+ 3177: 28(i64vec4) Load 3176
+ 3178:2811(i64vec3) VectorShuffle 3177 3177 0 1 2
+ 3179:2811(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3178
+ 3180: 2802(ptr) AccessChain 34(data) 3175 2794
+ 3181: 28(i64vec4) Load 3180
+ 3182: 28(i64vec4) VectorShuffle 3181 3179 4 5 6 3
+ Store 3180 3182
+ 3183: 6(int) Load 8(invocation)
+ 3184: 2802(ptr) AccessChain 34(data) 67 2794
+ 3185: 28(i64vec4) Load 3184
+ 3186: 28(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3185
+ 3187: 2802(ptr) AccessChain 34(data) 3183 2794
+ Store 3187 3186
+ 3188: 6(int) Load 8(invocation)
+ 3189: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3190: 27(int64_t) Load 3189
+ 3191: 27(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3190
+ 3192: 2795(ptr) AccessChain 34(data) 3188 2794 38
+ Store 3192 3191
+ 3193: 6(int) Load 8(invocation)
+ 3194: 2802(ptr) AccessChain 34(data) 46 2794
+ 3195: 28(i64vec4) Load 3194
+ 3196:2801(i64vec2) VectorShuffle 3195 3195 0 1
+ 3197:2801(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3196
+ 3198: 2802(ptr) AccessChain 34(data) 3193 2794
+ 3199: 28(i64vec4) Load 3198
+ 3200: 28(i64vec4) VectorShuffle 3199 3197 4 5 2 3
+ Store 3198 3200
+ 3201: 6(int) Load 8(invocation)
+ 3202: 2802(ptr) AccessChain 34(data) 57 2794
+ 3203: 28(i64vec4) Load 3202
+ 3204:2811(i64vec3) VectorShuffle 3203 3203 0 1 2
+ 3205:2811(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3204
+ 3206: 2802(ptr) AccessChain 34(data) 3201 2794
+ 3207: 28(i64vec4) Load 3206
+ 3208: 28(i64vec4) VectorShuffle 3207 3205 4 5 6 3
+ Store 3206 3208
+ 3209: 6(int) Load 8(invocation)
+ 3210: 2802(ptr) AccessChain 34(data) 67 2794
+ 3211: 28(i64vec4) Load 3210
+ 3212: 28(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3211
+ 3213: 2802(ptr) AccessChain 34(data) 3209 2794
+ Store 3213 3212
+ 3214: 6(int) Load 8(invocation)
+ 3215: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3216: 27(int64_t) Load 3215
+ 3217: 27(int64_t) GroupNonUniformUMin 42 ExclusiveScan 3216
+ 3218: 2795(ptr) AccessChain 34(data) 3214 2794 38
+ Store 3218 3217
+ 3219: 6(int) Load 8(invocation)
+ 3220: 2802(ptr) AccessChain 34(data) 46 2794
+ 3221: 28(i64vec4) Load 3220
+ 3222:2801(i64vec2) VectorShuffle 3221 3221 0 1
+ 3223:2801(i64vec2) GroupNonUniformUMin 42 ExclusiveScan 3222
+ 3224: 2802(ptr) AccessChain 34(data) 3219 2794
+ 3225: 28(i64vec4) Load 3224
+ 3226: 28(i64vec4) VectorShuffle 3225 3223 4 5 2 3
+ Store 3224 3226
+ 3227: 6(int) Load 8(invocation)
+ 3228: 2802(ptr) AccessChain 34(data) 57 2794
+ 3229: 28(i64vec4) Load 3228
+ 3230:2811(i64vec3) VectorShuffle 3229 3229 0 1 2
+ 3231:2811(i64vec3) GroupNonUniformUMin 42 ExclusiveScan 3230
+ 3232: 2802(ptr) AccessChain 34(data) 3227 2794
+ 3233: 28(i64vec4) Load 3232
+ 3234: 28(i64vec4) VectorShuffle 3233 3231 4 5 6 3
+ Store 3232 3234
+ 3235: 6(int) Load 8(invocation)
+ 3236: 2802(ptr) AccessChain 34(data) 67 2794
+ 3237: 28(i64vec4) Load 3236
+ 3238: 28(i64vec4) GroupNonUniformUMin 42 ExclusiveScan 3237
+ 3239: 2802(ptr) AccessChain 34(data) 3235 2794
+ Store 3239 3238
+ 3240: 6(int) Load 8(invocation)
+ 3241: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3242: 27(int64_t) Load 3241
+ 3243: 27(int64_t) GroupNonUniformUMax 42 ExclusiveScan 3242
+ 3244: 2795(ptr) AccessChain 34(data) 3240 2794 38
+ Store 3244 3243
+ 3245: 6(int) Load 8(invocation)
+ 3246: 2802(ptr) AccessChain 34(data) 46 2794
+ 3247: 28(i64vec4) Load 3246
+ 3248:2801(i64vec2) VectorShuffle 3247 3247 0 1
+ 3249:2801(i64vec2) GroupNonUniformUMax 42 ExclusiveScan 3248
+ 3250: 2802(ptr) AccessChain 34(data) 3245 2794
+ 3251: 28(i64vec4) Load 3250
+ 3252: 28(i64vec4) VectorShuffle 3251 3249 4 5 2 3
+ Store 3250 3252
+ 3253: 6(int) Load 8(invocation)
+ 3254: 2802(ptr) AccessChain 34(data) 57 2794
+ 3255: 28(i64vec4) Load 3254
+ 3256:2811(i64vec3) VectorShuffle 3255 3255 0 1 2
+ 3257:2811(i64vec3) GroupNonUniformUMax 42 ExclusiveScan 3256
+ 3258: 2802(ptr) AccessChain 34(data) 3253 2794
+ 3259: 28(i64vec4) Load 3258
+ 3260: 28(i64vec4) VectorShuffle 3259 3257 4 5 6 3
+ Store 3258 3260
+ 3261: 6(int) Load 8(invocation)
+ 3262: 2802(ptr) AccessChain 34(data) 67 2794
+ 3263: 28(i64vec4) Load 3262
+ 3264: 28(i64vec4) GroupNonUniformUMax 42 ExclusiveScan 3263
+ 3265: 2802(ptr) AccessChain 34(data) 3261 2794
+ Store 3265 3264
+ 3266: 6(int) Load 8(invocation)
+ 3267: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3268: 27(int64_t) Load 3267
+ 3269: 27(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3268
+ 3270: 2795(ptr) AccessChain 34(data) 3266 2794 38
+ Store 3270 3269
+ 3271: 6(int) Load 8(invocation)
+ 3272: 2802(ptr) AccessChain 34(data) 46 2794
+ 3273: 28(i64vec4) Load 3272
+ 3274:2801(i64vec2) VectorShuffle 3273 3273 0 1
+ 3275:2801(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3274
+ 3276: 2802(ptr) AccessChain 34(data) 3271 2794
+ 3277: 28(i64vec4) Load 3276
+ 3278: 28(i64vec4) VectorShuffle 3277 3275 4 5 2 3
+ Store 3276 3278
+ 3279: 6(int) Load 8(invocation)
+ 3280: 2802(ptr) AccessChain 34(data) 57 2794
+ 3281: 28(i64vec4) Load 3280
+ 3282:2811(i64vec3) VectorShuffle 3281 3281 0 1 2
+ 3283:2811(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3282
+ 3284: 2802(ptr) AccessChain 34(data) 3279 2794
+ 3285: 28(i64vec4) Load 3284
+ 3286: 28(i64vec4) VectorShuffle 3285 3283 4 5 6 3
+ Store 3284 3286
+ 3287: 6(int) Load 8(invocation)
+ 3288: 2802(ptr) AccessChain 34(data) 67 2794
+ 3289: 28(i64vec4) Load 3288
+ 3290: 28(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3289
+ 3291: 2802(ptr) AccessChain 34(data) 3287 2794
+ Store 3291 3290
+ 3292: 6(int) Load 8(invocation)
+ 3293: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3294: 27(int64_t) Load 3293
+ 3295: 27(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3294
+ 3296: 2795(ptr) AccessChain 34(data) 3292 2794 38
+ Store 3296 3295
+ 3297: 6(int) Load 8(invocation)
+ 3298: 2802(ptr) AccessChain 34(data) 46 2794
+ 3299: 28(i64vec4) Load 3298
+ 3300:2801(i64vec2) VectorShuffle 3299 3299 0 1
+ 3301:2801(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3300
+ 3302: 2802(ptr) AccessChain 34(data) 3297 2794
+ 3303: 28(i64vec4) Load 3302
+ 3304: 28(i64vec4) VectorShuffle 3303 3301 4 5 2 3
+ Store 3302 3304
+ 3305: 6(int) Load 8(invocation)
+ 3306: 2802(ptr) AccessChain 34(data) 57 2794
+ 3307: 28(i64vec4) Load 3306
+ 3308:2811(i64vec3) VectorShuffle 3307 3307 0 1 2
+ 3309:2811(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3308
+ 3310: 2802(ptr) AccessChain 34(data) 3305 2794
+ 3311: 28(i64vec4) Load 3310
+ 3312: 28(i64vec4) VectorShuffle 3311 3309 4 5 6 3
+ Store 3310 3312
+ 3313: 6(int) Load 8(invocation)
+ 3314: 2802(ptr) AccessChain 34(data) 67 2794
+ 3315: 28(i64vec4) Load 3314
+ 3316: 28(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3315
+ 3317: 2802(ptr) AccessChain 34(data) 3313 2794
+ Store 3317 3316
+ 3318: 6(int) Load 8(invocation)
+ 3319: 2795(ptr) AccessChain 34(data) 37 2794 38
+ 3320: 27(int64_t) Load 3319
+ 3321: 27(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3320
+ 3322: 2795(ptr) AccessChain 34(data) 3318 2794 38
+ Store 3322 3321
+ 3323: 6(int) Load 8(invocation)
+ 3324: 2802(ptr) AccessChain 34(data) 46 2794
+ 3325: 28(i64vec4) Load 3324
+ 3326:2801(i64vec2) VectorShuffle 3325 3325 0 1
+ 3327:2801(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3326
+ 3328: 2802(ptr) AccessChain 34(data) 3323 2794
+ 3329: 28(i64vec4) Load 3328
+ 3330: 28(i64vec4) VectorShuffle 3329 3327 4 5 2 3
+ Store 3328 3330
+ 3331: 6(int) Load 8(invocation)
+ 3332: 2802(ptr) AccessChain 34(data) 57 2794
+ 3333: 28(i64vec4) Load 3332
+ 3334:2811(i64vec3) VectorShuffle 3333 3333 0 1 2
+ 3335:2811(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3334
+ 3336: 2802(ptr) AccessChain 34(data) 3331 2794
+ 3337: 28(i64vec4) Load 3336
+ 3338: 28(i64vec4) VectorShuffle 3337 3335 4 5 6 3
+ Store 3336 3338
+ 3339: 6(int) Load 8(invocation)
+ 3340: 2802(ptr) AccessChain 34(data) 67 2794
+ 3341: 28(i64vec4) Load 3340
+ 3342: 28(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3341
+ 3343: 2802(ptr) AccessChain 34(data) 3339 2794
+ Store 3343 3342
+ 3344: 6(int) Load 8(invocation)
+ 3347: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3348:29(float16_t) Load 3347
+ 3349:29(float16_t) GroupNonUniformFAdd 42 Reduce 3348
+ 3350: 3346(ptr) AccessChain 34(data) 3344 3345 38
+ Store 3350 3349
+ 3351: 6(int) Load 8(invocation)
+ 3354: 3353(ptr) AccessChain 34(data) 46 3345
+ 3355: 30(f16vec4) Load 3354
+ 3356:3352(f16vec2) VectorShuffle 3355 3355 0 1
+ 3357:3352(f16vec2) GroupNonUniformFAdd 42 Reduce 3356
+ 3358: 3353(ptr) AccessChain 34(data) 3351 3345
+ 3359: 30(f16vec4) Load 3358
+ 3360: 30(f16vec4) VectorShuffle 3359 3357 4 5 2 3
+ Store 3358 3360
+ 3361: 6(int) Load 8(invocation)
+ 3363: 3353(ptr) AccessChain 34(data) 57 3345
+ 3364: 30(f16vec4) Load 3363
+ 3365:3362(f16vec3) VectorShuffle 3364 3364 0 1 2
+ 3366:3362(f16vec3) GroupNonUniformFAdd 42 Reduce 3365
+ 3367: 3353(ptr) AccessChain 34(data) 3361 3345
+ 3368: 30(f16vec4) Load 3367
+ 3369: 30(f16vec4) VectorShuffle 3368 3366 4 5 6 3
+ Store 3367 3369
+ 3370: 6(int) Load 8(invocation)
+ 3371: 3353(ptr) AccessChain 34(data) 67 3345
+ 3372: 30(f16vec4) Load 3371
+ 3373: 30(f16vec4) GroupNonUniformFAdd 42 Reduce 3372
+ 3374: 3353(ptr) AccessChain 34(data) 3370 3345
+ Store 3374 3373
+ 3375: 6(int) Load 8(invocation)
+ 3376: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3377:29(float16_t) Load 3376
+ 3378:29(float16_t) GroupNonUniformFMul 42 Reduce 3377
+ 3379: 3346(ptr) AccessChain 34(data) 3375 3345 38
+ Store 3379 3378
+ 3380: 6(int) Load 8(invocation)
+ 3381: 3353(ptr) AccessChain 34(data) 46 3345
+ 3382: 30(f16vec4) Load 3381
+ 3383:3352(f16vec2) VectorShuffle 3382 3382 0 1
+ 3384:3352(f16vec2) GroupNonUniformFMul 42 Reduce 3383
+ 3385: 3353(ptr) AccessChain 34(data) 3380 3345
+ 3386: 30(f16vec4) Load 3385
+ 3387: 30(f16vec4) VectorShuffle 3386 3384 4 5 2 3
+ Store 3385 3387
+ 3388: 6(int) Load 8(invocation)
+ 3389: 3353(ptr) AccessChain 34(data) 57 3345
+ 3390: 30(f16vec4) Load 3389
+ 3391:3362(f16vec3) VectorShuffle 3390 3390 0 1 2
+ 3392:3362(f16vec3) GroupNonUniformFMul 42 Reduce 3391
+ 3393: 3353(ptr) AccessChain 34(data) 3388 3345
+ 3394: 30(f16vec4) Load 3393
+ 3395: 30(f16vec4) VectorShuffle 3394 3392 4 5 6 3
+ Store 3393 3395
+ 3396: 6(int) Load 8(invocation)
+ 3397: 3353(ptr) AccessChain 34(data) 67 3345
+ 3398: 30(f16vec4) Load 3397
+ 3399: 30(f16vec4) GroupNonUniformFMul 42 Reduce 3398
+ 3400: 3353(ptr) AccessChain 34(data) 3396 3345
+ Store 3400 3399
+ 3401: 6(int) Load 8(invocation)
+ 3402: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3403:29(float16_t) Load 3402
+ 3404:29(float16_t) GroupNonUniformFMin 42 Reduce 3403
+ 3405: 3346(ptr) AccessChain 34(data) 3401 3345 38
+ Store 3405 3404
+ 3406: 6(int) Load 8(invocation)
+ 3407: 3353(ptr) AccessChain 34(data) 46 3345
+ 3408: 30(f16vec4) Load 3407
+ 3409:3352(f16vec2) VectorShuffle 3408 3408 0 1
+ 3410:3352(f16vec2) GroupNonUniformFMin 42 Reduce 3409
+ 3411: 3353(ptr) AccessChain 34(data) 3406 3345
+ 3412: 30(f16vec4) Load 3411
+ 3413: 30(f16vec4) VectorShuffle 3412 3410 4 5 2 3
+ Store 3411 3413
+ 3414: 6(int) Load 8(invocation)
+ 3415: 3353(ptr) AccessChain 34(data) 57 3345
+ 3416: 30(f16vec4) Load 3415
+ 3417:3362(f16vec3) VectorShuffle 3416 3416 0 1 2
+ 3418:3362(f16vec3) GroupNonUniformFMin 42 Reduce 3417
+ 3419: 3353(ptr) AccessChain 34(data) 3414 3345
+ 3420: 30(f16vec4) Load 3419
+ 3421: 30(f16vec4) VectorShuffle 3420 3418 4 5 6 3
+ Store 3419 3421
+ 3422: 6(int) Load 8(invocation)
+ 3423: 3353(ptr) AccessChain 34(data) 67 3345
+ 3424: 30(f16vec4) Load 3423
+ 3425: 30(f16vec4) GroupNonUniformFMin 42 Reduce 3424
+ 3426: 3353(ptr) AccessChain 34(data) 3422 3345
+ Store 3426 3425
+ 3427: 6(int) Load 8(invocation)
+ 3428: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3429:29(float16_t) Load 3428
+ 3430:29(float16_t) GroupNonUniformFMax 42 Reduce 3429
+ 3431: 3346(ptr) AccessChain 34(data) 3427 3345 38
+ Store 3431 3430
+ 3432: 6(int) Load 8(invocation)
+ 3433: 3353(ptr) AccessChain 34(data) 46 3345
+ 3434: 30(f16vec4) Load 3433
+ 3435:3352(f16vec2) VectorShuffle 3434 3434 0 1
+ 3436:3352(f16vec2) GroupNonUniformFMax 42 Reduce 3435
+ 3437: 3353(ptr) AccessChain 34(data) 3432 3345
+ 3438: 30(f16vec4) Load 3437
+ 3439: 30(f16vec4) VectorShuffle 3438 3436 4 5 2 3
+ Store 3437 3439
+ 3440: 6(int) Load 8(invocation)
+ 3441: 3353(ptr) AccessChain 34(data) 57 3345
+ 3442: 30(f16vec4) Load 3441
+ 3443:3362(f16vec3) VectorShuffle 3442 3442 0 1 2
+ 3444:3362(f16vec3) GroupNonUniformFMax 42 Reduce 3443
+ 3445: 3353(ptr) AccessChain 34(data) 3440 3345
+ 3446: 30(f16vec4) Load 3445
+ 3447: 30(f16vec4) VectorShuffle 3446 3444 4 5 6 3
+ Store 3445 3447
+ 3448: 6(int) Load 8(invocation)
+ 3449: 3353(ptr) AccessChain 34(data) 67 3345
+ 3450: 30(f16vec4) Load 3449
+ 3451: 30(f16vec4) GroupNonUniformFMax 42 Reduce 3450
+ 3452: 3353(ptr) AccessChain 34(data) 3448 3345
+ Store 3452 3451
+ 3453: 6(int) Load 8(invocation)
+ 3454: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3455:29(float16_t) Load 3454
+ 3456:29(float16_t) GroupNonUniformFAdd 42 InclusiveScan 3455
+ 3457: 3346(ptr) AccessChain 34(data) 3453 3345 38
+ Store 3457 3456
+ 3458: 6(int) Load 8(invocation)
+ 3459: 3353(ptr) AccessChain 34(data) 46 3345
+ 3460: 30(f16vec4) Load 3459
+ 3461:3352(f16vec2) VectorShuffle 3460 3460 0 1
+ 3462:3352(f16vec2) GroupNonUniformFAdd 42 InclusiveScan 3461
+ 3463: 3353(ptr) AccessChain 34(data) 3458 3345
+ 3464: 30(f16vec4) Load 3463
+ 3465: 30(f16vec4) VectorShuffle 3464 3462 4 5 2 3
+ Store 3463 3465
+ 3466: 6(int) Load 8(invocation)
+ 3467: 3353(ptr) AccessChain 34(data) 57 3345
+ 3468: 30(f16vec4) Load 3467
+ 3469:3362(f16vec3) VectorShuffle 3468 3468 0 1 2
+ 3470:3362(f16vec3) GroupNonUniformFAdd 42 InclusiveScan 3469
+ 3471: 3353(ptr) AccessChain 34(data) 3466 3345
+ 3472: 30(f16vec4) Load 3471
+ 3473: 30(f16vec4) VectorShuffle 3472 3470 4 5 6 3
+ Store 3471 3473
+ 3474: 6(int) Load 8(invocation)
+ 3475: 3353(ptr) AccessChain 34(data) 67 3345
+ 3476: 30(f16vec4) Load 3475
+ 3477: 30(f16vec4) GroupNonUniformFAdd 42 InclusiveScan 3476
+ 3478: 3353(ptr) AccessChain 34(data) 3474 3345
+ Store 3478 3477
+ 3479: 6(int) Load 8(invocation)
+ 3480: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3481:29(float16_t) Load 3480
+ 3482:29(float16_t) GroupNonUniformFMul 42 InclusiveScan 3481
+ 3483: 3346(ptr) AccessChain 34(data) 3479 3345 38
+ Store 3483 3482
+ 3484: 6(int) Load 8(invocation)
+ 3485: 3353(ptr) AccessChain 34(data) 46 3345
+ 3486: 30(f16vec4) Load 3485
+ 3487:3352(f16vec2) VectorShuffle 3486 3486 0 1
+ 3488:3352(f16vec2) GroupNonUniformFMul 42 InclusiveScan 3487
+ 3489: 3353(ptr) AccessChain 34(data) 3484 3345
+ 3490: 30(f16vec4) Load 3489
+ 3491: 30(f16vec4) VectorShuffle 3490 3488 4 5 2 3
+ Store 3489 3491
+ 3492: 6(int) Load 8(invocation)
+ 3493: 3353(ptr) AccessChain 34(data) 57 3345
+ 3494: 30(f16vec4) Load 3493
+ 3495:3362(f16vec3) VectorShuffle 3494 3494 0 1 2
+ 3496:3362(f16vec3) GroupNonUniformFMul 42 InclusiveScan 3495
+ 3497: 3353(ptr) AccessChain 34(data) 3492 3345
+ 3498: 30(f16vec4) Load 3497
+ 3499: 30(f16vec4) VectorShuffle 3498 3496 4 5 6 3
+ Store 3497 3499
+ 3500: 6(int) Load 8(invocation)
+ 3501: 3353(ptr) AccessChain 34(data) 67 3345
+ 3502: 30(f16vec4) Load 3501
+ 3503: 30(f16vec4) GroupNonUniformFMul 42 InclusiveScan 3502
+ 3504: 3353(ptr) AccessChain 34(data) 3500 3345
+ Store 3504 3503
+ 3505: 6(int) Load 8(invocation)
+ 3506: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3507:29(float16_t) Load 3506
+ 3508:29(float16_t) GroupNonUniformFMin 42 InclusiveScan 3507
+ 3509: 3346(ptr) AccessChain 34(data) 3505 3345 38
+ Store 3509 3508
+ 3510: 6(int) Load 8(invocation)
+ 3511: 3353(ptr) AccessChain 34(data) 46 3345
+ 3512: 30(f16vec4) Load 3511
+ 3513:3352(f16vec2) VectorShuffle 3512 3512 0 1
+ 3514:3352(f16vec2) GroupNonUniformFMin 42 InclusiveScan 3513
+ 3515: 3353(ptr) AccessChain 34(data) 3510 3345
+ 3516: 30(f16vec4) Load 3515
+ 3517: 30(f16vec4) VectorShuffle 3516 3514 4 5 2 3
+ Store 3515 3517
+ 3518: 6(int) Load 8(invocation)
+ 3519: 3353(ptr) AccessChain 34(data) 57 3345
+ 3520: 30(f16vec4) Load 3519
+ 3521:3362(f16vec3) VectorShuffle 3520 3520 0 1 2
+ 3522:3362(f16vec3) GroupNonUniformFMin 42 InclusiveScan 3521
+ 3523: 3353(ptr) AccessChain 34(data) 3518 3345
+ 3524: 30(f16vec4) Load 3523
+ 3525: 30(f16vec4) VectorShuffle 3524 3522 4 5 6 3
+ Store 3523 3525
+ 3526: 6(int) Load 8(invocation)
+ 3527: 3353(ptr) AccessChain 34(data) 67 3345
+ 3528: 30(f16vec4) Load 3527
+ 3529: 30(f16vec4) GroupNonUniformFMin 42 InclusiveScan 3528
+ 3530: 3353(ptr) AccessChain 34(data) 3526 3345
+ Store 3530 3529
+ 3531: 6(int) Load 8(invocation)
+ 3532: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3533:29(float16_t) Load 3532
+ 3534:29(float16_t) GroupNonUniformFMax 42 InclusiveScan 3533
+ 3535: 3346(ptr) AccessChain 34(data) 3531 3345 38
+ Store 3535 3534
+ 3536: 6(int) Load 8(invocation)
+ 3537: 3353(ptr) AccessChain 34(data) 46 3345
+ 3538: 30(f16vec4) Load 3537
+ 3539:3352(f16vec2) VectorShuffle 3538 3538 0 1
+ 3540:3352(f16vec2) GroupNonUniformFMax 42 InclusiveScan 3539
+ 3541: 3353(ptr) AccessChain 34(data) 3536 3345
+ 3542: 30(f16vec4) Load 3541
+ 3543: 30(f16vec4) VectorShuffle 3542 3540 4 5 2 3
+ Store 3541 3543
+ 3544: 6(int) Load 8(invocation)
+ 3545: 3353(ptr) AccessChain 34(data) 57 3345
+ 3546: 30(f16vec4) Load 3545
+ 3547:3362(f16vec3) VectorShuffle 3546 3546 0 1 2
+ 3548:3362(f16vec3) GroupNonUniformFMax 42 InclusiveScan 3547
+ 3549: 3353(ptr) AccessChain 34(data) 3544 3345
+ 3550: 30(f16vec4) Load 3549
+ 3551: 30(f16vec4) VectorShuffle 3550 3548 4 5 6 3
+ Store 3549 3551
+ 3552: 6(int) Load 8(invocation)
+ 3553: 3353(ptr) AccessChain 34(data) 67 3345
+ 3554: 30(f16vec4) Load 3553
+ 3555: 30(f16vec4) GroupNonUniformFMax 42 InclusiveScan 3554
+ 3556: 3353(ptr) AccessChain 34(data) 3552 3345
+ Store 3556 3555
+ 3557: 6(int) Load 8(invocation)
+ 3558: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3559:29(float16_t) Load 3558
+ 3560:29(float16_t) GroupNonUniformFAdd 42 ExclusiveScan 3559
+ 3561: 3346(ptr) AccessChain 34(data) 3557 3345 38
+ Store 3561 3560
+ 3562: 6(int) Load 8(invocation)
+ 3563: 3353(ptr) AccessChain 34(data) 46 3345
+ 3564: 30(f16vec4) Load 3563
+ 3565:3352(f16vec2) VectorShuffle 3564 3564 0 1
+ 3566:3352(f16vec2) GroupNonUniformFAdd 42 ExclusiveScan 3565
+ 3567: 3353(ptr) AccessChain 34(data) 3562 3345
+ 3568: 30(f16vec4) Load 3567
+ 3569: 30(f16vec4) VectorShuffle 3568 3566 4 5 2 3
+ Store 3567 3569
+ 3570: 6(int) Load 8(invocation)
+ 3571: 3353(ptr) AccessChain 34(data) 57 3345
+ 3572: 30(f16vec4) Load 3571
+ 3573:3362(f16vec3) VectorShuffle 3572 3572 0 1 2
+ 3574:3362(f16vec3) GroupNonUniformFAdd 42 ExclusiveScan 3573
+ 3575: 3353(ptr) AccessChain 34(data) 3570 3345
+ 3576: 30(f16vec4) Load 3575
+ 3577: 30(f16vec4) VectorShuffle 3576 3574 4 5 6 3
+ Store 3575 3577
+ 3578: 6(int) Load 8(invocation)
+ 3579: 3353(ptr) AccessChain 34(data) 67 3345
+ 3580: 30(f16vec4) Load 3579
+ 3581: 30(f16vec4) GroupNonUniformFAdd 42 ExclusiveScan 3580
+ 3582: 3353(ptr) AccessChain 34(data) 3578 3345
+ Store 3582 3581
+ 3583: 6(int) Load 8(invocation)
+ 3584: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3585:29(float16_t) Load 3584
+ 3586:29(float16_t) GroupNonUniformFMul 42 ExclusiveScan 3585
+ 3587: 3346(ptr) AccessChain 34(data) 3583 3345 38
+ Store 3587 3586
+ 3588: 6(int) Load 8(invocation)
+ 3589: 3353(ptr) AccessChain 34(data) 46 3345
+ 3590: 30(f16vec4) Load 3589
+ 3591:3352(f16vec2) VectorShuffle 3590 3590 0 1
+ 3592:3352(f16vec2) GroupNonUniformFMul 42 ExclusiveScan 3591
+ 3593: 3353(ptr) AccessChain 34(data) 3588 3345
+ 3594: 30(f16vec4) Load 3593
+ 3595: 30(f16vec4) VectorShuffle 3594 3592 4 5 2 3
+ Store 3593 3595
+ 3596: 6(int) Load 8(invocation)
+ 3597: 3353(ptr) AccessChain 34(data) 57 3345
+ 3598: 30(f16vec4) Load 3597
+ 3599:3362(f16vec3) VectorShuffle 3598 3598 0 1 2
+ 3600:3362(f16vec3) GroupNonUniformFMul 42 ExclusiveScan 3599
+ 3601: 3353(ptr) AccessChain 34(data) 3596 3345
+ 3602: 30(f16vec4) Load 3601
+ 3603: 30(f16vec4) VectorShuffle 3602 3600 4 5 6 3
+ Store 3601 3603
+ 3604: 6(int) Load 8(invocation)
+ 3605: 3353(ptr) AccessChain 34(data) 67 3345
+ 3606: 30(f16vec4) Load 3605
+ 3607: 30(f16vec4) GroupNonUniformFMul 42 ExclusiveScan 3606
+ 3608: 3353(ptr) AccessChain 34(data) 3604 3345
+ Store 3608 3607
+ 3609: 6(int) Load 8(invocation)
+ 3610: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3611:29(float16_t) Load 3610
+ 3612:29(float16_t) GroupNonUniformFMin 42 ExclusiveScan 3611
+ 3613: 3346(ptr) AccessChain 34(data) 3609 3345 38
+ Store 3613 3612
+ 3614: 6(int) Load 8(invocation)
+ 3615: 3353(ptr) AccessChain 34(data) 46 3345
+ 3616: 30(f16vec4) Load 3615
+ 3617:3352(f16vec2) VectorShuffle 3616 3616 0 1
+ 3618:3352(f16vec2) GroupNonUniformFMin 42 ExclusiveScan 3617
+ 3619: 3353(ptr) AccessChain 34(data) 3614 3345
+ 3620: 30(f16vec4) Load 3619
+ 3621: 30(f16vec4) VectorShuffle 3620 3618 4 5 2 3
+ Store 3619 3621
+ 3622: 6(int) Load 8(invocation)
+ 3623: 3353(ptr) AccessChain 34(data) 57 3345
+ 3624: 30(f16vec4) Load 3623
+ 3625:3362(f16vec3) VectorShuffle 3624 3624 0 1 2
+ 3626:3362(f16vec3) GroupNonUniformFMin 42 ExclusiveScan 3625
+ 3627: 3353(ptr) AccessChain 34(data) 3622 3345
+ 3628: 30(f16vec4) Load 3627
+ 3629: 30(f16vec4) VectorShuffle 3628 3626 4 5 6 3
+ Store 3627 3629
+ 3630: 6(int) Load 8(invocation)
+ 3631: 3353(ptr) AccessChain 34(data) 67 3345
+ 3632: 30(f16vec4) Load 3631
+ 3633: 30(f16vec4) GroupNonUniformFMin 42 ExclusiveScan 3632
+ 3634: 3353(ptr) AccessChain 34(data) 3630 3345
+ Store 3634 3633
+ 3635: 6(int) Load 8(invocation)
+ 3636: 3346(ptr) AccessChain 34(data) 37 3345 38
+ 3637:29(float16_t) Load 3636
+ 3638:29(float16_t) GroupNonUniformFMax 42 ExclusiveScan 3637
+ 3639: 3346(ptr) AccessChain 34(data) 3635 3345 38
+ Store 3639 3638
+ 3640: 6(int) Load 8(invocation)
+ 3641: 3353(ptr) AccessChain 34(data) 46 3345
+ 3642: 30(f16vec4) Load 3641
+ 3643:3352(f16vec2) VectorShuffle 3642 3642 0 1
+ 3644:3352(f16vec2) GroupNonUniformFMax 42 ExclusiveScan 3643
+ 3645: 3353(ptr) AccessChain 34(data) 3640 3345
+ 3646: 30(f16vec4) Load 3645
+ 3647: 30(f16vec4) VectorShuffle 3646 3644 4 5 2 3
+ Store 3645 3647
+ 3648: 6(int) Load 8(invocation)
+ 3649: 3353(ptr) AccessChain 34(data) 57 3345
+ 3650: 30(f16vec4) Load 3649
+ 3651:3362(f16vec3) VectorShuffle 3650 3650 0 1 2
+ 3652:3362(f16vec3) GroupNonUniformFMax 42 ExclusiveScan 3651
+ 3653: 3353(ptr) AccessChain 34(data) 3648 3345
+ 3654: 30(f16vec4) Load 3653
+ 3655: 30(f16vec4) VectorShuffle 3654 3652 4 5 6 3
+ Store 3653 3655
+ 3656: 6(int) Load 8(invocation)
+ 3657: 3353(ptr) AccessChain 34(data) 67 3345
+ 3658: 30(f16vec4) Load 3657
+ 3659: 30(f16vec4) GroupNonUniformFMax 42 ExclusiveScan 3658
+ 3660: 3353(ptr) AccessChain 34(data) 3656 3345
+ Store 3660 3659
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out
new file mode 100644
index 0000000..4750559
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out
@@ -0,0 +1,557 @@
+spv.subgroupExtendedTypesArithmeticNeg.comp
+ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:61: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:62: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:63: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:66: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:67: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:68: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:71: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:72: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:73: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:76: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:77: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:78: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:81: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:82: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:83: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:86: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:87: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:88: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:91: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:92: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:93: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:96: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:97: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:98: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:101: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:102: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:103: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:106: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:107: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:108: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:111: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:112: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:113: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:116: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:117: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:118: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:121: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:122: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:123: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:126: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:127: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:128: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:131: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:132: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:133: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:136: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:137: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:138: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:141: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:142: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:143: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:146: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:147: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:148: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:151: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:152: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:153: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:156: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:157: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:158: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:161: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:162: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:163: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:166: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:167: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:168: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:171: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:172: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:173: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:176: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:177: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:178: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:181: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:182: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:183: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:186: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:187: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:188: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:191: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:192: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:193: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:196: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:197: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:198: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:201: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:202: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:203: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:206: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:207: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:208: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:211: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:212: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:213: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:216: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:217: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:218: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:221: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:222: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:223: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:226: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:227: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:228: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:231: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:232: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:233: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:236: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:237: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:238: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:241: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:242: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:243: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:246: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:247: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:248: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:251: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:252: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:253: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:256: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:257: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:258: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:259: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:261: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:262: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:263: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:264: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:266: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:267: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:268: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:269: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:271: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:272: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:273: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:274: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:276: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:277: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:278: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:279: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:281: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:282: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:283: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:284: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:286: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:287: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:288: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:289: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:291: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:292: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:293: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:294: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:296: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:297: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:298: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:299: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:301: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:302: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:303: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:304: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:306: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:307: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:308: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:309: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:311: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:312: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:313: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:314: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:316: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:317: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:318: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:319: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:321: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:322: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:323: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:324: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:326: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:327: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:328: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:329: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:331: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:332: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:333: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:334: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:336: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:337: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:338: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:339: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:341: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:342: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:343: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:344: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:346: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:347: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:348: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:349: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:351: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:352: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:353: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:354: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:356: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:357: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:358: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:359: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:361: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:362: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:363: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:364: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:366: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:367: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:368: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:369: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:371: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:372: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:373: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:374: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:376: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:377: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:378: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:379: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:381: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:382: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:383: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:384: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:386: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:387: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:388: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:389: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:391: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:392: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:393: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:394: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:396: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:397: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:398: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:399: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:401: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:402: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:403: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:404: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:406: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:407: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:408: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:409: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:411: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:412: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:413: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:414: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:416: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:417: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:418: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:419: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:421: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:422: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:423: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:424: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:426: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:427: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:428: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:429: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:431: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:432: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:433: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:434: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:436: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:437: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:438: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:439: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:441: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:442: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:443: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:444: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:446: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:447: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:448: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:449: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:451: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:452: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:453: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:454: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:456: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:457: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:458: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:459: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:461: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:462: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:463: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:464: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:466: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:467: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:468: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:469: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:471: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:472: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:473: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:474: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:476: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:477: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:478: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:479: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:481: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:482: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:483: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:484: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:486: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:487: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:488: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:489: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:491: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:492: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:493: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:494: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:496: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:497: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:498: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:499: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:501: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:502: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:503: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:504: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:506: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:507: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:508: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:509: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:511: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:512: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:513: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:514: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:516: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:517: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:518: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:519: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:521: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:522: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:523: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:524: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:526: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:527: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:528: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:529: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:531: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:532: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:533: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:534: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:536: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:537: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:538: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:539: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:541: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:542: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:543: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:544: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:546: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:547: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:548: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:549: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:551: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:552: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:553: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:554: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:556: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:557: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:558: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:559: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:561: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:562: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:563: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:564: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:566: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:567: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:568: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:569: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:571: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:572: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:573: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:574: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:576: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:577: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:578: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:579: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:581: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:582: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:583: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:584: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:586: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:587: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:588: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:589: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:591: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:592: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:593: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:594: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:596: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:597: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:598: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:599: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:601: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:602: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:603: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:604: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:606: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:607: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:608: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:609: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:611: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:612: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:613: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:614: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:616: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:617: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:618: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:619: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:621: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:622: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:623: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:624: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:626: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:627: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:628: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:629: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:631: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:632: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:633: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:634: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:636: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:637: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:638: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:639: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:641: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:642: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:643: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:644: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:646: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:647: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:648: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:649: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:651: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:652: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:653: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:654: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:656: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:657: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:658: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:659: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:661: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:662: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:663: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:664: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:666: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:667: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:668: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:669: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:671: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:672: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:673: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:674: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:676: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:677: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:678: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:679: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:681: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:682: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:683: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:684: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:686: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:687: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:688: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:689: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:691: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:692: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:693: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:694: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:696: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:697: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:698: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:699: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:701: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:702: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:703: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:704: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:706: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:707: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:708: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:709: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:711: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:712: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:713: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:714: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 552 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
new file mode 100644
index 0000000..4e1b2dc
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
@@ -0,0 +1,560 @@
+spv.subgroupExtendedTypesBallot.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 441
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformBallot
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 31 "Buffers"
+ MemberName 31(Buffers) 0 "i8"
+ MemberName 31(Buffers) 1 "u8"
+ MemberName 31(Buffers) 2 "i16"
+ MemberName 31(Buffers) 3 "u16"
+ MemberName 31(Buffers) 4 "i64"
+ MemberName 31(Buffers) 5 "u64"
+ MemberName 31(Buffers) 6 "f16"
+ Name 34 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 31(Buffers) 0 Offset 0
+ MemberDecorate 31(Buffers) 1 Offset 4
+ MemberDecorate 31(Buffers) 2 Offset 8
+ MemberDecorate 31(Buffers) 3 Offset 16
+ MemberDecorate 31(Buffers) 4 Offset 32
+ MemberDecorate 31(Buffers) 5 Offset 64
+ MemberDecorate 31(Buffers) 6 Offset 96
+ Decorate 31(Buffers) Block
+ Decorate 34(data) DescriptorSet 0
+ Decorate 34(data) Binding 0
+ Decorate 440 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4)
+ 32: TypeArray 31(Buffers) 15
+ 33: TypePointer StorageBuffer 32
+ 34(data): 33(ptr) Variable StorageBuffer
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 6(int) Constant 0
+ 39: TypePointer StorageBuffer 17(int8_t)
+ 42: 6(int) Constant 3
+ 46: 36(int) Constant 1
+ 47: TypeVector 17(int8_t) 2
+ 48: TypePointer StorageBuffer 18(i8vec4)
+ 57: 36(int) Constant 2
+ 58: TypeVector 17(int8_t) 3
+ 67: 36(int) Constant 3
+ 99: TypePointer StorageBuffer 19(int8_t)
+ 105: TypeVector 19(int8_t) 2
+ 106: TypePointer StorageBuffer 20(i8vec4)
+ 115: TypeVector 19(int8_t) 3
+ 155: TypePointer StorageBuffer 21(int16_t)
+ 161: TypeVector 21(int16_t) 2
+ 162: TypePointer StorageBuffer 22(i16vec4)
+ 171: TypeVector 21(int16_t) 3
+ 211: TypePointer StorageBuffer 23(int16_t)
+ 217: TypeVector 23(int16_t) 2
+ 218: TypePointer StorageBuffer 24(i16vec4)
+ 227: TypeVector 23(int16_t) 3
+ 267: 36(int) Constant 4
+ 268: TypePointer StorageBuffer 25(int64_t)
+ 274: TypeVector 25(int64_t) 2
+ 275: TypePointer StorageBuffer 26(i64vec4)
+ 284: TypeVector 25(int64_t) 3
+ 324: 36(int) Constant 5
+ 325: TypePointer StorageBuffer 27(int64_t)
+ 331: TypeVector 27(int64_t) 2
+ 332: TypePointer StorageBuffer 28(i64vec4)
+ 341: TypeVector 27(int64_t) 3
+ 381: 36(int) Constant 6
+ 382: TypePointer StorageBuffer 29(float16_t)
+ 388: TypeVector 29(float16_t) 2
+ 389: TypePointer StorageBuffer 30(f16vec4)
+ 398: TypeVector 29(float16_t) 3
+ 437: TypeVector 6(int) 3
+ 438: 6(int) Constant 8
+ 439: 6(int) Constant 1
+ 440: 437(ivec3) ConstantComposite 438 439 439
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 35: 6(int) Load 8(invocation)
+ 40: 39(ptr) AccessChain 34(data) 37 37 38
+ 41: 17(int8_t) Load 40
+ 43: 17(int8_t) GroupNonUniformBroadcast 42 41 42
+ 44: 39(ptr) AccessChain 34(data) 35 37 38
+ Store 44 43
+ 45: 6(int) Load 8(invocation)
+ 49: 48(ptr) AccessChain 34(data) 46 37
+ 50: 18(i8vec4) Load 49
+ 51: 47(i8vec2) VectorShuffle 50 50 0 1
+ 52: 47(i8vec2) GroupNonUniformBroadcast 42 51 42
+ 53: 48(ptr) AccessChain 34(data) 45 37
+ 54: 18(i8vec4) Load 53
+ 55: 18(i8vec4) VectorShuffle 54 52 4 5 2 3
+ Store 53 55
+ 56: 6(int) Load 8(invocation)
+ 59: 48(ptr) AccessChain 34(data) 57 37
+ 60: 18(i8vec4) Load 59
+ 61: 58(i8vec3) VectorShuffle 60 60 0 1 2
+ 62: 58(i8vec3) GroupNonUniformBroadcast 42 61 42
+ 63: 48(ptr) AccessChain 34(data) 56 37
+ 64: 18(i8vec4) Load 63
+ 65: 18(i8vec4) VectorShuffle 64 62 4 5 6 3
+ Store 63 65
+ 66: 6(int) Load 8(invocation)
+ 68: 48(ptr) AccessChain 34(data) 67 37
+ 69: 18(i8vec4) Load 68
+ 70: 18(i8vec4) GroupNonUniformBroadcast 42 69 42
+ 71: 48(ptr) AccessChain 34(data) 66 37
+ Store 71 70
+ 72: 6(int) Load 8(invocation)
+ 73: 39(ptr) AccessChain 34(data) 37 37 38
+ 74: 17(int8_t) Load 73
+ 75: 17(int8_t) GroupNonUniformBroadcastFirst 42 74
+ 76: 39(ptr) AccessChain 34(data) 72 37 38
+ Store 76 75
+ 77: 6(int) Load 8(invocation)
+ 78: 48(ptr) AccessChain 34(data) 46 37
+ 79: 18(i8vec4) Load 78
+ 80: 47(i8vec2) VectorShuffle 79 79 0 1
+ 81: 47(i8vec2) GroupNonUniformBroadcastFirst 42 80
+ 82: 48(ptr) AccessChain 34(data) 77 37
+ 83: 18(i8vec4) Load 82
+ 84: 18(i8vec4) VectorShuffle 83 81 4 5 2 3
+ Store 82 84
+ 85: 6(int) Load 8(invocation)
+ 86: 48(ptr) AccessChain 34(data) 57 37
+ 87: 18(i8vec4) Load 86
+ 88: 58(i8vec3) VectorShuffle 87 87 0 1 2
+ 89: 58(i8vec3) GroupNonUniformBroadcastFirst 42 88
+ 90: 48(ptr) AccessChain 34(data) 85 37
+ 91: 18(i8vec4) Load 90
+ 92: 18(i8vec4) VectorShuffle 91 89 4 5 6 3
+ Store 90 92
+ 93: 6(int) Load 8(invocation)
+ 94: 48(ptr) AccessChain 34(data) 67 37
+ 95: 18(i8vec4) Load 94
+ 96: 18(i8vec4) GroupNonUniformBroadcastFirst 42 95
+ 97: 48(ptr) AccessChain 34(data) 93 37
+ Store 97 96
+ 98: 6(int) Load 8(invocation)
+ 100: 99(ptr) AccessChain 34(data) 37 46 38
+ 101: 19(int8_t) Load 100
+ 102: 19(int8_t) GroupNonUniformBroadcast 42 101 42
+ 103: 99(ptr) AccessChain 34(data) 98 46 38
+ Store 103 102
+ 104: 6(int) Load 8(invocation)
+ 107: 106(ptr) AccessChain 34(data) 46 46
+ 108: 20(i8vec4) Load 107
+ 109: 105(i8vec2) VectorShuffle 108 108 0 1
+ 110: 105(i8vec2) GroupNonUniformBroadcast 42 109 42
+ 111: 106(ptr) AccessChain 34(data) 104 46
+ 112: 20(i8vec4) Load 111
+ 113: 20(i8vec4) VectorShuffle 112 110 4 5 2 3
+ Store 111 113
+ 114: 6(int) Load 8(invocation)
+ 116: 106(ptr) AccessChain 34(data) 57 46
+ 117: 20(i8vec4) Load 116
+ 118: 115(i8vec3) VectorShuffle 117 117 0 1 2
+ 119: 115(i8vec3) GroupNonUniformBroadcast 42 118 42
+ 120: 106(ptr) AccessChain 34(data) 114 46
+ 121: 20(i8vec4) Load 120
+ 122: 20(i8vec4) VectorShuffle 121 119 4 5 6 3
+ Store 120 122
+ 123: 6(int) Load 8(invocation)
+ 124: 106(ptr) AccessChain 34(data) 67 46
+ 125: 20(i8vec4) Load 124
+ 126: 20(i8vec4) GroupNonUniformBroadcast 42 125 42
+ 127: 106(ptr) AccessChain 34(data) 123 46
+ Store 127 126
+ 128: 6(int) Load 8(invocation)
+ 129: 99(ptr) AccessChain 34(data) 37 46 38
+ 130: 19(int8_t) Load 129
+ 131: 19(int8_t) GroupNonUniformBroadcastFirst 42 130
+ 132: 99(ptr) AccessChain 34(data) 128 46 38
+ Store 132 131
+ 133: 6(int) Load 8(invocation)
+ 134: 106(ptr) AccessChain 34(data) 46 46
+ 135: 20(i8vec4) Load 134
+ 136: 105(i8vec2) VectorShuffle 135 135 0 1
+ 137: 105(i8vec2) GroupNonUniformBroadcastFirst 42 136
+ 138: 106(ptr) AccessChain 34(data) 133 46
+ 139: 20(i8vec4) Load 138
+ 140: 20(i8vec4) VectorShuffle 139 137 4 5 2 3
+ Store 138 140
+ 141: 6(int) Load 8(invocation)
+ 142: 106(ptr) AccessChain 34(data) 57 46
+ 143: 20(i8vec4) Load 142
+ 144: 115(i8vec3) VectorShuffle 143 143 0 1 2
+ 145: 115(i8vec3) GroupNonUniformBroadcastFirst 42 144
+ 146: 106(ptr) AccessChain 34(data) 141 46
+ 147: 20(i8vec4) Load 146
+ 148: 20(i8vec4) VectorShuffle 147 145 4 5 6 3
+ Store 146 148
+ 149: 6(int) Load 8(invocation)
+ 150: 106(ptr) AccessChain 34(data) 67 46
+ 151: 20(i8vec4) Load 150
+ 152: 20(i8vec4) GroupNonUniformBroadcastFirst 42 151
+ 153: 106(ptr) AccessChain 34(data) 149 46
+ Store 153 152
+ 154: 6(int) Load 8(invocation)
+ 156: 155(ptr) AccessChain 34(data) 37 57 38
+ 157: 21(int16_t) Load 156
+ 158: 21(int16_t) GroupNonUniformBroadcast 42 157 42
+ 159: 155(ptr) AccessChain 34(data) 154 57 38
+ Store 159 158
+ 160: 6(int) Load 8(invocation)
+ 163: 162(ptr) AccessChain 34(data) 46 57
+ 164: 22(i16vec4) Load 163
+ 165:161(i16vec2) VectorShuffle 164 164 0 1
+ 166:161(i16vec2) GroupNonUniformBroadcast 42 165 42
+ 167: 162(ptr) AccessChain 34(data) 160 57
+ 168: 22(i16vec4) Load 167
+ 169: 22(i16vec4) VectorShuffle 168 166 4 5 2 3
+ Store 167 169
+ 170: 6(int) Load 8(invocation)
+ 172: 162(ptr) AccessChain 34(data) 57 57
+ 173: 22(i16vec4) Load 172
+ 174:171(i16vec3) VectorShuffle 173 173 0 1 2
+ 175:171(i16vec3) GroupNonUniformBroadcast 42 174 42
+ 176: 162(ptr) AccessChain 34(data) 170 57
+ 177: 22(i16vec4) Load 176
+ 178: 22(i16vec4) VectorShuffle 177 175 4 5 6 3
+ Store 176 178
+ 179: 6(int) Load 8(invocation)
+ 180: 162(ptr) AccessChain 34(data) 67 57
+ 181: 22(i16vec4) Load 180
+ 182: 22(i16vec4) GroupNonUniformBroadcast 42 181 42
+ 183: 162(ptr) AccessChain 34(data) 179 57
+ Store 183 182
+ 184: 6(int) Load 8(invocation)
+ 185: 155(ptr) AccessChain 34(data) 37 57 38
+ 186: 21(int16_t) Load 185
+ 187: 21(int16_t) GroupNonUniformBroadcastFirst 42 186
+ 188: 155(ptr) AccessChain 34(data) 184 57 38
+ Store 188 187
+ 189: 6(int) Load 8(invocation)
+ 190: 162(ptr) AccessChain 34(data) 46 57
+ 191: 22(i16vec4) Load 190
+ 192:161(i16vec2) VectorShuffle 191 191 0 1
+ 193:161(i16vec2) GroupNonUniformBroadcastFirst 42 192
+ 194: 162(ptr) AccessChain 34(data) 189 57
+ 195: 22(i16vec4) Load 194
+ 196: 22(i16vec4) VectorShuffle 195 193 4 5 2 3
+ Store 194 196
+ 197: 6(int) Load 8(invocation)
+ 198: 162(ptr) AccessChain 34(data) 57 57
+ 199: 22(i16vec4) Load 198
+ 200:171(i16vec3) VectorShuffle 199 199 0 1 2
+ 201:171(i16vec3) GroupNonUniformBroadcastFirst 42 200
+ 202: 162(ptr) AccessChain 34(data) 197 57
+ 203: 22(i16vec4) Load 202
+ 204: 22(i16vec4) VectorShuffle 203 201 4 5 6 3
+ Store 202 204
+ 205: 6(int) Load 8(invocation)
+ 206: 162(ptr) AccessChain 34(data) 67 57
+ 207: 22(i16vec4) Load 206
+ 208: 22(i16vec4) GroupNonUniformBroadcastFirst 42 207
+ 209: 162(ptr) AccessChain 34(data) 205 57
+ Store 209 208
+ 210: 6(int) Load 8(invocation)
+ 212: 211(ptr) AccessChain 34(data) 37 67 38
+ 213: 23(int16_t) Load 212
+ 214: 23(int16_t) GroupNonUniformBroadcast 42 213 42
+ 215: 211(ptr) AccessChain 34(data) 210 67 38
+ Store 215 214
+ 216: 6(int) Load 8(invocation)
+ 219: 218(ptr) AccessChain 34(data) 46 67
+ 220: 24(i16vec4) Load 219
+ 221:217(i16vec2) VectorShuffle 220 220 0 1
+ 222:217(i16vec2) GroupNonUniformBroadcast 42 221 42
+ 223: 218(ptr) AccessChain 34(data) 216 67
+ 224: 24(i16vec4) Load 223
+ 225: 24(i16vec4) VectorShuffle 224 222 4 5 2 3
+ Store 223 225
+ 226: 6(int) Load 8(invocation)
+ 228: 218(ptr) AccessChain 34(data) 57 67
+ 229: 24(i16vec4) Load 228
+ 230:227(i16vec3) VectorShuffle 229 229 0 1 2
+ 231:227(i16vec3) GroupNonUniformBroadcast 42 230 42
+ 232: 218(ptr) AccessChain 34(data) 226 67
+ 233: 24(i16vec4) Load 232
+ 234: 24(i16vec4) VectorShuffle 233 231 4 5 6 3
+ Store 232 234
+ 235: 6(int) Load 8(invocation)
+ 236: 218(ptr) AccessChain 34(data) 67 67
+ 237: 24(i16vec4) Load 236
+ 238: 24(i16vec4) GroupNonUniformBroadcast 42 237 42
+ 239: 218(ptr) AccessChain 34(data) 235 67
+ Store 239 238
+ 240: 6(int) Load 8(invocation)
+ 241: 211(ptr) AccessChain 34(data) 37 67 38
+ 242: 23(int16_t) Load 241
+ 243: 23(int16_t) GroupNonUniformBroadcastFirst 42 242
+ 244: 211(ptr) AccessChain 34(data) 240 67 38
+ Store 244 243
+ 245: 6(int) Load 8(invocation)
+ 246: 218(ptr) AccessChain 34(data) 46 67
+ 247: 24(i16vec4) Load 246
+ 248:217(i16vec2) VectorShuffle 247 247 0 1
+ 249:217(i16vec2) GroupNonUniformBroadcastFirst 42 248
+ 250: 218(ptr) AccessChain 34(data) 245 67
+ 251: 24(i16vec4) Load 250
+ 252: 24(i16vec4) VectorShuffle 251 249 4 5 2 3
+ Store 250 252
+ 253: 6(int) Load 8(invocation)
+ 254: 218(ptr) AccessChain 34(data) 57 67
+ 255: 24(i16vec4) Load 254
+ 256:227(i16vec3) VectorShuffle 255 255 0 1 2
+ 257:227(i16vec3) GroupNonUniformBroadcastFirst 42 256
+ 258: 218(ptr) AccessChain 34(data) 253 67
+ 259: 24(i16vec4) Load 258
+ 260: 24(i16vec4) VectorShuffle 259 257 4 5 6 3
+ Store 258 260
+ 261: 6(int) Load 8(invocation)
+ 262: 218(ptr) AccessChain 34(data) 67 67
+ 263: 24(i16vec4) Load 262
+ 264: 24(i16vec4) GroupNonUniformBroadcastFirst 42 263
+ 265: 218(ptr) AccessChain 34(data) 261 67
+ Store 265 264
+ 266: 6(int) Load 8(invocation)
+ 269: 268(ptr) AccessChain 34(data) 37 267 38
+ 270: 25(int64_t) Load 269
+ 271: 25(int64_t) GroupNonUniformBroadcast 42 270 42
+ 272: 268(ptr) AccessChain 34(data) 266 267 38
+ Store 272 271
+ 273: 6(int) Load 8(invocation)
+ 276: 275(ptr) AccessChain 34(data) 46 267
+ 277: 26(i64vec4) Load 276
+ 278:274(i64vec2) VectorShuffle 277 277 0 1
+ 279:274(i64vec2) GroupNonUniformBroadcast 42 278 42
+ 280: 275(ptr) AccessChain 34(data) 273 267
+ 281: 26(i64vec4) Load 280
+ 282: 26(i64vec4) VectorShuffle 281 279 4 5 2 3
+ Store 280 282
+ 283: 6(int) Load 8(invocation)
+ 285: 275(ptr) AccessChain 34(data) 57 267
+ 286: 26(i64vec4) Load 285
+ 287:284(i64vec3) VectorShuffle 286 286 0 1 2
+ 288:284(i64vec3) GroupNonUniformBroadcast 42 287 42
+ 289: 275(ptr) AccessChain 34(data) 283 267
+ 290: 26(i64vec4) Load 289
+ 291: 26(i64vec4) VectorShuffle 290 288 4 5 6 3
+ Store 289 291
+ 292: 6(int) Load 8(invocation)
+ 293: 275(ptr) AccessChain 34(data) 67 267
+ 294: 26(i64vec4) Load 293
+ 295: 26(i64vec4) GroupNonUniformBroadcast 42 294 42
+ 296: 275(ptr) AccessChain 34(data) 292 267
+ Store 296 295
+ 297: 6(int) Load 8(invocation)
+ 298: 268(ptr) AccessChain 34(data) 37 267 38
+ 299: 25(int64_t) Load 298
+ 300: 25(int64_t) GroupNonUniformBroadcastFirst 42 299
+ 301: 268(ptr) AccessChain 34(data) 297 267 38
+ Store 301 300
+ 302: 6(int) Load 8(invocation)
+ 303: 275(ptr) AccessChain 34(data) 46 267
+ 304: 26(i64vec4) Load 303
+ 305:274(i64vec2) VectorShuffle 304 304 0 1
+ 306:274(i64vec2) GroupNonUniformBroadcastFirst 42 305
+ 307: 275(ptr) AccessChain 34(data) 302 267
+ 308: 26(i64vec4) Load 307
+ 309: 26(i64vec4) VectorShuffle 308 306 4 5 2 3
+ Store 307 309
+ 310: 6(int) Load 8(invocation)
+ 311: 275(ptr) AccessChain 34(data) 57 267
+ 312: 26(i64vec4) Load 311
+ 313:284(i64vec3) VectorShuffle 312 312 0 1 2
+ 314:284(i64vec3) GroupNonUniformBroadcastFirst 42 313
+ 315: 275(ptr) AccessChain 34(data) 310 267
+ 316: 26(i64vec4) Load 315
+ 317: 26(i64vec4) VectorShuffle 316 314 4 5 6 3
+ Store 315 317
+ 318: 6(int) Load 8(invocation)
+ 319: 275(ptr) AccessChain 34(data) 67 267
+ 320: 26(i64vec4) Load 319
+ 321: 26(i64vec4) GroupNonUniformBroadcastFirst 42 320
+ 322: 275(ptr) AccessChain 34(data) 318 267
+ Store 322 321
+ 323: 6(int) Load 8(invocation)
+ 326: 325(ptr) AccessChain 34(data) 37 324 38
+ 327: 27(int64_t) Load 326
+ 328: 27(int64_t) GroupNonUniformBroadcast 42 327 42
+ 329: 325(ptr) AccessChain 34(data) 323 324 38
+ Store 329 328
+ 330: 6(int) Load 8(invocation)
+ 333: 332(ptr) AccessChain 34(data) 46 324
+ 334: 28(i64vec4) Load 333
+ 335:331(i64vec2) VectorShuffle 334 334 0 1
+ 336:331(i64vec2) GroupNonUniformBroadcast 42 335 42
+ 337: 332(ptr) AccessChain 34(data) 330 324
+ 338: 28(i64vec4) Load 337
+ 339: 28(i64vec4) VectorShuffle 338 336 4 5 2 3
+ Store 337 339
+ 340: 6(int) Load 8(invocation)
+ 342: 332(ptr) AccessChain 34(data) 57 324
+ 343: 28(i64vec4) Load 342
+ 344:341(i64vec3) VectorShuffle 343 343 0 1 2
+ 345:341(i64vec3) GroupNonUniformBroadcast 42 344 42
+ 346: 332(ptr) AccessChain 34(data) 340 324
+ 347: 28(i64vec4) Load 346
+ 348: 28(i64vec4) VectorShuffle 347 345 4 5 6 3
+ Store 346 348
+ 349: 6(int) Load 8(invocation)
+ 350: 332(ptr) AccessChain 34(data) 67 324
+ 351: 28(i64vec4) Load 350
+ 352: 28(i64vec4) GroupNonUniformBroadcast 42 351 42
+ 353: 332(ptr) AccessChain 34(data) 349 324
+ Store 353 352
+ 354: 6(int) Load 8(invocation)
+ 355: 325(ptr) AccessChain 34(data) 37 324 38
+ 356: 27(int64_t) Load 355
+ 357: 27(int64_t) GroupNonUniformBroadcastFirst 42 356
+ 358: 325(ptr) AccessChain 34(data) 354 324 38
+ Store 358 357
+ 359: 6(int) Load 8(invocation)
+ 360: 332(ptr) AccessChain 34(data) 46 324
+ 361: 28(i64vec4) Load 360
+ 362:331(i64vec2) VectorShuffle 361 361 0 1
+ 363:331(i64vec2) GroupNonUniformBroadcastFirst 42 362
+ 364: 332(ptr) AccessChain 34(data) 359 324
+ 365: 28(i64vec4) Load 364
+ 366: 28(i64vec4) VectorShuffle 365 363 4 5 2 3
+ Store 364 366
+ 367: 6(int) Load 8(invocation)
+ 368: 332(ptr) AccessChain 34(data) 57 324
+ 369: 28(i64vec4) Load 368
+ 370:341(i64vec3) VectorShuffle 369 369 0 1 2
+ 371:341(i64vec3) GroupNonUniformBroadcastFirst 42 370
+ 372: 332(ptr) AccessChain 34(data) 367 324
+ 373: 28(i64vec4) Load 372
+ 374: 28(i64vec4) VectorShuffle 373 371 4 5 6 3
+ Store 372 374
+ 375: 6(int) Load 8(invocation)
+ 376: 332(ptr) AccessChain 34(data) 67 324
+ 377: 28(i64vec4) Load 376
+ 378: 28(i64vec4) GroupNonUniformBroadcastFirst 42 377
+ 379: 332(ptr) AccessChain 34(data) 375 324
+ Store 379 378
+ 380: 6(int) Load 8(invocation)
+ 383: 382(ptr) AccessChain 34(data) 37 381 38
+ 384:29(float16_t) Load 383
+ 385:29(float16_t) GroupNonUniformBroadcast 42 384 42
+ 386: 382(ptr) AccessChain 34(data) 380 381 38
+ Store 386 385
+ 387: 6(int) Load 8(invocation)
+ 390: 389(ptr) AccessChain 34(data) 46 381
+ 391: 30(f16vec4) Load 390
+ 392:388(f16vec2) VectorShuffle 391 391 0 1
+ 393:388(f16vec2) GroupNonUniformBroadcast 42 392 42
+ 394: 389(ptr) AccessChain 34(data) 387 381
+ 395: 30(f16vec4) Load 394
+ 396: 30(f16vec4) VectorShuffle 395 393 4 5 2 3
+ Store 394 396
+ 397: 6(int) Load 8(invocation)
+ 399: 389(ptr) AccessChain 34(data) 57 381
+ 400: 30(f16vec4) Load 399
+ 401:398(f16vec3) VectorShuffle 400 400 0 1 2
+ 402:398(f16vec3) GroupNonUniformBroadcast 42 401 42
+ 403: 389(ptr) AccessChain 34(data) 397 381
+ 404: 30(f16vec4) Load 403
+ 405: 30(f16vec4) VectorShuffle 404 402 4 5 6 3
+ Store 403 405
+ 406: 6(int) Load 8(invocation)
+ 407: 389(ptr) AccessChain 34(data) 67 381
+ 408: 30(f16vec4) Load 407
+ 409: 30(f16vec4) GroupNonUniformBroadcast 42 408 42
+ 410: 389(ptr) AccessChain 34(data) 406 381
+ Store 410 409
+ 411: 6(int) Load 8(invocation)
+ 412: 382(ptr) AccessChain 34(data) 37 381 38
+ 413:29(float16_t) Load 412
+ 414:29(float16_t) GroupNonUniformBroadcastFirst 42 413
+ 415: 382(ptr) AccessChain 34(data) 411 381 38
+ Store 415 414
+ 416: 6(int) Load 8(invocation)
+ 417: 389(ptr) AccessChain 34(data) 46 381
+ 418: 30(f16vec4) Load 417
+ 419:388(f16vec2) VectorShuffle 418 418 0 1
+ 420:388(f16vec2) GroupNonUniformBroadcastFirst 42 419
+ 421: 389(ptr) AccessChain 34(data) 416 381
+ 422: 30(f16vec4) Load 421
+ 423: 30(f16vec4) VectorShuffle 422 420 4 5 2 3
+ Store 421 423
+ 424: 6(int) Load 8(invocation)
+ 425: 389(ptr) AccessChain 34(data) 57 381
+ 426: 30(f16vec4) Load 425
+ 427:398(f16vec3) VectorShuffle 426 426 0 1 2
+ 428:398(f16vec3) GroupNonUniformBroadcastFirst 42 427
+ 429: 389(ptr) AccessChain 34(data) 424 381
+ 430: 30(f16vec4) Load 429
+ 431: 30(f16vec4) VectorShuffle 430 428 4 5 6 3
+ Store 429 431
+ 432: 6(int) Load 8(invocation)
+ 433: 389(ptr) AccessChain 34(data) 67 381
+ 434: 30(f16vec4) Load 433
+ 435: 30(f16vec4) GroupNonUniformBroadcastFirst 42 434
+ 436: 389(ptr) AccessChain 34(data) 432 381
+ Store 436 435
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out
new file mode 100644
index 0000000..534560d
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out
@@ -0,0 +1,61 @@
+spv.subgroupExtendedTypesBallotNeg.comp
+ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:30: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:35: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:38: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:40: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:41: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:44: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:45: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:46: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:48: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:49: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:50: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:51: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:53: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:54: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:55: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:56: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:57: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:58: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:59: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:62: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:63: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:64: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:71: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:72: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:73: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:75: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:76: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:77: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:78: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:80: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:81: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:82: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:83: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:84: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:85: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:86: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:87: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 56 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out
new file mode 100644
index 0000000..6319697
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out
@@ -0,0 +1,9 @@
+spv.subgroupExtendedTypesBasic.comp
+ERROR: #version: compute shaders require es profile with version 310 or above, or non-es profile with version 420 or above
+ERROR: #version: statement must appear first in es-profile shader; before comments or newlines
+ERROR: 1 compilation errors. No code generated.
+
+
+ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
new file mode 100644
index 0000000..b0b94b5
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
@@ -0,0 +1,1520 @@
+spv.subgroupExtendedTypesClustered.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 1273
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformClustered
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_clustered"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 31 "Buffers"
+ MemberName 31(Buffers) 0 "i8"
+ MemberName 31(Buffers) 1 "u8"
+ MemberName 31(Buffers) 2 "i16"
+ MemberName 31(Buffers) 3 "u16"
+ MemberName 31(Buffers) 4 "i64"
+ MemberName 31(Buffers) 5 "u64"
+ MemberName 31(Buffers) 6 "f16"
+ Name 34 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 31(Buffers) 0 Offset 0
+ MemberDecorate 31(Buffers) 1 Offset 4
+ MemberDecorate 31(Buffers) 2 Offset 8
+ MemberDecorate 31(Buffers) 3 Offset 16
+ MemberDecorate 31(Buffers) 4 Offset 32
+ MemberDecorate 31(Buffers) 5 Offset 64
+ MemberDecorate 31(Buffers) 6 Offset 96
+ Decorate 31(Buffers) Block
+ Decorate 34(data) DescriptorSet 0
+ Decorate 34(data) Binding 0
+ Decorate 1272 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4)
+ 32: TypeArray 31(Buffers) 15
+ 33: TypePointer StorageBuffer 32
+ 34(data): 33(ptr) Variable StorageBuffer
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 6(int) Constant 0
+ 39: TypePointer StorageBuffer 17(int8_t)
+ 42: 6(int) Constant 1
+ 43: 6(int) Constant 3
+ 47: 36(int) Constant 1
+ 48: TypeVector 17(int8_t) 2
+ 49: TypePointer StorageBuffer 18(i8vec4)
+ 58: 36(int) Constant 2
+ 59: TypeVector 17(int8_t) 3
+ 68: 36(int) Constant 3
+ 230: TypePointer StorageBuffer 19(int8_t)
+ 236: TypeVector 19(int8_t) 2
+ 237: TypePointer StorageBuffer 20(i8vec4)
+ 246: TypeVector 19(int8_t) 3
+ 416: TypePointer StorageBuffer 21(int16_t)
+ 422: TypeVector 21(int16_t) 2
+ 423: TypePointer StorageBuffer 22(i16vec4)
+ 432: TypeVector 21(int16_t) 3
+ 602: TypePointer StorageBuffer 23(int16_t)
+ 608: TypeVector 23(int16_t) 2
+ 609: TypePointer StorageBuffer 24(i16vec4)
+ 618: TypeVector 23(int16_t) 3
+ 788: 36(int) Constant 4
+ 789: TypePointer StorageBuffer 25(int64_t)
+ 795: TypeVector 25(int64_t) 2
+ 796: TypePointer StorageBuffer 26(i64vec4)
+ 805: TypeVector 25(int64_t) 3
+ 975: 36(int) Constant 5
+ 976: TypePointer StorageBuffer 27(int64_t)
+ 982: TypeVector 27(int64_t) 2
+ 983: TypePointer StorageBuffer 28(i64vec4)
+ 992: TypeVector 27(int64_t) 3
+ 1162: 36(int) Constant 6
+ 1163: TypePointer StorageBuffer 29(float16_t)
+ 1169: TypeVector 29(float16_t) 2
+ 1170: TypePointer StorageBuffer 30(f16vec4)
+ 1179: TypeVector 29(float16_t) 3
+ 1270: TypeVector 6(int) 3
+ 1271: 6(int) Constant 8
+ 1272: 1270(ivec3) ConstantComposite 1271 42 42
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 35: 6(int) Load 8(invocation)
+ 40: 39(ptr) AccessChain 34(data) 37 37 38
+ 41: 17(int8_t) Load 40
+ 44: 17(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 41 42
+ 45: 39(ptr) AccessChain 34(data) 35 37 38
+ Store 45 44
+ 46: 6(int) Load 8(invocation)
+ 50: 49(ptr) AccessChain 34(data) 47 37
+ 51: 18(i8vec4) Load 50
+ 52: 48(i8vec2) VectorShuffle 51 51 0 1
+ 53: 48(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 52 42
+ 54: 49(ptr) AccessChain 34(data) 46 37
+ 55: 18(i8vec4) Load 54
+ 56: 18(i8vec4) VectorShuffle 55 53 4 5 2 3
+ Store 54 56
+ 57: 6(int) Load 8(invocation)
+ 60: 49(ptr) AccessChain 34(data) 58 37
+ 61: 18(i8vec4) Load 60
+ 62: 59(i8vec3) VectorShuffle 61 61 0 1 2
+ 63: 59(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 62 42
+ 64: 49(ptr) AccessChain 34(data) 57 37
+ 65: 18(i8vec4) Load 64
+ 66: 18(i8vec4) VectorShuffle 65 63 4 5 6 3
+ Store 64 66
+ 67: 6(int) Load 8(invocation)
+ 69: 49(ptr) AccessChain 34(data) 68 37
+ 70: 18(i8vec4) Load 69
+ 71: 18(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 70 42
+ 72: 49(ptr) AccessChain 34(data) 67 37
+ Store 72 71
+ 73: 6(int) Load 8(invocation)
+ 74: 39(ptr) AccessChain 34(data) 37 37 38
+ 75: 17(int8_t) Load 74
+ 76: 17(int8_t) GroupNonUniformIMul 43 ClusteredReduce 75 42
+ 77: 39(ptr) AccessChain 34(data) 73 37 38
+ Store 77 76
+ 78: 6(int) Load 8(invocation)
+ 79: 49(ptr) AccessChain 34(data) 47 37
+ 80: 18(i8vec4) Load 79
+ 81: 48(i8vec2) VectorShuffle 80 80 0 1
+ 82: 48(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 81 42
+ 83: 49(ptr) AccessChain 34(data) 78 37
+ 84: 18(i8vec4) Load 83
+ 85: 18(i8vec4) VectorShuffle 84 82 4 5 2 3
+ Store 83 85
+ 86: 6(int) Load 8(invocation)
+ 87: 49(ptr) AccessChain 34(data) 58 37
+ 88: 18(i8vec4) Load 87
+ 89: 59(i8vec3) VectorShuffle 88 88 0 1 2
+ 90: 59(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 89 42
+ 91: 49(ptr) AccessChain 34(data) 86 37
+ 92: 18(i8vec4) Load 91
+ 93: 18(i8vec4) VectorShuffle 92 90 4 5 6 3
+ Store 91 93
+ 94: 6(int) Load 8(invocation)
+ 95: 49(ptr) AccessChain 34(data) 68 37
+ 96: 18(i8vec4) Load 95
+ 97: 18(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 96 42
+ 98: 49(ptr) AccessChain 34(data) 94 37
+ Store 98 97
+ 99: 6(int) Load 8(invocation)
+ 100: 39(ptr) AccessChain 34(data) 37 37 38
+ 101: 17(int8_t) Load 100
+ 102: 17(int8_t) GroupNonUniformSMin 43 ClusteredReduce 101 42
+ 103: 39(ptr) AccessChain 34(data) 99 37 38
+ Store 103 102
+ 104: 6(int) Load 8(invocation)
+ 105: 49(ptr) AccessChain 34(data) 47 37
+ 106: 18(i8vec4) Load 105
+ 107: 48(i8vec2) VectorShuffle 106 106 0 1
+ 108: 48(i8vec2) GroupNonUniformSMin 43 ClusteredReduce 107 42
+ 109: 49(ptr) AccessChain 34(data) 104 37
+ 110: 18(i8vec4) Load 109
+ 111: 18(i8vec4) VectorShuffle 110 108 4 5 2 3
+ Store 109 111
+ 112: 6(int) Load 8(invocation)
+ 113: 49(ptr) AccessChain 34(data) 58 37
+ 114: 18(i8vec4) Load 113
+ 115: 59(i8vec3) VectorShuffle 114 114 0 1 2
+ 116: 59(i8vec3) GroupNonUniformSMin 43 ClusteredReduce 115 42
+ 117: 49(ptr) AccessChain 34(data) 112 37
+ 118: 18(i8vec4) Load 117
+ 119: 18(i8vec4) VectorShuffle 118 116 4 5 6 3
+ Store 117 119
+ 120: 6(int) Load 8(invocation)
+ 121: 49(ptr) AccessChain 34(data) 68 37
+ 122: 18(i8vec4) Load 121
+ 123: 18(i8vec4) GroupNonUniformSMin 43 ClusteredReduce 122 42
+ 124: 49(ptr) AccessChain 34(data) 120 37
+ Store 124 123
+ 125: 6(int) Load 8(invocation)
+ 126: 39(ptr) AccessChain 34(data) 37 37 38
+ 127: 17(int8_t) Load 126
+ 128: 17(int8_t) GroupNonUniformSMax 43 ClusteredReduce 127 42
+ 129: 39(ptr) AccessChain 34(data) 125 37 38
+ Store 129 128
+ 130: 6(int) Load 8(invocation)
+ 131: 49(ptr) AccessChain 34(data) 47 37
+ 132: 18(i8vec4) Load 131
+ 133: 48(i8vec2) VectorShuffle 132 132 0 1
+ 134: 48(i8vec2) GroupNonUniformSMax 43 ClusteredReduce 133 42
+ 135: 49(ptr) AccessChain 34(data) 130 37
+ 136: 18(i8vec4) Load 135
+ 137: 18(i8vec4) VectorShuffle 136 134 4 5 2 3
+ Store 135 137
+ 138: 6(int) Load 8(invocation)
+ 139: 49(ptr) AccessChain 34(data) 58 37
+ 140: 18(i8vec4) Load 139
+ 141: 59(i8vec3) VectorShuffle 140 140 0 1 2
+ 142: 59(i8vec3) GroupNonUniformSMax 43 ClusteredReduce 141 42
+ 143: 49(ptr) AccessChain 34(data) 138 37
+ 144: 18(i8vec4) Load 143
+ 145: 18(i8vec4) VectorShuffle 144 142 4 5 6 3
+ Store 143 145
+ 146: 6(int) Load 8(invocation)
+ 147: 49(ptr) AccessChain 34(data) 68 37
+ 148: 18(i8vec4) Load 147
+ 149: 18(i8vec4) GroupNonUniformSMax 43 ClusteredReduce 148 42
+ 150: 49(ptr) AccessChain 34(data) 146 37
+ Store 150 149
+ 151: 6(int) Load 8(invocation)
+ 152: 39(ptr) AccessChain 34(data) 37 37 38
+ 153: 17(int8_t) Load 152
+ 154: 17(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 153 42
+ 155: 39(ptr) AccessChain 34(data) 151 37 38
+ Store 155 154
+ 156: 6(int) Load 8(invocation)
+ 157: 49(ptr) AccessChain 34(data) 47 37
+ 158: 18(i8vec4) Load 157
+ 159: 48(i8vec2) VectorShuffle 158 158 0 1
+ 160: 48(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 159 42
+ 161: 49(ptr) AccessChain 34(data) 156 37
+ 162: 18(i8vec4) Load 161
+ 163: 18(i8vec4) VectorShuffle 162 160 4 5 2 3
+ Store 161 163
+ 164: 6(int) Load 8(invocation)
+ 165: 49(ptr) AccessChain 34(data) 58 37
+ 166: 18(i8vec4) Load 165
+ 167: 59(i8vec3) VectorShuffle 166 166 0 1 2
+ 168: 59(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 167 42
+ 169: 49(ptr) AccessChain 34(data) 164 37
+ 170: 18(i8vec4) Load 169
+ 171: 18(i8vec4) VectorShuffle 170 168 4 5 6 3
+ Store 169 171
+ 172: 6(int) Load 8(invocation)
+ 173: 49(ptr) AccessChain 34(data) 68 37
+ 174: 18(i8vec4) Load 173
+ 175: 18(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 174 42
+ 176: 49(ptr) AccessChain 34(data) 172 37
+ Store 176 175
+ 177: 6(int) Load 8(invocation)
+ 178: 39(ptr) AccessChain 34(data) 37 37 38
+ 179: 17(int8_t) Load 178
+ 180: 17(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 179 42
+ 181: 39(ptr) AccessChain 34(data) 177 37 38
+ Store 181 180
+ 182: 6(int) Load 8(invocation)
+ 183: 49(ptr) AccessChain 34(data) 47 37
+ 184: 18(i8vec4) Load 183
+ 185: 48(i8vec2) VectorShuffle 184 184 0 1
+ 186: 48(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 185 42
+ 187: 49(ptr) AccessChain 34(data) 182 37
+ 188: 18(i8vec4) Load 187
+ 189: 18(i8vec4) VectorShuffle 188 186 4 5 2 3
+ Store 187 189
+ 190: 6(int) Load 8(invocation)
+ 191: 49(ptr) AccessChain 34(data) 58 37
+ 192: 18(i8vec4) Load 191
+ 193: 59(i8vec3) VectorShuffle 192 192 0 1 2
+ 194: 59(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 193 42
+ 195: 49(ptr) AccessChain 34(data) 190 37
+ 196: 18(i8vec4) Load 195
+ 197: 18(i8vec4) VectorShuffle 196 194 4 5 6 3
+ Store 195 197
+ 198: 6(int) Load 8(invocation)
+ 199: 49(ptr) AccessChain 34(data) 68 37
+ 200: 18(i8vec4) Load 199
+ 201: 18(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 200 42
+ 202: 49(ptr) AccessChain 34(data) 198 37
+ Store 202 201
+ 203: 6(int) Load 8(invocation)
+ 204: 39(ptr) AccessChain 34(data) 37 37 38
+ 205: 17(int8_t) Load 204
+ 206: 17(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 205 42
+ 207: 39(ptr) AccessChain 34(data) 203 37 38
+ Store 207 206
+ 208: 6(int) Load 8(invocation)
+ 209: 49(ptr) AccessChain 34(data) 47 37
+ 210: 18(i8vec4) Load 209
+ 211: 48(i8vec2) VectorShuffle 210 210 0 1
+ 212: 48(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 211 42
+ 213: 49(ptr) AccessChain 34(data) 208 37
+ 214: 18(i8vec4) Load 213
+ 215: 18(i8vec4) VectorShuffle 214 212 4 5 2 3
+ Store 213 215
+ 216: 6(int) Load 8(invocation)
+ 217: 49(ptr) AccessChain 34(data) 58 37
+ 218: 18(i8vec4) Load 217
+ 219: 59(i8vec3) VectorShuffle 218 218 0 1 2
+ 220: 59(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 219 42
+ 221: 49(ptr) AccessChain 34(data) 216 37
+ 222: 18(i8vec4) Load 221
+ 223: 18(i8vec4) VectorShuffle 222 220 4 5 6 3
+ Store 221 223
+ 224: 6(int) Load 8(invocation)
+ 225: 49(ptr) AccessChain 34(data) 68 37
+ 226: 18(i8vec4) Load 225
+ 227: 18(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 226 42
+ 228: 49(ptr) AccessChain 34(data) 224 37
+ Store 228 227
+ 229: 6(int) Load 8(invocation)
+ 231: 230(ptr) AccessChain 34(data) 37 47 38
+ 232: 19(int8_t) Load 231
+ 233: 19(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 232 42
+ 234: 230(ptr) AccessChain 34(data) 229 47 38
+ Store 234 233
+ 235: 6(int) Load 8(invocation)
+ 238: 237(ptr) AccessChain 34(data) 47 47
+ 239: 20(i8vec4) Load 238
+ 240: 236(i8vec2) VectorShuffle 239 239 0 1
+ 241: 236(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 240 42
+ 242: 237(ptr) AccessChain 34(data) 235 47
+ 243: 20(i8vec4) Load 242
+ 244: 20(i8vec4) VectorShuffle 243 241 4 5 2 3
+ Store 242 244
+ 245: 6(int) Load 8(invocation)
+ 247: 237(ptr) AccessChain 34(data) 58 47
+ 248: 20(i8vec4) Load 247
+ 249: 246(i8vec3) VectorShuffle 248 248 0 1 2
+ 250: 246(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 249 42
+ 251: 237(ptr) AccessChain 34(data) 245 47
+ 252: 20(i8vec4) Load 251
+ 253: 20(i8vec4) VectorShuffle 252 250 4 5 6 3
+ Store 251 253
+ 254: 6(int) Load 8(invocation)
+ 255: 237(ptr) AccessChain 34(data) 68 47
+ 256: 20(i8vec4) Load 255
+ 257: 20(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 256 42
+ 258: 237(ptr) AccessChain 34(data) 254 47
+ Store 258 257
+ 259: 6(int) Load 8(invocation)
+ 260: 230(ptr) AccessChain 34(data) 37 47 38
+ 261: 19(int8_t) Load 260
+ 262: 19(int8_t) GroupNonUniformIMul 43 ClusteredReduce 261 42
+ 263: 230(ptr) AccessChain 34(data) 259 47 38
+ Store 263 262
+ 264: 6(int) Load 8(invocation)
+ 265: 237(ptr) AccessChain 34(data) 47 47
+ 266: 20(i8vec4) Load 265
+ 267: 236(i8vec2) VectorShuffle 266 266 0 1
+ 268: 236(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 267 42
+ 269: 237(ptr) AccessChain 34(data) 264 47
+ 270: 20(i8vec4) Load 269
+ 271: 20(i8vec4) VectorShuffle 270 268 4 5 2 3
+ Store 269 271
+ 272: 6(int) Load 8(invocation)
+ 273: 237(ptr) AccessChain 34(data) 58 47
+ 274: 20(i8vec4) Load 273
+ 275: 246(i8vec3) VectorShuffle 274 274 0 1 2
+ 276: 246(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 275 42
+ 277: 237(ptr) AccessChain 34(data) 272 47
+ 278: 20(i8vec4) Load 277
+ 279: 20(i8vec4) VectorShuffle 278 276 4 5 6 3
+ Store 277 279
+ 280: 6(int) Load 8(invocation)
+ 281: 237(ptr) AccessChain 34(data) 68 47
+ 282: 20(i8vec4) Load 281
+ 283: 20(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 282 42
+ 284: 237(ptr) AccessChain 34(data) 280 47
+ Store 284 283
+ 285: 6(int) Load 8(invocation)
+ 286: 230(ptr) AccessChain 34(data) 37 47 38
+ 287: 19(int8_t) Load 286
+ 288: 19(int8_t) GroupNonUniformUMin 43 ClusteredReduce 287 42
+ 289: 230(ptr) AccessChain 34(data) 285 47 38
+ Store 289 288
+ 290: 6(int) Load 8(invocation)
+ 291: 237(ptr) AccessChain 34(data) 47 47
+ 292: 20(i8vec4) Load 291
+ 293: 236(i8vec2) VectorShuffle 292 292 0 1
+ 294: 236(i8vec2) GroupNonUniformUMin 43 ClusteredReduce 293 42
+ 295: 237(ptr) AccessChain 34(data) 290 47
+ 296: 20(i8vec4) Load 295
+ 297: 20(i8vec4) VectorShuffle 296 294 4 5 2 3
+ Store 295 297
+ 298: 6(int) Load 8(invocation)
+ 299: 237(ptr) AccessChain 34(data) 58 47
+ 300: 20(i8vec4) Load 299
+ 301: 246(i8vec3) VectorShuffle 300 300 0 1 2
+ 302: 246(i8vec3) GroupNonUniformUMin 43 ClusteredReduce 301 42
+ 303: 237(ptr) AccessChain 34(data) 298 47
+ 304: 20(i8vec4) Load 303
+ 305: 20(i8vec4) VectorShuffle 304 302 4 5 6 3
+ Store 303 305
+ 306: 6(int) Load 8(invocation)
+ 307: 237(ptr) AccessChain 34(data) 68 47
+ 308: 20(i8vec4) Load 307
+ 309: 20(i8vec4) GroupNonUniformUMin 43 ClusteredReduce 308 42
+ 310: 237(ptr) AccessChain 34(data) 306 47
+ Store 310 309
+ 311: 6(int) Load 8(invocation)
+ 312: 230(ptr) AccessChain 34(data) 37 47 38
+ 313: 19(int8_t) Load 312
+ 314: 19(int8_t) GroupNonUniformUMax 43 ClusteredReduce 313 42
+ 315: 230(ptr) AccessChain 34(data) 311 47 38
+ Store 315 314
+ 316: 6(int) Load 8(invocation)
+ 317: 237(ptr) AccessChain 34(data) 47 47
+ 318: 20(i8vec4) Load 317
+ 319: 236(i8vec2) VectorShuffle 318 318 0 1
+ 320: 236(i8vec2) GroupNonUniformUMax 43 ClusteredReduce 319 42
+ 321: 237(ptr) AccessChain 34(data) 316 47
+ 322: 20(i8vec4) Load 321
+ 323: 20(i8vec4) VectorShuffle 322 320 4 5 2 3
+ Store 321 323
+ 324: 6(int) Load 8(invocation)
+ 325: 237(ptr) AccessChain 34(data) 58 47
+ 326: 20(i8vec4) Load 325
+ 327: 246(i8vec3) VectorShuffle 326 326 0 1 2
+ 328: 246(i8vec3) GroupNonUniformUMax 43 ClusteredReduce 327 42
+ 329: 237(ptr) AccessChain 34(data) 324 47
+ 330: 20(i8vec4) Load 329
+ 331: 20(i8vec4) VectorShuffle 330 328 4 5 6 3
+ Store 329 331
+ 332: 6(int) Load 8(invocation)
+ 333: 237(ptr) AccessChain 34(data) 68 47
+ 334: 20(i8vec4) Load 333
+ 335: 20(i8vec4) GroupNonUniformUMax 43 ClusteredReduce 334 42
+ 336: 237(ptr) AccessChain 34(data) 332 47
+ Store 336 335
+ 337: 6(int) Load 8(invocation)
+ 338: 230(ptr) AccessChain 34(data) 37 47 38
+ 339: 19(int8_t) Load 338
+ 340: 19(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 339 42
+ 341: 230(ptr) AccessChain 34(data) 337 47 38
+ Store 341 340
+ 342: 6(int) Load 8(invocation)
+ 343: 237(ptr) AccessChain 34(data) 47 47
+ 344: 20(i8vec4) Load 343
+ 345: 236(i8vec2) VectorShuffle 344 344 0 1
+ 346: 236(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 345 42
+ 347: 237(ptr) AccessChain 34(data) 342 47
+ 348: 20(i8vec4) Load 347
+ 349: 20(i8vec4) VectorShuffle 348 346 4 5 2 3
+ Store 347 349
+ 350: 6(int) Load 8(invocation)
+ 351: 237(ptr) AccessChain 34(data) 58 47
+ 352: 20(i8vec4) Load 351
+ 353: 246(i8vec3) VectorShuffle 352 352 0 1 2
+ 354: 246(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 353 42
+ 355: 237(ptr) AccessChain 34(data) 350 47
+ 356: 20(i8vec4) Load 355
+ 357: 20(i8vec4) VectorShuffle 356 354 4 5 6 3
+ Store 355 357
+ 358: 6(int) Load 8(invocation)
+ 359: 237(ptr) AccessChain 34(data) 68 47
+ 360: 20(i8vec4) Load 359
+ 361: 20(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 360 42
+ 362: 237(ptr) AccessChain 34(data) 358 47
+ Store 362 361
+ 363: 6(int) Load 8(invocation)
+ 364: 230(ptr) AccessChain 34(data) 37 47 38
+ 365: 19(int8_t) Load 364
+ 366: 19(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 365 42
+ 367: 230(ptr) AccessChain 34(data) 363 47 38
+ Store 367 366
+ 368: 6(int) Load 8(invocation)
+ 369: 237(ptr) AccessChain 34(data) 47 47
+ 370: 20(i8vec4) Load 369
+ 371: 236(i8vec2) VectorShuffle 370 370 0 1
+ 372: 236(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 371 42
+ 373: 237(ptr) AccessChain 34(data) 368 47
+ 374: 20(i8vec4) Load 373
+ 375: 20(i8vec4) VectorShuffle 374 372 4 5 2 3
+ Store 373 375
+ 376: 6(int) Load 8(invocation)
+ 377: 237(ptr) AccessChain 34(data) 58 47
+ 378: 20(i8vec4) Load 377
+ 379: 246(i8vec3) VectorShuffle 378 378 0 1 2
+ 380: 246(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 379 42
+ 381: 237(ptr) AccessChain 34(data) 376 47
+ 382: 20(i8vec4) Load 381
+ 383: 20(i8vec4) VectorShuffle 382 380 4 5 6 3
+ Store 381 383
+ 384: 6(int) Load 8(invocation)
+ 385: 237(ptr) AccessChain 34(data) 68 47
+ 386: 20(i8vec4) Load 385
+ 387: 20(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 386 42
+ 388: 237(ptr) AccessChain 34(data) 384 47
+ Store 388 387
+ 389: 6(int) Load 8(invocation)
+ 390: 230(ptr) AccessChain 34(data) 37 47 38
+ 391: 19(int8_t) Load 390
+ 392: 19(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 391 42
+ 393: 230(ptr) AccessChain 34(data) 389 47 38
+ Store 393 392
+ 394: 6(int) Load 8(invocation)
+ 395: 237(ptr) AccessChain 34(data) 47 47
+ 396: 20(i8vec4) Load 395
+ 397: 236(i8vec2) VectorShuffle 396 396 0 1
+ 398: 236(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 397 42
+ 399: 237(ptr) AccessChain 34(data) 394 47
+ 400: 20(i8vec4) Load 399
+ 401: 20(i8vec4) VectorShuffle 400 398 4 5 2 3
+ Store 399 401
+ 402: 6(int) Load 8(invocation)
+ 403: 237(ptr) AccessChain 34(data) 58 47
+ 404: 20(i8vec4) Load 403
+ 405: 246(i8vec3) VectorShuffle 404 404 0 1 2
+ 406: 246(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 405 42
+ 407: 237(ptr) AccessChain 34(data) 402 47
+ 408: 20(i8vec4) Load 407
+ 409: 20(i8vec4) VectorShuffle 408 406 4 5 6 3
+ Store 407 409
+ 410: 6(int) Load 8(invocation)
+ 411: 237(ptr) AccessChain 34(data) 68 47
+ 412: 20(i8vec4) Load 411
+ 413: 20(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 412 42
+ 414: 237(ptr) AccessChain 34(data) 410 47
+ Store 414 413
+ 415: 6(int) Load 8(invocation)
+ 417: 416(ptr) AccessChain 34(data) 37 58 38
+ 418: 21(int16_t) Load 417
+ 419: 21(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 418 42
+ 420: 416(ptr) AccessChain 34(data) 415 58 38
+ Store 420 419
+ 421: 6(int) Load 8(invocation)
+ 424: 423(ptr) AccessChain 34(data) 47 58
+ 425: 22(i16vec4) Load 424
+ 426:422(i16vec2) VectorShuffle 425 425 0 1
+ 427:422(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 426 42
+ 428: 423(ptr) AccessChain 34(data) 421 58
+ 429: 22(i16vec4) Load 428
+ 430: 22(i16vec4) VectorShuffle 429 427 4 5 2 3
+ Store 428 430
+ 431: 6(int) Load 8(invocation)
+ 433: 423(ptr) AccessChain 34(data) 58 58
+ 434: 22(i16vec4) Load 433
+ 435:432(i16vec3) VectorShuffle 434 434 0 1 2
+ 436:432(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 435 42
+ 437: 423(ptr) AccessChain 34(data) 431 58
+ 438: 22(i16vec4) Load 437
+ 439: 22(i16vec4) VectorShuffle 438 436 4 5 6 3
+ Store 437 439
+ 440: 6(int) Load 8(invocation)
+ 441: 423(ptr) AccessChain 34(data) 68 58
+ 442: 22(i16vec4) Load 441
+ 443: 22(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 442 42
+ 444: 423(ptr) AccessChain 34(data) 440 58
+ Store 444 443
+ 445: 6(int) Load 8(invocation)
+ 446: 416(ptr) AccessChain 34(data) 37 58 38
+ 447: 21(int16_t) Load 446
+ 448: 21(int16_t) GroupNonUniformIMul 43 ClusteredReduce 447 42
+ 449: 416(ptr) AccessChain 34(data) 445 58 38
+ Store 449 448
+ 450: 6(int) Load 8(invocation)
+ 451: 423(ptr) AccessChain 34(data) 47 58
+ 452: 22(i16vec4) Load 451
+ 453:422(i16vec2) VectorShuffle 452 452 0 1
+ 454:422(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 453 42
+ 455: 423(ptr) AccessChain 34(data) 450 58
+ 456: 22(i16vec4) Load 455
+ 457: 22(i16vec4) VectorShuffle 456 454 4 5 2 3
+ Store 455 457
+ 458: 6(int) Load 8(invocation)
+ 459: 423(ptr) AccessChain 34(data) 58 58
+ 460: 22(i16vec4) Load 459
+ 461:432(i16vec3) VectorShuffle 460 460 0 1 2
+ 462:432(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 461 42
+ 463: 423(ptr) AccessChain 34(data) 458 58
+ 464: 22(i16vec4) Load 463
+ 465: 22(i16vec4) VectorShuffle 464 462 4 5 6 3
+ Store 463 465
+ 466: 6(int) Load 8(invocation)
+ 467: 423(ptr) AccessChain 34(data) 68 58
+ 468: 22(i16vec4) Load 467
+ 469: 22(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 468 42
+ 470: 423(ptr) AccessChain 34(data) 466 58
+ Store 470 469
+ 471: 6(int) Load 8(invocation)
+ 472: 416(ptr) AccessChain 34(data) 37 58 38
+ 473: 21(int16_t) Load 472
+ 474: 21(int16_t) GroupNonUniformSMin 43 ClusteredReduce 473 42
+ 475: 416(ptr) AccessChain 34(data) 471 58 38
+ Store 475 474
+ 476: 6(int) Load 8(invocation)
+ 477: 423(ptr) AccessChain 34(data) 47 58
+ 478: 22(i16vec4) Load 477
+ 479:422(i16vec2) VectorShuffle 478 478 0 1
+ 480:422(i16vec2) GroupNonUniformSMin 43 ClusteredReduce 479 42
+ 481: 423(ptr) AccessChain 34(data) 476 58
+ 482: 22(i16vec4) Load 481
+ 483: 22(i16vec4) VectorShuffle 482 480 4 5 2 3
+ Store 481 483
+ 484: 6(int) Load 8(invocation)
+ 485: 423(ptr) AccessChain 34(data) 58 58
+ 486: 22(i16vec4) Load 485
+ 487:432(i16vec3) VectorShuffle 486 486 0 1 2
+ 488:432(i16vec3) GroupNonUniformSMin 43 ClusteredReduce 487 42
+ 489: 423(ptr) AccessChain 34(data) 484 58
+ 490: 22(i16vec4) Load 489
+ 491: 22(i16vec4) VectorShuffle 490 488 4 5 6 3
+ Store 489 491
+ 492: 6(int) Load 8(invocation)
+ 493: 423(ptr) AccessChain 34(data) 68 58
+ 494: 22(i16vec4) Load 493
+ 495: 22(i16vec4) GroupNonUniformSMin 43 ClusteredReduce 494 42
+ 496: 423(ptr) AccessChain 34(data) 492 58
+ Store 496 495
+ 497: 6(int) Load 8(invocation)
+ 498: 416(ptr) AccessChain 34(data) 37 58 38
+ 499: 21(int16_t) Load 498
+ 500: 21(int16_t) GroupNonUniformSMax 43 ClusteredReduce 499 42
+ 501: 416(ptr) AccessChain 34(data) 497 58 38
+ Store 501 500
+ 502: 6(int) Load 8(invocation)
+ 503: 423(ptr) AccessChain 34(data) 47 58
+ 504: 22(i16vec4) Load 503
+ 505:422(i16vec2) VectorShuffle 504 504 0 1
+ 506:422(i16vec2) GroupNonUniformSMax 43 ClusteredReduce 505 42
+ 507: 423(ptr) AccessChain 34(data) 502 58
+ 508: 22(i16vec4) Load 507
+ 509: 22(i16vec4) VectorShuffle 508 506 4 5 2 3
+ Store 507 509
+ 510: 6(int) Load 8(invocation)
+ 511: 423(ptr) AccessChain 34(data) 58 58
+ 512: 22(i16vec4) Load 511
+ 513:432(i16vec3) VectorShuffle 512 512 0 1 2
+ 514:432(i16vec3) GroupNonUniformSMax 43 ClusteredReduce 513 42
+ 515: 423(ptr) AccessChain 34(data) 510 58
+ 516: 22(i16vec4) Load 515
+ 517: 22(i16vec4) VectorShuffle 516 514 4 5 6 3
+ Store 515 517
+ 518: 6(int) Load 8(invocation)
+ 519: 423(ptr) AccessChain 34(data) 68 58
+ 520: 22(i16vec4) Load 519
+ 521: 22(i16vec4) GroupNonUniformSMax 43 ClusteredReduce 520 42
+ 522: 423(ptr) AccessChain 34(data) 518 58
+ Store 522 521
+ 523: 6(int) Load 8(invocation)
+ 524: 416(ptr) AccessChain 34(data) 37 58 38
+ 525: 21(int16_t) Load 524
+ 526: 21(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 525 42
+ 527: 416(ptr) AccessChain 34(data) 523 58 38
+ Store 527 526
+ 528: 6(int) Load 8(invocation)
+ 529: 423(ptr) AccessChain 34(data) 47 58
+ 530: 22(i16vec4) Load 529
+ 531:422(i16vec2) VectorShuffle 530 530 0 1
+ 532:422(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 531 42
+ 533: 423(ptr) AccessChain 34(data) 528 58
+ 534: 22(i16vec4) Load 533
+ 535: 22(i16vec4) VectorShuffle 534 532 4 5 2 3
+ Store 533 535
+ 536: 6(int) Load 8(invocation)
+ 537: 423(ptr) AccessChain 34(data) 58 58
+ 538: 22(i16vec4) Load 537
+ 539:432(i16vec3) VectorShuffle 538 538 0 1 2
+ 540:432(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 539 42
+ 541: 423(ptr) AccessChain 34(data) 536 58
+ 542: 22(i16vec4) Load 541
+ 543: 22(i16vec4) VectorShuffle 542 540 4 5 6 3
+ Store 541 543
+ 544: 6(int) Load 8(invocation)
+ 545: 423(ptr) AccessChain 34(data) 68 58
+ 546: 22(i16vec4) Load 545
+ 547: 22(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 546 42
+ 548: 423(ptr) AccessChain 34(data) 544 58
+ Store 548 547
+ 549: 6(int) Load 8(invocation)
+ 550: 416(ptr) AccessChain 34(data) 37 58 38
+ 551: 21(int16_t) Load 550
+ 552: 21(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 551 42
+ 553: 416(ptr) AccessChain 34(data) 549 58 38
+ Store 553 552
+ 554: 6(int) Load 8(invocation)
+ 555: 423(ptr) AccessChain 34(data) 47 58
+ 556: 22(i16vec4) Load 555
+ 557:422(i16vec2) VectorShuffle 556 556 0 1
+ 558:422(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 557 42
+ 559: 423(ptr) AccessChain 34(data) 554 58
+ 560: 22(i16vec4) Load 559
+ 561: 22(i16vec4) VectorShuffle 560 558 4 5 2 3
+ Store 559 561
+ 562: 6(int) Load 8(invocation)
+ 563: 423(ptr) AccessChain 34(data) 58 58
+ 564: 22(i16vec4) Load 563
+ 565:432(i16vec3) VectorShuffle 564 564 0 1 2
+ 566:432(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 565 42
+ 567: 423(ptr) AccessChain 34(data) 562 58
+ 568: 22(i16vec4) Load 567
+ 569: 22(i16vec4) VectorShuffle 568 566 4 5 6 3
+ Store 567 569
+ 570: 6(int) Load 8(invocation)
+ 571: 423(ptr) AccessChain 34(data) 68 58
+ 572: 22(i16vec4) Load 571
+ 573: 22(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 572 42
+ 574: 423(ptr) AccessChain 34(data) 570 58
+ Store 574 573
+ 575: 6(int) Load 8(invocation)
+ 576: 416(ptr) AccessChain 34(data) 37 58 38
+ 577: 21(int16_t) Load 576
+ 578: 21(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 577 42
+ 579: 416(ptr) AccessChain 34(data) 575 58 38
+ Store 579 578
+ 580: 6(int) Load 8(invocation)
+ 581: 423(ptr) AccessChain 34(data) 47 58
+ 582: 22(i16vec4) Load 581
+ 583:422(i16vec2) VectorShuffle 582 582 0 1
+ 584:422(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 583 42
+ 585: 423(ptr) AccessChain 34(data) 580 58
+ 586: 22(i16vec4) Load 585
+ 587: 22(i16vec4) VectorShuffle 586 584 4 5 2 3
+ Store 585 587
+ 588: 6(int) Load 8(invocation)
+ 589: 423(ptr) AccessChain 34(data) 58 58
+ 590: 22(i16vec4) Load 589
+ 591:432(i16vec3) VectorShuffle 590 590 0 1 2
+ 592:432(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 591 42
+ 593: 423(ptr) AccessChain 34(data) 588 58
+ 594: 22(i16vec4) Load 593
+ 595: 22(i16vec4) VectorShuffle 594 592 4 5 6 3
+ Store 593 595
+ 596: 6(int) Load 8(invocation)
+ 597: 423(ptr) AccessChain 34(data) 68 58
+ 598: 22(i16vec4) Load 597
+ 599: 22(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 598 42
+ 600: 423(ptr) AccessChain 34(data) 596 58
+ Store 600 599
+ 601: 6(int) Load 8(invocation)
+ 603: 602(ptr) AccessChain 34(data) 37 68 38
+ 604: 23(int16_t) Load 603
+ 605: 23(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 604 42
+ 606: 602(ptr) AccessChain 34(data) 601 68 38
+ Store 606 605
+ 607: 6(int) Load 8(invocation)
+ 610: 609(ptr) AccessChain 34(data) 47 68
+ 611: 24(i16vec4) Load 610
+ 612:608(i16vec2) VectorShuffle 611 611 0 1
+ 613:608(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 612 42
+ 614: 609(ptr) AccessChain 34(data) 607 68
+ 615: 24(i16vec4) Load 614
+ 616: 24(i16vec4) VectorShuffle 615 613 4 5 2 3
+ Store 614 616
+ 617: 6(int) Load 8(invocation)
+ 619: 609(ptr) AccessChain 34(data) 58 68
+ 620: 24(i16vec4) Load 619
+ 621:618(i16vec3) VectorShuffle 620 620 0 1 2
+ 622:618(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 621 42
+ 623: 609(ptr) AccessChain 34(data) 617 68
+ 624: 24(i16vec4) Load 623
+ 625: 24(i16vec4) VectorShuffle 624 622 4 5 6 3
+ Store 623 625
+ 626: 6(int) Load 8(invocation)
+ 627: 609(ptr) AccessChain 34(data) 68 68
+ 628: 24(i16vec4) Load 627
+ 629: 24(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 628 42
+ 630: 609(ptr) AccessChain 34(data) 626 68
+ Store 630 629
+ 631: 6(int) Load 8(invocation)
+ 632: 602(ptr) AccessChain 34(data) 37 68 38
+ 633: 23(int16_t) Load 632
+ 634: 23(int16_t) GroupNonUniformIMul 43 ClusteredReduce 633 42
+ 635: 602(ptr) AccessChain 34(data) 631 68 38
+ Store 635 634
+ 636: 6(int) Load 8(invocation)
+ 637: 609(ptr) AccessChain 34(data) 47 68
+ 638: 24(i16vec4) Load 637
+ 639:608(i16vec2) VectorShuffle 638 638 0 1
+ 640:608(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 639 42
+ 641: 609(ptr) AccessChain 34(data) 636 68
+ 642: 24(i16vec4) Load 641
+ 643: 24(i16vec4) VectorShuffle 642 640 4 5 2 3
+ Store 641 643
+ 644: 6(int) Load 8(invocation)
+ 645: 609(ptr) AccessChain 34(data) 58 68
+ 646: 24(i16vec4) Load 645
+ 647:618(i16vec3) VectorShuffle 646 646 0 1 2
+ 648:618(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 647 42
+ 649: 609(ptr) AccessChain 34(data) 644 68
+ 650: 24(i16vec4) Load 649
+ 651: 24(i16vec4) VectorShuffle 650 648 4 5 6 3
+ Store 649 651
+ 652: 6(int) Load 8(invocation)
+ 653: 609(ptr) AccessChain 34(data) 68 68
+ 654: 24(i16vec4) Load 653
+ 655: 24(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 654 42
+ 656: 609(ptr) AccessChain 34(data) 652 68
+ Store 656 655
+ 657: 6(int) Load 8(invocation)
+ 658: 602(ptr) AccessChain 34(data) 37 68 38
+ 659: 23(int16_t) Load 658
+ 660: 23(int16_t) GroupNonUniformUMin 43 ClusteredReduce 659 42
+ 661: 602(ptr) AccessChain 34(data) 657 68 38
+ Store 661 660
+ 662: 6(int) Load 8(invocation)
+ 663: 609(ptr) AccessChain 34(data) 47 68
+ 664: 24(i16vec4) Load 663
+ 665:608(i16vec2) VectorShuffle 664 664 0 1
+ 666:608(i16vec2) GroupNonUniformUMin 43 ClusteredReduce 665 42
+ 667: 609(ptr) AccessChain 34(data) 662 68
+ 668: 24(i16vec4) Load 667
+ 669: 24(i16vec4) VectorShuffle 668 666 4 5 2 3
+ Store 667 669
+ 670: 6(int) Load 8(invocation)
+ 671: 609(ptr) AccessChain 34(data) 58 68
+ 672: 24(i16vec4) Load 671
+ 673:618(i16vec3) VectorShuffle 672 672 0 1 2
+ 674:618(i16vec3) GroupNonUniformUMin 43 ClusteredReduce 673 42
+ 675: 609(ptr) AccessChain 34(data) 670 68
+ 676: 24(i16vec4) Load 675
+ 677: 24(i16vec4) VectorShuffle 676 674 4 5 6 3
+ Store 675 677
+ 678: 6(int) Load 8(invocation)
+ 679: 609(ptr) AccessChain 34(data) 68 68
+ 680: 24(i16vec4) Load 679
+ 681: 24(i16vec4) GroupNonUniformUMin 43 ClusteredReduce 680 42
+ 682: 609(ptr) AccessChain 34(data) 678 68
+ Store 682 681
+ 683: 6(int) Load 8(invocation)
+ 684: 602(ptr) AccessChain 34(data) 37 68 38
+ 685: 23(int16_t) Load 684
+ 686: 23(int16_t) GroupNonUniformUMax 43 ClusteredReduce 685 42
+ 687: 602(ptr) AccessChain 34(data) 683 68 38
+ Store 687 686
+ 688: 6(int) Load 8(invocation)
+ 689: 609(ptr) AccessChain 34(data) 47 68
+ 690: 24(i16vec4) Load 689
+ 691:608(i16vec2) VectorShuffle 690 690 0 1
+ 692:608(i16vec2) GroupNonUniformUMax 43 ClusteredReduce 691 42
+ 693: 609(ptr) AccessChain 34(data) 688 68
+ 694: 24(i16vec4) Load 693
+ 695: 24(i16vec4) VectorShuffle 694 692 4 5 2 3
+ Store 693 695
+ 696: 6(int) Load 8(invocation)
+ 697: 609(ptr) AccessChain 34(data) 58 68
+ 698: 24(i16vec4) Load 697
+ 699:618(i16vec3) VectorShuffle 698 698 0 1 2
+ 700:618(i16vec3) GroupNonUniformUMax 43 ClusteredReduce 699 42
+ 701: 609(ptr) AccessChain 34(data) 696 68
+ 702: 24(i16vec4) Load 701
+ 703: 24(i16vec4) VectorShuffle 702 700 4 5 6 3
+ Store 701 703
+ 704: 6(int) Load 8(invocation)
+ 705: 609(ptr) AccessChain 34(data) 68 68
+ 706: 24(i16vec4) Load 705
+ 707: 24(i16vec4) GroupNonUniformUMax 43 ClusteredReduce 706 42
+ 708: 609(ptr) AccessChain 34(data) 704 68
+ Store 708 707
+ 709: 6(int) Load 8(invocation)
+ 710: 602(ptr) AccessChain 34(data) 37 68 38
+ 711: 23(int16_t) Load 710
+ 712: 23(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 711 42
+ 713: 602(ptr) AccessChain 34(data) 709 68 38
+ Store 713 712
+ 714: 6(int) Load 8(invocation)
+ 715: 609(ptr) AccessChain 34(data) 47 68
+ 716: 24(i16vec4) Load 715
+ 717:608(i16vec2) VectorShuffle 716 716 0 1
+ 718:608(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 717 42
+ 719: 609(ptr) AccessChain 34(data) 714 68
+ 720: 24(i16vec4) Load 719
+ 721: 24(i16vec4) VectorShuffle 720 718 4 5 2 3
+ Store 719 721
+ 722: 6(int) Load 8(invocation)
+ 723: 609(ptr) AccessChain 34(data) 58 68
+ 724: 24(i16vec4) Load 723
+ 725:618(i16vec3) VectorShuffle 724 724 0 1 2
+ 726:618(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 725 42
+ 727: 609(ptr) AccessChain 34(data) 722 68
+ 728: 24(i16vec4) Load 727
+ 729: 24(i16vec4) VectorShuffle 728 726 4 5 6 3
+ Store 727 729
+ 730: 6(int) Load 8(invocation)
+ 731: 609(ptr) AccessChain 34(data) 68 68
+ 732: 24(i16vec4) Load 731
+ 733: 24(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 732 42
+ 734: 609(ptr) AccessChain 34(data) 730 68
+ Store 734 733
+ 735: 6(int) Load 8(invocation)
+ 736: 602(ptr) AccessChain 34(data) 37 68 38
+ 737: 23(int16_t) Load 736
+ 738: 23(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 737 42
+ 739: 602(ptr) AccessChain 34(data) 735 68 38
+ Store 739 738
+ 740: 6(int) Load 8(invocation)
+ 741: 609(ptr) AccessChain 34(data) 47 68
+ 742: 24(i16vec4) Load 741
+ 743:608(i16vec2) VectorShuffle 742 742 0 1
+ 744:608(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 743 42
+ 745: 609(ptr) AccessChain 34(data) 740 68
+ 746: 24(i16vec4) Load 745
+ 747: 24(i16vec4) VectorShuffle 746 744 4 5 2 3
+ Store 745 747
+ 748: 6(int) Load 8(invocation)
+ 749: 609(ptr) AccessChain 34(data) 58 68
+ 750: 24(i16vec4) Load 749
+ 751:618(i16vec3) VectorShuffle 750 750 0 1 2
+ 752:618(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 751 42
+ 753: 609(ptr) AccessChain 34(data) 748 68
+ 754: 24(i16vec4) Load 753
+ 755: 24(i16vec4) VectorShuffle 754 752 4 5 6 3
+ Store 753 755
+ 756: 6(int) Load 8(invocation)
+ 757: 609(ptr) AccessChain 34(data) 68 68
+ 758: 24(i16vec4) Load 757
+ 759: 24(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 758 42
+ 760: 609(ptr) AccessChain 34(data) 756 68
+ Store 760 759
+ 761: 6(int) Load 8(invocation)
+ 762: 602(ptr) AccessChain 34(data) 37 68 38
+ 763: 23(int16_t) Load 762
+ 764: 23(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 763 42
+ 765: 602(ptr) AccessChain 34(data) 761 68 38
+ Store 765 764
+ 766: 6(int) Load 8(invocation)
+ 767: 609(ptr) AccessChain 34(data) 47 68
+ 768: 24(i16vec4) Load 767
+ 769:608(i16vec2) VectorShuffle 768 768 0 1
+ 770:608(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 769 42
+ 771: 609(ptr) AccessChain 34(data) 766 68
+ 772: 24(i16vec4) Load 771
+ 773: 24(i16vec4) VectorShuffle 772 770 4 5 2 3
+ Store 771 773
+ 774: 6(int) Load 8(invocation)
+ 775: 609(ptr) AccessChain 34(data) 58 68
+ 776: 24(i16vec4) Load 775
+ 777:618(i16vec3) VectorShuffle 776 776 0 1 2
+ 778:618(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 777 42
+ 779: 609(ptr) AccessChain 34(data) 774 68
+ 780: 24(i16vec4) Load 779
+ 781: 24(i16vec4) VectorShuffle 780 778 4 5 6 3
+ Store 779 781
+ 782: 6(int) Load 8(invocation)
+ 783: 609(ptr) AccessChain 34(data) 68 68
+ 784: 24(i16vec4) Load 783
+ 785: 24(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 784 42
+ 786: 609(ptr) AccessChain 34(data) 782 68
+ Store 786 785
+ 787: 6(int) Load 8(invocation)
+ 790: 789(ptr) AccessChain 34(data) 37 788 38
+ 791: 25(int64_t) Load 790
+ 792: 25(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 791 42
+ 793: 789(ptr) AccessChain 34(data) 787 788 38
+ Store 793 792
+ 794: 6(int) Load 8(invocation)
+ 797: 796(ptr) AccessChain 34(data) 47 788
+ 798: 26(i64vec4) Load 797
+ 799:795(i64vec2) VectorShuffle 798 798 0 1
+ 800:795(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 799 42
+ 801: 796(ptr) AccessChain 34(data) 794 788
+ 802: 26(i64vec4) Load 801
+ 803: 26(i64vec4) VectorShuffle 802 800 4 5 2 3
+ Store 801 803
+ 804: 6(int) Load 8(invocation)
+ 806: 796(ptr) AccessChain 34(data) 58 788
+ 807: 26(i64vec4) Load 806
+ 808:805(i64vec3) VectorShuffle 807 807 0 1 2
+ 809:805(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 808 42
+ 810: 796(ptr) AccessChain 34(data) 804 788
+ 811: 26(i64vec4) Load 810
+ 812: 26(i64vec4) VectorShuffle 811 809 4 5 6 3
+ Store 810 812
+ 813: 6(int) Load 8(invocation)
+ 814: 796(ptr) AccessChain 34(data) 68 788
+ 815: 26(i64vec4) Load 814
+ 816: 26(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 815 42
+ 817: 796(ptr) AccessChain 34(data) 813 788
+ Store 817 816
+ 818: 6(int) Load 8(invocation)
+ 819: 789(ptr) AccessChain 34(data) 37 788 38
+ 820: 25(int64_t) Load 819
+ 821: 25(int64_t) GroupNonUniformIMul 43 ClusteredReduce 820 42
+ 822: 789(ptr) AccessChain 34(data) 818 788 38
+ Store 822 821
+ 823: 6(int) Load 8(invocation)
+ 824: 796(ptr) AccessChain 34(data) 47 788
+ 825: 26(i64vec4) Load 824
+ 826:795(i64vec2) VectorShuffle 825 825 0 1
+ 827:795(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 826 42
+ 828: 796(ptr) AccessChain 34(data) 823 788
+ 829: 26(i64vec4) Load 828
+ 830: 26(i64vec4) VectorShuffle 829 827 4 5 2 3
+ Store 828 830
+ 831: 6(int) Load 8(invocation)
+ 832: 796(ptr) AccessChain 34(data) 58 788
+ 833: 26(i64vec4) Load 832
+ 834:805(i64vec3) VectorShuffle 833 833 0 1 2
+ 835:805(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 834 42
+ 836: 796(ptr) AccessChain 34(data) 831 788
+ 837: 26(i64vec4) Load 836
+ 838: 26(i64vec4) VectorShuffle 837 835 4 5 6 3
+ Store 836 838
+ 839: 6(int) Load 8(invocation)
+ 840: 796(ptr) AccessChain 34(data) 68 788
+ 841: 26(i64vec4) Load 840
+ 842: 26(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 841 42
+ 843: 796(ptr) AccessChain 34(data) 839 788
+ Store 843 842
+ 844: 6(int) Load 8(invocation)
+ 845: 789(ptr) AccessChain 34(data) 37 788 38
+ 846: 25(int64_t) Load 845
+ 847: 25(int64_t) GroupNonUniformSMin 43 ClusteredReduce 846 42
+ 848: 789(ptr) AccessChain 34(data) 844 788 38
+ Store 848 847
+ 849: 6(int) Load 8(invocation)
+ 850: 796(ptr) AccessChain 34(data) 47 788
+ 851: 26(i64vec4) Load 850
+ 852:795(i64vec2) VectorShuffle 851 851 0 1
+ 853:795(i64vec2) GroupNonUniformSMin 43 ClusteredReduce 852 42
+ 854: 796(ptr) AccessChain 34(data) 849 788
+ 855: 26(i64vec4) Load 854
+ 856: 26(i64vec4) VectorShuffle 855 853 4 5 2 3
+ Store 854 856
+ 857: 6(int) Load 8(invocation)
+ 858: 796(ptr) AccessChain 34(data) 58 788
+ 859: 26(i64vec4) Load 858
+ 860:805(i64vec3) VectorShuffle 859 859 0 1 2
+ 861:805(i64vec3) GroupNonUniformSMin 43 ClusteredReduce 860 42
+ 862: 796(ptr) AccessChain 34(data) 857 788
+ 863: 26(i64vec4) Load 862
+ 864: 26(i64vec4) VectorShuffle 863 861 4 5 6 3
+ Store 862 864
+ 865: 6(int) Load 8(invocation)
+ 866: 796(ptr) AccessChain 34(data) 68 788
+ 867: 26(i64vec4) Load 866
+ 868: 26(i64vec4) GroupNonUniformSMin 43 ClusteredReduce 867 42
+ 869: 796(ptr) AccessChain 34(data) 865 788
+ Store 869 868
+ 870: 6(int) Load 8(invocation)
+ 871: 789(ptr) AccessChain 34(data) 37 788 38
+ 872: 25(int64_t) Load 871
+ 873: 25(int64_t) GroupNonUniformSMax 43 ClusteredReduce 872 42
+ 874: 789(ptr) AccessChain 34(data) 870 788 38
+ Store 874 873
+ 875: 6(int) Load 8(invocation)
+ 876: 796(ptr) AccessChain 34(data) 47 788
+ 877: 26(i64vec4) Load 876
+ 878:795(i64vec2) VectorShuffle 877 877 0 1
+ 879:795(i64vec2) GroupNonUniformSMax 43 ClusteredReduce 878 42
+ 880: 796(ptr) AccessChain 34(data) 875 788
+ 881: 26(i64vec4) Load 880
+ 882: 26(i64vec4) VectorShuffle 881 879 4 5 2 3
+ Store 880 882
+ 883: 6(int) Load 8(invocation)
+ 884: 796(ptr) AccessChain 34(data) 58 788
+ 885: 26(i64vec4) Load 884
+ 886:805(i64vec3) VectorShuffle 885 885 0 1 2
+ 887:805(i64vec3) GroupNonUniformSMax 43 ClusteredReduce 886 42
+ 888: 796(ptr) AccessChain 34(data) 883 788
+ 889: 26(i64vec4) Load 888
+ 890: 26(i64vec4) VectorShuffle 889 887 4 5 6 3
+ Store 888 890
+ 891: 6(int) Load 8(invocation)
+ 892: 796(ptr) AccessChain 34(data) 68 788
+ 893: 26(i64vec4) Load 892
+ 894: 26(i64vec4) GroupNonUniformSMax 43 ClusteredReduce 893 42
+ 895: 796(ptr) AccessChain 34(data) 891 788
+ Store 895 894
+ 896: 6(int) Load 8(invocation)
+ 897: 789(ptr) AccessChain 34(data) 37 788 38
+ 898: 25(int64_t) Load 897
+ 899: 25(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 898 42
+ 900: 789(ptr) AccessChain 34(data) 896 788 38
+ Store 900 899
+ 901: 6(int) Load 8(invocation)
+ 902: 796(ptr) AccessChain 34(data) 47 788
+ 903: 26(i64vec4) Load 902
+ 904:795(i64vec2) VectorShuffle 903 903 0 1
+ 905:795(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 904 42
+ 906: 796(ptr) AccessChain 34(data) 901 788
+ 907: 26(i64vec4) Load 906
+ 908: 26(i64vec4) VectorShuffle 907 905 4 5 2 3
+ Store 906 908
+ 909: 6(int) Load 8(invocation)
+ 910: 796(ptr) AccessChain 34(data) 58 788
+ 911: 26(i64vec4) Load 910
+ 912:805(i64vec3) VectorShuffle 911 911 0 1 2
+ 913:805(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 912 42
+ 914: 796(ptr) AccessChain 34(data) 909 788
+ 915: 26(i64vec4) Load 914
+ 916: 26(i64vec4) VectorShuffle 915 913 4 5 6 3
+ Store 914 916
+ 917: 6(int) Load 8(invocation)
+ 918: 796(ptr) AccessChain 34(data) 68 788
+ 919: 26(i64vec4) Load 918
+ 920: 26(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 919 42
+ 921: 796(ptr) AccessChain 34(data) 917 788
+ Store 921 920
+ 922: 6(int) Load 8(invocation)
+ 923: 789(ptr) AccessChain 34(data) 37 788 38
+ 924: 25(int64_t) Load 923
+ 925: 25(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 924 42
+ 926: 789(ptr) AccessChain 34(data) 922 788 38
+ Store 926 925
+ 927: 6(int) Load 8(invocation)
+ 928: 796(ptr) AccessChain 34(data) 47 788
+ 929: 26(i64vec4) Load 928
+ 930:795(i64vec2) VectorShuffle 929 929 0 1
+ 931:795(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 930 42
+ 932: 796(ptr) AccessChain 34(data) 927 788
+ 933: 26(i64vec4) Load 932
+ 934: 26(i64vec4) VectorShuffle 933 931 4 5 2 3
+ Store 932 934
+ 935: 6(int) Load 8(invocation)
+ 936: 796(ptr) AccessChain 34(data) 58 788
+ 937: 26(i64vec4) Load 936
+ 938:805(i64vec3) VectorShuffle 937 937 0 1 2
+ 939:805(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 938 42
+ 940: 796(ptr) AccessChain 34(data) 935 788
+ 941: 26(i64vec4) Load 940
+ 942: 26(i64vec4) VectorShuffle 941 939 4 5 6 3
+ Store 940 942
+ 943: 6(int) Load 8(invocation)
+ 944: 796(ptr) AccessChain 34(data) 68 788
+ 945: 26(i64vec4) Load 944
+ 946: 26(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 945 42
+ 947: 796(ptr) AccessChain 34(data) 943 788
+ Store 947 946
+ 948: 6(int) Load 8(invocation)
+ 949: 789(ptr) AccessChain 34(data) 37 788 38
+ 950: 25(int64_t) Load 949
+ 951: 25(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 950 42
+ 952: 789(ptr) AccessChain 34(data) 948 788 38
+ Store 952 951
+ 953: 6(int) Load 8(invocation)
+ 954: 796(ptr) AccessChain 34(data) 47 788
+ 955: 26(i64vec4) Load 954
+ 956:795(i64vec2) VectorShuffle 955 955 0 1
+ 957:795(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 956 42
+ 958: 796(ptr) AccessChain 34(data) 953 788
+ 959: 26(i64vec4) Load 958
+ 960: 26(i64vec4) VectorShuffle 959 957 4 5 2 3
+ Store 958 960
+ 961: 6(int) Load 8(invocation)
+ 962: 796(ptr) AccessChain 34(data) 58 788
+ 963: 26(i64vec4) Load 962
+ 964:805(i64vec3) VectorShuffle 963 963 0 1 2
+ 965:805(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 964 42
+ 966: 796(ptr) AccessChain 34(data) 961 788
+ 967: 26(i64vec4) Load 966
+ 968: 26(i64vec4) VectorShuffle 967 965 4 5 6 3
+ Store 966 968
+ 969: 6(int) Load 8(invocation)
+ 970: 796(ptr) AccessChain 34(data) 68 788
+ 971: 26(i64vec4) Load 970
+ 972: 26(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 971 42
+ 973: 796(ptr) AccessChain 34(data) 969 788
+ Store 973 972
+ 974: 6(int) Load 8(invocation)
+ 977: 976(ptr) AccessChain 34(data) 37 975 38
+ 978: 27(int64_t) Load 977
+ 979: 27(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 978 42
+ 980: 976(ptr) AccessChain 34(data) 974 975 38
+ Store 980 979
+ 981: 6(int) Load 8(invocation)
+ 984: 983(ptr) AccessChain 34(data) 47 975
+ 985: 28(i64vec4) Load 984
+ 986:982(i64vec2) VectorShuffle 985 985 0 1
+ 987:982(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 986 42
+ 988: 983(ptr) AccessChain 34(data) 981 975
+ 989: 28(i64vec4) Load 988
+ 990: 28(i64vec4) VectorShuffle 989 987 4 5 2 3
+ Store 988 990
+ 991: 6(int) Load 8(invocation)
+ 993: 983(ptr) AccessChain 34(data) 58 975
+ 994: 28(i64vec4) Load 993
+ 995:992(i64vec3) VectorShuffle 994 994 0 1 2
+ 996:992(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 995 42
+ 997: 983(ptr) AccessChain 34(data) 991 975
+ 998: 28(i64vec4) Load 997
+ 999: 28(i64vec4) VectorShuffle 998 996 4 5 6 3
+ Store 997 999
+ 1000: 6(int) Load 8(invocation)
+ 1001: 983(ptr) AccessChain 34(data) 68 975
+ 1002: 28(i64vec4) Load 1001
+ 1003: 28(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 1002 42
+ 1004: 983(ptr) AccessChain 34(data) 1000 975
+ Store 1004 1003
+ 1005: 6(int) Load 8(invocation)
+ 1006: 976(ptr) AccessChain 34(data) 37 975 38
+ 1007: 27(int64_t) Load 1006
+ 1008: 27(int64_t) GroupNonUniformIMul 43 ClusteredReduce 1007 42
+ 1009: 976(ptr) AccessChain 34(data) 1005 975 38
+ Store 1009 1008
+ 1010: 6(int) Load 8(invocation)
+ 1011: 983(ptr) AccessChain 34(data) 47 975
+ 1012: 28(i64vec4) Load 1011
+ 1013:982(i64vec2) VectorShuffle 1012 1012 0 1
+ 1014:982(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 1013 42
+ 1015: 983(ptr) AccessChain 34(data) 1010 975
+ 1016: 28(i64vec4) Load 1015
+ 1017: 28(i64vec4) VectorShuffle 1016 1014 4 5 2 3
+ Store 1015 1017
+ 1018: 6(int) Load 8(invocation)
+ 1019: 983(ptr) AccessChain 34(data) 58 975
+ 1020: 28(i64vec4) Load 1019
+ 1021:992(i64vec3) VectorShuffle 1020 1020 0 1 2
+ 1022:992(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 1021 42
+ 1023: 983(ptr) AccessChain 34(data) 1018 975
+ 1024: 28(i64vec4) Load 1023
+ 1025: 28(i64vec4) VectorShuffle 1024 1022 4 5 6 3
+ Store 1023 1025
+ 1026: 6(int) Load 8(invocation)
+ 1027: 983(ptr) AccessChain 34(data) 68 975
+ 1028: 28(i64vec4) Load 1027
+ 1029: 28(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 1028 42
+ 1030: 983(ptr) AccessChain 34(data) 1026 975
+ Store 1030 1029
+ 1031: 6(int) Load 8(invocation)
+ 1032: 976(ptr) AccessChain 34(data) 37 975 38
+ 1033: 27(int64_t) Load 1032
+ 1034: 27(int64_t) GroupNonUniformUMin 43 ClusteredReduce 1033 42
+ 1035: 976(ptr) AccessChain 34(data) 1031 975 38
+ Store 1035 1034
+ 1036: 6(int) Load 8(invocation)
+ 1037: 983(ptr) AccessChain 34(data) 47 975
+ 1038: 28(i64vec4) Load 1037
+ 1039:982(i64vec2) VectorShuffle 1038 1038 0 1
+ 1040:982(i64vec2) GroupNonUniformUMin 43 ClusteredReduce 1039 42
+ 1041: 983(ptr) AccessChain 34(data) 1036 975
+ 1042: 28(i64vec4) Load 1041
+ 1043: 28(i64vec4) VectorShuffle 1042 1040 4 5 2 3
+ Store 1041 1043
+ 1044: 6(int) Load 8(invocation)
+ 1045: 983(ptr) AccessChain 34(data) 58 975
+ 1046: 28(i64vec4) Load 1045
+ 1047:992(i64vec3) VectorShuffle 1046 1046 0 1 2
+ 1048:992(i64vec3) GroupNonUniformUMin 43 ClusteredReduce 1047 42
+ 1049: 983(ptr) AccessChain 34(data) 1044 975
+ 1050: 28(i64vec4) Load 1049
+ 1051: 28(i64vec4) VectorShuffle 1050 1048 4 5 6 3
+ Store 1049 1051
+ 1052: 6(int) Load 8(invocation)
+ 1053: 983(ptr) AccessChain 34(data) 68 975
+ 1054: 28(i64vec4) Load 1053
+ 1055: 28(i64vec4) GroupNonUniformUMin 43 ClusteredReduce 1054 42
+ 1056: 983(ptr) AccessChain 34(data) 1052 975
+ Store 1056 1055
+ 1057: 6(int) Load 8(invocation)
+ 1058: 976(ptr) AccessChain 34(data) 37 975 38
+ 1059: 27(int64_t) Load 1058
+ 1060: 27(int64_t) GroupNonUniformUMax 43 ClusteredReduce 1059 42
+ 1061: 976(ptr) AccessChain 34(data) 1057 975 38
+ Store 1061 1060
+ 1062: 6(int) Load 8(invocation)
+ 1063: 983(ptr) AccessChain 34(data) 47 975
+ 1064: 28(i64vec4) Load 1063
+ 1065:982(i64vec2) VectorShuffle 1064 1064 0 1
+ 1066:982(i64vec2) GroupNonUniformUMax 43 ClusteredReduce 1065 42
+ 1067: 983(ptr) AccessChain 34(data) 1062 975
+ 1068: 28(i64vec4) Load 1067
+ 1069: 28(i64vec4) VectorShuffle 1068 1066 4 5 2 3
+ Store 1067 1069
+ 1070: 6(int) Load 8(invocation)
+ 1071: 983(ptr) AccessChain 34(data) 58 975
+ 1072: 28(i64vec4) Load 1071
+ 1073:992(i64vec3) VectorShuffle 1072 1072 0 1 2
+ 1074:992(i64vec3) GroupNonUniformUMax 43 ClusteredReduce 1073 42
+ 1075: 983(ptr) AccessChain 34(data) 1070 975
+ 1076: 28(i64vec4) Load 1075
+ 1077: 28(i64vec4) VectorShuffle 1076 1074 4 5 6 3
+ Store 1075 1077
+ 1078: 6(int) Load 8(invocation)
+ 1079: 983(ptr) AccessChain 34(data) 68 975
+ 1080: 28(i64vec4) Load 1079
+ 1081: 28(i64vec4) GroupNonUniformUMax 43 ClusteredReduce 1080 42
+ 1082: 983(ptr) AccessChain 34(data) 1078 975
+ Store 1082 1081
+ 1083: 6(int) Load 8(invocation)
+ 1084: 976(ptr) AccessChain 34(data) 37 975 38
+ 1085: 27(int64_t) Load 1084
+ 1086: 27(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1085 42
+ 1087: 976(ptr) AccessChain 34(data) 1083 975 38
+ Store 1087 1086
+ 1088: 6(int) Load 8(invocation)
+ 1089: 983(ptr) AccessChain 34(data) 47 975
+ 1090: 28(i64vec4) Load 1089
+ 1091:982(i64vec2) VectorShuffle 1090 1090 0 1
+ 1092:982(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1091 42
+ 1093: 983(ptr) AccessChain 34(data) 1088 975
+ 1094: 28(i64vec4) Load 1093
+ 1095: 28(i64vec4) VectorShuffle 1094 1092 4 5 2 3
+ Store 1093 1095
+ 1096: 6(int) Load 8(invocation)
+ 1097: 983(ptr) AccessChain 34(data) 58 975
+ 1098: 28(i64vec4) Load 1097
+ 1099:992(i64vec3) VectorShuffle 1098 1098 0 1 2
+ 1100:992(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1099 42
+ 1101: 983(ptr) AccessChain 34(data) 1096 975
+ 1102: 28(i64vec4) Load 1101
+ 1103: 28(i64vec4) VectorShuffle 1102 1100 4 5 6 3
+ Store 1101 1103
+ 1104: 6(int) Load 8(invocation)
+ 1105: 983(ptr) AccessChain 34(data) 68 975
+ 1106: 28(i64vec4) Load 1105
+ 1107: 28(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1106 42
+ 1108: 983(ptr) AccessChain 34(data) 1104 975
+ Store 1108 1107
+ 1109: 6(int) Load 8(invocation)
+ 1110: 976(ptr) AccessChain 34(data) 37 975 38
+ 1111: 27(int64_t) Load 1110
+ 1112: 27(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1111 42
+ 1113: 976(ptr) AccessChain 34(data) 1109 975 38
+ Store 1113 1112
+ 1114: 6(int) Load 8(invocation)
+ 1115: 983(ptr) AccessChain 34(data) 47 975
+ 1116: 28(i64vec4) Load 1115
+ 1117:982(i64vec2) VectorShuffle 1116 1116 0 1
+ 1118:982(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1117 42
+ 1119: 983(ptr) AccessChain 34(data) 1114 975
+ 1120: 28(i64vec4) Load 1119
+ 1121: 28(i64vec4) VectorShuffle 1120 1118 4 5 2 3
+ Store 1119 1121
+ 1122: 6(int) Load 8(invocation)
+ 1123: 983(ptr) AccessChain 34(data) 58 975
+ 1124: 28(i64vec4) Load 1123
+ 1125:992(i64vec3) VectorShuffle 1124 1124 0 1 2
+ 1126:992(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1125 42
+ 1127: 983(ptr) AccessChain 34(data) 1122 975
+ 1128: 28(i64vec4) Load 1127
+ 1129: 28(i64vec4) VectorShuffle 1128 1126 4 5 6 3
+ Store 1127 1129
+ 1130: 6(int) Load 8(invocation)
+ 1131: 983(ptr) AccessChain 34(data) 68 975
+ 1132: 28(i64vec4) Load 1131
+ 1133: 28(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1132 42
+ 1134: 983(ptr) AccessChain 34(data) 1130 975
+ Store 1134 1133
+ 1135: 6(int) Load 8(invocation)
+ 1136: 976(ptr) AccessChain 34(data) 37 975 38
+ 1137: 27(int64_t) Load 1136
+ 1138: 27(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1137 42
+ 1139: 976(ptr) AccessChain 34(data) 1135 975 38
+ Store 1139 1138
+ 1140: 6(int) Load 8(invocation)
+ 1141: 983(ptr) AccessChain 34(data) 47 975
+ 1142: 28(i64vec4) Load 1141
+ 1143:982(i64vec2) VectorShuffle 1142 1142 0 1
+ 1144:982(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1143 42
+ 1145: 983(ptr) AccessChain 34(data) 1140 975
+ 1146: 28(i64vec4) Load 1145
+ 1147: 28(i64vec4) VectorShuffle 1146 1144 4 5 2 3
+ Store 1145 1147
+ 1148: 6(int) Load 8(invocation)
+ 1149: 983(ptr) AccessChain 34(data) 58 975
+ 1150: 28(i64vec4) Load 1149
+ 1151:992(i64vec3) VectorShuffle 1150 1150 0 1 2
+ 1152:992(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1151 42
+ 1153: 983(ptr) AccessChain 34(data) 1148 975
+ 1154: 28(i64vec4) Load 1153
+ 1155: 28(i64vec4) VectorShuffle 1154 1152 4 5 6 3
+ Store 1153 1155
+ 1156: 6(int) Load 8(invocation)
+ 1157: 983(ptr) AccessChain 34(data) 68 975
+ 1158: 28(i64vec4) Load 1157
+ 1159: 28(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1158 42
+ 1160: 983(ptr) AccessChain 34(data) 1156 975
+ Store 1160 1159
+ 1161: 6(int) Load 8(invocation)
+ 1164: 1163(ptr) AccessChain 34(data) 37 1162 38
+ 1165:29(float16_t) Load 1164
+ 1166:29(float16_t) GroupNonUniformFAdd 43 ClusteredReduce 1165 42
+ 1167: 1163(ptr) AccessChain 34(data) 1161 1162 38
+ Store 1167 1166
+ 1168: 6(int) Load 8(invocation)
+ 1171: 1170(ptr) AccessChain 34(data) 47 1162
+ 1172: 30(f16vec4) Load 1171
+ 1173:1169(f16vec2) VectorShuffle 1172 1172 0 1
+ 1174:1169(f16vec2) GroupNonUniformFAdd 43 ClusteredReduce 1173 42
+ 1175: 1170(ptr) AccessChain 34(data) 1168 1162
+ 1176: 30(f16vec4) Load 1175
+ 1177: 30(f16vec4) VectorShuffle 1176 1174 4 5 2 3
+ Store 1175 1177
+ 1178: 6(int) Load 8(invocation)
+ 1180: 1170(ptr) AccessChain 34(data) 58 1162
+ 1181: 30(f16vec4) Load 1180
+ 1182:1179(f16vec3) VectorShuffle 1181 1181 0 1 2
+ 1183:1179(f16vec3) GroupNonUniformFAdd 43 ClusteredReduce 1182 42
+ 1184: 1170(ptr) AccessChain 34(data) 1178 1162
+ 1185: 30(f16vec4) Load 1184
+ 1186: 30(f16vec4) VectorShuffle 1185 1183 4 5 6 3
+ Store 1184 1186
+ 1187: 6(int) Load 8(invocation)
+ 1188: 1170(ptr) AccessChain 34(data) 68 1162
+ 1189: 30(f16vec4) Load 1188
+ 1190: 30(f16vec4) GroupNonUniformFAdd 43 ClusteredReduce 1189 42
+ 1191: 1170(ptr) AccessChain 34(data) 1187 1162
+ Store 1191 1190
+ 1192: 6(int) Load 8(invocation)
+ 1193: 1163(ptr) AccessChain 34(data) 37 1162 38
+ 1194:29(float16_t) Load 1193
+ 1195:29(float16_t) GroupNonUniformFMul 43 ClusteredReduce 1194 42
+ 1196: 1163(ptr) AccessChain 34(data) 1192 1162 38
+ Store 1196 1195
+ 1197: 6(int) Load 8(invocation)
+ 1198: 1170(ptr) AccessChain 34(data) 47 1162
+ 1199: 30(f16vec4) Load 1198
+ 1200:1169(f16vec2) VectorShuffle 1199 1199 0 1
+ 1201:1169(f16vec2) GroupNonUniformFMul 43 ClusteredReduce 1200 42
+ 1202: 1170(ptr) AccessChain 34(data) 1197 1162
+ 1203: 30(f16vec4) Load 1202
+ 1204: 30(f16vec4) VectorShuffle 1203 1201 4 5 2 3
+ Store 1202 1204
+ 1205: 6(int) Load 8(invocation)
+ 1206: 1170(ptr) AccessChain 34(data) 58 1162
+ 1207: 30(f16vec4) Load 1206
+ 1208:1179(f16vec3) VectorShuffle 1207 1207 0 1 2
+ 1209:1179(f16vec3) GroupNonUniformFMul 43 ClusteredReduce 1208 42
+ 1210: 1170(ptr) AccessChain 34(data) 1205 1162
+ 1211: 30(f16vec4) Load 1210
+ 1212: 30(f16vec4) VectorShuffle 1211 1209 4 5 6 3
+ Store 1210 1212
+ 1213: 6(int) Load 8(invocation)
+ 1214: 1170(ptr) AccessChain 34(data) 68 1162
+ 1215: 30(f16vec4) Load 1214
+ 1216: 30(f16vec4) GroupNonUniformFMul 43 ClusteredReduce 1215 42
+ 1217: 1170(ptr) AccessChain 34(data) 1213 1162
+ Store 1217 1216
+ 1218: 6(int) Load 8(invocation)
+ 1219: 1163(ptr) AccessChain 34(data) 37 1162 38
+ 1220:29(float16_t) Load 1219
+ 1221:29(float16_t) GroupNonUniformFMin 43 ClusteredReduce 1220 42
+ 1222: 1163(ptr) AccessChain 34(data) 1218 1162 38
+ Store 1222 1221
+ 1223: 6(int) Load 8(invocation)
+ 1224: 1170(ptr) AccessChain 34(data) 47 1162
+ 1225: 30(f16vec4) Load 1224
+ 1226:1169(f16vec2) VectorShuffle 1225 1225 0 1
+ 1227:1169(f16vec2) GroupNonUniformFMin 43 ClusteredReduce 1226 42
+ 1228: 1170(ptr) AccessChain 34(data) 1223 1162
+ 1229: 30(f16vec4) Load 1228
+ 1230: 30(f16vec4) VectorShuffle 1229 1227 4 5 2 3
+ Store 1228 1230
+ 1231: 6(int) Load 8(invocation)
+ 1232: 1170(ptr) AccessChain 34(data) 58 1162
+ 1233: 30(f16vec4) Load 1232
+ 1234:1179(f16vec3) VectorShuffle 1233 1233 0 1 2
+ 1235:1179(f16vec3) GroupNonUniformFMin 43 ClusteredReduce 1234 42
+ 1236: 1170(ptr) AccessChain 34(data) 1231 1162
+ 1237: 30(f16vec4) Load 1236
+ 1238: 30(f16vec4) VectorShuffle 1237 1235 4 5 6 3
+ Store 1236 1238
+ 1239: 6(int) Load 8(invocation)
+ 1240: 1170(ptr) AccessChain 34(data) 68 1162
+ 1241: 30(f16vec4) Load 1240
+ 1242: 30(f16vec4) GroupNonUniformFMin 43 ClusteredReduce 1241 42
+ 1243: 1170(ptr) AccessChain 34(data) 1239 1162
+ Store 1243 1242
+ 1244: 6(int) Load 8(invocation)
+ 1245: 1163(ptr) AccessChain 34(data) 37 1162 38
+ 1246:29(float16_t) Load 1245
+ 1247:29(float16_t) GroupNonUniformFMax 43 ClusteredReduce 1246 42
+ 1248: 1163(ptr) AccessChain 34(data) 1244 1162 38
+ Store 1248 1247
+ 1249: 6(int) Load 8(invocation)
+ 1250: 1170(ptr) AccessChain 34(data) 47 1162
+ 1251: 30(f16vec4) Load 1250
+ 1252:1169(f16vec2) VectorShuffle 1251 1251 0 1
+ 1253:1169(f16vec2) GroupNonUniformFMax 43 ClusteredReduce 1252 42
+ 1254: 1170(ptr) AccessChain 34(data) 1249 1162
+ 1255: 30(f16vec4) Load 1254
+ 1256: 30(f16vec4) VectorShuffle 1255 1253 4 5 2 3
+ Store 1254 1256
+ 1257: 6(int) Load 8(invocation)
+ 1258: 1170(ptr) AccessChain 34(data) 58 1162
+ 1259: 30(f16vec4) Load 1258
+ 1260:1179(f16vec3) VectorShuffle 1259 1259 0 1 2
+ 1261:1179(f16vec3) GroupNonUniformFMax 43 ClusteredReduce 1260 42
+ 1262: 1170(ptr) AccessChain 34(data) 1257 1162
+ 1263: 30(f16vec4) Load 1262
+ 1264: 30(f16vec4) VectorShuffle 1263 1261 4 5 6 3
+ Store 1262 1264
+ 1265: 6(int) Load 8(invocation)
+ 1266: 1170(ptr) AccessChain 34(data) 68 1162
+ 1267: 30(f16vec4) Load 1266
+ 1268: 30(f16vec4) GroupNonUniformFMax 43 ClusteredReduce 1267 42
+ 1269: 1170(ptr) AccessChain 34(data) 1265 1162
+ Store 1269 1268
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out
new file mode 100644
index 0000000..fd01ef3
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out
@@ -0,0 +1,189 @@
+spv.subgroupExtendedTypesClusteredNeg.comp
+ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:66: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:67: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:68: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:71: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:72: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:73: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:76: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:77: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:78: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:81: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:82: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:83: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:86: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:87: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:88: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:91: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:92: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:93: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:96: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:97: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:98: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:101: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:102: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:103: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:106: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:107: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:108: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:111: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:112: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:113: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:116: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:117: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:118: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:121: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:122: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:123: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:126: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:127: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:128: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:131: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:132: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:133: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:136: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:137: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:138: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:141: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:142: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:143: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:146: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:147: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:148: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:151: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:152: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:153: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:156: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:157: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:158: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:161: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:162: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:163: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:166: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:167: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:168: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:171: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:172: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:173: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:176: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:177: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:178: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:181: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:182: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:183: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:186: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:187: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:188: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:191: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:192: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:193: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:196: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:197: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:198: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:201: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:202: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:203: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:206: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:207: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:208: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:211: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:212: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:213: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:216: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:217: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:218: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:221: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:222: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:223: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:226: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:227: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:228: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:231: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:232: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:233: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:236: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:237: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:238: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:241: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:242: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:243: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:246: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:247: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:248: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:251: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:252: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:253: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 184 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
new file mode 100644
index 0000000..2f5a570
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
@@ -0,0 +1,1835 @@
+spv.subgroupExtendedTypesPartitioned.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 1558
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Capability GroupNonUniformPartitionedNV
+ Extension "SPV_KHR_8bit_storage"
+ Extension "SPV_NV_shader_subgroup_partitioned"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_NV_shader_subgroup_partitioned"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 19 "ballot"
+ Name 34 "Buffers"
+ MemberName 34(Buffers) 0 "i8"
+ MemberName 34(Buffers) 1 "u8"
+ MemberName 34(Buffers) 2 "i16"
+ MemberName 34(Buffers) 3 "u16"
+ MemberName 34(Buffers) 4 "i64"
+ MemberName 34(Buffers) 5 "u64"
+ MemberName 34(Buffers) 6 "f16"
+ Name 37 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 34(Buffers) 0 Offset 0
+ MemberDecorate 34(Buffers) 1 Offset 4
+ MemberDecorate 34(Buffers) 2 Offset 8
+ MemberDecorate 34(Buffers) 3 Offset 16
+ MemberDecorate 34(Buffers) 4 Offset 32
+ MemberDecorate 34(Buffers) 5 Offset 64
+ MemberDecorate 34(Buffers) 6 Offset 96
+ Decorate 34(Buffers) Block
+ Decorate 37(data) DescriptorSet 0
+ Decorate 37(data) Binding 0
+ Decorate 1557 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeVector 6(int) 4
+ 18: TypePointer Function 17(ivec4)
+ 20: TypeInt 8 1
+ 21: TypeVector 20(int8_t) 4
+ 22: TypeInt 8 0
+ 23: TypeVector 22(int8_t) 4
+ 24: TypeInt 16 1
+ 25: TypeVector 24(int16_t) 4
+ 26: TypeInt 16 0
+ 27: TypeVector 26(int16_t) 4
+ 28: TypeInt 64 1
+ 29: TypeVector 28(int64_t) 4
+ 30: TypeInt 64 0
+ 31: TypeVector 30(int64_t) 4
+ 32: TypeFloat 16
+ 33: TypeVector 32(float16_t) 4
+ 34(Buffers): TypeStruct 21(i8vec4) 23(i8vec4) 25(i16vec4) 27(i16vec4) 29(i64vec4) 31(i64vec4) 33(f16vec4)
+ 35: TypeArray 34(Buffers) 15
+ 36: TypePointer StorageBuffer 35
+ 37(data): 36(ptr) Variable StorageBuffer
+ 38: TypeInt 32 1
+ 39: 38(int) Constant 0
+ 40: 6(int) Constant 0
+ 41: TypePointer StorageBuffer 20(int8_t)
+ 45: 38(int) Constant 1
+ 46: TypeVector 20(int8_t) 2
+ 47: TypePointer StorageBuffer 21(i8vec4)
+ 52: 38(int) Constant 2
+ 53: TypeVector 20(int8_t) 3
+ 58: 38(int) Constant 3
+ 62: TypePointer StorageBuffer 22(int8_t)
+ 66: TypeVector 22(int8_t) 2
+ 67: TypePointer StorageBuffer 23(i8vec4)
+ 72: TypeVector 22(int8_t) 3
+ 80: TypePointer StorageBuffer 24(int16_t)
+ 84: TypeVector 24(int16_t) 2
+ 85: TypePointer StorageBuffer 25(i16vec4)
+ 90: TypeVector 24(int16_t) 3
+ 98: TypePointer StorageBuffer 26(int16_t)
+ 102: TypeVector 26(int16_t) 2
+ 103: TypePointer StorageBuffer 27(i16vec4)
+ 108: TypeVector 26(int16_t) 3
+ 116: 38(int) Constant 4
+ 117: TypePointer StorageBuffer 28(int64_t)
+ 121: TypeVector 28(int64_t) 2
+ 122: TypePointer StorageBuffer 29(i64vec4)
+ 127: TypeVector 28(int64_t) 3
+ 135: 38(int) Constant 5
+ 136: TypePointer StorageBuffer 30(int64_t)
+ 140: TypeVector 30(int64_t) 2
+ 141: TypePointer StorageBuffer 31(i64vec4)
+ 146: TypeVector 30(int64_t) 3
+ 154: 38(int) Constant 6
+ 155: TypePointer StorageBuffer 32(float16_t)
+ 159: TypeVector 32(float16_t) 2
+ 160: TypePointer StorageBuffer 33(f16vec4)
+ 165: TypeVector 32(float16_t) 3
+ 177: 6(int) Constant 3
+ 1554: TypeVector 6(int) 3
+ 1555: 6(int) Constant 8
+ 1556: 6(int) Constant 1
+ 1557: 1554(ivec3) ConstantComposite 1555 1556 1556
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 19(ballot): 18(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 42: 41(ptr) AccessChain 37(data) 39 39 40
+ 43: 20(int8_t) Load 42
+ 44: 17(ivec4) GroupNonUniformPartitionNV 43
+ Store 19(ballot) 44
+ 48: 47(ptr) AccessChain 37(data) 45 39
+ 49: 21(i8vec4) Load 48
+ 50: 46(i8vec2) VectorShuffle 49 49 0 1
+ 51: 17(ivec4) GroupNonUniformPartitionNV 50
+ Store 19(ballot) 51
+ 54: 47(ptr) AccessChain 37(data) 52 39
+ 55: 21(i8vec4) Load 54
+ 56: 53(i8vec3) VectorShuffle 55 55 0 1 2
+ 57: 17(ivec4) GroupNonUniformPartitionNV 56
+ Store 19(ballot) 57
+ 59: 47(ptr) AccessChain 37(data) 58 39
+ 60: 21(i8vec4) Load 59
+ 61: 17(ivec4) GroupNonUniformPartitionNV 60
+ Store 19(ballot) 61
+ 63: 62(ptr) AccessChain 37(data) 39 45 40
+ 64: 22(int8_t) Load 63
+ 65: 17(ivec4) GroupNonUniformPartitionNV 64
+ Store 19(ballot) 65
+ 68: 67(ptr) AccessChain 37(data) 45 45
+ 69: 23(i8vec4) Load 68
+ 70: 66(i8vec2) VectorShuffle 69 69 0 1
+ 71: 17(ivec4) GroupNonUniformPartitionNV 70
+ Store 19(ballot) 71
+ 73: 67(ptr) AccessChain 37(data) 52 45
+ 74: 23(i8vec4) Load 73
+ 75: 72(i8vec3) VectorShuffle 74 74 0 1 2
+ 76: 17(ivec4) GroupNonUniformPartitionNV 75
+ Store 19(ballot) 76
+ 77: 67(ptr) AccessChain 37(data) 58 45
+ 78: 23(i8vec4) Load 77
+ 79: 17(ivec4) GroupNonUniformPartitionNV 78
+ Store 19(ballot) 79
+ 81: 80(ptr) AccessChain 37(data) 39 52 40
+ 82: 24(int16_t) Load 81
+ 83: 17(ivec4) GroupNonUniformPartitionNV 82
+ Store 19(ballot) 83
+ 86: 85(ptr) AccessChain 37(data) 45 52
+ 87: 25(i16vec4) Load 86
+ 88: 84(i16vec2) VectorShuffle 87 87 0 1
+ 89: 17(ivec4) GroupNonUniformPartitionNV 88
+ Store 19(ballot) 89
+ 91: 85(ptr) AccessChain 37(data) 52 52
+ 92: 25(i16vec4) Load 91
+ 93: 90(i16vec3) VectorShuffle 92 92 0 1 2
+ 94: 17(ivec4) GroupNonUniformPartitionNV 93
+ Store 19(ballot) 94
+ 95: 85(ptr) AccessChain 37(data) 58 52
+ 96: 25(i16vec4) Load 95
+ 97: 17(ivec4) GroupNonUniformPartitionNV 96
+ Store 19(ballot) 97
+ 99: 98(ptr) AccessChain 37(data) 39 58 40
+ 100: 26(int16_t) Load 99
+ 101: 17(ivec4) GroupNonUniformPartitionNV 100
+ Store 19(ballot) 101
+ 104: 103(ptr) AccessChain 37(data) 45 58
+ 105: 27(i16vec4) Load 104
+ 106:102(i16vec2) VectorShuffle 105 105 0 1
+ 107: 17(ivec4) GroupNonUniformPartitionNV 106
+ Store 19(ballot) 107
+ 109: 103(ptr) AccessChain 37(data) 52 58
+ 110: 27(i16vec4) Load 109
+ 111:108(i16vec3) VectorShuffle 110 110 0 1 2
+ 112: 17(ivec4) GroupNonUniformPartitionNV 111
+ Store 19(ballot) 112
+ 113: 103(ptr) AccessChain 37(data) 58 58
+ 114: 27(i16vec4) Load 113
+ 115: 17(ivec4) GroupNonUniformPartitionNV 114
+ Store 19(ballot) 115
+ 118: 117(ptr) AccessChain 37(data) 39 116 40
+ 119: 28(int64_t) Load 118
+ 120: 17(ivec4) GroupNonUniformPartitionNV 119
+ Store 19(ballot) 120
+ 123: 122(ptr) AccessChain 37(data) 45 116
+ 124: 29(i64vec4) Load 123
+ 125:121(i64vec2) VectorShuffle 124 124 0 1
+ 126: 17(ivec4) GroupNonUniformPartitionNV 125
+ Store 19(ballot) 126
+ 128: 122(ptr) AccessChain 37(data) 52 116
+ 129: 29(i64vec4) Load 128
+ 130:127(i64vec3) VectorShuffle 129 129 0 1 2
+ 131: 17(ivec4) GroupNonUniformPartitionNV 130
+ Store 19(ballot) 131
+ 132: 122(ptr) AccessChain 37(data) 58 116
+ 133: 29(i64vec4) Load 132
+ 134: 17(ivec4) GroupNonUniformPartitionNV 133
+ Store 19(ballot) 134
+ 137: 136(ptr) AccessChain 37(data) 39 135 40
+ 138: 30(int64_t) Load 137
+ 139: 17(ivec4) GroupNonUniformPartitionNV 138
+ Store 19(ballot) 139
+ 142: 141(ptr) AccessChain 37(data) 45 135
+ 143: 31(i64vec4) Load 142
+ 144:140(i64vec2) VectorShuffle 143 143 0 1
+ 145: 17(ivec4) GroupNonUniformPartitionNV 144
+ Store 19(ballot) 145
+ 147: 141(ptr) AccessChain 37(data) 52 135
+ 148: 31(i64vec4) Load 147
+ 149:146(i64vec3) VectorShuffle 148 148 0 1 2
+ 150: 17(ivec4) GroupNonUniformPartitionNV 149
+ Store 19(ballot) 150
+ 151: 141(ptr) AccessChain 37(data) 58 135
+ 152: 31(i64vec4) Load 151
+ 153: 17(ivec4) GroupNonUniformPartitionNV 152
+ Store 19(ballot) 153
+ 156: 155(ptr) AccessChain 37(data) 39 154 40
+ 157:32(float16_t) Load 156
+ 158: 17(ivec4) GroupNonUniformPartitionNV 157
+ Store 19(ballot) 158
+ 161: 160(ptr) AccessChain 37(data) 45 154
+ 162: 33(f16vec4) Load 161
+ 163:159(f16vec2) VectorShuffle 162 162 0 1
+ 164: 17(ivec4) GroupNonUniformPartitionNV 163
+ Store 19(ballot) 164
+ 166: 160(ptr) AccessChain 37(data) 52 154
+ 167: 33(f16vec4) Load 166
+ 168:165(f16vec3) VectorShuffle 167 167 0 1 2
+ 169: 17(ivec4) GroupNonUniformPartitionNV 168
+ Store 19(ballot) 169
+ 170: 160(ptr) AccessChain 37(data) 58 154
+ 171: 33(f16vec4) Load 170
+ 172: 17(ivec4) GroupNonUniformPartitionNV 171
+ Store 19(ballot) 172
+ 173: 6(int) Load 8(invocation)
+ 174: 41(ptr) AccessChain 37(data) 39 39 40
+ 175: 20(int8_t) Load 174
+ 176: 17(ivec4) Load 19(ballot)
+ 178: 20(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 175 176
+ 179: 41(ptr) AccessChain 37(data) 173 39 40
+ Store 179 178
+ 180: 6(int) Load 8(invocation)
+ 181: 47(ptr) AccessChain 37(data) 45 39
+ 182: 21(i8vec4) Load 181
+ 183: 46(i8vec2) VectorShuffle 182 182 0 1
+ 184: 17(ivec4) Load 19(ballot)
+ 185: 46(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 183 184
+ 186: 47(ptr) AccessChain 37(data) 180 39
+ 187: 21(i8vec4) Load 186
+ 188: 21(i8vec4) VectorShuffle 187 185 4 5 2 3
+ Store 186 188
+ 189: 6(int) Load 8(invocation)
+ 190: 47(ptr) AccessChain 37(data) 52 39
+ 191: 21(i8vec4) Load 190
+ 192: 53(i8vec3) VectorShuffle 191 191 0 1 2
+ 193: 17(ivec4) Load 19(ballot)
+ 194: 53(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 192 193
+ 195: 47(ptr) AccessChain 37(data) 189 39
+ 196: 21(i8vec4) Load 195
+ 197: 21(i8vec4) VectorShuffle 196 194 4 5 6 3
+ Store 195 197
+ 198: 6(int) Load 8(invocation)
+ 199: 47(ptr) AccessChain 37(data) 58 39
+ 200: 21(i8vec4) Load 199
+ 201: 17(ivec4) Load 19(ballot)
+ 202: 21(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 200 201
+ 203: 47(ptr) AccessChain 37(data) 198 39
+ Store 203 202
+ 204: 6(int) Load 8(invocation)
+ 205: 41(ptr) AccessChain 37(data) 39 39 40
+ 206: 20(int8_t) Load 205
+ 207: 17(ivec4) Load 19(ballot)
+ 208: 20(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 206 207
+ 209: 41(ptr) AccessChain 37(data) 204 39 40
+ Store 209 208
+ 210: 6(int) Load 8(invocation)
+ 211: 47(ptr) AccessChain 37(data) 45 39
+ 212: 21(i8vec4) Load 211
+ 213: 46(i8vec2) VectorShuffle 212 212 0 1
+ 214: 17(ivec4) Load 19(ballot)
+ 215: 46(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 213 214
+ 216: 47(ptr) AccessChain 37(data) 210 39
+ 217: 21(i8vec4) Load 216
+ 218: 21(i8vec4) VectorShuffle 217 215 4 5 2 3
+ Store 216 218
+ 219: 6(int) Load 8(invocation)
+ 220: 47(ptr) AccessChain 37(data) 52 39
+ 221: 21(i8vec4) Load 220
+ 222: 53(i8vec3) VectorShuffle 221 221 0 1 2
+ 223: 17(ivec4) Load 19(ballot)
+ 224: 53(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 222 223
+ 225: 47(ptr) AccessChain 37(data) 219 39
+ 226: 21(i8vec4) Load 225
+ 227: 21(i8vec4) VectorShuffle 226 224 4 5 6 3
+ Store 225 227
+ 228: 6(int) Load 8(invocation)
+ 229: 47(ptr) AccessChain 37(data) 58 39
+ 230: 21(i8vec4) Load 229
+ 231: 17(ivec4) Load 19(ballot)
+ 232: 21(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 230 231
+ 233: 47(ptr) AccessChain 37(data) 228 39
+ Store 233 232
+ 234: 6(int) Load 8(invocation)
+ 235: 41(ptr) AccessChain 37(data) 39 39 40
+ 236: 20(int8_t) Load 235
+ 237: 17(ivec4) Load 19(ballot)
+ 238: 20(int8_t) GroupNonUniformSMin 177 PartitionedReduceNV 236 237
+ 239: 41(ptr) AccessChain 37(data) 234 39 40
+ Store 239 238
+ 240: 6(int) Load 8(invocation)
+ 241: 47(ptr) AccessChain 37(data) 45 39
+ 242: 21(i8vec4) Load 241
+ 243: 46(i8vec2) VectorShuffle 242 242 0 1
+ 244: 17(ivec4) Load 19(ballot)
+ 245: 46(i8vec2) GroupNonUniformSMin 177 PartitionedReduceNV 243 244
+ 246: 47(ptr) AccessChain 37(data) 240 39
+ 247: 21(i8vec4) Load 246
+ 248: 21(i8vec4) VectorShuffle 247 245 4 5 2 3
+ Store 246 248
+ 249: 6(int) Load 8(invocation)
+ 250: 47(ptr) AccessChain 37(data) 52 39
+ 251: 21(i8vec4) Load 250
+ 252: 53(i8vec3) VectorShuffle 251 251 0 1 2
+ 253: 17(ivec4) Load 19(ballot)
+ 254: 53(i8vec3) GroupNonUniformSMin 177 PartitionedReduceNV 252 253
+ 255: 47(ptr) AccessChain 37(data) 249 39
+ 256: 21(i8vec4) Load 255
+ 257: 21(i8vec4) VectorShuffle 256 254 4 5 6 3
+ Store 255 257
+ 258: 6(int) Load 8(invocation)
+ 259: 47(ptr) AccessChain 37(data) 58 39
+ 260: 21(i8vec4) Load 259
+ 261: 17(ivec4) Load 19(ballot)
+ 262: 21(i8vec4) GroupNonUniformSMin 177 PartitionedReduceNV 260 261
+ 263: 47(ptr) AccessChain 37(data) 258 39
+ Store 263 262
+ 264: 6(int) Load 8(invocation)
+ 265: 41(ptr) AccessChain 37(data) 39 39 40
+ 266: 20(int8_t) Load 265
+ 267: 17(ivec4) Load 19(ballot)
+ 268: 20(int8_t) GroupNonUniformSMax 177 PartitionedReduceNV 266 267
+ 269: 41(ptr) AccessChain 37(data) 264 39 40
+ Store 269 268
+ 270: 6(int) Load 8(invocation)
+ 271: 47(ptr) AccessChain 37(data) 45 39
+ 272: 21(i8vec4) Load 271
+ 273: 46(i8vec2) VectorShuffle 272 272 0 1
+ 274: 17(ivec4) Load 19(ballot)
+ 275: 46(i8vec2) GroupNonUniformSMax 177 PartitionedReduceNV 273 274
+ 276: 47(ptr) AccessChain 37(data) 270 39
+ 277: 21(i8vec4) Load 276
+ 278: 21(i8vec4) VectorShuffle 277 275 4 5 2 3
+ Store 276 278
+ 279: 6(int) Load 8(invocation)
+ 280: 47(ptr) AccessChain 37(data) 52 39
+ 281: 21(i8vec4) Load 280
+ 282: 53(i8vec3) VectorShuffle 281 281 0 1 2
+ 283: 17(ivec4) Load 19(ballot)
+ 284: 53(i8vec3) GroupNonUniformSMax 177 PartitionedReduceNV 282 283
+ 285: 47(ptr) AccessChain 37(data) 279 39
+ 286: 21(i8vec4) Load 285
+ 287: 21(i8vec4) VectorShuffle 286 284 4 5 6 3
+ Store 285 287
+ 288: 6(int) Load 8(invocation)
+ 289: 47(ptr) AccessChain 37(data) 58 39
+ 290: 21(i8vec4) Load 289
+ 291: 17(ivec4) Load 19(ballot)
+ 292: 21(i8vec4) GroupNonUniformSMax 177 PartitionedReduceNV 290 291
+ 293: 47(ptr) AccessChain 37(data) 288 39
+ Store 293 292
+ 294: 6(int) Load 8(invocation)
+ 295: 41(ptr) AccessChain 37(data) 39 39 40
+ 296: 20(int8_t) Load 295
+ 297: 17(ivec4) Load 19(ballot)
+ 298: 20(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 296 297
+ 299: 41(ptr) AccessChain 37(data) 294 39 40
+ Store 299 298
+ 300: 6(int) Load 8(invocation)
+ 301: 47(ptr) AccessChain 37(data) 45 39
+ 302: 21(i8vec4) Load 301
+ 303: 46(i8vec2) VectorShuffle 302 302 0 1
+ 304: 17(ivec4) Load 19(ballot)
+ 305: 46(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 303 304
+ 306: 47(ptr) AccessChain 37(data) 300 39
+ 307: 21(i8vec4) Load 306
+ 308: 21(i8vec4) VectorShuffle 307 305 4 5 2 3
+ Store 306 308
+ 309: 6(int) Load 8(invocation)
+ 310: 47(ptr) AccessChain 37(data) 52 39
+ 311: 21(i8vec4) Load 310
+ 312: 53(i8vec3) VectorShuffle 311 311 0 1 2
+ 313: 17(ivec4) Load 19(ballot)
+ 314: 53(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 312 313
+ 315: 47(ptr) AccessChain 37(data) 309 39
+ 316: 21(i8vec4) Load 315
+ 317: 21(i8vec4) VectorShuffle 316 314 4 5 6 3
+ Store 315 317
+ 318: 6(int) Load 8(invocation)
+ 319: 47(ptr) AccessChain 37(data) 58 39
+ 320: 21(i8vec4) Load 319
+ 321: 17(ivec4) Load 19(ballot)
+ 322: 21(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 320 321
+ 323: 47(ptr) AccessChain 37(data) 318 39
+ Store 323 322
+ 324: 6(int) Load 8(invocation)
+ 325: 41(ptr) AccessChain 37(data) 39 39 40
+ 326: 20(int8_t) Load 325
+ 327: 17(ivec4) Load 19(ballot)
+ 328: 20(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 326 327
+ 329: 41(ptr) AccessChain 37(data) 324 39 40
+ Store 329 328
+ 330: 6(int) Load 8(invocation)
+ 331: 47(ptr) AccessChain 37(data) 45 39
+ 332: 21(i8vec4) Load 331
+ 333: 46(i8vec2) VectorShuffle 332 332 0 1
+ 334: 17(ivec4) Load 19(ballot)
+ 335: 46(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 333 334
+ 336: 47(ptr) AccessChain 37(data) 330 39
+ 337: 21(i8vec4) Load 336
+ 338: 21(i8vec4) VectorShuffle 337 335 4 5 2 3
+ Store 336 338
+ 339: 6(int) Load 8(invocation)
+ 340: 47(ptr) AccessChain 37(data) 52 39
+ 341: 21(i8vec4) Load 340
+ 342: 53(i8vec3) VectorShuffle 341 341 0 1 2
+ 343: 17(ivec4) Load 19(ballot)
+ 344: 53(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 342 343
+ 345: 47(ptr) AccessChain 37(data) 339 39
+ 346: 21(i8vec4) Load 345
+ 347: 21(i8vec4) VectorShuffle 346 344 4 5 6 3
+ Store 345 347
+ 348: 6(int) Load 8(invocation)
+ 349: 47(ptr) AccessChain 37(data) 58 39
+ 350: 21(i8vec4) Load 349
+ 351: 17(ivec4) Load 19(ballot)
+ 352: 21(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 350 351
+ 353: 47(ptr) AccessChain 37(data) 348 39
+ Store 353 352
+ 354: 6(int) Load 8(invocation)
+ 355: 41(ptr) AccessChain 37(data) 39 39 40
+ 356: 20(int8_t) Load 355
+ 357: 17(ivec4) Load 19(ballot)
+ 358: 20(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 356 357
+ 359: 41(ptr) AccessChain 37(data) 354 39 40
+ Store 359 358
+ 360: 6(int) Load 8(invocation)
+ 361: 47(ptr) AccessChain 37(data) 45 39
+ 362: 21(i8vec4) Load 361
+ 363: 46(i8vec2) VectorShuffle 362 362 0 1
+ 364: 17(ivec4) Load 19(ballot)
+ 365: 46(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 363 364
+ 366: 47(ptr) AccessChain 37(data) 360 39
+ 367: 21(i8vec4) Load 366
+ 368: 21(i8vec4) VectorShuffle 367 365 4 5 2 3
+ Store 366 368
+ 369: 6(int) Load 8(invocation)
+ 370: 47(ptr) AccessChain 37(data) 52 39
+ 371: 21(i8vec4) Load 370
+ 372: 53(i8vec3) VectorShuffle 371 371 0 1 2
+ 373: 17(ivec4) Load 19(ballot)
+ 374: 53(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 372 373
+ 375: 47(ptr) AccessChain 37(data) 369 39
+ 376: 21(i8vec4) Load 375
+ 377: 21(i8vec4) VectorShuffle 376 374 4 5 6 3
+ Store 375 377
+ 378: 6(int) Load 8(invocation)
+ 379: 47(ptr) AccessChain 37(data) 58 39
+ 380: 21(i8vec4) Load 379
+ 381: 17(ivec4) Load 19(ballot)
+ 382: 21(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 380 381
+ 383: 47(ptr) AccessChain 37(data) 378 39
+ Store 383 382
+ 384: 6(int) Load 8(invocation)
+ 385: 62(ptr) AccessChain 37(data) 39 45 40
+ 386: 22(int8_t) Load 385
+ 387: 17(ivec4) Load 19(ballot)
+ 388: 22(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 386 387
+ 389: 62(ptr) AccessChain 37(data) 384 45 40
+ Store 389 388
+ 390: 6(int) Load 8(invocation)
+ 391: 67(ptr) AccessChain 37(data) 45 45
+ 392: 23(i8vec4) Load 391
+ 393: 66(i8vec2) VectorShuffle 392 392 0 1
+ 394: 17(ivec4) Load 19(ballot)
+ 395: 66(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 393 394
+ 396: 67(ptr) AccessChain 37(data) 390 45
+ 397: 23(i8vec4) Load 396
+ 398: 23(i8vec4) VectorShuffle 397 395 4 5 2 3
+ Store 396 398
+ 399: 6(int) Load 8(invocation)
+ 400: 67(ptr) AccessChain 37(data) 52 45
+ 401: 23(i8vec4) Load 400
+ 402: 72(i8vec3) VectorShuffle 401 401 0 1 2
+ 403: 17(ivec4) Load 19(ballot)
+ 404: 72(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 402 403
+ 405: 67(ptr) AccessChain 37(data) 399 45
+ 406: 23(i8vec4) Load 405
+ 407: 23(i8vec4) VectorShuffle 406 404 4 5 6 3
+ Store 405 407
+ 408: 6(int) Load 8(invocation)
+ 409: 67(ptr) AccessChain 37(data) 58 45
+ 410: 23(i8vec4) Load 409
+ 411: 17(ivec4) Load 19(ballot)
+ 412: 23(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 410 411
+ 413: 67(ptr) AccessChain 37(data) 408 45
+ Store 413 412
+ 414: 6(int) Load 8(invocation)
+ 415: 62(ptr) AccessChain 37(data) 39 45 40
+ 416: 22(int8_t) Load 415
+ 417: 17(ivec4) Load 19(ballot)
+ 418: 22(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 416 417
+ 419: 62(ptr) AccessChain 37(data) 414 45 40
+ Store 419 418
+ 420: 6(int) Load 8(invocation)
+ 421: 67(ptr) AccessChain 37(data) 45 45
+ 422: 23(i8vec4) Load 421
+ 423: 66(i8vec2) VectorShuffle 422 422 0 1
+ 424: 17(ivec4) Load 19(ballot)
+ 425: 66(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 423 424
+ 426: 67(ptr) AccessChain 37(data) 420 45
+ 427: 23(i8vec4) Load 426
+ 428: 23(i8vec4) VectorShuffle 427 425 4 5 2 3
+ Store 426 428
+ 429: 6(int) Load 8(invocation)
+ 430: 67(ptr) AccessChain 37(data) 52 45
+ 431: 23(i8vec4) Load 430
+ 432: 72(i8vec3) VectorShuffle 431 431 0 1 2
+ 433: 17(ivec4) Load 19(ballot)
+ 434: 72(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 432 433
+ 435: 67(ptr) AccessChain 37(data) 429 45
+ 436: 23(i8vec4) Load 435
+ 437: 23(i8vec4) VectorShuffle 436 434 4 5 6 3
+ Store 435 437
+ 438: 6(int) Load 8(invocation)
+ 439: 67(ptr) AccessChain 37(data) 58 45
+ 440: 23(i8vec4) Load 439
+ 441: 17(ivec4) Load 19(ballot)
+ 442: 23(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 440 441
+ 443: 67(ptr) AccessChain 37(data) 438 45
+ Store 443 442
+ 444: 6(int) Load 8(invocation)
+ 445: 62(ptr) AccessChain 37(data) 39 45 40
+ 446: 22(int8_t) Load 445
+ 447: 17(ivec4) Load 19(ballot)
+ 448: 22(int8_t) GroupNonUniformUMin 177 PartitionedReduceNV 446 447
+ 449: 62(ptr) AccessChain 37(data) 444 45 40
+ Store 449 448
+ 450: 6(int) Load 8(invocation)
+ 451: 67(ptr) AccessChain 37(data) 45 45
+ 452: 23(i8vec4) Load 451
+ 453: 66(i8vec2) VectorShuffle 452 452 0 1
+ 454: 17(ivec4) Load 19(ballot)
+ 455: 66(i8vec2) GroupNonUniformUMin 177 PartitionedReduceNV 453 454
+ 456: 67(ptr) AccessChain 37(data) 450 45
+ 457: 23(i8vec4) Load 456
+ 458: 23(i8vec4) VectorShuffle 457 455 4 5 2 3
+ Store 456 458
+ 459: 6(int) Load 8(invocation)
+ 460: 67(ptr) AccessChain 37(data) 52 45
+ 461: 23(i8vec4) Load 460
+ 462: 72(i8vec3) VectorShuffle 461 461 0 1 2
+ 463: 17(ivec4) Load 19(ballot)
+ 464: 72(i8vec3) GroupNonUniformUMin 177 PartitionedReduceNV 462 463
+ 465: 67(ptr) AccessChain 37(data) 459 45
+ 466: 23(i8vec4) Load 465
+ 467: 23(i8vec4) VectorShuffle 466 464 4 5 6 3
+ Store 465 467
+ 468: 6(int) Load 8(invocation)
+ 469: 67(ptr) AccessChain 37(data) 58 45
+ 470: 23(i8vec4) Load 469
+ 471: 17(ivec4) Load 19(ballot)
+ 472: 23(i8vec4) GroupNonUniformUMin 177 PartitionedReduceNV 470 471
+ 473: 67(ptr) AccessChain 37(data) 468 45
+ Store 473 472
+ 474: 6(int) Load 8(invocation)
+ 475: 62(ptr) AccessChain 37(data) 39 45 40
+ 476: 22(int8_t) Load 475
+ 477: 17(ivec4) Load 19(ballot)
+ 478: 22(int8_t) GroupNonUniformUMax 177 PartitionedReduceNV 476 477
+ 479: 62(ptr) AccessChain 37(data) 474 45 40
+ Store 479 478
+ 480: 6(int) Load 8(invocation)
+ 481: 67(ptr) AccessChain 37(data) 45 45
+ 482: 23(i8vec4) Load 481
+ 483: 66(i8vec2) VectorShuffle 482 482 0 1
+ 484: 17(ivec4) Load 19(ballot)
+ 485: 66(i8vec2) GroupNonUniformUMax 177 PartitionedReduceNV 483 484
+ 486: 67(ptr) AccessChain 37(data) 480 45
+ 487: 23(i8vec4) Load 486
+ 488: 23(i8vec4) VectorShuffle 487 485 4 5 2 3
+ Store 486 488
+ 489: 6(int) Load 8(invocation)
+ 490: 67(ptr) AccessChain 37(data) 52 45
+ 491: 23(i8vec4) Load 490
+ 492: 72(i8vec3) VectorShuffle 491 491 0 1 2
+ 493: 17(ivec4) Load 19(ballot)
+ 494: 72(i8vec3) GroupNonUniformUMax 177 PartitionedReduceNV 492 493
+ 495: 67(ptr) AccessChain 37(data) 489 45
+ 496: 23(i8vec4) Load 495
+ 497: 23(i8vec4) VectorShuffle 496 494 4 5 6 3
+ Store 495 497
+ 498: 6(int) Load 8(invocation)
+ 499: 67(ptr) AccessChain 37(data) 58 45
+ 500: 23(i8vec4) Load 499
+ 501: 17(ivec4) Load 19(ballot)
+ 502: 23(i8vec4) GroupNonUniformUMax 177 PartitionedReduceNV 500 501
+ 503: 67(ptr) AccessChain 37(data) 498 45
+ Store 503 502
+ 504: 6(int) Load 8(invocation)
+ 505: 62(ptr) AccessChain 37(data) 39 45 40
+ 506: 22(int8_t) Load 505
+ 507: 17(ivec4) Load 19(ballot)
+ 508: 22(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 506 507
+ 509: 62(ptr) AccessChain 37(data) 504 45 40
+ Store 509 508
+ 510: 6(int) Load 8(invocation)
+ 511: 67(ptr) AccessChain 37(data) 45 45
+ 512: 23(i8vec4) Load 511
+ 513: 66(i8vec2) VectorShuffle 512 512 0 1
+ 514: 17(ivec4) Load 19(ballot)
+ 515: 66(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 513 514
+ 516: 67(ptr) AccessChain 37(data) 510 45
+ 517: 23(i8vec4) Load 516
+ 518: 23(i8vec4) VectorShuffle 517 515 4 5 2 3
+ Store 516 518
+ 519: 6(int) Load 8(invocation)
+ 520: 67(ptr) AccessChain 37(data) 52 45
+ 521: 23(i8vec4) Load 520
+ 522: 72(i8vec3) VectorShuffle 521 521 0 1 2
+ 523: 17(ivec4) Load 19(ballot)
+ 524: 72(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 522 523
+ 525: 67(ptr) AccessChain 37(data) 519 45
+ 526: 23(i8vec4) Load 525
+ 527: 23(i8vec4) VectorShuffle 526 524 4 5 6 3
+ Store 525 527
+ 528: 6(int) Load 8(invocation)
+ 529: 67(ptr) AccessChain 37(data) 58 45
+ 530: 23(i8vec4) Load 529
+ 531: 17(ivec4) Load 19(ballot)
+ 532: 23(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 530 531
+ 533: 67(ptr) AccessChain 37(data) 528 45
+ Store 533 532
+ 534: 6(int) Load 8(invocation)
+ 535: 62(ptr) AccessChain 37(data) 39 45 40
+ 536: 22(int8_t) Load 535
+ 537: 17(ivec4) Load 19(ballot)
+ 538: 22(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 536 537
+ 539: 62(ptr) AccessChain 37(data) 534 45 40
+ Store 539 538
+ 540: 6(int) Load 8(invocation)
+ 541: 67(ptr) AccessChain 37(data) 45 45
+ 542: 23(i8vec4) Load 541
+ 543: 66(i8vec2) VectorShuffle 542 542 0 1
+ 544: 17(ivec4) Load 19(ballot)
+ 545: 66(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 543 544
+ 546: 67(ptr) AccessChain 37(data) 540 45
+ 547: 23(i8vec4) Load 546
+ 548: 23(i8vec4) VectorShuffle 547 545 4 5 2 3
+ Store 546 548
+ 549: 6(int) Load 8(invocation)
+ 550: 67(ptr) AccessChain 37(data) 52 45
+ 551: 23(i8vec4) Load 550
+ 552: 72(i8vec3) VectorShuffle 551 551 0 1 2
+ 553: 17(ivec4) Load 19(ballot)
+ 554: 72(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 552 553
+ 555: 67(ptr) AccessChain 37(data) 549 45
+ 556: 23(i8vec4) Load 555
+ 557: 23(i8vec4) VectorShuffle 556 554 4 5 6 3
+ Store 555 557
+ 558: 6(int) Load 8(invocation)
+ 559: 67(ptr) AccessChain 37(data) 58 45
+ 560: 23(i8vec4) Load 559
+ 561: 17(ivec4) Load 19(ballot)
+ 562: 23(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 560 561
+ 563: 67(ptr) AccessChain 37(data) 558 45
+ Store 563 562
+ 564: 6(int) Load 8(invocation)
+ 565: 62(ptr) AccessChain 37(data) 39 45 40
+ 566: 22(int8_t) Load 565
+ 567: 17(ivec4) Load 19(ballot)
+ 568: 22(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 566 567
+ 569: 62(ptr) AccessChain 37(data) 564 45 40
+ Store 569 568
+ 570: 6(int) Load 8(invocation)
+ 571: 67(ptr) AccessChain 37(data) 45 45
+ 572: 23(i8vec4) Load 571
+ 573: 66(i8vec2) VectorShuffle 572 572 0 1
+ 574: 17(ivec4) Load 19(ballot)
+ 575: 66(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 573 574
+ 576: 67(ptr) AccessChain 37(data) 570 45
+ 577: 23(i8vec4) Load 576
+ 578: 23(i8vec4) VectorShuffle 577 575 4 5 2 3
+ Store 576 578
+ 579: 6(int) Load 8(invocation)
+ 580: 67(ptr) AccessChain 37(data) 52 45
+ 581: 23(i8vec4) Load 580
+ 582: 72(i8vec3) VectorShuffle 581 581 0 1 2
+ 583: 17(ivec4) Load 19(ballot)
+ 584: 72(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 582 583
+ 585: 67(ptr) AccessChain 37(data) 579 45
+ 586: 23(i8vec4) Load 585
+ 587: 23(i8vec4) VectorShuffle 586 584 4 5 6 3
+ Store 585 587
+ 588: 6(int) Load 8(invocation)
+ 589: 67(ptr) AccessChain 37(data) 58 45
+ 590: 23(i8vec4) Load 589
+ 591: 17(ivec4) Load 19(ballot)
+ 592: 23(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 590 591
+ 593: 67(ptr) AccessChain 37(data) 588 45
+ Store 593 592
+ 594: 6(int) Load 8(invocation)
+ 595: 80(ptr) AccessChain 37(data) 39 52 40
+ 596: 24(int16_t) Load 595
+ 597: 17(ivec4) Load 19(ballot)
+ 598: 24(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 596 597
+ 599: 80(ptr) AccessChain 37(data) 594 52 40
+ Store 599 598
+ 600: 6(int) Load 8(invocation)
+ 601: 85(ptr) AccessChain 37(data) 45 52
+ 602: 25(i16vec4) Load 601
+ 603: 84(i16vec2) VectorShuffle 602 602 0 1
+ 604: 17(ivec4) Load 19(ballot)
+ 605: 84(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 603 604
+ 606: 85(ptr) AccessChain 37(data) 600 52
+ 607: 25(i16vec4) Load 606
+ 608: 25(i16vec4) VectorShuffle 607 605 4 5 2 3
+ Store 606 608
+ 609: 6(int) Load 8(invocation)
+ 610: 85(ptr) AccessChain 37(data) 52 52
+ 611: 25(i16vec4) Load 610
+ 612: 90(i16vec3) VectorShuffle 611 611 0 1 2
+ 613: 17(ivec4) Load 19(ballot)
+ 614: 90(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 612 613
+ 615: 85(ptr) AccessChain 37(data) 609 52
+ 616: 25(i16vec4) Load 615
+ 617: 25(i16vec4) VectorShuffle 616 614 4 5 6 3
+ Store 615 617
+ 618: 6(int) Load 8(invocation)
+ 619: 85(ptr) AccessChain 37(data) 58 52
+ 620: 25(i16vec4) Load 619
+ 621: 17(ivec4) Load 19(ballot)
+ 622: 25(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 620 621
+ 623: 85(ptr) AccessChain 37(data) 618 52
+ Store 623 622
+ 624: 6(int) Load 8(invocation)
+ 625: 80(ptr) AccessChain 37(data) 39 52 40
+ 626: 24(int16_t) Load 625
+ 627: 17(ivec4) Load 19(ballot)
+ 628: 24(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 626 627
+ 629: 80(ptr) AccessChain 37(data) 624 52 40
+ Store 629 628
+ 630: 6(int) Load 8(invocation)
+ 631: 85(ptr) AccessChain 37(data) 45 52
+ 632: 25(i16vec4) Load 631
+ 633: 84(i16vec2) VectorShuffle 632 632 0 1
+ 634: 17(ivec4) Load 19(ballot)
+ 635: 84(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 633 634
+ 636: 85(ptr) AccessChain 37(data) 630 52
+ 637: 25(i16vec4) Load 636
+ 638: 25(i16vec4) VectorShuffle 637 635 4 5 2 3
+ Store 636 638
+ 639: 6(int) Load 8(invocation)
+ 640: 85(ptr) AccessChain 37(data) 52 52
+ 641: 25(i16vec4) Load 640
+ 642: 90(i16vec3) VectorShuffle 641 641 0 1 2
+ 643: 17(ivec4) Load 19(ballot)
+ 644: 90(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 642 643
+ 645: 85(ptr) AccessChain 37(data) 639 52
+ 646: 25(i16vec4) Load 645
+ 647: 25(i16vec4) VectorShuffle 646 644 4 5 6 3
+ Store 645 647
+ 648: 6(int) Load 8(invocation)
+ 649: 85(ptr) AccessChain 37(data) 58 52
+ 650: 25(i16vec4) Load 649
+ 651: 17(ivec4) Load 19(ballot)
+ 652: 25(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 650 651
+ 653: 85(ptr) AccessChain 37(data) 648 52
+ Store 653 652
+ 654: 6(int) Load 8(invocation)
+ 655: 80(ptr) AccessChain 37(data) 39 52 40
+ 656: 24(int16_t) Load 655
+ 657: 17(ivec4) Load 19(ballot)
+ 658: 24(int16_t) GroupNonUniformSMin 177 PartitionedReduceNV 656 657
+ 659: 80(ptr) AccessChain 37(data) 654 52 40
+ Store 659 658
+ 660: 6(int) Load 8(invocation)
+ 661: 85(ptr) AccessChain 37(data) 45 52
+ 662: 25(i16vec4) Load 661
+ 663: 84(i16vec2) VectorShuffle 662 662 0 1
+ 664: 17(ivec4) Load 19(ballot)
+ 665: 84(i16vec2) GroupNonUniformSMin 177 PartitionedReduceNV 663 664
+ 666: 85(ptr) AccessChain 37(data) 660 52
+ 667: 25(i16vec4) Load 666
+ 668: 25(i16vec4) VectorShuffle 667 665 4 5 2 3
+ Store 666 668
+ 669: 6(int) Load 8(invocation)
+ 670: 85(ptr) AccessChain 37(data) 52 52
+ 671: 25(i16vec4) Load 670
+ 672: 90(i16vec3) VectorShuffle 671 671 0 1 2
+ 673: 17(ivec4) Load 19(ballot)
+ 674: 90(i16vec3) GroupNonUniformSMin 177 PartitionedReduceNV 672 673
+ 675: 85(ptr) AccessChain 37(data) 669 52
+ 676: 25(i16vec4) Load 675
+ 677: 25(i16vec4) VectorShuffle 676 674 4 5 6 3
+ Store 675 677
+ 678: 6(int) Load 8(invocation)
+ 679: 85(ptr) AccessChain 37(data) 58 52
+ 680: 25(i16vec4) Load 679
+ 681: 17(ivec4) Load 19(ballot)
+ 682: 25(i16vec4) GroupNonUniformSMin 177 PartitionedReduceNV 680 681
+ 683: 85(ptr) AccessChain 37(data) 678 52
+ Store 683 682
+ 684: 6(int) Load 8(invocation)
+ 685: 80(ptr) AccessChain 37(data) 39 52 40
+ 686: 24(int16_t) Load 685
+ 687: 17(ivec4) Load 19(ballot)
+ 688: 24(int16_t) GroupNonUniformSMax 177 PartitionedReduceNV 686 687
+ 689: 80(ptr) AccessChain 37(data) 684 52 40
+ Store 689 688
+ 690: 6(int) Load 8(invocation)
+ 691: 85(ptr) AccessChain 37(data) 45 52
+ 692: 25(i16vec4) Load 691
+ 693: 84(i16vec2) VectorShuffle 692 692 0 1
+ 694: 17(ivec4) Load 19(ballot)
+ 695: 84(i16vec2) GroupNonUniformSMax 177 PartitionedReduceNV 693 694
+ 696: 85(ptr) AccessChain 37(data) 690 52
+ 697: 25(i16vec4) Load 696
+ 698: 25(i16vec4) VectorShuffle 697 695 4 5 2 3
+ Store 696 698
+ 699: 6(int) Load 8(invocation)
+ 700: 85(ptr) AccessChain 37(data) 52 52
+ 701: 25(i16vec4) Load 700
+ 702: 90(i16vec3) VectorShuffle 701 701 0 1 2
+ 703: 17(ivec4) Load 19(ballot)
+ 704: 90(i16vec3) GroupNonUniformSMax 177 PartitionedReduceNV 702 703
+ 705: 85(ptr) AccessChain 37(data) 699 52
+ 706: 25(i16vec4) Load 705
+ 707: 25(i16vec4) VectorShuffle 706 704 4 5 6 3
+ Store 705 707
+ 708: 6(int) Load 8(invocation)
+ 709: 85(ptr) AccessChain 37(data) 58 52
+ 710: 25(i16vec4) Load 709
+ 711: 17(ivec4) Load 19(ballot)
+ 712: 25(i16vec4) GroupNonUniformSMax 177 PartitionedReduceNV 710 711
+ 713: 85(ptr) AccessChain 37(data) 708 52
+ Store 713 712
+ 714: 6(int) Load 8(invocation)
+ 715: 80(ptr) AccessChain 37(data) 39 52 40
+ 716: 24(int16_t) Load 715
+ 717: 17(ivec4) Load 19(ballot)
+ 718: 24(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 716 717
+ 719: 80(ptr) AccessChain 37(data) 714 52 40
+ Store 719 718
+ 720: 6(int) Load 8(invocation)
+ 721: 85(ptr) AccessChain 37(data) 45 52
+ 722: 25(i16vec4) Load 721
+ 723: 84(i16vec2) VectorShuffle 722 722 0 1
+ 724: 17(ivec4) Load 19(ballot)
+ 725: 84(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 723 724
+ 726: 85(ptr) AccessChain 37(data) 720 52
+ 727: 25(i16vec4) Load 726
+ 728: 25(i16vec4) VectorShuffle 727 725 4 5 2 3
+ Store 726 728
+ 729: 6(int) Load 8(invocation)
+ 730: 85(ptr) AccessChain 37(data) 52 52
+ 731: 25(i16vec4) Load 730
+ 732: 90(i16vec3) VectorShuffle 731 731 0 1 2
+ 733: 17(ivec4) Load 19(ballot)
+ 734: 90(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 732 733
+ 735: 85(ptr) AccessChain 37(data) 729 52
+ 736: 25(i16vec4) Load 735
+ 737: 25(i16vec4) VectorShuffle 736 734 4 5 6 3
+ Store 735 737
+ 738: 6(int) Load 8(invocation)
+ 739: 85(ptr) AccessChain 37(data) 58 52
+ 740: 25(i16vec4) Load 739
+ 741: 17(ivec4) Load 19(ballot)
+ 742: 25(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 740 741
+ 743: 85(ptr) AccessChain 37(data) 738 52
+ Store 743 742
+ 744: 6(int) Load 8(invocation)
+ 745: 80(ptr) AccessChain 37(data) 39 52 40
+ 746: 24(int16_t) Load 745
+ 747: 17(ivec4) Load 19(ballot)
+ 748: 24(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 746 747
+ 749: 80(ptr) AccessChain 37(data) 744 52 40
+ Store 749 748
+ 750: 6(int) Load 8(invocation)
+ 751: 85(ptr) AccessChain 37(data) 45 52
+ 752: 25(i16vec4) Load 751
+ 753: 84(i16vec2) VectorShuffle 752 752 0 1
+ 754: 17(ivec4) Load 19(ballot)
+ 755: 84(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 753 754
+ 756: 85(ptr) AccessChain 37(data) 750 52
+ 757: 25(i16vec4) Load 756
+ 758: 25(i16vec4) VectorShuffle 757 755 4 5 2 3
+ Store 756 758
+ 759: 6(int) Load 8(invocation)
+ 760: 85(ptr) AccessChain 37(data) 52 52
+ 761: 25(i16vec4) Load 760
+ 762: 90(i16vec3) VectorShuffle 761 761 0 1 2
+ 763: 17(ivec4) Load 19(ballot)
+ 764: 90(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 762 763
+ 765: 85(ptr) AccessChain 37(data) 759 52
+ 766: 25(i16vec4) Load 765
+ 767: 25(i16vec4) VectorShuffle 766 764 4 5 6 3
+ Store 765 767
+ 768: 6(int) Load 8(invocation)
+ 769: 85(ptr) AccessChain 37(data) 58 52
+ 770: 25(i16vec4) Load 769
+ 771: 17(ivec4) Load 19(ballot)
+ 772: 25(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 770 771
+ 773: 85(ptr) AccessChain 37(data) 768 52
+ Store 773 772
+ 774: 6(int) Load 8(invocation)
+ 775: 80(ptr) AccessChain 37(data) 39 52 40
+ 776: 24(int16_t) Load 775
+ 777: 17(ivec4) Load 19(ballot)
+ 778: 24(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 776 777
+ 779: 80(ptr) AccessChain 37(data) 774 52 40
+ Store 779 778
+ 780: 6(int) Load 8(invocation)
+ 781: 85(ptr) AccessChain 37(data) 45 52
+ 782: 25(i16vec4) Load 781
+ 783: 84(i16vec2) VectorShuffle 782 782 0 1
+ 784: 17(ivec4) Load 19(ballot)
+ 785: 84(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 783 784
+ 786: 85(ptr) AccessChain 37(data) 780 52
+ 787: 25(i16vec4) Load 786
+ 788: 25(i16vec4) VectorShuffle 787 785 4 5 2 3
+ Store 786 788
+ 789: 6(int) Load 8(invocation)
+ 790: 85(ptr) AccessChain 37(data) 52 52
+ 791: 25(i16vec4) Load 790
+ 792: 90(i16vec3) VectorShuffle 791 791 0 1 2
+ 793: 17(ivec4) Load 19(ballot)
+ 794: 90(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 792 793
+ 795: 85(ptr) AccessChain 37(data) 789 52
+ 796: 25(i16vec4) Load 795
+ 797: 25(i16vec4) VectorShuffle 796 794 4 5 6 3
+ Store 795 797
+ 798: 6(int) Load 8(invocation)
+ 799: 85(ptr) AccessChain 37(data) 58 52
+ 800: 25(i16vec4) Load 799
+ 801: 17(ivec4) Load 19(ballot)
+ 802: 25(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 800 801
+ 803: 85(ptr) AccessChain 37(data) 798 52
+ Store 803 802
+ 804: 6(int) Load 8(invocation)
+ 805: 98(ptr) AccessChain 37(data) 39 58 40
+ 806: 26(int16_t) Load 805
+ 807: 17(ivec4) Load 19(ballot)
+ 808: 26(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 806 807
+ 809: 98(ptr) AccessChain 37(data) 804 58 40
+ Store 809 808
+ 810: 6(int) Load 8(invocation)
+ 811: 103(ptr) AccessChain 37(data) 45 58
+ 812: 27(i16vec4) Load 811
+ 813:102(i16vec2) VectorShuffle 812 812 0 1
+ 814: 17(ivec4) Load 19(ballot)
+ 815:102(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 813 814
+ 816: 103(ptr) AccessChain 37(data) 810 58
+ 817: 27(i16vec4) Load 816
+ 818: 27(i16vec4) VectorShuffle 817 815 4 5 2 3
+ Store 816 818
+ 819: 6(int) Load 8(invocation)
+ 820: 103(ptr) AccessChain 37(data) 52 58
+ 821: 27(i16vec4) Load 820
+ 822:108(i16vec3) VectorShuffle 821 821 0 1 2
+ 823: 17(ivec4) Load 19(ballot)
+ 824:108(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 822 823
+ 825: 103(ptr) AccessChain 37(data) 819 58
+ 826: 27(i16vec4) Load 825
+ 827: 27(i16vec4) VectorShuffle 826 824 4 5 6 3
+ Store 825 827
+ 828: 6(int) Load 8(invocation)
+ 829: 103(ptr) AccessChain 37(data) 58 58
+ 830: 27(i16vec4) Load 829
+ 831: 17(ivec4) Load 19(ballot)
+ 832: 27(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 830 831
+ 833: 103(ptr) AccessChain 37(data) 828 58
+ Store 833 832
+ 834: 6(int) Load 8(invocation)
+ 835: 98(ptr) AccessChain 37(data) 39 58 40
+ 836: 26(int16_t) Load 835
+ 837: 17(ivec4) Load 19(ballot)
+ 838: 26(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 836 837
+ 839: 98(ptr) AccessChain 37(data) 834 58 40
+ Store 839 838
+ 840: 6(int) Load 8(invocation)
+ 841: 103(ptr) AccessChain 37(data) 45 58
+ 842: 27(i16vec4) Load 841
+ 843:102(i16vec2) VectorShuffle 842 842 0 1
+ 844: 17(ivec4) Load 19(ballot)
+ 845:102(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 843 844
+ 846: 103(ptr) AccessChain 37(data) 840 58
+ 847: 27(i16vec4) Load 846
+ 848: 27(i16vec4) VectorShuffle 847 845 4 5 2 3
+ Store 846 848
+ 849: 6(int) Load 8(invocation)
+ 850: 103(ptr) AccessChain 37(data) 52 58
+ 851: 27(i16vec4) Load 850
+ 852:108(i16vec3) VectorShuffle 851 851 0 1 2
+ 853: 17(ivec4) Load 19(ballot)
+ 854:108(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 852 853
+ 855: 103(ptr) AccessChain 37(data) 849 58
+ 856: 27(i16vec4) Load 855
+ 857: 27(i16vec4) VectorShuffle 856 854 4 5 6 3
+ Store 855 857
+ 858: 6(int) Load 8(invocation)
+ 859: 103(ptr) AccessChain 37(data) 58 58
+ 860: 27(i16vec4) Load 859
+ 861: 17(ivec4) Load 19(ballot)
+ 862: 27(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 860 861
+ 863: 103(ptr) AccessChain 37(data) 858 58
+ Store 863 862
+ 864: 6(int) Load 8(invocation)
+ 865: 98(ptr) AccessChain 37(data) 39 58 40
+ 866: 26(int16_t) Load 865
+ 867: 17(ivec4) Load 19(ballot)
+ 868: 26(int16_t) GroupNonUniformUMin 177 PartitionedReduceNV 866 867
+ 869: 98(ptr) AccessChain 37(data) 864 58 40
+ Store 869 868
+ 870: 6(int) Load 8(invocation)
+ 871: 103(ptr) AccessChain 37(data) 45 58
+ 872: 27(i16vec4) Load 871
+ 873:102(i16vec2) VectorShuffle 872 872 0 1
+ 874: 17(ivec4) Load 19(ballot)
+ 875:102(i16vec2) GroupNonUniformUMin 177 PartitionedReduceNV 873 874
+ 876: 103(ptr) AccessChain 37(data) 870 58
+ 877: 27(i16vec4) Load 876
+ 878: 27(i16vec4) VectorShuffle 877 875 4 5 2 3
+ Store 876 878
+ 879: 6(int) Load 8(invocation)
+ 880: 103(ptr) AccessChain 37(data) 52 58
+ 881: 27(i16vec4) Load 880
+ 882:108(i16vec3) VectorShuffle 881 881 0 1 2
+ 883: 17(ivec4) Load 19(ballot)
+ 884:108(i16vec3) GroupNonUniformUMin 177 PartitionedReduceNV 882 883
+ 885: 103(ptr) AccessChain 37(data) 879 58
+ 886: 27(i16vec4) Load 885
+ 887: 27(i16vec4) VectorShuffle 886 884 4 5 6 3
+ Store 885 887
+ 888: 6(int) Load 8(invocation)
+ 889: 103(ptr) AccessChain 37(data) 58 58
+ 890: 27(i16vec4) Load 889
+ 891: 17(ivec4) Load 19(ballot)
+ 892: 27(i16vec4) GroupNonUniformUMin 177 PartitionedReduceNV 890 891
+ 893: 103(ptr) AccessChain 37(data) 888 58
+ Store 893 892
+ 894: 6(int) Load 8(invocation)
+ 895: 98(ptr) AccessChain 37(data) 39 58 40
+ 896: 26(int16_t) Load 895
+ 897: 17(ivec4) Load 19(ballot)
+ 898: 26(int16_t) GroupNonUniformUMax 177 PartitionedReduceNV 896 897
+ 899: 98(ptr) AccessChain 37(data) 894 58 40
+ Store 899 898
+ 900: 6(int) Load 8(invocation)
+ 901: 103(ptr) AccessChain 37(data) 45 58
+ 902: 27(i16vec4) Load 901
+ 903:102(i16vec2) VectorShuffle 902 902 0 1
+ 904: 17(ivec4) Load 19(ballot)
+ 905:102(i16vec2) GroupNonUniformUMax 177 PartitionedReduceNV 903 904
+ 906: 103(ptr) AccessChain 37(data) 900 58
+ 907: 27(i16vec4) Load 906
+ 908: 27(i16vec4) VectorShuffle 907 905 4 5 2 3
+ Store 906 908
+ 909: 6(int) Load 8(invocation)
+ 910: 103(ptr) AccessChain 37(data) 52 58
+ 911: 27(i16vec4) Load 910
+ 912:108(i16vec3) VectorShuffle 911 911 0 1 2
+ 913: 17(ivec4) Load 19(ballot)
+ 914:108(i16vec3) GroupNonUniformUMax 177 PartitionedReduceNV 912 913
+ 915: 103(ptr) AccessChain 37(data) 909 58
+ 916: 27(i16vec4) Load 915
+ 917: 27(i16vec4) VectorShuffle 916 914 4 5 6 3
+ Store 915 917
+ 918: 6(int) Load 8(invocation)
+ 919: 103(ptr) AccessChain 37(data) 58 58
+ 920: 27(i16vec4) Load 919
+ 921: 17(ivec4) Load 19(ballot)
+ 922: 27(i16vec4) GroupNonUniformUMax 177 PartitionedReduceNV 920 921
+ 923: 103(ptr) AccessChain 37(data) 918 58
+ Store 923 922
+ 924: 6(int) Load 8(invocation)
+ 925: 98(ptr) AccessChain 37(data) 39 58 40
+ 926: 26(int16_t) Load 925
+ 927: 17(ivec4) Load 19(ballot)
+ 928: 26(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 926 927
+ 929: 98(ptr) AccessChain 37(data) 924 58 40
+ Store 929 928
+ 930: 6(int) Load 8(invocation)
+ 931: 103(ptr) AccessChain 37(data) 45 58
+ 932: 27(i16vec4) Load 931
+ 933:102(i16vec2) VectorShuffle 932 932 0 1
+ 934: 17(ivec4) Load 19(ballot)
+ 935:102(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 933 934
+ 936: 103(ptr) AccessChain 37(data) 930 58
+ 937: 27(i16vec4) Load 936
+ 938: 27(i16vec4) VectorShuffle 937 935 4 5 2 3
+ Store 936 938
+ 939: 6(int) Load 8(invocation)
+ 940: 103(ptr) AccessChain 37(data) 52 58
+ 941: 27(i16vec4) Load 940
+ 942:108(i16vec3) VectorShuffle 941 941 0 1 2
+ 943: 17(ivec4) Load 19(ballot)
+ 944:108(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 942 943
+ 945: 103(ptr) AccessChain 37(data) 939 58
+ 946: 27(i16vec4) Load 945
+ 947: 27(i16vec4) VectorShuffle 946 944 4 5 6 3
+ Store 945 947
+ 948: 6(int) Load 8(invocation)
+ 949: 103(ptr) AccessChain 37(data) 58 58
+ 950: 27(i16vec4) Load 949
+ 951: 17(ivec4) Load 19(ballot)
+ 952: 27(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 950 951
+ 953: 103(ptr) AccessChain 37(data) 948 58
+ Store 953 952
+ 954: 6(int) Load 8(invocation)
+ 955: 98(ptr) AccessChain 37(data) 39 58 40
+ 956: 26(int16_t) Load 955
+ 957: 17(ivec4) Load 19(ballot)
+ 958: 26(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 956 957
+ 959: 98(ptr) AccessChain 37(data) 954 58 40
+ Store 959 958
+ 960: 6(int) Load 8(invocation)
+ 961: 103(ptr) AccessChain 37(data) 45 58
+ 962: 27(i16vec4) Load 961
+ 963:102(i16vec2) VectorShuffle 962 962 0 1
+ 964: 17(ivec4) Load 19(ballot)
+ 965:102(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 963 964
+ 966: 103(ptr) AccessChain 37(data) 960 58
+ 967: 27(i16vec4) Load 966
+ 968: 27(i16vec4) VectorShuffle 967 965 4 5 2 3
+ Store 966 968
+ 969: 6(int) Load 8(invocation)
+ 970: 103(ptr) AccessChain 37(data) 52 58
+ 971: 27(i16vec4) Load 970
+ 972:108(i16vec3) VectorShuffle 971 971 0 1 2
+ 973: 17(ivec4) Load 19(ballot)
+ 974:108(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 972 973
+ 975: 103(ptr) AccessChain 37(data) 969 58
+ 976: 27(i16vec4) Load 975
+ 977: 27(i16vec4) VectorShuffle 976 974 4 5 6 3
+ Store 975 977
+ 978: 6(int) Load 8(invocation)
+ 979: 103(ptr) AccessChain 37(data) 58 58
+ 980: 27(i16vec4) Load 979
+ 981: 17(ivec4) Load 19(ballot)
+ 982: 27(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 980 981
+ 983: 103(ptr) AccessChain 37(data) 978 58
+ Store 983 982
+ 984: 6(int) Load 8(invocation)
+ 985: 98(ptr) AccessChain 37(data) 39 58 40
+ 986: 26(int16_t) Load 985
+ 987: 17(ivec4) Load 19(ballot)
+ 988: 26(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 986 987
+ 989: 98(ptr) AccessChain 37(data) 984 58 40
+ Store 989 988
+ 990: 6(int) Load 8(invocation)
+ 991: 103(ptr) AccessChain 37(data) 45 58
+ 992: 27(i16vec4) Load 991
+ 993:102(i16vec2) VectorShuffle 992 992 0 1
+ 994: 17(ivec4) Load 19(ballot)
+ 995:102(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 993 994
+ 996: 103(ptr) AccessChain 37(data) 990 58
+ 997: 27(i16vec4) Load 996
+ 998: 27(i16vec4) VectorShuffle 997 995 4 5 2 3
+ Store 996 998
+ 999: 6(int) Load 8(invocation)
+ 1000: 103(ptr) AccessChain 37(data) 52 58
+ 1001: 27(i16vec4) Load 1000
+ 1002:108(i16vec3) VectorShuffle 1001 1001 0 1 2
+ 1003: 17(ivec4) Load 19(ballot)
+ 1004:108(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1002 1003
+ 1005: 103(ptr) AccessChain 37(data) 999 58
+ 1006: 27(i16vec4) Load 1005
+ 1007: 27(i16vec4) VectorShuffle 1006 1004 4 5 6 3
+ Store 1005 1007
+ 1008: 6(int) Load 8(invocation)
+ 1009: 103(ptr) AccessChain 37(data) 58 58
+ 1010: 27(i16vec4) Load 1009
+ 1011: 17(ivec4) Load 19(ballot)
+ 1012: 27(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1010 1011
+ 1013: 103(ptr) AccessChain 37(data) 1008 58
+ Store 1013 1012
+ 1014: 6(int) Load 8(invocation)
+ 1015: 117(ptr) AccessChain 37(data) 39 116 40
+ 1016: 28(int64_t) Load 1015
+ 1017: 17(ivec4) Load 19(ballot)
+ 1018: 28(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1016 1017
+ 1019: 117(ptr) AccessChain 37(data) 1014 116 40
+ Store 1019 1018
+ 1020: 6(int) Load 8(invocation)
+ 1021: 122(ptr) AccessChain 37(data) 45 116
+ 1022: 29(i64vec4) Load 1021
+ 1023:121(i64vec2) VectorShuffle 1022 1022 0 1
+ 1024: 17(ivec4) Load 19(ballot)
+ 1025:121(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1023 1024
+ 1026: 122(ptr) AccessChain 37(data) 1020 116
+ 1027: 29(i64vec4) Load 1026
+ 1028: 29(i64vec4) VectorShuffle 1027 1025 4 5 2 3
+ Store 1026 1028
+ 1029: 6(int) Load 8(invocation)
+ 1030: 122(ptr) AccessChain 37(data) 52 116
+ 1031: 29(i64vec4) Load 1030
+ 1032:127(i64vec3) VectorShuffle 1031 1031 0 1 2
+ 1033: 17(ivec4) Load 19(ballot)
+ 1034:127(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1032 1033
+ 1035: 122(ptr) AccessChain 37(data) 1029 116
+ 1036: 29(i64vec4) Load 1035
+ 1037: 29(i64vec4) VectorShuffle 1036 1034 4 5 6 3
+ Store 1035 1037
+ 1038: 6(int) Load 8(invocation)
+ 1039: 122(ptr) AccessChain 37(data) 58 116
+ 1040: 29(i64vec4) Load 1039
+ 1041: 17(ivec4) Load 19(ballot)
+ 1042: 29(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1040 1041
+ 1043: 122(ptr) AccessChain 37(data) 1038 116
+ Store 1043 1042
+ 1044: 6(int) Load 8(invocation)
+ 1045: 117(ptr) AccessChain 37(data) 39 116 40
+ 1046: 28(int64_t) Load 1045
+ 1047: 17(ivec4) Load 19(ballot)
+ 1048: 28(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1046 1047
+ 1049: 117(ptr) AccessChain 37(data) 1044 116 40
+ Store 1049 1048
+ 1050: 6(int) Load 8(invocation)
+ 1051: 122(ptr) AccessChain 37(data) 45 116
+ 1052: 29(i64vec4) Load 1051
+ 1053:121(i64vec2) VectorShuffle 1052 1052 0 1
+ 1054: 17(ivec4) Load 19(ballot)
+ 1055:121(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1053 1054
+ 1056: 122(ptr) AccessChain 37(data) 1050 116
+ 1057: 29(i64vec4) Load 1056
+ 1058: 29(i64vec4) VectorShuffle 1057 1055 4 5 2 3
+ Store 1056 1058
+ 1059: 6(int) Load 8(invocation)
+ 1060: 122(ptr) AccessChain 37(data) 52 116
+ 1061: 29(i64vec4) Load 1060
+ 1062:127(i64vec3) VectorShuffle 1061 1061 0 1 2
+ 1063: 17(ivec4) Load 19(ballot)
+ 1064:127(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1062 1063
+ 1065: 122(ptr) AccessChain 37(data) 1059 116
+ 1066: 29(i64vec4) Load 1065
+ 1067: 29(i64vec4) VectorShuffle 1066 1064 4 5 6 3
+ Store 1065 1067
+ 1068: 6(int) Load 8(invocation)
+ 1069: 122(ptr) AccessChain 37(data) 58 116
+ 1070: 29(i64vec4) Load 1069
+ 1071: 17(ivec4) Load 19(ballot)
+ 1072: 29(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1070 1071
+ 1073: 122(ptr) AccessChain 37(data) 1068 116
+ Store 1073 1072
+ 1074: 6(int) Load 8(invocation)
+ 1075: 117(ptr) AccessChain 37(data) 39 116 40
+ 1076: 28(int64_t) Load 1075
+ 1077: 17(ivec4) Load 19(ballot)
+ 1078: 28(int64_t) GroupNonUniformSMin 177 PartitionedReduceNV 1076 1077
+ 1079: 117(ptr) AccessChain 37(data) 1074 116 40
+ Store 1079 1078
+ 1080: 6(int) Load 8(invocation)
+ 1081: 122(ptr) AccessChain 37(data) 45 116
+ 1082: 29(i64vec4) Load 1081
+ 1083:121(i64vec2) VectorShuffle 1082 1082 0 1
+ 1084: 17(ivec4) Load 19(ballot)
+ 1085:121(i64vec2) GroupNonUniformSMin 177 PartitionedReduceNV 1083 1084
+ 1086: 122(ptr) AccessChain 37(data) 1080 116
+ 1087: 29(i64vec4) Load 1086
+ 1088: 29(i64vec4) VectorShuffle 1087 1085 4 5 2 3
+ Store 1086 1088
+ 1089: 6(int) Load 8(invocation)
+ 1090: 122(ptr) AccessChain 37(data) 52 116
+ 1091: 29(i64vec4) Load 1090
+ 1092:127(i64vec3) VectorShuffle 1091 1091 0 1 2
+ 1093: 17(ivec4) Load 19(ballot)
+ 1094:127(i64vec3) GroupNonUniformSMin 177 PartitionedReduceNV 1092 1093
+ 1095: 122(ptr) AccessChain 37(data) 1089 116
+ 1096: 29(i64vec4) Load 1095
+ 1097: 29(i64vec4) VectorShuffle 1096 1094 4 5 6 3
+ Store 1095 1097
+ 1098: 6(int) Load 8(invocation)
+ 1099: 122(ptr) AccessChain 37(data) 58 116
+ 1100: 29(i64vec4) Load 1099
+ 1101: 17(ivec4) Load 19(ballot)
+ 1102: 29(i64vec4) GroupNonUniformSMin 177 PartitionedReduceNV 1100 1101
+ 1103: 122(ptr) AccessChain 37(data) 1098 116
+ Store 1103 1102
+ 1104: 6(int) Load 8(invocation)
+ 1105: 117(ptr) AccessChain 37(data) 39 116 40
+ 1106: 28(int64_t) Load 1105
+ 1107: 17(ivec4) Load 19(ballot)
+ 1108: 28(int64_t) GroupNonUniformSMax 177 PartitionedReduceNV 1106 1107
+ 1109: 117(ptr) AccessChain 37(data) 1104 116 40
+ Store 1109 1108
+ 1110: 6(int) Load 8(invocation)
+ 1111: 122(ptr) AccessChain 37(data) 45 116
+ 1112: 29(i64vec4) Load 1111
+ 1113:121(i64vec2) VectorShuffle 1112 1112 0 1
+ 1114: 17(ivec4) Load 19(ballot)
+ 1115:121(i64vec2) GroupNonUniformSMax 177 PartitionedReduceNV 1113 1114
+ 1116: 122(ptr) AccessChain 37(data) 1110 116
+ 1117: 29(i64vec4) Load 1116
+ 1118: 29(i64vec4) VectorShuffle 1117 1115 4 5 2 3
+ Store 1116 1118
+ 1119: 6(int) Load 8(invocation)
+ 1120: 122(ptr) AccessChain 37(data) 52 116
+ 1121: 29(i64vec4) Load 1120
+ 1122:127(i64vec3) VectorShuffle 1121 1121 0 1 2
+ 1123: 17(ivec4) Load 19(ballot)
+ 1124:127(i64vec3) GroupNonUniformSMax 177 PartitionedReduceNV 1122 1123
+ 1125: 122(ptr) AccessChain 37(data) 1119 116
+ 1126: 29(i64vec4) Load 1125
+ 1127: 29(i64vec4) VectorShuffle 1126 1124 4 5 6 3
+ Store 1125 1127
+ 1128: 6(int) Load 8(invocation)
+ 1129: 122(ptr) AccessChain 37(data) 58 116
+ 1130: 29(i64vec4) Load 1129
+ 1131: 17(ivec4) Load 19(ballot)
+ 1132: 29(i64vec4) GroupNonUniformSMax 177 PartitionedReduceNV 1130 1131
+ 1133: 122(ptr) AccessChain 37(data) 1128 116
+ Store 1133 1132
+ 1134: 6(int) Load 8(invocation)
+ 1135: 117(ptr) AccessChain 37(data) 39 116 40
+ 1136: 28(int64_t) Load 1135
+ 1137: 17(ivec4) Load 19(ballot)
+ 1138: 28(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1136 1137
+ 1139: 117(ptr) AccessChain 37(data) 1134 116 40
+ Store 1139 1138
+ 1140: 6(int) Load 8(invocation)
+ 1141: 122(ptr) AccessChain 37(data) 45 116
+ 1142: 29(i64vec4) Load 1141
+ 1143:121(i64vec2) VectorShuffle 1142 1142 0 1
+ 1144: 17(ivec4) Load 19(ballot)
+ 1145:121(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1143 1144
+ 1146: 122(ptr) AccessChain 37(data) 1140 116
+ 1147: 29(i64vec4) Load 1146
+ 1148: 29(i64vec4) VectorShuffle 1147 1145 4 5 2 3
+ Store 1146 1148
+ 1149: 6(int) Load 8(invocation)
+ 1150: 122(ptr) AccessChain 37(data) 52 116
+ 1151: 29(i64vec4) Load 1150
+ 1152:127(i64vec3) VectorShuffle 1151 1151 0 1 2
+ 1153: 17(ivec4) Load 19(ballot)
+ 1154:127(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1152 1153
+ 1155: 122(ptr) AccessChain 37(data) 1149 116
+ 1156: 29(i64vec4) Load 1155
+ 1157: 29(i64vec4) VectorShuffle 1156 1154 4 5 6 3
+ Store 1155 1157
+ 1158: 6(int) Load 8(invocation)
+ 1159: 122(ptr) AccessChain 37(data) 58 116
+ 1160: 29(i64vec4) Load 1159
+ 1161: 17(ivec4) Load 19(ballot)
+ 1162: 29(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1160 1161
+ 1163: 122(ptr) AccessChain 37(data) 1158 116
+ Store 1163 1162
+ 1164: 6(int) Load 8(invocation)
+ 1165: 117(ptr) AccessChain 37(data) 39 116 40
+ 1166: 28(int64_t) Load 1165
+ 1167: 17(ivec4) Load 19(ballot)
+ 1168: 28(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1166 1167
+ 1169: 117(ptr) AccessChain 37(data) 1164 116 40
+ Store 1169 1168
+ 1170: 6(int) Load 8(invocation)
+ 1171: 122(ptr) AccessChain 37(data) 45 116
+ 1172: 29(i64vec4) Load 1171
+ 1173:121(i64vec2) VectorShuffle 1172 1172 0 1
+ 1174: 17(ivec4) Load 19(ballot)
+ 1175:121(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1173 1174
+ 1176: 122(ptr) AccessChain 37(data) 1170 116
+ 1177: 29(i64vec4) Load 1176
+ 1178: 29(i64vec4) VectorShuffle 1177 1175 4 5 2 3
+ Store 1176 1178
+ 1179: 6(int) Load 8(invocation)
+ 1180: 122(ptr) AccessChain 37(data) 52 116
+ 1181: 29(i64vec4) Load 1180
+ 1182:127(i64vec3) VectorShuffle 1181 1181 0 1 2
+ 1183: 17(ivec4) Load 19(ballot)
+ 1184:127(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1182 1183
+ 1185: 122(ptr) AccessChain 37(data) 1179 116
+ 1186: 29(i64vec4) Load 1185
+ 1187: 29(i64vec4) VectorShuffle 1186 1184 4 5 6 3
+ Store 1185 1187
+ 1188: 6(int) Load 8(invocation)
+ 1189: 122(ptr) AccessChain 37(data) 58 116
+ 1190: 29(i64vec4) Load 1189
+ 1191: 17(ivec4) Load 19(ballot)
+ 1192: 29(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1190 1191
+ 1193: 122(ptr) AccessChain 37(data) 1188 116
+ Store 1193 1192
+ 1194: 6(int) Load 8(invocation)
+ 1195: 117(ptr) AccessChain 37(data) 39 116 40
+ 1196: 28(int64_t) Load 1195
+ 1197: 17(ivec4) Load 19(ballot)
+ 1198: 28(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1196 1197
+ 1199: 117(ptr) AccessChain 37(data) 1194 116 40
+ Store 1199 1198
+ 1200: 6(int) Load 8(invocation)
+ 1201: 122(ptr) AccessChain 37(data) 45 116
+ 1202: 29(i64vec4) Load 1201
+ 1203:121(i64vec2) VectorShuffle 1202 1202 0 1
+ 1204: 17(ivec4) Load 19(ballot)
+ 1205:121(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1203 1204
+ 1206: 122(ptr) AccessChain 37(data) 1200 116
+ 1207: 29(i64vec4) Load 1206
+ 1208: 29(i64vec4) VectorShuffle 1207 1205 4 5 2 3
+ Store 1206 1208
+ 1209: 6(int) Load 8(invocation)
+ 1210: 122(ptr) AccessChain 37(data) 52 116
+ 1211: 29(i64vec4) Load 1210
+ 1212:127(i64vec3) VectorShuffle 1211 1211 0 1 2
+ 1213: 17(ivec4) Load 19(ballot)
+ 1214:127(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1212 1213
+ 1215: 122(ptr) AccessChain 37(data) 1209 116
+ 1216: 29(i64vec4) Load 1215
+ 1217: 29(i64vec4) VectorShuffle 1216 1214 4 5 6 3
+ Store 1215 1217
+ 1218: 6(int) Load 8(invocation)
+ 1219: 122(ptr) AccessChain 37(data) 58 116
+ 1220: 29(i64vec4) Load 1219
+ 1221: 17(ivec4) Load 19(ballot)
+ 1222: 29(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1220 1221
+ 1223: 122(ptr) AccessChain 37(data) 1218 116
+ Store 1223 1222
+ 1224: 6(int) Load 8(invocation)
+ 1225: 136(ptr) AccessChain 37(data) 39 135 40
+ 1226: 30(int64_t) Load 1225
+ 1227: 17(ivec4) Load 19(ballot)
+ 1228: 30(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1226 1227
+ 1229: 136(ptr) AccessChain 37(data) 1224 135 40
+ Store 1229 1228
+ 1230: 6(int) Load 8(invocation)
+ 1231: 141(ptr) AccessChain 37(data) 45 135
+ 1232: 31(i64vec4) Load 1231
+ 1233:140(i64vec2) VectorShuffle 1232 1232 0 1
+ 1234: 17(ivec4) Load 19(ballot)
+ 1235:140(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1233 1234
+ 1236: 141(ptr) AccessChain 37(data) 1230 135
+ 1237: 31(i64vec4) Load 1236
+ 1238: 31(i64vec4) VectorShuffle 1237 1235 4 5 2 3
+ Store 1236 1238
+ 1239: 6(int) Load 8(invocation)
+ 1240: 141(ptr) AccessChain 37(data) 52 135
+ 1241: 31(i64vec4) Load 1240
+ 1242:146(i64vec3) VectorShuffle 1241 1241 0 1 2
+ 1243: 17(ivec4) Load 19(ballot)
+ 1244:146(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1242 1243
+ 1245: 141(ptr) AccessChain 37(data) 1239 135
+ 1246: 31(i64vec4) Load 1245
+ 1247: 31(i64vec4) VectorShuffle 1246 1244 4 5 6 3
+ Store 1245 1247
+ 1248: 6(int) Load 8(invocation)
+ 1249: 141(ptr) AccessChain 37(data) 58 135
+ 1250: 31(i64vec4) Load 1249
+ 1251: 17(ivec4) Load 19(ballot)
+ 1252: 31(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1250 1251
+ 1253: 141(ptr) AccessChain 37(data) 1248 135
+ Store 1253 1252
+ 1254: 6(int) Load 8(invocation)
+ 1255: 136(ptr) AccessChain 37(data) 39 135 40
+ 1256: 30(int64_t) Load 1255
+ 1257: 17(ivec4) Load 19(ballot)
+ 1258: 30(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1256 1257
+ 1259: 136(ptr) AccessChain 37(data) 1254 135 40
+ Store 1259 1258
+ 1260: 6(int) Load 8(invocation)
+ 1261: 141(ptr) AccessChain 37(data) 45 135
+ 1262: 31(i64vec4) Load 1261
+ 1263:140(i64vec2) VectorShuffle 1262 1262 0 1
+ 1264: 17(ivec4) Load 19(ballot)
+ 1265:140(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1263 1264
+ 1266: 141(ptr) AccessChain 37(data) 1260 135
+ 1267: 31(i64vec4) Load 1266
+ 1268: 31(i64vec4) VectorShuffle 1267 1265 4 5 2 3
+ Store 1266 1268
+ 1269: 6(int) Load 8(invocation)
+ 1270: 141(ptr) AccessChain 37(data) 52 135
+ 1271: 31(i64vec4) Load 1270
+ 1272:146(i64vec3) VectorShuffle 1271 1271 0 1 2
+ 1273: 17(ivec4) Load 19(ballot)
+ 1274:146(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1272 1273
+ 1275: 141(ptr) AccessChain 37(data) 1269 135
+ 1276: 31(i64vec4) Load 1275
+ 1277: 31(i64vec4) VectorShuffle 1276 1274 4 5 6 3
+ Store 1275 1277
+ 1278: 6(int) Load 8(invocation)
+ 1279: 141(ptr) AccessChain 37(data) 58 135
+ 1280: 31(i64vec4) Load 1279
+ 1281: 17(ivec4) Load 19(ballot)
+ 1282: 31(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1280 1281
+ 1283: 141(ptr) AccessChain 37(data) 1278 135
+ Store 1283 1282
+ 1284: 6(int) Load 8(invocation)
+ 1285: 136(ptr) AccessChain 37(data) 39 135 40
+ 1286: 30(int64_t) Load 1285
+ 1287: 17(ivec4) Load 19(ballot)
+ 1288: 30(int64_t) GroupNonUniformUMin 177 PartitionedReduceNV 1286 1287
+ 1289: 136(ptr) AccessChain 37(data) 1284 135 40
+ Store 1289 1288
+ 1290: 6(int) Load 8(invocation)
+ 1291: 141(ptr) AccessChain 37(data) 45 135
+ 1292: 31(i64vec4) Load 1291
+ 1293:140(i64vec2) VectorShuffle 1292 1292 0 1
+ 1294: 17(ivec4) Load 19(ballot)
+ 1295:140(i64vec2) GroupNonUniformUMin 177 PartitionedReduceNV 1293 1294
+ 1296: 141(ptr) AccessChain 37(data) 1290 135
+ 1297: 31(i64vec4) Load 1296
+ 1298: 31(i64vec4) VectorShuffle 1297 1295 4 5 2 3
+ Store 1296 1298
+ 1299: 6(int) Load 8(invocation)
+ 1300: 141(ptr) AccessChain 37(data) 52 135
+ 1301: 31(i64vec4) Load 1300
+ 1302:146(i64vec3) VectorShuffle 1301 1301 0 1 2
+ 1303: 17(ivec4) Load 19(ballot)
+ 1304:146(i64vec3) GroupNonUniformUMin 177 PartitionedReduceNV 1302 1303
+ 1305: 141(ptr) AccessChain 37(data) 1299 135
+ 1306: 31(i64vec4) Load 1305
+ 1307: 31(i64vec4) VectorShuffle 1306 1304 4 5 6 3
+ Store 1305 1307
+ 1308: 6(int) Load 8(invocation)
+ 1309: 141(ptr) AccessChain 37(data) 58 135
+ 1310: 31(i64vec4) Load 1309
+ 1311: 17(ivec4) Load 19(ballot)
+ 1312: 31(i64vec4) GroupNonUniformUMin 177 PartitionedReduceNV 1310 1311
+ 1313: 141(ptr) AccessChain 37(data) 1308 135
+ Store 1313 1312
+ 1314: 6(int) Load 8(invocation)
+ 1315: 136(ptr) AccessChain 37(data) 39 135 40
+ 1316: 30(int64_t) Load 1315
+ 1317: 17(ivec4) Load 19(ballot)
+ 1318: 30(int64_t) GroupNonUniformUMax 177 PartitionedReduceNV 1316 1317
+ 1319: 136(ptr) AccessChain 37(data) 1314 135 40
+ Store 1319 1318
+ 1320: 6(int) Load 8(invocation)
+ 1321: 141(ptr) AccessChain 37(data) 45 135
+ 1322: 31(i64vec4) Load 1321
+ 1323:140(i64vec2) VectorShuffle 1322 1322 0 1
+ 1324: 17(ivec4) Load 19(ballot)
+ 1325:140(i64vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1323 1324
+ 1326: 141(ptr) AccessChain 37(data) 1320 135
+ 1327: 31(i64vec4) Load 1326
+ 1328: 31(i64vec4) VectorShuffle 1327 1325 4 5 2 3
+ Store 1326 1328
+ 1329: 6(int) Load 8(invocation)
+ 1330: 141(ptr) AccessChain 37(data) 52 135
+ 1331: 31(i64vec4) Load 1330
+ 1332:146(i64vec3) VectorShuffle 1331 1331 0 1 2
+ 1333: 17(ivec4) Load 19(ballot)
+ 1334:146(i64vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1332 1333
+ 1335: 141(ptr) AccessChain 37(data) 1329 135
+ 1336: 31(i64vec4) Load 1335
+ 1337: 31(i64vec4) VectorShuffle 1336 1334 4 5 6 3
+ Store 1335 1337
+ 1338: 6(int) Load 8(invocation)
+ 1339: 141(ptr) AccessChain 37(data) 58 135
+ 1340: 31(i64vec4) Load 1339
+ 1341: 17(ivec4) Load 19(ballot)
+ 1342: 31(i64vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1340 1341
+ 1343: 141(ptr) AccessChain 37(data) 1338 135
+ Store 1343 1342
+ 1344: 6(int) Load 8(invocation)
+ 1345: 136(ptr) AccessChain 37(data) 39 135 40
+ 1346: 30(int64_t) Load 1345
+ 1347: 17(ivec4) Load 19(ballot)
+ 1348: 30(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1346 1347
+ 1349: 136(ptr) AccessChain 37(data) 1344 135 40
+ Store 1349 1348
+ 1350: 6(int) Load 8(invocation)
+ 1351: 141(ptr) AccessChain 37(data) 45 135
+ 1352: 31(i64vec4) Load 1351
+ 1353:140(i64vec2) VectorShuffle 1352 1352 0 1
+ 1354: 17(ivec4) Load 19(ballot)
+ 1355:140(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1353 1354
+ 1356: 141(ptr) AccessChain 37(data) 1350 135
+ 1357: 31(i64vec4) Load 1356
+ 1358: 31(i64vec4) VectorShuffle 1357 1355 4 5 2 3
+ Store 1356 1358
+ 1359: 6(int) Load 8(invocation)
+ 1360: 141(ptr) AccessChain 37(data) 52 135
+ 1361: 31(i64vec4) Load 1360
+ 1362:146(i64vec3) VectorShuffle 1361 1361 0 1 2
+ 1363: 17(ivec4) Load 19(ballot)
+ 1364:146(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1362 1363
+ 1365: 141(ptr) AccessChain 37(data) 1359 135
+ 1366: 31(i64vec4) Load 1365
+ 1367: 31(i64vec4) VectorShuffle 1366 1364 4 5 6 3
+ Store 1365 1367
+ 1368: 6(int) Load 8(invocation)
+ 1369: 141(ptr) AccessChain 37(data) 58 135
+ 1370: 31(i64vec4) Load 1369
+ 1371: 17(ivec4) Load 19(ballot)
+ 1372: 31(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1370 1371
+ 1373: 141(ptr) AccessChain 37(data) 1368 135
+ Store 1373 1372
+ 1374: 6(int) Load 8(invocation)
+ 1375: 136(ptr) AccessChain 37(data) 39 135 40
+ 1376: 30(int64_t) Load 1375
+ 1377: 17(ivec4) Load 19(ballot)
+ 1378: 30(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1376 1377
+ 1379: 136(ptr) AccessChain 37(data) 1374 135 40
+ Store 1379 1378
+ 1380: 6(int) Load 8(invocation)
+ 1381: 141(ptr) AccessChain 37(data) 45 135
+ 1382: 31(i64vec4) Load 1381
+ 1383:140(i64vec2) VectorShuffle 1382 1382 0 1
+ 1384: 17(ivec4) Load 19(ballot)
+ 1385:140(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1383 1384
+ 1386: 141(ptr) AccessChain 37(data) 1380 135
+ 1387: 31(i64vec4) Load 1386
+ 1388: 31(i64vec4) VectorShuffle 1387 1385 4 5 2 3
+ Store 1386 1388
+ 1389: 6(int) Load 8(invocation)
+ 1390: 141(ptr) AccessChain 37(data) 52 135
+ 1391: 31(i64vec4) Load 1390
+ 1392:146(i64vec3) VectorShuffle 1391 1391 0 1 2
+ 1393: 17(ivec4) Load 19(ballot)
+ 1394:146(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1392 1393
+ 1395: 141(ptr) AccessChain 37(data) 1389 135
+ 1396: 31(i64vec4) Load 1395
+ 1397: 31(i64vec4) VectorShuffle 1396 1394 4 5 6 3
+ Store 1395 1397
+ 1398: 6(int) Load 8(invocation)
+ 1399: 141(ptr) AccessChain 37(data) 58 135
+ 1400: 31(i64vec4) Load 1399
+ 1401: 17(ivec4) Load 19(ballot)
+ 1402: 31(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1400 1401
+ 1403: 141(ptr) AccessChain 37(data) 1398 135
+ Store 1403 1402
+ 1404: 6(int) Load 8(invocation)
+ 1405: 136(ptr) AccessChain 37(data) 39 135 40
+ 1406: 30(int64_t) Load 1405
+ 1407: 17(ivec4) Load 19(ballot)
+ 1408: 30(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1406 1407
+ 1409: 136(ptr) AccessChain 37(data) 1404 135 40
+ Store 1409 1408
+ 1410: 6(int) Load 8(invocation)
+ 1411: 141(ptr) AccessChain 37(data) 45 135
+ 1412: 31(i64vec4) Load 1411
+ 1413:140(i64vec2) VectorShuffle 1412 1412 0 1
+ 1414: 17(ivec4) Load 19(ballot)
+ 1415:140(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1413 1414
+ 1416: 141(ptr) AccessChain 37(data) 1410 135
+ 1417: 31(i64vec4) Load 1416
+ 1418: 31(i64vec4) VectorShuffle 1417 1415 4 5 2 3
+ Store 1416 1418
+ 1419: 6(int) Load 8(invocation)
+ 1420: 141(ptr) AccessChain 37(data) 52 135
+ 1421: 31(i64vec4) Load 1420
+ 1422:146(i64vec3) VectorShuffle 1421 1421 0 1 2
+ 1423: 17(ivec4) Load 19(ballot)
+ 1424:146(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1422 1423
+ 1425: 141(ptr) AccessChain 37(data) 1419 135
+ 1426: 31(i64vec4) Load 1425
+ 1427: 31(i64vec4) VectorShuffle 1426 1424 4 5 6 3
+ Store 1425 1427
+ 1428: 6(int) Load 8(invocation)
+ 1429: 141(ptr) AccessChain 37(data) 58 135
+ 1430: 31(i64vec4) Load 1429
+ 1431: 17(ivec4) Load 19(ballot)
+ 1432: 31(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1430 1431
+ 1433: 141(ptr) AccessChain 37(data) 1428 135
+ Store 1433 1432
+ 1434: 6(int) Load 8(invocation)
+ 1435: 155(ptr) AccessChain 37(data) 39 154 40
+ 1436:32(float16_t) Load 1435
+ 1437: 17(ivec4) Load 19(ballot)
+ 1438:32(float16_t) GroupNonUniformFAdd 177 PartitionedReduceNV 1436 1437
+ 1439: 155(ptr) AccessChain 37(data) 1434 154 40
+ Store 1439 1438
+ 1440: 6(int) Load 8(invocation)
+ 1441: 160(ptr) AccessChain 37(data) 45 154
+ 1442: 33(f16vec4) Load 1441
+ 1443:159(f16vec2) VectorShuffle 1442 1442 0 1
+ 1444: 17(ivec4) Load 19(ballot)
+ 1445:159(f16vec2) GroupNonUniformFAdd 177 PartitionedReduceNV 1443 1444
+ 1446: 160(ptr) AccessChain 37(data) 1440 154
+ 1447: 33(f16vec4) Load 1446
+ 1448: 33(f16vec4) VectorShuffle 1447 1445 4 5 2 3
+ Store 1446 1448
+ 1449: 6(int) Load 8(invocation)
+ 1450: 160(ptr) AccessChain 37(data) 52 154
+ 1451: 33(f16vec4) Load 1450
+ 1452:165(f16vec3) VectorShuffle 1451 1451 0 1 2
+ 1453: 17(ivec4) Load 19(ballot)
+ 1454:165(f16vec3) GroupNonUniformFAdd 177 PartitionedReduceNV 1452 1453
+ 1455: 160(ptr) AccessChain 37(data) 1449 154
+ 1456: 33(f16vec4) Load 1455
+ 1457: 33(f16vec4) VectorShuffle 1456 1454 4 5 6 3
+ Store 1455 1457
+ 1458: 6(int) Load 8(invocation)
+ 1459: 160(ptr) AccessChain 37(data) 58 154
+ 1460: 33(f16vec4) Load 1459
+ 1461: 17(ivec4) Load 19(ballot)
+ 1462: 33(f16vec4) GroupNonUniformFAdd 177 PartitionedReduceNV 1460 1461
+ 1463: 160(ptr) AccessChain 37(data) 1458 154
+ Store 1463 1462
+ 1464: 6(int) Load 8(invocation)
+ 1465: 155(ptr) AccessChain 37(data) 39 154 40
+ 1466:32(float16_t) Load 1465
+ 1467: 17(ivec4) Load 19(ballot)
+ 1468:32(float16_t) GroupNonUniformFMul 177 PartitionedReduceNV 1466 1467
+ 1469: 155(ptr) AccessChain 37(data) 1464 154 40
+ Store 1469 1468
+ 1470: 6(int) Load 8(invocation)
+ 1471: 160(ptr) AccessChain 37(data) 45 154
+ 1472: 33(f16vec4) Load 1471
+ 1473:159(f16vec2) VectorShuffle 1472 1472 0 1
+ 1474: 17(ivec4) Load 19(ballot)
+ 1475:159(f16vec2) GroupNonUniformFMul 177 PartitionedReduceNV 1473 1474
+ 1476: 160(ptr) AccessChain 37(data) 1470 154
+ 1477: 33(f16vec4) Load 1476
+ 1478: 33(f16vec4) VectorShuffle 1477 1475 4 5 2 3
+ Store 1476 1478
+ 1479: 6(int) Load 8(invocation)
+ 1480: 160(ptr) AccessChain 37(data) 52 154
+ 1481: 33(f16vec4) Load 1480
+ 1482:165(f16vec3) VectorShuffle 1481 1481 0 1 2
+ 1483: 17(ivec4) Load 19(ballot)
+ 1484:165(f16vec3) GroupNonUniformFMul 177 PartitionedReduceNV 1482 1483
+ 1485: 160(ptr) AccessChain 37(data) 1479 154
+ 1486: 33(f16vec4) Load 1485
+ 1487: 33(f16vec4) VectorShuffle 1486 1484 4 5 6 3
+ Store 1485 1487
+ 1488: 6(int) Load 8(invocation)
+ 1489: 160(ptr) AccessChain 37(data) 58 154
+ 1490: 33(f16vec4) Load 1489
+ 1491: 17(ivec4) Load 19(ballot)
+ 1492: 33(f16vec4) GroupNonUniformFMul 177 PartitionedReduceNV 1490 1491
+ 1493: 160(ptr) AccessChain 37(data) 1488 154
+ Store 1493 1492
+ 1494: 6(int) Load 8(invocation)
+ 1495: 155(ptr) AccessChain 37(data) 39 154 40
+ 1496:32(float16_t) Load 1495
+ 1497: 17(ivec4) Load 19(ballot)
+ 1498:32(float16_t) GroupNonUniformFMin 177 PartitionedReduceNV 1496 1497
+ 1499: 155(ptr) AccessChain 37(data) 1494 154 40
+ Store 1499 1498
+ 1500: 6(int) Load 8(invocation)
+ 1501: 160(ptr) AccessChain 37(data) 45 154
+ 1502: 33(f16vec4) Load 1501
+ 1503:159(f16vec2) VectorShuffle 1502 1502 0 1
+ 1504: 17(ivec4) Load 19(ballot)
+ 1505:159(f16vec2) GroupNonUniformFMin 177 PartitionedReduceNV 1503 1504
+ 1506: 160(ptr) AccessChain 37(data) 1500 154
+ 1507: 33(f16vec4) Load 1506
+ 1508: 33(f16vec4) VectorShuffle 1507 1505 4 5 2 3
+ Store 1506 1508
+ 1509: 6(int) Load 8(invocation)
+ 1510: 160(ptr) AccessChain 37(data) 52 154
+ 1511: 33(f16vec4) Load 1510
+ 1512:165(f16vec3) VectorShuffle 1511 1511 0 1 2
+ 1513: 17(ivec4) Load 19(ballot)
+ 1514:165(f16vec3) GroupNonUniformFMin 177 PartitionedReduceNV 1512 1513
+ 1515: 160(ptr) AccessChain 37(data) 1509 154
+ 1516: 33(f16vec4) Load 1515
+ 1517: 33(f16vec4) VectorShuffle 1516 1514 4 5 6 3
+ Store 1515 1517
+ 1518: 6(int) Load 8(invocation)
+ 1519: 160(ptr) AccessChain 37(data) 58 154
+ 1520: 33(f16vec4) Load 1519
+ 1521: 17(ivec4) Load 19(ballot)
+ 1522: 33(f16vec4) GroupNonUniformFMin 177 PartitionedReduceNV 1520 1521
+ 1523: 160(ptr) AccessChain 37(data) 1518 154
+ Store 1523 1522
+ 1524: 6(int) Load 8(invocation)
+ 1525: 155(ptr) AccessChain 37(data) 39 154 40
+ 1526:32(float16_t) Load 1525
+ 1527: 17(ivec4) Load 19(ballot)
+ 1528:32(float16_t) GroupNonUniformFMax 177 PartitionedReduceNV 1526 1527
+ 1529: 155(ptr) AccessChain 37(data) 1524 154 40
+ Store 1529 1528
+ 1530: 6(int) Load 8(invocation)
+ 1531: 160(ptr) AccessChain 37(data) 45 154
+ 1532: 33(f16vec4) Load 1531
+ 1533:159(f16vec2) VectorShuffle 1532 1532 0 1
+ 1534: 17(ivec4) Load 19(ballot)
+ 1535:159(f16vec2) GroupNonUniformFMax 177 PartitionedReduceNV 1533 1534
+ 1536: 160(ptr) AccessChain 37(data) 1530 154
+ 1537: 33(f16vec4) Load 1536
+ 1538: 33(f16vec4) VectorShuffle 1537 1535 4 5 2 3
+ Store 1536 1538
+ 1539: 6(int) Load 8(invocation)
+ 1540: 160(ptr) AccessChain 37(data) 52 154
+ 1541: 33(f16vec4) Load 1540
+ 1542:165(f16vec3) VectorShuffle 1541 1541 0 1 2
+ 1543: 17(ivec4) Load 19(ballot)
+ 1544:165(f16vec3) GroupNonUniformFMax 177 PartitionedReduceNV 1542 1543
+ 1545: 160(ptr) AccessChain 37(data) 1539 154
+ 1546: 33(f16vec4) Load 1545
+ 1547: 33(f16vec4) VectorShuffle 1546 1544 4 5 6 3
+ Store 1545 1547
+ 1548: 6(int) Load 8(invocation)
+ 1549: 160(ptr) AccessChain 37(data) 58 154
+ 1550: 33(f16vec4) Load 1549
+ 1551: 17(ivec4) Load 19(ballot)
+ 1552: 33(f16vec4) GroupNonUniformFMax 177 PartitionedReduceNV 1550 1551
+ 1553: 160(ptr) AccessChain 37(data) 1548 154
+ Store 1553 1552
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out
new file mode 100644
index 0000000..c029617
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out
@@ -0,0 +1,217 @@
+spv.subgroupExtendedTypesPartitionedNeg.comp
+ERROR: 0:27: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:30: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:35: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:38: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:39: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:40: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:42: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:43: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:44: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:45: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:47: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:48: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:49: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:50: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:52: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:53: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:54: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:55: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:57: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:58: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:59: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:62: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:63: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:64: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:67: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:68: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:69: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:70: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:72: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:73: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:74: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:75: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:77: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:78: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:79: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:80: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:82: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:83: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:84: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:85: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:87: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:88: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:89: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:90: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:92: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:93: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:94: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:95: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:97: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:98: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:99: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:100: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:102: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:103: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:104: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:105: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:107: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:108: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:109: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:110: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:112: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:113: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:114: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:115: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:117: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:118: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:119: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:120: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:122: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:123: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:124: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:125: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:127: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:128: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:129: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:130: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:132: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:133: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:134: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:135: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:137: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:138: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:139: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:140: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:142: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:143: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:144: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:145: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:147: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:148: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:149: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:150: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:152: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:153: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:154: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:155: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:157: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:158: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:159: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:160: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:162: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:163: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:164: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:165: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:167: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:168: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:169: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:170: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:172: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:173: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:174: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:175: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:177: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:178: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:179: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:180: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:182: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:183: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:184: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:185: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:187: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:188: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:189: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:190: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:192: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:193: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:194: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:195: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:197: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:198: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:199: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:200: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:202: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:203: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:204: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:205: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:207: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:208: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:209: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:210: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:212: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:213: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:214: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:215: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:217: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:218: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:219: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:220: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:222: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:223: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:224: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:225: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:227: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:228: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:229: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:230: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:232: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:233: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:234: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:235: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:237: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:238: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:239: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:240: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:242: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:243: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:244: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:245: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:247: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:248: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:249: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:250: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:252: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:253: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:254: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:255: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:257: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:258: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:259: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:260: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:262: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:263: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:264: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:265: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:267: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:268: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:269: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:270: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:272: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:273: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:274: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:275: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:277: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:278: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:279: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:280: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:282: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:283: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:284: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:285: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:287: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:288: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:289: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:290: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 212 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
new file mode 100644
index 0000000..7d37a41
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
@@ -0,0 +1,981 @@
+spv.subgroupExtendedTypesQuad.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 806
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformQuad
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_quad"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 31 "Buffers"
+ MemberName 31(Buffers) 0 "i8"
+ MemberName 31(Buffers) 1 "u8"
+ MemberName 31(Buffers) 2 "i16"
+ MemberName 31(Buffers) 3 "u16"
+ MemberName 31(Buffers) 4 "i64"
+ MemberName 31(Buffers) 5 "u64"
+ MemberName 31(Buffers) 6 "f16"
+ Name 34 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 31(Buffers) 0 Offset 0
+ MemberDecorate 31(Buffers) 1 Offset 4
+ MemberDecorate 31(Buffers) 2 Offset 8
+ MemberDecorate 31(Buffers) 3 Offset 16
+ MemberDecorate 31(Buffers) 4 Offset 32
+ MemberDecorate 31(Buffers) 5 Offset 64
+ MemberDecorate 31(Buffers) 6 Offset 96
+ Decorate 31(Buffers) Block
+ Decorate 34(data) DescriptorSet 0
+ Decorate 34(data) Binding 0
+ Decorate 805 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4)
+ 32: TypeArray 31(Buffers) 15
+ 33: TypePointer StorageBuffer 32
+ 34(data): 33(ptr) Variable StorageBuffer
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 6(int) Constant 0
+ 39: TypePointer StorageBuffer 17(int8_t)
+ 42: 6(int) Constant 1
+ 43: 6(int) Constant 3
+ 47: 36(int) Constant 1
+ 48: TypeVector 17(int8_t) 2
+ 49: TypePointer StorageBuffer 18(i8vec4)
+ 58: 36(int) Constant 2
+ 59: TypeVector 17(int8_t) 3
+ 68: 36(int) Constant 3
+ 128: 6(int) Constant 2
+ 153: TypePointer StorageBuffer 19(int8_t)
+ 159: TypeVector 19(int8_t) 2
+ 160: TypePointer StorageBuffer 20(i8vec4)
+ 169: TypeVector 19(int8_t) 3
+ 261: TypePointer StorageBuffer 21(int16_t)
+ 267: TypeVector 21(int16_t) 2
+ 268: TypePointer StorageBuffer 22(i16vec4)
+ 277: TypeVector 21(int16_t) 3
+ 369: TypePointer StorageBuffer 23(int16_t)
+ 375: TypeVector 23(int16_t) 2
+ 376: TypePointer StorageBuffer 24(i16vec4)
+ 385: TypeVector 23(int16_t) 3
+ 477: 36(int) Constant 4
+ 478: TypePointer StorageBuffer 25(int64_t)
+ 484: TypeVector 25(int64_t) 2
+ 485: TypePointer StorageBuffer 26(i64vec4)
+ 494: TypeVector 25(int64_t) 3
+ 586: 36(int) Constant 5
+ 587: TypePointer StorageBuffer 27(int64_t)
+ 593: TypeVector 27(int64_t) 2
+ 594: TypePointer StorageBuffer 28(i64vec4)
+ 603: TypeVector 27(int64_t) 3
+ 695: 36(int) Constant 6
+ 696: TypePointer StorageBuffer 29(float16_t)
+ 702: TypeVector 29(float16_t) 2
+ 703: TypePointer StorageBuffer 30(f16vec4)
+ 712: TypeVector 29(float16_t) 3
+ 803: TypeVector 6(int) 3
+ 804: 6(int) Constant 8
+ 805: 803(ivec3) ConstantComposite 804 42 42
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 35: 6(int) Load 8(invocation)
+ 40: 39(ptr) AccessChain 34(data) 37 37 38
+ 41: 17(int8_t) Load 40
+ 44: 17(int8_t) GroupNonUniformQuadBroadcast 43 41 42
+ 45: 39(ptr) AccessChain 34(data) 35 37 38
+ Store 45 44
+ 46: 6(int) Load 8(invocation)
+ 50: 49(ptr) AccessChain 34(data) 47 37
+ 51: 18(i8vec4) Load 50
+ 52: 48(i8vec2) VectorShuffle 51 51 0 1
+ 53: 48(i8vec2) GroupNonUniformQuadBroadcast 43 52 42
+ 54: 49(ptr) AccessChain 34(data) 46 37
+ 55: 18(i8vec4) Load 54
+ 56: 18(i8vec4) VectorShuffle 55 53 4 5 2 3
+ Store 54 56
+ 57: 6(int) Load 8(invocation)
+ 60: 49(ptr) AccessChain 34(data) 58 37
+ 61: 18(i8vec4) Load 60
+ 62: 59(i8vec3) VectorShuffle 61 61 0 1 2
+ 63: 59(i8vec3) GroupNonUniformQuadBroadcast 43 62 42
+ 64: 49(ptr) AccessChain 34(data) 57 37
+ 65: 18(i8vec4) Load 64
+ 66: 18(i8vec4) VectorShuffle 65 63 4 5 6 3
+ Store 64 66
+ 67: 6(int) Load 8(invocation)
+ 69: 49(ptr) AccessChain 34(data) 68 37
+ 70: 18(i8vec4) Load 69
+ 71: 18(i8vec4) GroupNonUniformQuadBroadcast 43 70 42
+ 72: 49(ptr) AccessChain 34(data) 67 37
+ Store 72 71
+ 73: 6(int) Load 8(invocation)
+ 74: 39(ptr) AccessChain 34(data) 37 37 38
+ 75: 17(int8_t) Load 74
+ 76: 17(int8_t) GroupNonUniformQuadSwap 43 75 38
+ 77: 39(ptr) AccessChain 34(data) 73 37 38
+ Store 77 76
+ 78: 6(int) Load 8(invocation)
+ 79: 49(ptr) AccessChain 34(data) 47 37
+ 80: 18(i8vec4) Load 79
+ 81: 48(i8vec2) VectorShuffle 80 80 0 1
+ 82: 48(i8vec2) GroupNonUniformQuadSwap 43 81 38
+ 83: 49(ptr) AccessChain 34(data) 78 37
+ 84: 18(i8vec4) Load 83
+ 85: 18(i8vec4) VectorShuffle 84 82 4 5 2 3
+ Store 83 85
+ 86: 6(int) Load 8(invocation)
+ 87: 49(ptr) AccessChain 34(data) 58 37
+ 88: 18(i8vec4) Load 87
+ 89: 59(i8vec3) VectorShuffle 88 88 0 1 2
+ 90: 59(i8vec3) GroupNonUniformQuadSwap 43 89 38
+ 91: 49(ptr) AccessChain 34(data) 86 37
+ 92: 18(i8vec4) Load 91
+ 93: 18(i8vec4) VectorShuffle 92 90 4 5 6 3
+ Store 91 93
+ 94: 6(int) Load 8(invocation)
+ 95: 49(ptr) AccessChain 34(data) 68 37
+ 96: 18(i8vec4) Load 95
+ 97: 18(i8vec4) GroupNonUniformQuadSwap 43 96 38
+ 98: 49(ptr) AccessChain 34(data) 94 37
+ Store 98 97
+ 99: 6(int) Load 8(invocation)
+ 100: 39(ptr) AccessChain 34(data) 37 37 38
+ 101: 17(int8_t) Load 100
+ 102: 17(int8_t) GroupNonUniformQuadSwap 43 101 42
+ 103: 39(ptr) AccessChain 34(data) 99 37 38
+ Store 103 102
+ 104: 6(int) Load 8(invocation)
+ 105: 49(ptr) AccessChain 34(data) 47 37
+ 106: 18(i8vec4) Load 105
+ 107: 48(i8vec2) VectorShuffle 106 106 0 1
+ 108: 48(i8vec2) GroupNonUniformQuadSwap 43 107 42
+ 109: 49(ptr) AccessChain 34(data) 104 37
+ 110: 18(i8vec4) Load 109
+ 111: 18(i8vec4) VectorShuffle 110 108 4 5 2 3
+ Store 109 111
+ 112: 6(int) Load 8(invocation)
+ 113: 49(ptr) AccessChain 34(data) 58 37
+ 114: 18(i8vec4) Load 113
+ 115: 59(i8vec3) VectorShuffle 114 114 0 1 2
+ 116: 59(i8vec3) GroupNonUniformQuadSwap 43 115 42
+ 117: 49(ptr) AccessChain 34(data) 112 37
+ 118: 18(i8vec4) Load 117
+ 119: 18(i8vec4) VectorShuffle 118 116 4 5 6 3
+ Store 117 119
+ 120: 6(int) Load 8(invocation)
+ 121: 49(ptr) AccessChain 34(data) 68 37
+ 122: 18(i8vec4) Load 121
+ 123: 18(i8vec4) GroupNonUniformQuadSwap 43 122 42
+ 124: 49(ptr) AccessChain 34(data) 120 37
+ Store 124 123
+ 125: 6(int) Load 8(invocation)
+ 126: 39(ptr) AccessChain 34(data) 37 37 38
+ 127: 17(int8_t) Load 126
+ 129: 17(int8_t) GroupNonUniformQuadSwap 43 127 128
+ 130: 39(ptr) AccessChain 34(data) 125 37 38
+ Store 130 129
+ 131: 6(int) Load 8(invocation)
+ 132: 49(ptr) AccessChain 34(data) 47 37
+ 133: 18(i8vec4) Load 132
+ 134: 48(i8vec2) VectorShuffle 133 133 0 1
+ 135: 48(i8vec2) GroupNonUniformQuadSwap 43 134 128
+ 136: 49(ptr) AccessChain 34(data) 131 37
+ 137: 18(i8vec4) Load 136
+ 138: 18(i8vec4) VectorShuffle 137 135 4 5 2 3
+ Store 136 138
+ 139: 6(int) Load 8(invocation)
+ 140: 49(ptr) AccessChain 34(data) 58 37
+ 141: 18(i8vec4) Load 140
+ 142: 59(i8vec3) VectorShuffle 141 141 0 1 2
+ 143: 59(i8vec3) GroupNonUniformQuadSwap 43 142 128
+ 144: 49(ptr) AccessChain 34(data) 139 37
+ 145: 18(i8vec4) Load 144
+ 146: 18(i8vec4) VectorShuffle 145 143 4 5 6 3
+ Store 144 146
+ 147: 6(int) Load 8(invocation)
+ 148: 49(ptr) AccessChain 34(data) 68 37
+ 149: 18(i8vec4) Load 148
+ 150: 18(i8vec4) GroupNonUniformQuadSwap 43 149 128
+ 151: 49(ptr) AccessChain 34(data) 147 37
+ Store 151 150
+ 152: 6(int) Load 8(invocation)
+ 154: 153(ptr) AccessChain 34(data) 37 47 38
+ 155: 19(int8_t) Load 154
+ 156: 19(int8_t) GroupNonUniformQuadBroadcast 43 155 42
+ 157: 153(ptr) AccessChain 34(data) 152 47 38
+ Store 157 156
+ 158: 6(int) Load 8(invocation)
+ 161: 160(ptr) AccessChain 34(data) 47 47
+ 162: 20(i8vec4) Load 161
+ 163: 159(i8vec2) VectorShuffle 162 162 0 1
+ 164: 159(i8vec2) GroupNonUniformQuadBroadcast 43 163 42
+ 165: 160(ptr) AccessChain 34(data) 158 47
+ 166: 20(i8vec4) Load 165
+ 167: 20(i8vec4) VectorShuffle 166 164 4 5 2 3
+ Store 165 167
+ 168: 6(int) Load 8(invocation)
+ 170: 160(ptr) AccessChain 34(data) 58 47
+ 171: 20(i8vec4) Load 170
+ 172: 169(i8vec3) VectorShuffle 171 171 0 1 2
+ 173: 169(i8vec3) GroupNonUniformQuadBroadcast 43 172 42
+ 174: 160(ptr) AccessChain 34(data) 168 47
+ 175: 20(i8vec4) Load 174
+ 176: 20(i8vec4) VectorShuffle 175 173 4 5 6 3
+ Store 174 176
+ 177: 6(int) Load 8(invocation)
+ 178: 160(ptr) AccessChain 34(data) 68 47
+ 179: 20(i8vec4) Load 178
+ 180: 20(i8vec4) GroupNonUniformQuadBroadcast 43 179 42
+ 181: 160(ptr) AccessChain 34(data) 177 47
+ Store 181 180
+ 182: 6(int) Load 8(invocation)
+ 183: 153(ptr) AccessChain 34(data) 37 47 38
+ 184: 19(int8_t) Load 183
+ 185: 19(int8_t) GroupNonUniformQuadSwap 43 184 38
+ 186: 153(ptr) AccessChain 34(data) 182 47 38
+ Store 186 185
+ 187: 6(int) Load 8(invocation)
+ 188: 160(ptr) AccessChain 34(data) 47 47
+ 189: 20(i8vec4) Load 188
+ 190: 159(i8vec2) VectorShuffle 189 189 0 1
+ 191: 159(i8vec2) GroupNonUniformQuadSwap 43 190 38
+ 192: 160(ptr) AccessChain 34(data) 187 47
+ 193: 20(i8vec4) Load 192
+ 194: 20(i8vec4) VectorShuffle 193 191 4 5 2 3
+ Store 192 194
+ 195: 6(int) Load 8(invocation)
+ 196: 160(ptr) AccessChain 34(data) 58 47
+ 197: 20(i8vec4) Load 196
+ 198: 169(i8vec3) VectorShuffle 197 197 0 1 2
+ 199: 169(i8vec3) GroupNonUniformQuadSwap 43 198 38
+ 200: 160(ptr) AccessChain 34(data) 195 47
+ 201: 20(i8vec4) Load 200
+ 202: 20(i8vec4) VectorShuffle 201 199 4 5 6 3
+ Store 200 202
+ 203: 6(int) Load 8(invocation)
+ 204: 160(ptr) AccessChain 34(data) 68 47
+ 205: 20(i8vec4) Load 204
+ 206: 20(i8vec4) GroupNonUniformQuadSwap 43 205 38
+ 207: 160(ptr) AccessChain 34(data) 203 47
+ Store 207 206
+ 208: 6(int) Load 8(invocation)
+ 209: 153(ptr) AccessChain 34(data) 37 47 38
+ 210: 19(int8_t) Load 209
+ 211: 19(int8_t) GroupNonUniformQuadSwap 43 210 42
+ 212: 153(ptr) AccessChain 34(data) 208 47 38
+ Store 212 211
+ 213: 6(int) Load 8(invocation)
+ 214: 160(ptr) AccessChain 34(data) 47 47
+ 215: 20(i8vec4) Load 214
+ 216: 159(i8vec2) VectorShuffle 215 215 0 1
+ 217: 159(i8vec2) GroupNonUniformQuadSwap 43 216 42
+ 218: 160(ptr) AccessChain 34(data) 213 47
+ 219: 20(i8vec4) Load 218
+ 220: 20(i8vec4) VectorShuffle 219 217 4 5 2 3
+ Store 218 220
+ 221: 6(int) Load 8(invocation)
+ 222: 160(ptr) AccessChain 34(data) 58 47
+ 223: 20(i8vec4) Load 222
+ 224: 169(i8vec3) VectorShuffle 223 223 0 1 2
+ 225: 169(i8vec3) GroupNonUniformQuadSwap 43 224 42
+ 226: 160(ptr) AccessChain 34(data) 221 47
+ 227: 20(i8vec4) Load 226
+ 228: 20(i8vec4) VectorShuffle 227 225 4 5 6 3
+ Store 226 228
+ 229: 6(int) Load 8(invocation)
+ 230: 160(ptr) AccessChain 34(data) 68 47
+ 231: 20(i8vec4) Load 230
+ 232: 20(i8vec4) GroupNonUniformQuadSwap 43 231 42
+ 233: 160(ptr) AccessChain 34(data) 229 47
+ Store 233 232
+ 234: 6(int) Load 8(invocation)
+ 235: 153(ptr) AccessChain 34(data) 37 47 38
+ 236: 19(int8_t) Load 235
+ 237: 19(int8_t) GroupNonUniformQuadSwap 43 236 128
+ 238: 153(ptr) AccessChain 34(data) 234 47 38
+ Store 238 237
+ 239: 6(int) Load 8(invocation)
+ 240: 160(ptr) AccessChain 34(data) 47 47
+ 241: 20(i8vec4) Load 240
+ 242: 159(i8vec2) VectorShuffle 241 241 0 1
+ 243: 159(i8vec2) GroupNonUniformQuadSwap 43 242 128
+ 244: 160(ptr) AccessChain 34(data) 239 47
+ 245: 20(i8vec4) Load 244
+ 246: 20(i8vec4) VectorShuffle 245 243 4 5 2 3
+ Store 244 246
+ 247: 6(int) Load 8(invocation)
+ 248: 160(ptr) AccessChain 34(data) 58 47
+ 249: 20(i8vec4) Load 248
+ 250: 169(i8vec3) VectorShuffle 249 249 0 1 2
+ 251: 169(i8vec3) GroupNonUniformQuadSwap 43 250 128
+ 252: 160(ptr) AccessChain 34(data) 247 47
+ 253: 20(i8vec4) Load 252
+ 254: 20(i8vec4) VectorShuffle 253 251 4 5 6 3
+ Store 252 254
+ 255: 6(int) Load 8(invocation)
+ 256: 160(ptr) AccessChain 34(data) 68 47
+ 257: 20(i8vec4) Load 256
+ 258: 20(i8vec4) GroupNonUniformQuadSwap 43 257 128
+ 259: 160(ptr) AccessChain 34(data) 255 47
+ Store 259 258
+ 260: 6(int) Load 8(invocation)
+ 262: 261(ptr) AccessChain 34(data) 37 58 38
+ 263: 21(int16_t) Load 262
+ 264: 21(int16_t) GroupNonUniformQuadBroadcast 43 263 42
+ 265: 261(ptr) AccessChain 34(data) 260 58 38
+ Store 265 264
+ 266: 6(int) Load 8(invocation)
+ 269: 268(ptr) AccessChain 34(data) 47 58
+ 270: 22(i16vec4) Load 269
+ 271:267(i16vec2) VectorShuffle 270 270 0 1
+ 272:267(i16vec2) GroupNonUniformQuadBroadcast 43 271 42
+ 273: 268(ptr) AccessChain 34(data) 266 58
+ 274: 22(i16vec4) Load 273
+ 275: 22(i16vec4) VectorShuffle 274 272 4 5 2 3
+ Store 273 275
+ 276: 6(int) Load 8(invocation)
+ 278: 268(ptr) AccessChain 34(data) 58 58
+ 279: 22(i16vec4) Load 278
+ 280:277(i16vec3) VectorShuffle 279 279 0 1 2
+ 281:277(i16vec3) GroupNonUniformQuadBroadcast 43 280 42
+ 282: 268(ptr) AccessChain 34(data) 276 58
+ 283: 22(i16vec4) Load 282
+ 284: 22(i16vec4) VectorShuffle 283 281 4 5 6 3
+ Store 282 284
+ 285: 6(int) Load 8(invocation)
+ 286: 268(ptr) AccessChain 34(data) 68 58
+ 287: 22(i16vec4) Load 286
+ 288: 22(i16vec4) GroupNonUniformQuadBroadcast 43 287 42
+ 289: 268(ptr) AccessChain 34(data) 285 58
+ Store 289 288
+ 290: 6(int) Load 8(invocation)
+ 291: 261(ptr) AccessChain 34(data) 37 58 38
+ 292: 21(int16_t) Load 291
+ 293: 21(int16_t) GroupNonUniformQuadSwap 43 292 38
+ 294: 261(ptr) AccessChain 34(data) 290 58 38
+ Store 294 293
+ 295: 6(int) Load 8(invocation)
+ 296: 268(ptr) AccessChain 34(data) 47 58
+ 297: 22(i16vec4) Load 296
+ 298:267(i16vec2) VectorShuffle 297 297 0 1
+ 299:267(i16vec2) GroupNonUniformQuadSwap 43 298 38
+ 300: 268(ptr) AccessChain 34(data) 295 58
+ 301: 22(i16vec4) Load 300
+ 302: 22(i16vec4) VectorShuffle 301 299 4 5 2 3
+ Store 300 302
+ 303: 6(int) Load 8(invocation)
+ 304: 268(ptr) AccessChain 34(data) 58 58
+ 305: 22(i16vec4) Load 304
+ 306:277(i16vec3) VectorShuffle 305 305 0 1 2
+ 307:277(i16vec3) GroupNonUniformQuadSwap 43 306 38
+ 308: 268(ptr) AccessChain 34(data) 303 58
+ 309: 22(i16vec4) Load 308
+ 310: 22(i16vec4) VectorShuffle 309 307 4 5 6 3
+ Store 308 310
+ 311: 6(int) Load 8(invocation)
+ 312: 268(ptr) AccessChain 34(data) 68 58
+ 313: 22(i16vec4) Load 312
+ 314: 22(i16vec4) GroupNonUniformQuadSwap 43 313 38
+ 315: 268(ptr) AccessChain 34(data) 311 58
+ Store 315 314
+ 316: 6(int) Load 8(invocation)
+ 317: 261(ptr) AccessChain 34(data) 37 58 38
+ 318: 21(int16_t) Load 317
+ 319: 21(int16_t) GroupNonUniformQuadSwap 43 318 42
+ 320: 261(ptr) AccessChain 34(data) 316 58 38
+ Store 320 319
+ 321: 6(int) Load 8(invocation)
+ 322: 268(ptr) AccessChain 34(data) 47 58
+ 323: 22(i16vec4) Load 322
+ 324:267(i16vec2) VectorShuffle 323 323 0 1
+ 325:267(i16vec2) GroupNonUniformQuadSwap 43 324 42
+ 326: 268(ptr) AccessChain 34(data) 321 58
+ 327: 22(i16vec4) Load 326
+ 328: 22(i16vec4) VectorShuffle 327 325 4 5 2 3
+ Store 326 328
+ 329: 6(int) Load 8(invocation)
+ 330: 268(ptr) AccessChain 34(data) 58 58
+ 331: 22(i16vec4) Load 330
+ 332:277(i16vec3) VectorShuffle 331 331 0 1 2
+ 333:277(i16vec3) GroupNonUniformQuadSwap 43 332 42
+ 334: 268(ptr) AccessChain 34(data) 329 58
+ 335: 22(i16vec4) Load 334
+ 336: 22(i16vec4) VectorShuffle 335 333 4 5 6 3
+ Store 334 336
+ 337: 6(int) Load 8(invocation)
+ 338: 268(ptr) AccessChain 34(data) 68 58
+ 339: 22(i16vec4) Load 338
+ 340: 22(i16vec4) GroupNonUniformQuadSwap 43 339 42
+ 341: 268(ptr) AccessChain 34(data) 337 58
+ Store 341 340
+ 342: 6(int) Load 8(invocation)
+ 343: 261(ptr) AccessChain 34(data) 37 58 38
+ 344: 21(int16_t) Load 343
+ 345: 21(int16_t) GroupNonUniformQuadSwap 43 344 128
+ 346: 261(ptr) AccessChain 34(data) 342 58 38
+ Store 346 345
+ 347: 6(int) Load 8(invocation)
+ 348: 268(ptr) AccessChain 34(data) 47 58
+ 349: 22(i16vec4) Load 348
+ 350:267(i16vec2) VectorShuffle 349 349 0 1
+ 351:267(i16vec2) GroupNonUniformQuadSwap 43 350 128
+ 352: 268(ptr) AccessChain 34(data) 347 58
+ 353: 22(i16vec4) Load 352
+ 354: 22(i16vec4) VectorShuffle 353 351 4 5 2 3
+ Store 352 354
+ 355: 6(int) Load 8(invocation)
+ 356: 268(ptr) AccessChain 34(data) 58 58
+ 357: 22(i16vec4) Load 356
+ 358:277(i16vec3) VectorShuffle 357 357 0 1 2
+ 359:277(i16vec3) GroupNonUniformQuadSwap 43 358 128
+ 360: 268(ptr) AccessChain 34(data) 355 58
+ 361: 22(i16vec4) Load 360
+ 362: 22(i16vec4) VectorShuffle 361 359 4 5 6 3
+ Store 360 362
+ 363: 6(int) Load 8(invocation)
+ 364: 268(ptr) AccessChain 34(data) 68 58
+ 365: 22(i16vec4) Load 364
+ 366: 22(i16vec4) GroupNonUniformQuadSwap 43 365 128
+ 367: 268(ptr) AccessChain 34(data) 363 58
+ Store 367 366
+ 368: 6(int) Load 8(invocation)
+ 370: 369(ptr) AccessChain 34(data) 37 68 38
+ 371: 23(int16_t) Load 370
+ 372: 23(int16_t) GroupNonUniformQuadBroadcast 43 371 42
+ 373: 369(ptr) AccessChain 34(data) 368 68 38
+ Store 373 372
+ 374: 6(int) Load 8(invocation)
+ 377: 376(ptr) AccessChain 34(data) 47 68
+ 378: 24(i16vec4) Load 377
+ 379:375(i16vec2) VectorShuffle 378 378 0 1
+ 380:375(i16vec2) GroupNonUniformQuadBroadcast 43 379 42
+ 381: 376(ptr) AccessChain 34(data) 374 68
+ 382: 24(i16vec4) Load 381
+ 383: 24(i16vec4) VectorShuffle 382 380 4 5 2 3
+ Store 381 383
+ 384: 6(int) Load 8(invocation)
+ 386: 376(ptr) AccessChain 34(data) 58 68
+ 387: 24(i16vec4) Load 386
+ 388:385(i16vec3) VectorShuffle 387 387 0 1 2
+ 389:385(i16vec3) GroupNonUniformQuadBroadcast 43 388 42
+ 390: 376(ptr) AccessChain 34(data) 384 68
+ 391: 24(i16vec4) Load 390
+ 392: 24(i16vec4) VectorShuffle 391 389 4 5 6 3
+ Store 390 392
+ 393: 6(int) Load 8(invocation)
+ 394: 376(ptr) AccessChain 34(data) 68 68
+ 395: 24(i16vec4) Load 394
+ 396: 24(i16vec4) GroupNonUniformQuadBroadcast 43 395 42
+ 397: 376(ptr) AccessChain 34(data) 393 68
+ Store 397 396
+ 398: 6(int) Load 8(invocation)
+ 399: 369(ptr) AccessChain 34(data) 37 68 38
+ 400: 23(int16_t) Load 399
+ 401: 23(int16_t) GroupNonUniformQuadSwap 43 400 38
+ 402: 369(ptr) AccessChain 34(data) 398 68 38
+ Store 402 401
+ 403: 6(int) Load 8(invocation)
+ 404: 376(ptr) AccessChain 34(data) 47 68
+ 405: 24(i16vec4) Load 404
+ 406:375(i16vec2) VectorShuffle 405 405 0 1
+ 407:375(i16vec2) GroupNonUniformQuadSwap 43 406 38
+ 408: 376(ptr) AccessChain 34(data) 403 68
+ 409: 24(i16vec4) Load 408
+ 410: 24(i16vec4) VectorShuffle 409 407 4 5 2 3
+ Store 408 410
+ 411: 6(int) Load 8(invocation)
+ 412: 376(ptr) AccessChain 34(data) 58 68
+ 413: 24(i16vec4) Load 412
+ 414:385(i16vec3) VectorShuffle 413 413 0 1 2
+ 415:385(i16vec3) GroupNonUniformQuadSwap 43 414 38
+ 416: 376(ptr) AccessChain 34(data) 411 68
+ 417: 24(i16vec4) Load 416
+ 418: 24(i16vec4) VectorShuffle 417 415 4 5 6 3
+ Store 416 418
+ 419: 6(int) Load 8(invocation)
+ 420: 376(ptr) AccessChain 34(data) 68 68
+ 421: 24(i16vec4) Load 420
+ 422: 24(i16vec4) GroupNonUniformQuadSwap 43 421 38
+ 423: 376(ptr) AccessChain 34(data) 419 68
+ Store 423 422
+ 424: 6(int) Load 8(invocation)
+ 425: 369(ptr) AccessChain 34(data) 37 68 38
+ 426: 23(int16_t) Load 425
+ 427: 23(int16_t) GroupNonUniformQuadSwap 43 426 42
+ 428: 369(ptr) AccessChain 34(data) 424 68 38
+ Store 428 427
+ 429: 6(int) Load 8(invocation)
+ 430: 376(ptr) AccessChain 34(data) 47 68
+ 431: 24(i16vec4) Load 430
+ 432:375(i16vec2) VectorShuffle 431 431 0 1
+ 433:375(i16vec2) GroupNonUniformQuadSwap 43 432 42
+ 434: 376(ptr) AccessChain 34(data) 429 68
+ 435: 24(i16vec4) Load 434
+ 436: 24(i16vec4) VectorShuffle 435 433 4 5 2 3
+ Store 434 436
+ 437: 6(int) Load 8(invocation)
+ 438: 376(ptr) AccessChain 34(data) 58 68
+ 439: 24(i16vec4) Load 438
+ 440:385(i16vec3) VectorShuffle 439 439 0 1 2
+ 441:385(i16vec3) GroupNonUniformQuadSwap 43 440 42
+ 442: 376(ptr) AccessChain 34(data) 437 68
+ 443: 24(i16vec4) Load 442
+ 444: 24(i16vec4) VectorShuffle 443 441 4 5 6 3
+ Store 442 444
+ 445: 6(int) Load 8(invocation)
+ 446: 376(ptr) AccessChain 34(data) 68 68
+ 447: 24(i16vec4) Load 446
+ 448: 24(i16vec4) GroupNonUniformQuadSwap 43 447 42
+ 449: 376(ptr) AccessChain 34(data) 445 68
+ Store 449 448
+ 450: 6(int) Load 8(invocation)
+ 451: 369(ptr) AccessChain 34(data) 37 68 38
+ 452: 23(int16_t) Load 451
+ 453: 23(int16_t) GroupNonUniformQuadSwap 43 452 128
+ 454: 369(ptr) AccessChain 34(data) 450 68 38
+ Store 454 453
+ 455: 6(int) Load 8(invocation)
+ 456: 376(ptr) AccessChain 34(data) 47 68
+ 457: 24(i16vec4) Load 456
+ 458:375(i16vec2) VectorShuffle 457 457 0 1
+ 459:375(i16vec2) GroupNonUniformQuadSwap 43 458 128
+ 460: 376(ptr) AccessChain 34(data) 455 68
+ 461: 24(i16vec4) Load 460
+ 462: 24(i16vec4) VectorShuffle 461 459 4 5 2 3
+ Store 460 462
+ 463: 6(int) Load 8(invocation)
+ 464: 376(ptr) AccessChain 34(data) 58 68
+ 465: 24(i16vec4) Load 464
+ 466:385(i16vec3) VectorShuffle 465 465 0 1 2
+ 467:385(i16vec3) GroupNonUniformQuadSwap 43 466 128
+ 468: 376(ptr) AccessChain 34(data) 463 68
+ 469: 24(i16vec4) Load 468
+ 470: 24(i16vec4) VectorShuffle 469 467 4 5 6 3
+ Store 468 470
+ 471: 6(int) Load 8(invocation)
+ 472: 376(ptr) AccessChain 34(data) 68 68
+ 473: 24(i16vec4) Load 472
+ 474: 24(i16vec4) GroupNonUniformQuadSwap 43 473 128
+ 475: 376(ptr) AccessChain 34(data) 471 68
+ Store 475 474
+ 476: 6(int) Load 8(invocation)
+ 479: 478(ptr) AccessChain 34(data) 37 477 38
+ 480: 25(int64_t) Load 479
+ 481: 25(int64_t) GroupNonUniformQuadBroadcast 43 480 42
+ 482: 478(ptr) AccessChain 34(data) 476 477 38
+ Store 482 481
+ 483: 6(int) Load 8(invocation)
+ 486: 485(ptr) AccessChain 34(data) 47 477
+ 487: 26(i64vec4) Load 486
+ 488:484(i64vec2) VectorShuffle 487 487 0 1
+ 489:484(i64vec2) GroupNonUniformQuadBroadcast 43 488 42
+ 490: 485(ptr) AccessChain 34(data) 483 477
+ 491: 26(i64vec4) Load 490
+ 492: 26(i64vec4) VectorShuffle 491 489 4 5 2 3
+ Store 490 492
+ 493: 6(int) Load 8(invocation)
+ 495: 485(ptr) AccessChain 34(data) 58 477
+ 496: 26(i64vec4) Load 495
+ 497:494(i64vec3) VectorShuffle 496 496 0 1 2
+ 498:494(i64vec3) GroupNonUniformQuadBroadcast 43 497 42
+ 499: 485(ptr) AccessChain 34(data) 493 477
+ 500: 26(i64vec4) Load 499
+ 501: 26(i64vec4) VectorShuffle 500 498 4 5 6 3
+ Store 499 501
+ 502: 6(int) Load 8(invocation)
+ 503: 485(ptr) AccessChain 34(data) 68 477
+ 504: 26(i64vec4) Load 503
+ 505: 26(i64vec4) GroupNonUniformQuadBroadcast 43 504 42
+ 506: 485(ptr) AccessChain 34(data) 502 477
+ Store 506 505
+ 507: 6(int) Load 8(invocation)
+ 508: 478(ptr) AccessChain 34(data) 37 477 38
+ 509: 25(int64_t) Load 508
+ 510: 25(int64_t) GroupNonUniformQuadSwap 43 509 38
+ 511: 478(ptr) AccessChain 34(data) 507 477 38
+ Store 511 510
+ 512: 6(int) Load 8(invocation)
+ 513: 485(ptr) AccessChain 34(data) 47 477
+ 514: 26(i64vec4) Load 513
+ 515:484(i64vec2) VectorShuffle 514 514 0 1
+ 516:484(i64vec2) GroupNonUniformQuadSwap 43 515 38
+ 517: 485(ptr) AccessChain 34(data) 512 477
+ 518: 26(i64vec4) Load 517
+ 519: 26(i64vec4) VectorShuffle 518 516 4 5 2 3
+ Store 517 519
+ 520: 6(int) Load 8(invocation)
+ 521: 485(ptr) AccessChain 34(data) 58 477
+ 522: 26(i64vec4) Load 521
+ 523:494(i64vec3) VectorShuffle 522 522 0 1 2
+ 524:494(i64vec3) GroupNonUniformQuadSwap 43 523 38
+ 525: 485(ptr) AccessChain 34(data) 520 477
+ 526: 26(i64vec4) Load 525
+ 527: 26(i64vec4) VectorShuffle 526 524 4 5 6 3
+ Store 525 527
+ 528: 6(int) Load 8(invocation)
+ 529: 485(ptr) AccessChain 34(data) 68 477
+ 530: 26(i64vec4) Load 529
+ 531: 26(i64vec4) GroupNonUniformQuadSwap 43 530 38
+ 532: 485(ptr) AccessChain 34(data) 528 477
+ Store 532 531
+ 533: 6(int) Load 8(invocation)
+ 534: 478(ptr) AccessChain 34(data) 37 477 38
+ 535: 25(int64_t) Load 534
+ 536: 25(int64_t) GroupNonUniformQuadSwap 43 535 42
+ 537: 478(ptr) AccessChain 34(data) 533 477 38
+ Store 537 536
+ 538: 6(int) Load 8(invocation)
+ 539: 485(ptr) AccessChain 34(data) 47 477
+ 540: 26(i64vec4) Load 539
+ 541:484(i64vec2) VectorShuffle 540 540 0 1
+ 542:484(i64vec2) GroupNonUniformQuadSwap 43 541 42
+ 543: 485(ptr) AccessChain 34(data) 538 477
+ 544: 26(i64vec4) Load 543
+ 545: 26(i64vec4) VectorShuffle 544 542 4 5 2 3
+ Store 543 545
+ 546: 6(int) Load 8(invocation)
+ 547: 485(ptr) AccessChain 34(data) 58 477
+ 548: 26(i64vec4) Load 547
+ 549:494(i64vec3) VectorShuffle 548 548 0 1 2
+ 550:494(i64vec3) GroupNonUniformQuadSwap 43 549 42
+ 551: 485(ptr) AccessChain 34(data) 546 477
+ 552: 26(i64vec4) Load 551
+ 553: 26(i64vec4) VectorShuffle 552 550 4 5 6 3
+ Store 551 553
+ 554: 6(int) Load 8(invocation)
+ 555: 485(ptr) AccessChain 34(data) 68 477
+ 556: 26(i64vec4) Load 555
+ 557: 26(i64vec4) GroupNonUniformQuadSwap 43 556 42
+ 558: 485(ptr) AccessChain 34(data) 554 477
+ Store 558 557
+ 559: 6(int) Load 8(invocation)
+ 560: 478(ptr) AccessChain 34(data) 37 477 38
+ 561: 25(int64_t) Load 560
+ 562: 25(int64_t) GroupNonUniformQuadSwap 43 561 128
+ 563: 478(ptr) AccessChain 34(data) 559 477 38
+ Store 563 562
+ 564: 6(int) Load 8(invocation)
+ 565: 485(ptr) AccessChain 34(data) 47 477
+ 566: 26(i64vec4) Load 565
+ 567:484(i64vec2) VectorShuffle 566 566 0 1
+ 568:484(i64vec2) GroupNonUniformQuadSwap 43 567 128
+ 569: 485(ptr) AccessChain 34(data) 564 477
+ 570: 26(i64vec4) Load 569
+ 571: 26(i64vec4) VectorShuffle 570 568 4 5 2 3
+ Store 569 571
+ 572: 6(int) Load 8(invocation)
+ 573: 485(ptr) AccessChain 34(data) 58 477
+ 574: 26(i64vec4) Load 573
+ 575:494(i64vec3) VectorShuffle 574 574 0 1 2
+ 576:494(i64vec3) GroupNonUniformQuadSwap 43 575 128
+ 577: 485(ptr) AccessChain 34(data) 572 477
+ 578: 26(i64vec4) Load 577
+ 579: 26(i64vec4) VectorShuffle 578 576 4 5 6 3
+ Store 577 579
+ 580: 6(int) Load 8(invocation)
+ 581: 485(ptr) AccessChain 34(data) 68 477
+ 582: 26(i64vec4) Load 581
+ 583: 26(i64vec4) GroupNonUniformQuadSwap 43 582 128
+ 584: 485(ptr) AccessChain 34(data) 580 477
+ Store 584 583
+ 585: 6(int) Load 8(invocation)
+ 588: 587(ptr) AccessChain 34(data) 37 586 38
+ 589: 27(int64_t) Load 588
+ 590: 27(int64_t) GroupNonUniformQuadBroadcast 43 589 42
+ 591: 587(ptr) AccessChain 34(data) 585 586 38
+ Store 591 590
+ 592: 6(int) Load 8(invocation)
+ 595: 594(ptr) AccessChain 34(data) 47 586
+ 596: 28(i64vec4) Load 595
+ 597:593(i64vec2) VectorShuffle 596 596 0 1
+ 598:593(i64vec2) GroupNonUniformQuadBroadcast 43 597 42
+ 599: 594(ptr) AccessChain 34(data) 592 586
+ 600: 28(i64vec4) Load 599
+ 601: 28(i64vec4) VectorShuffle 600 598 4 5 2 3
+ Store 599 601
+ 602: 6(int) Load 8(invocation)
+ 604: 594(ptr) AccessChain 34(data) 58 586
+ 605: 28(i64vec4) Load 604
+ 606:603(i64vec3) VectorShuffle 605 605 0 1 2
+ 607:603(i64vec3) GroupNonUniformQuadBroadcast 43 606 42
+ 608: 594(ptr) AccessChain 34(data) 602 586
+ 609: 28(i64vec4) Load 608
+ 610: 28(i64vec4) VectorShuffle 609 607 4 5 6 3
+ Store 608 610
+ 611: 6(int) Load 8(invocation)
+ 612: 594(ptr) AccessChain 34(data) 68 586
+ 613: 28(i64vec4) Load 612
+ 614: 28(i64vec4) GroupNonUniformQuadBroadcast 43 613 42
+ 615: 594(ptr) AccessChain 34(data) 611 586
+ Store 615 614
+ 616: 6(int) Load 8(invocation)
+ 617: 587(ptr) AccessChain 34(data) 37 586 38
+ 618: 27(int64_t) Load 617
+ 619: 27(int64_t) GroupNonUniformQuadSwap 43 618 38
+ 620: 587(ptr) AccessChain 34(data) 616 586 38
+ Store 620 619
+ 621: 6(int) Load 8(invocation)
+ 622: 594(ptr) AccessChain 34(data) 47 586
+ 623: 28(i64vec4) Load 622
+ 624:593(i64vec2) VectorShuffle 623 623 0 1
+ 625:593(i64vec2) GroupNonUniformQuadSwap 43 624 38
+ 626: 594(ptr) AccessChain 34(data) 621 586
+ 627: 28(i64vec4) Load 626
+ 628: 28(i64vec4) VectorShuffle 627 625 4 5 2 3
+ Store 626 628
+ 629: 6(int) Load 8(invocation)
+ 630: 594(ptr) AccessChain 34(data) 58 586
+ 631: 28(i64vec4) Load 630
+ 632:603(i64vec3) VectorShuffle 631 631 0 1 2
+ 633:603(i64vec3) GroupNonUniformQuadSwap 43 632 38
+ 634: 594(ptr) AccessChain 34(data) 629 586
+ 635: 28(i64vec4) Load 634
+ 636: 28(i64vec4) VectorShuffle 635 633 4 5 6 3
+ Store 634 636
+ 637: 6(int) Load 8(invocation)
+ 638: 594(ptr) AccessChain 34(data) 68 586
+ 639: 28(i64vec4) Load 638
+ 640: 28(i64vec4) GroupNonUniformQuadSwap 43 639 38
+ 641: 594(ptr) AccessChain 34(data) 637 586
+ Store 641 640
+ 642: 6(int) Load 8(invocation)
+ 643: 587(ptr) AccessChain 34(data) 37 586 38
+ 644: 27(int64_t) Load 643
+ 645: 27(int64_t) GroupNonUniformQuadSwap 43 644 42
+ 646: 587(ptr) AccessChain 34(data) 642 586 38
+ Store 646 645
+ 647: 6(int) Load 8(invocation)
+ 648: 594(ptr) AccessChain 34(data) 47 586
+ 649: 28(i64vec4) Load 648
+ 650:593(i64vec2) VectorShuffle 649 649 0 1
+ 651:593(i64vec2) GroupNonUniformQuadSwap 43 650 42
+ 652: 594(ptr) AccessChain 34(data) 647 586
+ 653: 28(i64vec4) Load 652
+ 654: 28(i64vec4) VectorShuffle 653 651 4 5 2 3
+ Store 652 654
+ 655: 6(int) Load 8(invocation)
+ 656: 594(ptr) AccessChain 34(data) 58 586
+ 657: 28(i64vec4) Load 656
+ 658:603(i64vec3) VectorShuffle 657 657 0 1 2
+ 659:603(i64vec3) GroupNonUniformQuadSwap 43 658 42
+ 660: 594(ptr) AccessChain 34(data) 655 586
+ 661: 28(i64vec4) Load 660
+ 662: 28(i64vec4) VectorShuffle 661 659 4 5 6 3
+ Store 660 662
+ 663: 6(int) Load 8(invocation)
+ 664: 594(ptr) AccessChain 34(data) 68 586
+ 665: 28(i64vec4) Load 664
+ 666: 28(i64vec4) GroupNonUniformQuadSwap 43 665 42
+ 667: 594(ptr) AccessChain 34(data) 663 586
+ Store 667 666
+ 668: 6(int) Load 8(invocation)
+ 669: 587(ptr) AccessChain 34(data) 37 586 38
+ 670: 27(int64_t) Load 669
+ 671: 27(int64_t) GroupNonUniformQuadSwap 43 670 128
+ 672: 587(ptr) AccessChain 34(data) 668 586 38
+ Store 672 671
+ 673: 6(int) Load 8(invocation)
+ 674: 594(ptr) AccessChain 34(data) 47 586
+ 675: 28(i64vec4) Load 674
+ 676:593(i64vec2) VectorShuffle 675 675 0 1
+ 677:593(i64vec2) GroupNonUniformQuadSwap 43 676 128
+ 678: 594(ptr) AccessChain 34(data) 673 586
+ 679: 28(i64vec4) Load 678
+ 680: 28(i64vec4) VectorShuffle 679 677 4 5 2 3
+ Store 678 680
+ 681: 6(int) Load 8(invocation)
+ 682: 594(ptr) AccessChain 34(data) 58 586
+ 683: 28(i64vec4) Load 682
+ 684:603(i64vec3) VectorShuffle 683 683 0 1 2
+ 685:603(i64vec3) GroupNonUniformQuadSwap 43 684 128
+ 686: 594(ptr) AccessChain 34(data) 681 586
+ 687: 28(i64vec4) Load 686
+ 688: 28(i64vec4) VectorShuffle 687 685 4 5 6 3
+ Store 686 688
+ 689: 6(int) Load 8(invocation)
+ 690: 594(ptr) AccessChain 34(data) 68 586
+ 691: 28(i64vec4) Load 690
+ 692: 28(i64vec4) GroupNonUniformQuadSwap 43 691 128
+ 693: 594(ptr) AccessChain 34(data) 689 586
+ Store 693 692
+ 694: 6(int) Load 8(invocation)
+ 697: 696(ptr) AccessChain 34(data) 37 695 38
+ 698:29(float16_t) Load 697
+ 699:29(float16_t) GroupNonUniformQuadBroadcast 43 698 42
+ 700: 696(ptr) AccessChain 34(data) 694 695 38
+ Store 700 699
+ 701: 6(int) Load 8(invocation)
+ 704: 703(ptr) AccessChain 34(data) 47 695
+ 705: 30(f16vec4) Load 704
+ 706:702(f16vec2) VectorShuffle 705 705 0 1
+ 707:702(f16vec2) GroupNonUniformQuadBroadcast 43 706 42
+ 708: 703(ptr) AccessChain 34(data) 701 695
+ 709: 30(f16vec4) Load 708
+ 710: 30(f16vec4) VectorShuffle 709 707 4 5 2 3
+ Store 708 710
+ 711: 6(int) Load 8(invocation)
+ 713: 703(ptr) AccessChain 34(data) 58 695
+ 714: 30(f16vec4) Load 713
+ 715:712(f16vec3) VectorShuffle 714 714 0 1 2
+ 716:712(f16vec3) GroupNonUniformQuadBroadcast 43 715 42
+ 717: 703(ptr) AccessChain 34(data) 711 695
+ 718: 30(f16vec4) Load 717
+ 719: 30(f16vec4) VectorShuffle 718 716 4 5 6 3
+ Store 717 719
+ 720: 6(int) Load 8(invocation)
+ 721: 703(ptr) AccessChain 34(data) 68 695
+ 722: 30(f16vec4) Load 721
+ 723: 30(f16vec4) GroupNonUniformQuadBroadcast 43 722 42
+ 724: 703(ptr) AccessChain 34(data) 720 695
+ Store 724 723
+ 725: 6(int) Load 8(invocation)
+ 726: 696(ptr) AccessChain 34(data) 37 695 38
+ 727:29(float16_t) Load 726
+ 728:29(float16_t) GroupNonUniformQuadSwap 43 727 38
+ 729: 696(ptr) AccessChain 34(data) 725 695 38
+ Store 729 728
+ 730: 6(int) Load 8(invocation)
+ 731: 703(ptr) AccessChain 34(data) 47 695
+ 732: 30(f16vec4) Load 731
+ 733:702(f16vec2) VectorShuffle 732 732 0 1
+ 734:702(f16vec2) GroupNonUniformQuadSwap 43 733 38
+ 735: 703(ptr) AccessChain 34(data) 730 695
+ 736: 30(f16vec4) Load 735
+ 737: 30(f16vec4) VectorShuffle 736 734 4 5 2 3
+ Store 735 737
+ 738: 6(int) Load 8(invocation)
+ 739: 703(ptr) AccessChain 34(data) 58 695
+ 740: 30(f16vec4) Load 739
+ 741:712(f16vec3) VectorShuffle 740 740 0 1 2
+ 742:712(f16vec3) GroupNonUniformQuadSwap 43 741 38
+ 743: 703(ptr) AccessChain 34(data) 738 695
+ 744: 30(f16vec4) Load 743
+ 745: 30(f16vec4) VectorShuffle 744 742 4 5 6 3
+ Store 743 745
+ 746: 6(int) Load 8(invocation)
+ 747: 703(ptr) AccessChain 34(data) 68 695
+ 748: 30(f16vec4) Load 747
+ 749: 30(f16vec4) GroupNonUniformQuadSwap 43 748 38
+ 750: 703(ptr) AccessChain 34(data) 746 695
+ Store 750 749
+ 751: 6(int) Load 8(invocation)
+ 752: 696(ptr) AccessChain 34(data) 37 695 38
+ 753:29(float16_t) Load 752
+ 754:29(float16_t) GroupNonUniformQuadSwap 43 753 42
+ 755: 696(ptr) AccessChain 34(data) 751 695 38
+ Store 755 754
+ 756: 6(int) Load 8(invocation)
+ 757: 703(ptr) AccessChain 34(data) 47 695
+ 758: 30(f16vec4) Load 757
+ 759:702(f16vec2) VectorShuffle 758 758 0 1
+ 760:702(f16vec2) GroupNonUniformQuadSwap 43 759 42
+ 761: 703(ptr) AccessChain 34(data) 756 695
+ 762: 30(f16vec4) Load 761
+ 763: 30(f16vec4) VectorShuffle 762 760 4 5 2 3
+ Store 761 763
+ 764: 6(int) Load 8(invocation)
+ 765: 703(ptr) AccessChain 34(data) 58 695
+ 766: 30(f16vec4) Load 765
+ 767:712(f16vec3) VectorShuffle 766 766 0 1 2
+ 768:712(f16vec3) GroupNonUniformQuadSwap 43 767 42
+ 769: 703(ptr) AccessChain 34(data) 764 695
+ 770: 30(f16vec4) Load 769
+ 771: 30(f16vec4) VectorShuffle 770 768 4 5 6 3
+ Store 769 771
+ 772: 6(int) Load 8(invocation)
+ 773: 703(ptr) AccessChain 34(data) 68 695
+ 774: 30(f16vec4) Load 773
+ 775: 30(f16vec4) GroupNonUniformQuadSwap 43 774 42
+ 776: 703(ptr) AccessChain 34(data) 772 695
+ Store 776 775
+ 777: 6(int) Load 8(invocation)
+ 778: 696(ptr) AccessChain 34(data) 37 695 38
+ 779:29(float16_t) Load 778
+ 780:29(float16_t) GroupNonUniformQuadSwap 43 779 128
+ 781: 696(ptr) AccessChain 34(data) 777 695 38
+ Store 781 780
+ 782: 6(int) Load 8(invocation)
+ 783: 703(ptr) AccessChain 34(data) 47 695
+ 784: 30(f16vec4) Load 783
+ 785:702(f16vec2) VectorShuffle 784 784 0 1
+ 786:702(f16vec2) GroupNonUniformQuadSwap 43 785 128
+ 787: 703(ptr) AccessChain 34(data) 782 695
+ 788: 30(f16vec4) Load 787
+ 789: 30(f16vec4) VectorShuffle 788 786 4 5 2 3
+ Store 787 789
+ 790: 6(int) Load 8(invocation)
+ 791: 703(ptr) AccessChain 34(data) 58 695
+ 792: 30(f16vec4) Load 791
+ 793:712(f16vec3) VectorShuffle 792 792 0 1 2
+ 794:712(f16vec3) GroupNonUniformQuadSwap 43 793 128
+ 795: 703(ptr) AccessChain 34(data) 790 695
+ 796: 30(f16vec4) Load 795
+ 797: 30(f16vec4) VectorShuffle 796 794 4 5 6 3
+ Store 795 797
+ 798: 6(int) Load 8(invocation)
+ 799: 703(ptr) AccessChain 34(data) 68 695
+ 800: 30(f16vec4) Load 799
+ 801: 30(f16vec4) GroupNonUniformQuadSwap 43 800 128
+ 802: 703(ptr) AccessChain 34(data) 798 695
+ Store 802 801
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out
new file mode 100644
index 0000000..73b1597
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out
@@ -0,0 +1,117 @@
+spv.subgroupExtendedTypesQuadNeg.comp
+ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:51: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:52: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:53: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:56: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:57: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:58: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:66: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:67: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:68: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:71: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:72: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:73: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:76: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:77: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:78: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:81: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:82: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:83: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:86: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:87: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:88: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:91: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:92: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:93: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:96: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:97: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:98: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:101: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:102: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:103: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:106: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:107: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:108: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:111: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:112: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:113: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:116: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:117: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:118: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:121: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:122: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:123: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:126: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:127: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:128: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:131: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:132: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:133: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:136: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:137: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:138: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:141: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:142: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:143: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:146: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:147: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:148: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:151: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:152: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:153: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:156: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:157: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:158: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:161: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:162: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:163: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 112 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
new file mode 100644
index 0000000..d647ded
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
@@ -0,0 +1,616 @@
+spv.subgroupExtendedTypesShuffle.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 497
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformShuffle
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 31 "Buffers"
+ MemberName 31(Buffers) 0 "i8"
+ MemberName 31(Buffers) 1 "u8"
+ MemberName 31(Buffers) 2 "i16"
+ MemberName 31(Buffers) 3 "u16"
+ MemberName 31(Buffers) 4 "i64"
+ MemberName 31(Buffers) 5 "u64"
+ MemberName 31(Buffers) 6 "f16"
+ Name 34 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 31(Buffers) 0 Offset 0
+ MemberDecorate 31(Buffers) 1 Offset 4
+ MemberDecorate 31(Buffers) 2 Offset 8
+ MemberDecorate 31(Buffers) 3 Offset 16
+ MemberDecorate 31(Buffers) 4 Offset 32
+ MemberDecorate 31(Buffers) 5 Offset 64
+ MemberDecorate 31(Buffers) 6 Offset 96
+ Decorate 31(Buffers) Block
+ Decorate 34(data) DescriptorSet 0
+ Decorate 34(data) Binding 0
+ Decorate 496 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4)
+ 32: TypeArray 31(Buffers) 15
+ 33: TypePointer StorageBuffer 32
+ 34(data): 33(ptr) Variable StorageBuffer
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 6(int) Constant 0
+ 39: TypePointer StorageBuffer 17(int8_t)
+ 43: 6(int) Constant 3
+ 47: 36(int) Constant 1
+ 48: TypeVector 17(int8_t) 2
+ 49: TypePointer StorageBuffer 18(i8vec4)
+ 59: 36(int) Constant 2
+ 60: TypeVector 17(int8_t) 3
+ 70: 36(int) Constant 3
+ 107: TypePointer StorageBuffer 19(int8_t)
+ 114: TypeVector 19(int8_t) 2
+ 115: TypePointer StorageBuffer 20(i8vec4)
+ 125: TypeVector 19(int8_t) 3
+ 171: TypePointer StorageBuffer 21(int16_t)
+ 178: TypeVector 21(int16_t) 2
+ 179: TypePointer StorageBuffer 22(i16vec4)
+ 189: TypeVector 21(int16_t) 3
+ 235: TypePointer StorageBuffer 23(int16_t)
+ 242: TypeVector 23(int16_t) 2
+ 243: TypePointer StorageBuffer 24(i16vec4)
+ 253: TypeVector 23(int16_t) 3
+ 299: 36(int) Constant 4
+ 300: TypePointer StorageBuffer 25(int64_t)
+ 307: TypeVector 25(int64_t) 2
+ 308: TypePointer StorageBuffer 26(i64vec4)
+ 318: TypeVector 25(int64_t) 3
+ 364: 36(int) Constant 5
+ 365: TypePointer StorageBuffer 27(int64_t)
+ 372: TypeVector 27(int64_t) 2
+ 373: TypePointer StorageBuffer 28(i64vec4)
+ 383: TypeVector 27(int64_t) 3
+ 429: 36(int) Constant 6
+ 430: TypePointer StorageBuffer 29(float16_t)
+ 437: TypeVector 29(float16_t) 2
+ 438: TypePointer StorageBuffer 30(f16vec4)
+ 448: TypeVector 29(float16_t) 3
+ 493: TypeVector 6(int) 3
+ 494: 6(int) Constant 8
+ 495: 6(int) Constant 1
+ 496: 493(ivec3) ConstantComposite 494 495 495
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 35: 6(int) Load 8(invocation)
+ 40: 39(ptr) AccessChain 34(data) 37 37 38
+ 41: 17(int8_t) Load 40
+ 42: 6(int) Load 8(invocation)
+ 44: 17(int8_t) GroupNonUniformShuffle 43 41 42
+ 45: 39(ptr) AccessChain 34(data) 35 37 38
+ Store 45 44
+ 46: 6(int) Load 8(invocation)
+ 50: 49(ptr) AccessChain 34(data) 47 37
+ 51: 18(i8vec4) Load 50
+ 52: 48(i8vec2) VectorShuffle 51 51 0 1
+ 53: 6(int) Load 8(invocation)
+ 54: 48(i8vec2) GroupNonUniformShuffle 43 52 53
+ 55: 49(ptr) AccessChain 34(data) 46 37
+ 56: 18(i8vec4) Load 55
+ 57: 18(i8vec4) VectorShuffle 56 54 4 5 2 3
+ Store 55 57
+ 58: 6(int) Load 8(invocation)
+ 61: 49(ptr) AccessChain 34(data) 59 37
+ 62: 18(i8vec4) Load 61
+ 63: 60(i8vec3) VectorShuffle 62 62 0 1 2
+ 64: 6(int) Load 8(invocation)
+ 65: 60(i8vec3) GroupNonUniformShuffle 43 63 64
+ 66: 49(ptr) AccessChain 34(data) 58 37
+ 67: 18(i8vec4) Load 66
+ 68: 18(i8vec4) VectorShuffle 67 65 4 5 6 3
+ Store 66 68
+ 69: 6(int) Load 8(invocation)
+ 71: 49(ptr) AccessChain 34(data) 70 37
+ 72: 18(i8vec4) Load 71
+ 73: 6(int) Load 8(invocation)
+ 74: 18(i8vec4) GroupNonUniformShuffle 43 72 73
+ 75: 49(ptr) AccessChain 34(data) 69 37
+ Store 75 74
+ 76: 6(int) Load 8(invocation)
+ 77: 39(ptr) AccessChain 34(data) 37 37 38
+ 78: 17(int8_t) Load 77
+ 79: 6(int) Load 8(invocation)
+ 80: 17(int8_t) GroupNonUniformShuffleXor 43 78 79
+ 81: 39(ptr) AccessChain 34(data) 76 37 38
+ Store 81 80
+ 82: 6(int) Load 8(invocation)
+ 83: 49(ptr) AccessChain 34(data) 47 37
+ 84: 18(i8vec4) Load 83
+ 85: 48(i8vec2) VectorShuffle 84 84 0 1
+ 86: 6(int) Load 8(invocation)
+ 87: 48(i8vec2) GroupNonUniformShuffleXor 43 85 86
+ 88: 49(ptr) AccessChain 34(data) 82 37
+ 89: 18(i8vec4) Load 88
+ 90: 18(i8vec4) VectorShuffle 89 87 4 5 2 3
+ Store 88 90
+ 91: 6(int) Load 8(invocation)
+ 92: 49(ptr) AccessChain 34(data) 59 37
+ 93: 18(i8vec4) Load 92
+ 94: 60(i8vec3) VectorShuffle 93 93 0 1 2
+ 95: 6(int) Load 8(invocation)
+ 96: 60(i8vec3) GroupNonUniformShuffleXor 43 94 95
+ 97: 49(ptr) AccessChain 34(data) 91 37
+ 98: 18(i8vec4) Load 97
+ 99: 18(i8vec4) VectorShuffle 98 96 4 5 6 3
+ Store 97 99
+ 100: 6(int) Load 8(invocation)
+ 101: 49(ptr) AccessChain 34(data) 70 37
+ 102: 18(i8vec4) Load 101
+ 103: 6(int) Load 8(invocation)
+ 104: 18(i8vec4) GroupNonUniformShuffleXor 43 102 103
+ 105: 49(ptr) AccessChain 34(data) 100 37
+ Store 105 104
+ 106: 6(int) Load 8(invocation)
+ 108: 107(ptr) AccessChain 34(data) 37 47 38
+ 109: 19(int8_t) Load 108
+ 110: 6(int) Load 8(invocation)
+ 111: 19(int8_t) GroupNonUniformShuffle 43 109 110
+ 112: 107(ptr) AccessChain 34(data) 106 47 38
+ Store 112 111
+ 113: 6(int) Load 8(invocation)
+ 116: 115(ptr) AccessChain 34(data) 47 47
+ 117: 20(i8vec4) Load 116
+ 118: 114(i8vec2) VectorShuffle 117 117 0 1
+ 119: 6(int) Load 8(invocation)
+ 120: 114(i8vec2) GroupNonUniformShuffle 43 118 119
+ 121: 115(ptr) AccessChain 34(data) 113 47
+ 122: 20(i8vec4) Load 121
+ 123: 20(i8vec4) VectorShuffle 122 120 4 5 2 3
+ Store 121 123
+ 124: 6(int) Load 8(invocation)
+ 126: 115(ptr) AccessChain 34(data) 59 47
+ 127: 20(i8vec4) Load 126
+ 128: 125(i8vec3) VectorShuffle 127 127 0 1 2
+ 129: 6(int) Load 8(invocation)
+ 130: 125(i8vec3) GroupNonUniformShuffle 43 128 129
+ 131: 115(ptr) AccessChain 34(data) 124 47
+ 132: 20(i8vec4) Load 131
+ 133: 20(i8vec4) VectorShuffle 132 130 4 5 6 3
+ Store 131 133
+ 134: 6(int) Load 8(invocation)
+ 135: 115(ptr) AccessChain 34(data) 70 47
+ 136: 20(i8vec4) Load 135
+ 137: 6(int) Load 8(invocation)
+ 138: 20(i8vec4) GroupNonUniformShuffle 43 136 137
+ 139: 115(ptr) AccessChain 34(data) 134 47
+ Store 139 138
+ 140: 6(int) Load 8(invocation)
+ 141: 107(ptr) AccessChain 34(data) 37 47 38
+ 142: 19(int8_t) Load 141
+ 143: 6(int) Load 8(invocation)
+ 144: 19(int8_t) GroupNonUniformShuffleXor 43 142 143
+ 145: 107(ptr) AccessChain 34(data) 140 47 38
+ Store 145 144
+ 146: 6(int) Load 8(invocation)
+ 147: 115(ptr) AccessChain 34(data) 47 47
+ 148: 20(i8vec4) Load 147
+ 149: 114(i8vec2) VectorShuffle 148 148 0 1
+ 150: 6(int) Load 8(invocation)
+ 151: 114(i8vec2) GroupNonUniformShuffleXor 43 149 150
+ 152: 115(ptr) AccessChain 34(data) 146 47
+ 153: 20(i8vec4) Load 152
+ 154: 20(i8vec4) VectorShuffle 153 151 4 5 2 3
+ Store 152 154
+ 155: 6(int) Load 8(invocation)
+ 156: 115(ptr) AccessChain 34(data) 59 47
+ 157: 20(i8vec4) Load 156
+ 158: 125(i8vec3) VectorShuffle 157 157 0 1 2
+ 159: 6(int) Load 8(invocation)
+ 160: 125(i8vec3) GroupNonUniformShuffleXor 43 158 159
+ 161: 115(ptr) AccessChain 34(data) 155 47
+ 162: 20(i8vec4) Load 161
+ 163: 20(i8vec4) VectorShuffle 162 160 4 5 6 3
+ Store 161 163
+ 164: 6(int) Load 8(invocation)
+ 165: 115(ptr) AccessChain 34(data) 70 47
+ 166: 20(i8vec4) Load 165
+ 167: 6(int) Load 8(invocation)
+ 168: 20(i8vec4) GroupNonUniformShuffleXor 43 166 167
+ 169: 115(ptr) AccessChain 34(data) 164 47
+ Store 169 168
+ 170: 6(int) Load 8(invocation)
+ 172: 171(ptr) AccessChain 34(data) 37 59 38
+ 173: 21(int16_t) Load 172
+ 174: 6(int) Load 8(invocation)
+ 175: 21(int16_t) GroupNonUniformShuffle 43 173 174
+ 176: 171(ptr) AccessChain 34(data) 170 59 38
+ Store 176 175
+ 177: 6(int) Load 8(invocation)
+ 180: 179(ptr) AccessChain 34(data) 47 59
+ 181: 22(i16vec4) Load 180
+ 182:178(i16vec2) VectorShuffle 181 181 0 1
+ 183: 6(int) Load 8(invocation)
+ 184:178(i16vec2) GroupNonUniformShuffle 43 182 183
+ 185: 179(ptr) AccessChain 34(data) 177 59
+ 186: 22(i16vec4) Load 185
+ 187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3
+ Store 185 187
+ 188: 6(int) Load 8(invocation)
+ 190: 179(ptr) AccessChain 34(data) 59 59
+ 191: 22(i16vec4) Load 190
+ 192:189(i16vec3) VectorShuffle 191 191 0 1 2
+ 193: 6(int) Load 8(invocation)
+ 194:189(i16vec3) GroupNonUniformShuffle 43 192 193
+ 195: 179(ptr) AccessChain 34(data) 188 59
+ 196: 22(i16vec4) Load 195
+ 197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3
+ Store 195 197
+ 198: 6(int) Load 8(invocation)
+ 199: 179(ptr) AccessChain 34(data) 70 59
+ 200: 22(i16vec4) Load 199
+ 201: 6(int) Load 8(invocation)
+ 202: 22(i16vec4) GroupNonUniformShuffle 43 200 201
+ 203: 179(ptr) AccessChain 34(data) 198 59
+ Store 203 202
+ 204: 6(int) Load 8(invocation)
+ 205: 171(ptr) AccessChain 34(data) 37 59 38
+ 206: 21(int16_t) Load 205
+ 207: 6(int) Load 8(invocation)
+ 208: 21(int16_t) GroupNonUniformShuffleXor 43 206 207
+ 209: 171(ptr) AccessChain 34(data) 204 59 38
+ Store 209 208
+ 210: 6(int) Load 8(invocation)
+ 211: 179(ptr) AccessChain 34(data) 47 59
+ 212: 22(i16vec4) Load 211
+ 213:178(i16vec2) VectorShuffle 212 212 0 1
+ 214: 6(int) Load 8(invocation)
+ 215:178(i16vec2) GroupNonUniformShuffleXor 43 213 214
+ 216: 179(ptr) AccessChain 34(data) 210 59
+ 217: 22(i16vec4) Load 216
+ 218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3
+ Store 216 218
+ 219: 6(int) Load 8(invocation)
+ 220: 179(ptr) AccessChain 34(data) 59 59
+ 221: 22(i16vec4) Load 220
+ 222:189(i16vec3) VectorShuffle 221 221 0 1 2
+ 223: 6(int) Load 8(invocation)
+ 224:189(i16vec3) GroupNonUniformShuffleXor 43 222 223
+ 225: 179(ptr) AccessChain 34(data) 219 59
+ 226: 22(i16vec4) Load 225
+ 227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3
+ Store 225 227
+ 228: 6(int) Load 8(invocation)
+ 229: 179(ptr) AccessChain 34(data) 70 59
+ 230: 22(i16vec4) Load 229
+ 231: 6(int) Load 8(invocation)
+ 232: 22(i16vec4) GroupNonUniformShuffleXor 43 230 231
+ 233: 179(ptr) AccessChain 34(data) 228 59
+ Store 233 232
+ 234: 6(int) Load 8(invocation)
+ 236: 235(ptr) AccessChain 34(data) 37 70 38
+ 237: 23(int16_t) Load 236
+ 238: 6(int) Load 8(invocation)
+ 239: 23(int16_t) GroupNonUniformShuffle 43 237 238
+ 240: 235(ptr) AccessChain 34(data) 234 70 38
+ Store 240 239
+ 241: 6(int) Load 8(invocation)
+ 244: 243(ptr) AccessChain 34(data) 47 70
+ 245: 24(i16vec4) Load 244
+ 246:242(i16vec2) VectorShuffle 245 245 0 1
+ 247: 6(int) Load 8(invocation)
+ 248:242(i16vec2) GroupNonUniformShuffle 43 246 247
+ 249: 243(ptr) AccessChain 34(data) 241 70
+ 250: 24(i16vec4) Load 249
+ 251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3
+ Store 249 251
+ 252: 6(int) Load 8(invocation)
+ 254: 243(ptr) AccessChain 34(data) 59 70
+ 255: 24(i16vec4) Load 254
+ 256:253(i16vec3) VectorShuffle 255 255 0 1 2
+ 257: 6(int) Load 8(invocation)
+ 258:253(i16vec3) GroupNonUniformShuffle 43 256 257
+ 259: 243(ptr) AccessChain 34(data) 252 70
+ 260: 24(i16vec4) Load 259
+ 261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3
+ Store 259 261
+ 262: 6(int) Load 8(invocation)
+ 263: 243(ptr) AccessChain 34(data) 70 70
+ 264: 24(i16vec4) Load 263
+ 265: 6(int) Load 8(invocation)
+ 266: 24(i16vec4) GroupNonUniformShuffle 43 264 265
+ 267: 243(ptr) AccessChain 34(data) 262 70
+ Store 267 266
+ 268: 6(int) Load 8(invocation)
+ 269: 235(ptr) AccessChain 34(data) 37 70 38
+ 270: 23(int16_t) Load 269
+ 271: 6(int) Load 8(invocation)
+ 272: 23(int16_t) GroupNonUniformShuffleXor 43 270 271
+ 273: 235(ptr) AccessChain 34(data) 268 70 38
+ Store 273 272
+ 274: 6(int) Load 8(invocation)
+ 275: 243(ptr) AccessChain 34(data) 47 70
+ 276: 24(i16vec4) Load 275
+ 277:242(i16vec2) VectorShuffle 276 276 0 1
+ 278: 6(int) Load 8(invocation)
+ 279:242(i16vec2) GroupNonUniformShuffleXor 43 277 278
+ 280: 243(ptr) AccessChain 34(data) 274 70
+ 281: 24(i16vec4) Load 280
+ 282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3
+ Store 280 282
+ 283: 6(int) Load 8(invocation)
+ 284: 243(ptr) AccessChain 34(data) 59 70
+ 285: 24(i16vec4) Load 284
+ 286:253(i16vec3) VectorShuffle 285 285 0 1 2
+ 287: 6(int) Load 8(invocation)
+ 288:253(i16vec3) GroupNonUniformShuffleXor 43 286 287
+ 289: 243(ptr) AccessChain 34(data) 283 70
+ 290: 24(i16vec4) Load 289
+ 291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3
+ Store 289 291
+ 292: 6(int) Load 8(invocation)
+ 293: 243(ptr) AccessChain 34(data) 70 70
+ 294: 24(i16vec4) Load 293
+ 295: 6(int) Load 8(invocation)
+ 296: 24(i16vec4) GroupNonUniformShuffleXor 43 294 295
+ 297: 243(ptr) AccessChain 34(data) 292 70
+ Store 297 296
+ 298: 6(int) Load 8(invocation)
+ 301: 300(ptr) AccessChain 34(data) 37 299 38
+ 302: 25(int64_t) Load 301
+ 303: 6(int) Load 8(invocation)
+ 304: 25(int64_t) GroupNonUniformShuffle 43 302 303
+ 305: 300(ptr) AccessChain 34(data) 298 299 38
+ Store 305 304
+ 306: 6(int) Load 8(invocation)
+ 309: 308(ptr) AccessChain 34(data) 47 299
+ 310: 26(i64vec4) Load 309
+ 311:307(i64vec2) VectorShuffle 310 310 0 1
+ 312: 6(int) Load 8(invocation)
+ 313:307(i64vec2) GroupNonUniformShuffle 43 311 312
+ 314: 308(ptr) AccessChain 34(data) 306 299
+ 315: 26(i64vec4) Load 314
+ 316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3
+ Store 314 316
+ 317: 6(int) Load 8(invocation)
+ 319: 308(ptr) AccessChain 34(data) 59 299
+ 320: 26(i64vec4) Load 319
+ 321:318(i64vec3) VectorShuffle 320 320 0 1 2
+ 322: 6(int) Load 8(invocation)
+ 323:318(i64vec3) GroupNonUniformShuffle 43 321 322
+ 324: 308(ptr) AccessChain 34(data) 317 299
+ 325: 26(i64vec4) Load 324
+ 326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3
+ Store 324 326
+ 327: 6(int) Load 8(invocation)
+ 328: 308(ptr) AccessChain 34(data) 70 299
+ 329: 26(i64vec4) Load 328
+ 330: 6(int) Load 8(invocation)
+ 331: 26(i64vec4) GroupNonUniformShuffle 43 329 330
+ 332: 308(ptr) AccessChain 34(data) 327 299
+ Store 332 331
+ 333: 6(int) Load 8(invocation)
+ 334: 300(ptr) AccessChain 34(data) 37 299 38
+ 335: 25(int64_t) Load 334
+ 336: 6(int) Load 8(invocation)
+ 337: 25(int64_t) GroupNonUniformShuffleXor 43 335 336
+ 338: 300(ptr) AccessChain 34(data) 333 299 38
+ Store 338 337
+ 339: 6(int) Load 8(invocation)
+ 340: 308(ptr) AccessChain 34(data) 47 299
+ 341: 26(i64vec4) Load 340
+ 342:307(i64vec2) VectorShuffle 341 341 0 1
+ 343: 6(int) Load 8(invocation)
+ 344:307(i64vec2) GroupNonUniformShuffleXor 43 342 343
+ 345: 308(ptr) AccessChain 34(data) 339 299
+ 346: 26(i64vec4) Load 345
+ 347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3
+ Store 345 347
+ 348: 6(int) Load 8(invocation)
+ 349: 308(ptr) AccessChain 34(data) 59 299
+ 350: 26(i64vec4) Load 349
+ 351:318(i64vec3) VectorShuffle 350 350 0 1 2
+ 352: 6(int) Load 8(invocation)
+ 353:318(i64vec3) GroupNonUniformShuffleXor 43 351 352
+ 354: 308(ptr) AccessChain 34(data) 348 299
+ 355: 26(i64vec4) Load 354
+ 356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3
+ Store 354 356
+ 357: 6(int) Load 8(invocation)
+ 358: 308(ptr) AccessChain 34(data) 70 299
+ 359: 26(i64vec4) Load 358
+ 360: 6(int) Load 8(invocation)
+ 361: 26(i64vec4) GroupNonUniformShuffleXor 43 359 360
+ 362: 308(ptr) AccessChain 34(data) 357 299
+ Store 362 361
+ 363: 6(int) Load 8(invocation)
+ 366: 365(ptr) AccessChain 34(data) 37 364 38
+ 367: 27(int64_t) Load 366
+ 368: 6(int) Load 8(invocation)
+ 369: 27(int64_t) GroupNonUniformShuffle 43 367 368
+ 370: 365(ptr) AccessChain 34(data) 363 364 38
+ Store 370 369
+ 371: 6(int) Load 8(invocation)
+ 374: 373(ptr) AccessChain 34(data) 47 364
+ 375: 28(i64vec4) Load 374
+ 376:372(i64vec2) VectorShuffle 375 375 0 1
+ 377: 6(int) Load 8(invocation)
+ 378:372(i64vec2) GroupNonUniformShuffle 43 376 377
+ 379: 373(ptr) AccessChain 34(data) 371 364
+ 380: 28(i64vec4) Load 379
+ 381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3
+ Store 379 381
+ 382: 6(int) Load 8(invocation)
+ 384: 373(ptr) AccessChain 34(data) 59 364
+ 385: 28(i64vec4) Load 384
+ 386:383(i64vec3) VectorShuffle 385 385 0 1 2
+ 387: 6(int) Load 8(invocation)
+ 388:383(i64vec3) GroupNonUniformShuffle 43 386 387
+ 389: 373(ptr) AccessChain 34(data) 382 364
+ 390: 28(i64vec4) Load 389
+ 391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3
+ Store 389 391
+ 392: 6(int) Load 8(invocation)
+ 393: 373(ptr) AccessChain 34(data) 70 364
+ 394: 28(i64vec4) Load 393
+ 395: 6(int) Load 8(invocation)
+ 396: 28(i64vec4) GroupNonUniformShuffle 43 394 395
+ 397: 373(ptr) AccessChain 34(data) 392 364
+ Store 397 396
+ 398: 6(int) Load 8(invocation)
+ 399: 365(ptr) AccessChain 34(data) 37 364 38
+ 400: 27(int64_t) Load 399
+ 401: 6(int) Load 8(invocation)
+ 402: 27(int64_t) GroupNonUniformShuffleXor 43 400 401
+ 403: 365(ptr) AccessChain 34(data) 398 364 38
+ Store 403 402
+ 404: 6(int) Load 8(invocation)
+ 405: 373(ptr) AccessChain 34(data) 47 364
+ 406: 28(i64vec4) Load 405
+ 407:372(i64vec2) VectorShuffle 406 406 0 1
+ 408: 6(int) Load 8(invocation)
+ 409:372(i64vec2) GroupNonUniformShuffleXor 43 407 408
+ 410: 373(ptr) AccessChain 34(data) 404 364
+ 411: 28(i64vec4) Load 410
+ 412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3
+ Store 410 412
+ 413: 6(int) Load 8(invocation)
+ 414: 373(ptr) AccessChain 34(data) 59 364
+ 415: 28(i64vec4) Load 414
+ 416:383(i64vec3) VectorShuffle 415 415 0 1 2
+ 417: 6(int) Load 8(invocation)
+ 418:383(i64vec3) GroupNonUniformShuffleXor 43 416 417
+ 419: 373(ptr) AccessChain 34(data) 413 364
+ 420: 28(i64vec4) Load 419
+ 421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3
+ Store 419 421
+ 422: 6(int) Load 8(invocation)
+ 423: 373(ptr) AccessChain 34(data) 70 364
+ 424: 28(i64vec4) Load 423
+ 425: 6(int) Load 8(invocation)
+ 426: 28(i64vec4) GroupNonUniformShuffleXor 43 424 425
+ 427: 373(ptr) AccessChain 34(data) 422 364
+ Store 427 426
+ 428: 6(int) Load 8(invocation)
+ 431: 430(ptr) AccessChain 34(data) 37 429 38
+ 432:29(float16_t) Load 431
+ 433: 6(int) Load 8(invocation)
+ 434:29(float16_t) GroupNonUniformShuffle 43 432 433
+ 435: 430(ptr) AccessChain 34(data) 428 429 38
+ Store 435 434
+ 436: 6(int) Load 8(invocation)
+ 439: 438(ptr) AccessChain 34(data) 47 429
+ 440: 30(f16vec4) Load 439
+ 441:437(f16vec2) VectorShuffle 440 440 0 1
+ 442: 6(int) Load 8(invocation)
+ 443:437(f16vec2) GroupNonUniformShuffle 43 441 442
+ 444: 438(ptr) AccessChain 34(data) 436 429
+ 445: 30(f16vec4) Load 444
+ 446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3
+ Store 444 446
+ 447: 6(int) Load 8(invocation)
+ 449: 438(ptr) AccessChain 34(data) 59 429
+ 450: 30(f16vec4) Load 449
+ 451:448(f16vec3) VectorShuffle 450 450 0 1 2
+ 452: 6(int) Load 8(invocation)
+ 453:448(f16vec3) GroupNonUniformShuffle 43 451 452
+ 454: 438(ptr) AccessChain 34(data) 447 429
+ 455: 30(f16vec4) Load 454
+ 456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3
+ Store 454 456
+ 457: 6(int) Load 8(invocation)
+ 458: 438(ptr) AccessChain 34(data) 70 429
+ 459: 30(f16vec4) Load 458
+ 460: 6(int) Load 8(invocation)
+ 461: 30(f16vec4) GroupNonUniformShuffle 43 459 460
+ 462: 438(ptr) AccessChain 34(data) 457 429
+ Store 462 461
+ 463: 6(int) Load 8(invocation)
+ 464: 430(ptr) AccessChain 34(data) 37 429 38
+ 465:29(float16_t) Load 464
+ 466: 6(int) Load 8(invocation)
+ 467:29(float16_t) GroupNonUniformShuffleXor 43 465 466
+ 468: 430(ptr) AccessChain 34(data) 463 429 38
+ Store 468 467
+ 469: 6(int) Load 8(invocation)
+ 470: 438(ptr) AccessChain 34(data) 47 429
+ 471: 30(f16vec4) Load 470
+ 472:437(f16vec2) VectorShuffle 471 471 0 1
+ 473: 6(int) Load 8(invocation)
+ 474:437(f16vec2) GroupNonUniformShuffleXor 43 472 473
+ 475: 438(ptr) AccessChain 34(data) 469 429
+ 476: 30(f16vec4) Load 475
+ 477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3
+ Store 475 477
+ 478: 6(int) Load 8(invocation)
+ 479: 438(ptr) AccessChain 34(data) 59 429
+ 480: 30(f16vec4) Load 479
+ 481:448(f16vec3) VectorShuffle 480 480 0 1 2
+ 482: 6(int) Load 8(invocation)
+ 483:448(f16vec3) GroupNonUniformShuffleXor 43 481 482
+ 484: 438(ptr) AccessChain 34(data) 478 429
+ 485: 30(f16vec4) Load 484
+ 486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3
+ Store 484 486
+ 487: 6(int) Load 8(invocation)
+ 488: 438(ptr) AccessChain 34(data) 70 429
+ 489: 30(f16vec4) Load 488
+ 490: 6(int) Load 8(invocation)
+ 491: 30(f16vec4) GroupNonUniformShuffleXor 43 489 490
+ 492: 438(ptr) AccessChain 34(data) 487 429
+ Store 492 491
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out
new file mode 100644
index 0000000..df1234b
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out
@@ -0,0 +1,61 @@
+spv.subgroupExtendedTypesShuffleNeg.comp
+ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 56 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
new file mode 100644
index 0000000..ef5def5
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
@@ -0,0 +1,616 @@
+spv.subgroupExtendedTypesShuffleRelative.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 497
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformShuffleRelative
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle_relative"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 31 "Buffers"
+ MemberName 31(Buffers) 0 "i8"
+ MemberName 31(Buffers) 1 "u8"
+ MemberName 31(Buffers) 2 "i16"
+ MemberName 31(Buffers) 3 "u16"
+ MemberName 31(Buffers) 4 "i64"
+ MemberName 31(Buffers) 5 "u64"
+ MemberName 31(Buffers) 6 "f16"
+ Name 34 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 31(Buffers) 0 Offset 0
+ MemberDecorate 31(Buffers) 1 Offset 4
+ MemberDecorate 31(Buffers) 2 Offset 8
+ MemberDecorate 31(Buffers) 3 Offset 16
+ MemberDecorate 31(Buffers) 4 Offset 32
+ MemberDecorate 31(Buffers) 5 Offset 64
+ MemberDecorate 31(Buffers) 6 Offset 96
+ Decorate 31(Buffers) Block
+ Decorate 34(data) DescriptorSet 0
+ Decorate 34(data) Binding 0
+ Decorate 496 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4)
+ 32: TypeArray 31(Buffers) 15
+ 33: TypePointer StorageBuffer 32
+ 34(data): 33(ptr) Variable StorageBuffer
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 6(int) Constant 0
+ 39: TypePointer StorageBuffer 17(int8_t)
+ 43: 6(int) Constant 3
+ 47: 36(int) Constant 1
+ 48: TypeVector 17(int8_t) 2
+ 49: TypePointer StorageBuffer 18(i8vec4)
+ 59: 36(int) Constant 2
+ 60: TypeVector 17(int8_t) 3
+ 70: 36(int) Constant 3
+ 107: TypePointer StorageBuffer 19(int8_t)
+ 114: TypeVector 19(int8_t) 2
+ 115: TypePointer StorageBuffer 20(i8vec4)
+ 125: TypeVector 19(int8_t) 3
+ 171: TypePointer StorageBuffer 21(int16_t)
+ 178: TypeVector 21(int16_t) 2
+ 179: TypePointer StorageBuffer 22(i16vec4)
+ 189: TypeVector 21(int16_t) 3
+ 235: TypePointer StorageBuffer 23(int16_t)
+ 242: TypeVector 23(int16_t) 2
+ 243: TypePointer StorageBuffer 24(i16vec4)
+ 253: TypeVector 23(int16_t) 3
+ 299: 36(int) Constant 4
+ 300: TypePointer StorageBuffer 25(int64_t)
+ 307: TypeVector 25(int64_t) 2
+ 308: TypePointer StorageBuffer 26(i64vec4)
+ 318: TypeVector 25(int64_t) 3
+ 364: 36(int) Constant 5
+ 365: TypePointer StorageBuffer 27(int64_t)
+ 372: TypeVector 27(int64_t) 2
+ 373: TypePointer StorageBuffer 28(i64vec4)
+ 383: TypeVector 27(int64_t) 3
+ 429: 36(int) Constant 6
+ 430: TypePointer StorageBuffer 29(float16_t)
+ 437: TypeVector 29(float16_t) 2
+ 438: TypePointer StorageBuffer 30(f16vec4)
+ 448: TypeVector 29(float16_t) 3
+ 493: TypeVector 6(int) 3
+ 494: 6(int) Constant 8
+ 495: 6(int) Constant 1
+ 496: 493(ivec3) ConstantComposite 494 495 495
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 35: 6(int) Load 8(invocation)
+ 40: 39(ptr) AccessChain 34(data) 37 37 38
+ 41: 17(int8_t) Load 40
+ 42: 6(int) Load 8(invocation)
+ 44: 17(int8_t) GroupNonUniformShuffleUp 43 41 42
+ 45: 39(ptr) AccessChain 34(data) 35 37 38
+ Store 45 44
+ 46: 6(int) Load 8(invocation)
+ 50: 49(ptr) AccessChain 34(data) 47 37
+ 51: 18(i8vec4) Load 50
+ 52: 48(i8vec2) VectorShuffle 51 51 0 1
+ 53: 6(int) Load 8(invocation)
+ 54: 48(i8vec2) GroupNonUniformShuffleUp 43 52 53
+ 55: 49(ptr) AccessChain 34(data) 46 37
+ 56: 18(i8vec4) Load 55
+ 57: 18(i8vec4) VectorShuffle 56 54 4 5 2 3
+ Store 55 57
+ 58: 6(int) Load 8(invocation)
+ 61: 49(ptr) AccessChain 34(data) 59 37
+ 62: 18(i8vec4) Load 61
+ 63: 60(i8vec3) VectorShuffle 62 62 0 1 2
+ 64: 6(int) Load 8(invocation)
+ 65: 60(i8vec3) GroupNonUniformShuffleUp 43 63 64
+ 66: 49(ptr) AccessChain 34(data) 58 37
+ 67: 18(i8vec4) Load 66
+ 68: 18(i8vec4) VectorShuffle 67 65 4 5 6 3
+ Store 66 68
+ 69: 6(int) Load 8(invocation)
+ 71: 49(ptr) AccessChain 34(data) 70 37
+ 72: 18(i8vec4) Load 71
+ 73: 6(int) Load 8(invocation)
+ 74: 18(i8vec4) GroupNonUniformShuffleUp 43 72 73
+ 75: 49(ptr) AccessChain 34(data) 69 37
+ Store 75 74
+ 76: 6(int) Load 8(invocation)
+ 77: 39(ptr) AccessChain 34(data) 37 37 38
+ 78: 17(int8_t) Load 77
+ 79: 6(int) Load 8(invocation)
+ 80: 17(int8_t) GroupNonUniformShuffleDown 43 78 79
+ 81: 39(ptr) AccessChain 34(data) 76 37 38
+ Store 81 80
+ 82: 6(int) Load 8(invocation)
+ 83: 49(ptr) AccessChain 34(data) 47 37
+ 84: 18(i8vec4) Load 83
+ 85: 48(i8vec2) VectorShuffle 84 84 0 1
+ 86: 6(int) Load 8(invocation)
+ 87: 48(i8vec2) GroupNonUniformShuffleDown 43 85 86
+ 88: 49(ptr) AccessChain 34(data) 82 37
+ 89: 18(i8vec4) Load 88
+ 90: 18(i8vec4) VectorShuffle 89 87 4 5 2 3
+ Store 88 90
+ 91: 6(int) Load 8(invocation)
+ 92: 49(ptr) AccessChain 34(data) 59 37
+ 93: 18(i8vec4) Load 92
+ 94: 60(i8vec3) VectorShuffle 93 93 0 1 2
+ 95: 6(int) Load 8(invocation)
+ 96: 60(i8vec3) GroupNonUniformShuffleDown 43 94 95
+ 97: 49(ptr) AccessChain 34(data) 91 37
+ 98: 18(i8vec4) Load 97
+ 99: 18(i8vec4) VectorShuffle 98 96 4 5 6 3
+ Store 97 99
+ 100: 6(int) Load 8(invocation)
+ 101: 49(ptr) AccessChain 34(data) 70 37
+ 102: 18(i8vec4) Load 101
+ 103: 6(int) Load 8(invocation)
+ 104: 18(i8vec4) GroupNonUniformShuffleDown 43 102 103
+ 105: 49(ptr) AccessChain 34(data) 100 37
+ Store 105 104
+ 106: 6(int) Load 8(invocation)
+ 108: 107(ptr) AccessChain 34(data) 37 47 38
+ 109: 19(int8_t) Load 108
+ 110: 6(int) Load 8(invocation)
+ 111: 19(int8_t) GroupNonUniformShuffleUp 43 109 110
+ 112: 107(ptr) AccessChain 34(data) 106 47 38
+ Store 112 111
+ 113: 6(int) Load 8(invocation)
+ 116: 115(ptr) AccessChain 34(data) 47 47
+ 117: 20(i8vec4) Load 116
+ 118: 114(i8vec2) VectorShuffle 117 117 0 1
+ 119: 6(int) Load 8(invocation)
+ 120: 114(i8vec2) GroupNonUniformShuffleUp 43 118 119
+ 121: 115(ptr) AccessChain 34(data) 113 47
+ 122: 20(i8vec4) Load 121
+ 123: 20(i8vec4) VectorShuffle 122 120 4 5 2 3
+ Store 121 123
+ 124: 6(int) Load 8(invocation)
+ 126: 115(ptr) AccessChain 34(data) 59 47
+ 127: 20(i8vec4) Load 126
+ 128: 125(i8vec3) VectorShuffle 127 127 0 1 2
+ 129: 6(int) Load 8(invocation)
+ 130: 125(i8vec3) GroupNonUniformShuffleUp 43 128 129
+ 131: 115(ptr) AccessChain 34(data) 124 47
+ 132: 20(i8vec4) Load 131
+ 133: 20(i8vec4) VectorShuffle 132 130 4 5 6 3
+ Store 131 133
+ 134: 6(int) Load 8(invocation)
+ 135: 115(ptr) AccessChain 34(data) 70 47
+ 136: 20(i8vec4) Load 135
+ 137: 6(int) Load 8(invocation)
+ 138: 20(i8vec4) GroupNonUniformShuffleUp 43 136 137
+ 139: 115(ptr) AccessChain 34(data) 134 47
+ Store 139 138
+ 140: 6(int) Load 8(invocation)
+ 141: 107(ptr) AccessChain 34(data) 37 47 38
+ 142: 19(int8_t) Load 141
+ 143: 6(int) Load 8(invocation)
+ 144: 19(int8_t) GroupNonUniformShuffleDown 43 142 143
+ 145: 107(ptr) AccessChain 34(data) 140 47 38
+ Store 145 144
+ 146: 6(int) Load 8(invocation)
+ 147: 115(ptr) AccessChain 34(data) 47 47
+ 148: 20(i8vec4) Load 147
+ 149: 114(i8vec2) VectorShuffle 148 148 0 1
+ 150: 6(int) Load 8(invocation)
+ 151: 114(i8vec2) GroupNonUniformShuffleDown 43 149 150
+ 152: 115(ptr) AccessChain 34(data) 146 47
+ 153: 20(i8vec4) Load 152
+ 154: 20(i8vec4) VectorShuffle 153 151 4 5 2 3
+ Store 152 154
+ 155: 6(int) Load 8(invocation)
+ 156: 115(ptr) AccessChain 34(data) 59 47
+ 157: 20(i8vec4) Load 156
+ 158: 125(i8vec3) VectorShuffle 157 157 0 1 2
+ 159: 6(int) Load 8(invocation)
+ 160: 125(i8vec3) GroupNonUniformShuffleDown 43 158 159
+ 161: 115(ptr) AccessChain 34(data) 155 47
+ 162: 20(i8vec4) Load 161
+ 163: 20(i8vec4) VectorShuffle 162 160 4 5 6 3
+ Store 161 163
+ 164: 6(int) Load 8(invocation)
+ 165: 115(ptr) AccessChain 34(data) 70 47
+ 166: 20(i8vec4) Load 165
+ 167: 6(int) Load 8(invocation)
+ 168: 20(i8vec4) GroupNonUniformShuffleDown 43 166 167
+ 169: 115(ptr) AccessChain 34(data) 164 47
+ Store 169 168
+ 170: 6(int) Load 8(invocation)
+ 172: 171(ptr) AccessChain 34(data) 37 59 38
+ 173: 21(int16_t) Load 172
+ 174: 6(int) Load 8(invocation)
+ 175: 21(int16_t) GroupNonUniformShuffleUp 43 173 174
+ 176: 171(ptr) AccessChain 34(data) 170 59 38
+ Store 176 175
+ 177: 6(int) Load 8(invocation)
+ 180: 179(ptr) AccessChain 34(data) 47 59
+ 181: 22(i16vec4) Load 180
+ 182:178(i16vec2) VectorShuffle 181 181 0 1
+ 183: 6(int) Load 8(invocation)
+ 184:178(i16vec2) GroupNonUniformShuffleUp 43 182 183
+ 185: 179(ptr) AccessChain 34(data) 177 59
+ 186: 22(i16vec4) Load 185
+ 187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3
+ Store 185 187
+ 188: 6(int) Load 8(invocation)
+ 190: 179(ptr) AccessChain 34(data) 59 59
+ 191: 22(i16vec4) Load 190
+ 192:189(i16vec3) VectorShuffle 191 191 0 1 2
+ 193: 6(int) Load 8(invocation)
+ 194:189(i16vec3) GroupNonUniformShuffleUp 43 192 193
+ 195: 179(ptr) AccessChain 34(data) 188 59
+ 196: 22(i16vec4) Load 195
+ 197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3
+ Store 195 197
+ 198: 6(int) Load 8(invocation)
+ 199: 179(ptr) AccessChain 34(data) 70 59
+ 200: 22(i16vec4) Load 199
+ 201: 6(int) Load 8(invocation)
+ 202: 22(i16vec4) GroupNonUniformShuffleUp 43 200 201
+ 203: 179(ptr) AccessChain 34(data) 198 59
+ Store 203 202
+ 204: 6(int) Load 8(invocation)
+ 205: 171(ptr) AccessChain 34(data) 37 59 38
+ 206: 21(int16_t) Load 205
+ 207: 6(int) Load 8(invocation)
+ 208: 21(int16_t) GroupNonUniformShuffleDown 43 206 207
+ 209: 171(ptr) AccessChain 34(data) 204 59 38
+ Store 209 208
+ 210: 6(int) Load 8(invocation)
+ 211: 179(ptr) AccessChain 34(data) 47 59
+ 212: 22(i16vec4) Load 211
+ 213:178(i16vec2) VectorShuffle 212 212 0 1
+ 214: 6(int) Load 8(invocation)
+ 215:178(i16vec2) GroupNonUniformShuffleDown 43 213 214
+ 216: 179(ptr) AccessChain 34(data) 210 59
+ 217: 22(i16vec4) Load 216
+ 218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3
+ Store 216 218
+ 219: 6(int) Load 8(invocation)
+ 220: 179(ptr) AccessChain 34(data) 59 59
+ 221: 22(i16vec4) Load 220
+ 222:189(i16vec3) VectorShuffle 221 221 0 1 2
+ 223: 6(int) Load 8(invocation)
+ 224:189(i16vec3) GroupNonUniformShuffleDown 43 222 223
+ 225: 179(ptr) AccessChain 34(data) 219 59
+ 226: 22(i16vec4) Load 225
+ 227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3
+ Store 225 227
+ 228: 6(int) Load 8(invocation)
+ 229: 179(ptr) AccessChain 34(data) 70 59
+ 230: 22(i16vec4) Load 229
+ 231: 6(int) Load 8(invocation)
+ 232: 22(i16vec4) GroupNonUniformShuffleDown 43 230 231
+ 233: 179(ptr) AccessChain 34(data) 228 59
+ Store 233 232
+ 234: 6(int) Load 8(invocation)
+ 236: 235(ptr) AccessChain 34(data) 37 70 38
+ 237: 23(int16_t) Load 236
+ 238: 6(int) Load 8(invocation)
+ 239: 23(int16_t) GroupNonUniformShuffleUp 43 237 238
+ 240: 235(ptr) AccessChain 34(data) 234 70 38
+ Store 240 239
+ 241: 6(int) Load 8(invocation)
+ 244: 243(ptr) AccessChain 34(data) 47 70
+ 245: 24(i16vec4) Load 244
+ 246:242(i16vec2) VectorShuffle 245 245 0 1
+ 247: 6(int) Load 8(invocation)
+ 248:242(i16vec2) GroupNonUniformShuffleUp 43 246 247
+ 249: 243(ptr) AccessChain 34(data) 241 70
+ 250: 24(i16vec4) Load 249
+ 251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3
+ Store 249 251
+ 252: 6(int) Load 8(invocation)
+ 254: 243(ptr) AccessChain 34(data) 59 70
+ 255: 24(i16vec4) Load 254
+ 256:253(i16vec3) VectorShuffle 255 255 0 1 2
+ 257: 6(int) Load 8(invocation)
+ 258:253(i16vec3) GroupNonUniformShuffleUp 43 256 257
+ 259: 243(ptr) AccessChain 34(data) 252 70
+ 260: 24(i16vec4) Load 259
+ 261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3
+ Store 259 261
+ 262: 6(int) Load 8(invocation)
+ 263: 243(ptr) AccessChain 34(data) 70 70
+ 264: 24(i16vec4) Load 263
+ 265: 6(int) Load 8(invocation)
+ 266: 24(i16vec4) GroupNonUniformShuffleUp 43 264 265
+ 267: 243(ptr) AccessChain 34(data) 262 70
+ Store 267 266
+ 268: 6(int) Load 8(invocation)
+ 269: 235(ptr) AccessChain 34(data) 37 70 38
+ 270: 23(int16_t) Load 269
+ 271: 6(int) Load 8(invocation)
+ 272: 23(int16_t) GroupNonUniformShuffleDown 43 270 271
+ 273: 235(ptr) AccessChain 34(data) 268 70 38
+ Store 273 272
+ 274: 6(int) Load 8(invocation)
+ 275: 243(ptr) AccessChain 34(data) 47 70
+ 276: 24(i16vec4) Load 275
+ 277:242(i16vec2) VectorShuffle 276 276 0 1
+ 278: 6(int) Load 8(invocation)
+ 279:242(i16vec2) GroupNonUniformShuffleDown 43 277 278
+ 280: 243(ptr) AccessChain 34(data) 274 70
+ 281: 24(i16vec4) Load 280
+ 282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3
+ Store 280 282
+ 283: 6(int) Load 8(invocation)
+ 284: 243(ptr) AccessChain 34(data) 59 70
+ 285: 24(i16vec4) Load 284
+ 286:253(i16vec3) VectorShuffle 285 285 0 1 2
+ 287: 6(int) Load 8(invocation)
+ 288:253(i16vec3) GroupNonUniformShuffleDown 43 286 287
+ 289: 243(ptr) AccessChain 34(data) 283 70
+ 290: 24(i16vec4) Load 289
+ 291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3
+ Store 289 291
+ 292: 6(int) Load 8(invocation)
+ 293: 243(ptr) AccessChain 34(data) 70 70
+ 294: 24(i16vec4) Load 293
+ 295: 6(int) Load 8(invocation)
+ 296: 24(i16vec4) GroupNonUniformShuffleDown 43 294 295
+ 297: 243(ptr) AccessChain 34(data) 292 70
+ Store 297 296
+ 298: 6(int) Load 8(invocation)
+ 301: 300(ptr) AccessChain 34(data) 37 299 38
+ 302: 25(int64_t) Load 301
+ 303: 6(int) Load 8(invocation)
+ 304: 25(int64_t) GroupNonUniformShuffleUp 43 302 303
+ 305: 300(ptr) AccessChain 34(data) 298 299 38
+ Store 305 304
+ 306: 6(int) Load 8(invocation)
+ 309: 308(ptr) AccessChain 34(data) 47 299
+ 310: 26(i64vec4) Load 309
+ 311:307(i64vec2) VectorShuffle 310 310 0 1
+ 312: 6(int) Load 8(invocation)
+ 313:307(i64vec2) GroupNonUniformShuffleUp 43 311 312
+ 314: 308(ptr) AccessChain 34(data) 306 299
+ 315: 26(i64vec4) Load 314
+ 316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3
+ Store 314 316
+ 317: 6(int) Load 8(invocation)
+ 319: 308(ptr) AccessChain 34(data) 59 299
+ 320: 26(i64vec4) Load 319
+ 321:318(i64vec3) VectorShuffle 320 320 0 1 2
+ 322: 6(int) Load 8(invocation)
+ 323:318(i64vec3) GroupNonUniformShuffleUp 43 321 322
+ 324: 308(ptr) AccessChain 34(data) 317 299
+ 325: 26(i64vec4) Load 324
+ 326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3
+ Store 324 326
+ 327: 6(int) Load 8(invocation)
+ 328: 308(ptr) AccessChain 34(data) 70 299
+ 329: 26(i64vec4) Load 328
+ 330: 6(int) Load 8(invocation)
+ 331: 26(i64vec4) GroupNonUniformShuffleUp 43 329 330
+ 332: 308(ptr) AccessChain 34(data) 327 299
+ Store 332 331
+ 333: 6(int) Load 8(invocation)
+ 334: 300(ptr) AccessChain 34(data) 37 299 38
+ 335: 25(int64_t) Load 334
+ 336: 6(int) Load 8(invocation)
+ 337: 25(int64_t) GroupNonUniformShuffleDown 43 335 336
+ 338: 300(ptr) AccessChain 34(data) 333 299 38
+ Store 338 337
+ 339: 6(int) Load 8(invocation)
+ 340: 308(ptr) AccessChain 34(data) 47 299
+ 341: 26(i64vec4) Load 340
+ 342:307(i64vec2) VectorShuffle 341 341 0 1
+ 343: 6(int) Load 8(invocation)
+ 344:307(i64vec2) GroupNonUniformShuffleDown 43 342 343
+ 345: 308(ptr) AccessChain 34(data) 339 299
+ 346: 26(i64vec4) Load 345
+ 347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3
+ Store 345 347
+ 348: 6(int) Load 8(invocation)
+ 349: 308(ptr) AccessChain 34(data) 59 299
+ 350: 26(i64vec4) Load 349
+ 351:318(i64vec3) VectorShuffle 350 350 0 1 2
+ 352: 6(int) Load 8(invocation)
+ 353:318(i64vec3) GroupNonUniformShuffleDown 43 351 352
+ 354: 308(ptr) AccessChain 34(data) 348 299
+ 355: 26(i64vec4) Load 354
+ 356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3
+ Store 354 356
+ 357: 6(int) Load 8(invocation)
+ 358: 308(ptr) AccessChain 34(data) 70 299
+ 359: 26(i64vec4) Load 358
+ 360: 6(int) Load 8(invocation)
+ 361: 26(i64vec4) GroupNonUniformShuffleDown 43 359 360
+ 362: 308(ptr) AccessChain 34(data) 357 299
+ Store 362 361
+ 363: 6(int) Load 8(invocation)
+ 366: 365(ptr) AccessChain 34(data) 37 364 38
+ 367: 27(int64_t) Load 366
+ 368: 6(int) Load 8(invocation)
+ 369: 27(int64_t) GroupNonUniformShuffleUp 43 367 368
+ 370: 365(ptr) AccessChain 34(data) 363 364 38
+ Store 370 369
+ 371: 6(int) Load 8(invocation)
+ 374: 373(ptr) AccessChain 34(data) 47 364
+ 375: 28(i64vec4) Load 374
+ 376:372(i64vec2) VectorShuffle 375 375 0 1
+ 377: 6(int) Load 8(invocation)
+ 378:372(i64vec2) GroupNonUniformShuffleUp 43 376 377
+ 379: 373(ptr) AccessChain 34(data) 371 364
+ 380: 28(i64vec4) Load 379
+ 381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3
+ Store 379 381
+ 382: 6(int) Load 8(invocation)
+ 384: 373(ptr) AccessChain 34(data) 59 364
+ 385: 28(i64vec4) Load 384
+ 386:383(i64vec3) VectorShuffle 385 385 0 1 2
+ 387: 6(int) Load 8(invocation)
+ 388:383(i64vec3) GroupNonUniformShuffleUp 43 386 387
+ 389: 373(ptr) AccessChain 34(data) 382 364
+ 390: 28(i64vec4) Load 389
+ 391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3
+ Store 389 391
+ 392: 6(int) Load 8(invocation)
+ 393: 373(ptr) AccessChain 34(data) 70 364
+ 394: 28(i64vec4) Load 393
+ 395: 6(int) Load 8(invocation)
+ 396: 28(i64vec4) GroupNonUniformShuffleUp 43 394 395
+ 397: 373(ptr) AccessChain 34(data) 392 364
+ Store 397 396
+ 398: 6(int) Load 8(invocation)
+ 399: 365(ptr) AccessChain 34(data) 37 364 38
+ 400: 27(int64_t) Load 399
+ 401: 6(int) Load 8(invocation)
+ 402: 27(int64_t) GroupNonUniformShuffleDown 43 400 401
+ 403: 365(ptr) AccessChain 34(data) 398 364 38
+ Store 403 402
+ 404: 6(int) Load 8(invocation)
+ 405: 373(ptr) AccessChain 34(data) 47 364
+ 406: 28(i64vec4) Load 405
+ 407:372(i64vec2) VectorShuffle 406 406 0 1
+ 408: 6(int) Load 8(invocation)
+ 409:372(i64vec2) GroupNonUniformShuffleDown 43 407 408
+ 410: 373(ptr) AccessChain 34(data) 404 364
+ 411: 28(i64vec4) Load 410
+ 412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3
+ Store 410 412
+ 413: 6(int) Load 8(invocation)
+ 414: 373(ptr) AccessChain 34(data) 59 364
+ 415: 28(i64vec4) Load 414
+ 416:383(i64vec3) VectorShuffle 415 415 0 1 2
+ 417: 6(int) Load 8(invocation)
+ 418:383(i64vec3) GroupNonUniformShuffleDown 43 416 417
+ 419: 373(ptr) AccessChain 34(data) 413 364
+ 420: 28(i64vec4) Load 419
+ 421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3
+ Store 419 421
+ 422: 6(int) Load 8(invocation)
+ 423: 373(ptr) AccessChain 34(data) 70 364
+ 424: 28(i64vec4) Load 423
+ 425: 6(int) Load 8(invocation)
+ 426: 28(i64vec4) GroupNonUniformShuffleDown 43 424 425
+ 427: 373(ptr) AccessChain 34(data) 422 364
+ Store 427 426
+ 428: 6(int) Load 8(invocation)
+ 431: 430(ptr) AccessChain 34(data) 37 429 38
+ 432:29(float16_t) Load 431
+ 433: 6(int) Load 8(invocation)
+ 434:29(float16_t) GroupNonUniformShuffleUp 43 432 433
+ 435: 430(ptr) AccessChain 34(data) 428 429 38
+ Store 435 434
+ 436: 6(int) Load 8(invocation)
+ 439: 438(ptr) AccessChain 34(data) 47 429
+ 440: 30(f16vec4) Load 439
+ 441:437(f16vec2) VectorShuffle 440 440 0 1
+ 442: 6(int) Load 8(invocation)
+ 443:437(f16vec2) GroupNonUniformShuffleUp 43 441 442
+ 444: 438(ptr) AccessChain 34(data) 436 429
+ 445: 30(f16vec4) Load 444
+ 446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3
+ Store 444 446
+ 447: 6(int) Load 8(invocation)
+ 449: 438(ptr) AccessChain 34(data) 59 429
+ 450: 30(f16vec4) Load 449
+ 451:448(f16vec3) VectorShuffle 450 450 0 1 2
+ 452: 6(int) Load 8(invocation)
+ 453:448(f16vec3) GroupNonUniformShuffleUp 43 451 452
+ 454: 438(ptr) AccessChain 34(data) 447 429
+ 455: 30(f16vec4) Load 454
+ 456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3
+ Store 454 456
+ 457: 6(int) Load 8(invocation)
+ 458: 438(ptr) AccessChain 34(data) 70 429
+ 459: 30(f16vec4) Load 458
+ 460: 6(int) Load 8(invocation)
+ 461: 30(f16vec4) GroupNonUniformShuffleUp 43 459 460
+ 462: 438(ptr) AccessChain 34(data) 457 429
+ Store 462 461
+ 463: 6(int) Load 8(invocation)
+ 464: 430(ptr) AccessChain 34(data) 37 429 38
+ 465:29(float16_t) Load 464
+ 466: 6(int) Load 8(invocation)
+ 467:29(float16_t) GroupNonUniformShuffleDown 43 465 466
+ 468: 430(ptr) AccessChain 34(data) 463 429 38
+ Store 468 467
+ 469: 6(int) Load 8(invocation)
+ 470: 438(ptr) AccessChain 34(data) 47 429
+ 471: 30(f16vec4) Load 470
+ 472:437(f16vec2) VectorShuffle 471 471 0 1
+ 473: 6(int) Load 8(invocation)
+ 474:437(f16vec2) GroupNonUniformShuffleDown 43 472 473
+ 475: 438(ptr) AccessChain 34(data) 469 429
+ 476: 30(f16vec4) Load 475
+ 477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3
+ Store 475 477
+ 478: 6(int) Load 8(invocation)
+ 479: 438(ptr) AccessChain 34(data) 59 429
+ 480: 30(f16vec4) Load 479
+ 481:448(f16vec3) VectorShuffle 480 480 0 1 2
+ 482: 6(int) Load 8(invocation)
+ 483:448(f16vec3) GroupNonUniformShuffleDown 43 481 482
+ 484: 438(ptr) AccessChain 34(data) 478 429
+ 485: 30(f16vec4) Load 484
+ 486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3
+ Store 484 486
+ 487: 6(int) Load 8(invocation)
+ 488: 438(ptr) AccessChain 34(data) 70 429
+ 489: 30(f16vec4) Load 488
+ 490: 6(int) Load 8(invocation)
+ 491: 30(f16vec4) GroupNonUniformShuffleDown 43 489 490
+ 492: 438(ptr) AccessChain 34(data) 487 429
+ Store 492 491
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out
new file mode 100644
index 0000000..a043715
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out
@@ -0,0 +1,61 @@
+spv.subgroupExtendedTypesShuffleRelativeNeg.comp
+ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 56 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
new file mode 100644
index 0000000..a32c25d
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
@@ -0,0 +1,377 @@
+spv.subgroupExtendedTypesVote.comp
+// Module Version 10300
+// Generated by (magic number): 80007
+// Id's are bound by 277
+
+ Capability Shader
+ Capability Float16
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability GroupNonUniform
+ Capability GroupNonUniformVote
+ Capability StorageUniformBufferBlock16
+ Capability StorageBuffer8BitAccess
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int64"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_int8"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_vote"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 32 "Buffers"
+ MemberName 32(Buffers) 0 "i8"
+ MemberName 32(Buffers) 1 "u8"
+ MemberName 32(Buffers) 2 "i16"
+ MemberName 32(Buffers) 3 "u16"
+ MemberName 32(Buffers) 4 "i64"
+ MemberName 32(Buffers) 5 "u64"
+ MemberName 32(Buffers) 6 "f16"
+ MemberName 32(Buffers) 7 "r"
+ Name 35 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 32(Buffers) 0 Offset 0
+ MemberDecorate 32(Buffers) 1 Offset 4
+ MemberDecorate 32(Buffers) 2 Offset 8
+ MemberDecorate 32(Buffers) 3 Offset 16
+ MemberDecorate 32(Buffers) 4 Offset 32
+ MemberDecorate 32(Buffers) 5 Offset 64
+ MemberDecorate 32(Buffers) 6 Offset 96
+ MemberDecorate 32(Buffers) 7 Offset 104
+ Decorate 32(Buffers) Block
+ Decorate 35(data) DescriptorSet 0
+ Decorate 35(data) Binding 0
+ Decorate 276 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeInt 8 1
+ 18: TypeVector 17(int8_t) 4
+ 19: TypeInt 8 0
+ 20: TypeVector 19(int8_t) 4
+ 21: TypeInt 16 1
+ 22: TypeVector 21(int16_t) 4
+ 23: TypeInt 16 0
+ 24: TypeVector 23(int16_t) 4
+ 25: TypeInt 64 1
+ 26: TypeVector 25(int64_t) 4
+ 27: TypeInt 64 0
+ 28: TypeVector 27(int64_t) 4
+ 29: TypeFloat 16
+ 30: TypeVector 29(float16_t) 4
+ 31: TypeInt 32 1
+ 32(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 31(int)
+ 33: TypeArray 32(Buffers) 15
+ 34: TypePointer StorageBuffer 33
+ 35(data): 34(ptr) Variable StorageBuffer
+ 37: 31(int) Constant 7
+ 38: TypePointer StorageBuffer 31(int)
+ 41: 31(int) Constant 0
+ 42: TypeBool
+ 44: 6(int) Constant 3
+ 49: 6(int) Constant 0
+ 50: TypePointer StorageBuffer 17(int8_t)
+ 54: 31(int) Constant 1
+ 58: TypeVector 17(int8_t) 2
+ 59: TypePointer StorageBuffer 18(i8vec4)
+ 67: 31(int) Constant 2
+ 68: TypeVector 17(int8_t) 3
+ 76: 31(int) Constant 3
+ 83: TypePointer StorageBuffer 19(int8_t)
+ 90: TypeVector 19(int8_t) 2
+ 91: TypePointer StorageBuffer 20(i8vec4)
+ 99: TypeVector 19(int8_t) 3
+ 113: TypePointer StorageBuffer 21(int16_t)
+ 120: TypeVector 21(int16_t) 2
+ 121: TypePointer StorageBuffer 22(i16vec4)
+ 129: TypeVector 21(int16_t) 3
+ 143: TypePointer StorageBuffer 23(int16_t)
+ 150: TypeVector 23(int16_t) 2
+ 151: TypePointer StorageBuffer 24(i16vec4)
+ 159: TypeVector 23(int16_t) 3
+ 181: 31(int) Constant 4
+ 182: TypePointer StorageBuffer 25(int64_t)
+ 189: TypeVector 25(int64_t) 2
+ 190: TypePointer StorageBuffer 26(i64vec4)
+ 198: TypeVector 25(int64_t) 3
+ 212: 31(int) Constant 5
+ 213: TypePointer StorageBuffer 27(int64_t)
+ 220: TypeVector 27(int64_t) 2
+ 221: TypePointer StorageBuffer 28(i64vec4)
+ 229: TypeVector 27(int64_t) 3
+ 243: 31(int) Constant 6
+ 244: TypePointer StorageBuffer 29(float16_t)
+ 251: TypeVector 29(float16_t) 2
+ 252: TypePointer StorageBuffer 30(f16vec4)
+ 260: TypeVector 29(float16_t) 3
+ 273: TypeVector 6(int) 3
+ 274: 6(int) Constant 8
+ 275: 6(int) Constant 1
+ 276: 273(ivec3) ConstantComposite 274 275 275
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 36: 6(int) Load 8(invocation)
+ 39: 38(ptr) AccessChain 35(data) 36 37
+ 40: 31(int) Load 39
+ 43: 42(bool) SLessThan 40 41
+ 45: 42(bool) GroupNonUniformAll 44 43
+ SelectionMerge 47 None
+ BranchConditional 45 46 172
+ 46: Label
+ 48: 6(int) Load 8(invocation)
+ 51: 50(ptr) AccessChain 35(data) 41 41 49
+ 52: 17(int8_t) Load 51
+ 53: 42(bool) GroupNonUniformAllEqual 44 52
+ 55: 31(int) Select 53 54 41
+ 56: 38(ptr) AccessChain 35(data) 48 37
+ Store 56 55
+ 57: 6(int) Load 8(invocation)
+ 60: 59(ptr) AccessChain 35(data) 54 41
+ 61: 18(i8vec4) Load 60
+ 62: 58(i8vec2) VectorShuffle 61 61 0 1
+ 63: 42(bool) GroupNonUniformAllEqual 44 62
+ 64: 31(int) Select 63 54 41
+ 65: 38(ptr) AccessChain 35(data) 57 37
+ Store 65 64
+ 66: 6(int) Load 8(invocation)
+ 69: 59(ptr) AccessChain 35(data) 67 41
+ 70: 18(i8vec4) Load 69
+ 71: 68(i8vec3) VectorShuffle 70 70 0 1 2
+ 72: 42(bool) GroupNonUniformAllEqual 44 71
+ 73: 31(int) Select 72 54 41
+ 74: 38(ptr) AccessChain 35(data) 66 37
+ Store 74 73
+ 75: 6(int) Load 8(invocation)
+ 77: 59(ptr) AccessChain 35(data) 76 41
+ 78: 18(i8vec4) Load 77
+ 79: 42(bool) GroupNonUniformAllEqual 44 78
+ 80: 31(int) Select 79 54 41
+ 81: 38(ptr) AccessChain 35(data) 75 37
+ Store 81 80
+ 82: 6(int) Load 8(invocation)
+ 84: 83(ptr) AccessChain 35(data) 41 54 49
+ 85: 19(int8_t) Load 84
+ 86: 42(bool) GroupNonUniformAllEqual 44 85
+ 87: 31(int) Select 86 54 41
+ 88: 38(ptr) AccessChain 35(data) 82 37
+ Store 88 87
+ 89: 6(int) Load 8(invocation)
+ 92: 91(ptr) AccessChain 35(data) 54 54
+ 93: 20(i8vec4) Load 92
+ 94: 90(i8vec2) VectorShuffle 93 93 0 1
+ 95: 42(bool) GroupNonUniformAllEqual 44 94
+ 96: 31(int) Select 95 54 41
+ 97: 38(ptr) AccessChain 35(data) 89 37
+ Store 97 96
+ 98: 6(int) Load 8(invocation)
+ 100: 91(ptr) AccessChain 35(data) 67 54
+ 101: 20(i8vec4) Load 100
+ 102: 99(i8vec3) VectorShuffle 101 101 0 1 2
+ 103: 42(bool) GroupNonUniformAllEqual 44 102
+ 104: 31(int) Select 103 54 41
+ 105: 38(ptr) AccessChain 35(data) 98 37
+ Store 105 104
+ 106: 6(int) Load 8(invocation)
+ 107: 91(ptr) AccessChain 35(data) 76 54
+ 108: 20(i8vec4) Load 107
+ 109: 42(bool) GroupNonUniformAllEqual 44 108
+ 110: 31(int) Select 109 54 41
+ 111: 38(ptr) AccessChain 35(data) 106 37
+ Store 111 110
+ 112: 6(int) Load 8(invocation)
+ 114: 113(ptr) AccessChain 35(data) 41 67 49
+ 115: 21(int16_t) Load 114
+ 116: 42(bool) GroupNonUniformAllEqual 44 115
+ 117: 31(int) Select 116 54 41
+ 118: 38(ptr) AccessChain 35(data) 112 37
+ Store 118 117
+ 119: 6(int) Load 8(invocation)
+ 122: 121(ptr) AccessChain 35(data) 54 67
+ 123: 22(i16vec4) Load 122
+ 124:120(i16vec2) VectorShuffle 123 123 0 1
+ 125: 42(bool) GroupNonUniformAllEqual 44 124
+ 126: 31(int) Select 125 54 41
+ 127: 38(ptr) AccessChain 35(data) 119 37
+ Store 127 126
+ 128: 6(int) Load 8(invocation)
+ 130: 121(ptr) AccessChain 35(data) 67 67
+ 131: 22(i16vec4) Load 130
+ 132:129(i16vec3) VectorShuffle 131 131 0 1 2
+ 133: 42(bool) GroupNonUniformAllEqual 44 132
+ 134: 31(int) Select 133 54 41
+ 135: 38(ptr) AccessChain 35(data) 128 37
+ Store 135 134
+ 136: 6(int) Load 8(invocation)
+ 137: 121(ptr) AccessChain 35(data) 76 67
+ 138: 22(i16vec4) Load 137
+ 139: 42(bool) GroupNonUniformAllEqual 44 138
+ 140: 31(int) Select 139 54 41
+ 141: 38(ptr) AccessChain 35(data) 136 37
+ Store 141 140
+ 142: 6(int) Load 8(invocation)
+ 144: 143(ptr) AccessChain 35(data) 41 76 49
+ 145: 23(int16_t) Load 144
+ 146: 42(bool) GroupNonUniformAllEqual 44 145
+ 147: 31(int) Select 146 54 41
+ 148: 38(ptr) AccessChain 35(data) 142 37
+ Store 148 147
+ 149: 6(int) Load 8(invocation)
+ 152: 151(ptr) AccessChain 35(data) 54 76
+ 153: 24(i16vec4) Load 152
+ 154:150(i16vec2) VectorShuffle 153 153 0 1
+ 155: 42(bool) GroupNonUniformAllEqual 44 154
+ 156: 31(int) Select 155 54 41
+ 157: 38(ptr) AccessChain 35(data) 149 37
+ Store 157 156
+ 158: 6(int) Load 8(invocation)
+ 160: 151(ptr) AccessChain 35(data) 67 76
+ 161: 24(i16vec4) Load 160
+ 162:159(i16vec3) VectorShuffle 161 161 0 1 2
+ 163: 42(bool) GroupNonUniformAllEqual 44 162
+ 164: 31(int) Select 163 54 41
+ 165: 38(ptr) AccessChain 35(data) 158 37
+ Store 165 164
+ 166: 6(int) Load 8(invocation)
+ 167: 151(ptr) AccessChain 35(data) 76 76
+ 168: 24(i16vec4) Load 167
+ 169: 42(bool) GroupNonUniformAllEqual 44 168
+ 170: 31(int) Select 169 54 41
+ 171: 38(ptr) AccessChain 35(data) 166 37
+ Store 171 170
+ Branch 47
+ 172: Label
+ 173: 6(int) Load 8(invocation)
+ 174: 38(ptr) AccessChain 35(data) 173 37
+ 175: 31(int) Load 174
+ 176: 42(bool) SLessThan 175 41
+ 177: 42(bool) GroupNonUniformAny 44 176
+ SelectionMerge 179 None
+ BranchConditional 177 178 179
+ 178: Label
+ 180: 6(int) Load 8(invocation)
+ 183: 182(ptr) AccessChain 35(data) 41 181 49
+ 184: 25(int64_t) Load 183
+ 185: 42(bool) GroupNonUniformAllEqual 44 184
+ 186: 31(int) Select 185 54 41
+ 187: 38(ptr) AccessChain 35(data) 180 37
+ Store 187 186
+ 188: 6(int) Load 8(invocation)
+ 191: 190(ptr) AccessChain 35(data) 54 181
+ 192: 26(i64vec4) Load 191
+ 193:189(i64vec2) VectorShuffle 192 192 0 1
+ 194: 42(bool) GroupNonUniformAllEqual 44 193
+ 195: 31(int) Select 194 54 41
+ 196: 38(ptr) AccessChain 35(data) 188 37
+ Store 196 195
+ 197: 6(int) Load 8(invocation)
+ 199: 190(ptr) AccessChain 35(data) 67 181
+ 200: 26(i64vec4) Load 199
+ 201:198(i64vec3) VectorShuffle 200 200 0 1 2
+ 202: 42(bool) GroupNonUniformAllEqual 44 201
+ 203: 31(int) Select 202 54 41
+ 204: 38(ptr) AccessChain 35(data) 197 37
+ Store 204 203
+ 205: 6(int) Load 8(invocation)
+ 206: 190(ptr) AccessChain 35(data) 76 181
+ 207: 26(i64vec4) Load 206
+ 208: 42(bool) GroupNonUniformAllEqual 44 207
+ 209: 31(int) Select 208 54 41
+ 210: 38(ptr) AccessChain 35(data) 205 37
+ Store 210 209
+ 211: 6(int) Load 8(invocation)
+ 214: 213(ptr) AccessChain 35(data) 41 212 49
+ 215: 27(int64_t) Load 214
+ 216: 42(bool) GroupNonUniformAllEqual 44 215
+ 217: 31(int) Select 216 54 41
+ 218: 38(ptr) AccessChain 35(data) 211 37
+ Store 218 217
+ 219: 6(int) Load 8(invocation)
+ 222: 221(ptr) AccessChain 35(data) 54 212
+ 223: 28(i64vec4) Load 222
+ 224:220(i64vec2) VectorShuffle 223 223 0 1
+ 225: 42(bool) GroupNonUniformAllEqual 44 224
+ 226: 31(int) Select 225 54 41
+ 227: 38(ptr) AccessChain 35(data) 219 37
+ Store 227 226
+ 228: 6(int) Load 8(invocation)
+ 230: 221(ptr) AccessChain 35(data) 67 212
+ 231: 28(i64vec4) Load 230
+ 232:229(i64vec3) VectorShuffle 231 231 0 1 2
+ 233: 42(bool) GroupNonUniformAllEqual 44 232
+ 234: 31(int) Select 233 54 41
+ 235: 38(ptr) AccessChain 35(data) 228 37
+ Store 235 234
+ 236: 6(int) Load 8(invocation)
+ 237: 221(ptr) AccessChain 35(data) 76 212
+ 238: 28(i64vec4) Load 237
+ 239: 42(bool) GroupNonUniformAllEqual 44 238
+ 240: 31(int) Select 239 54 41
+ 241: 38(ptr) AccessChain 35(data) 236 37
+ Store 241 240
+ 242: 6(int) Load 8(invocation)
+ 245: 244(ptr) AccessChain 35(data) 41 243 49
+ 246:29(float16_t) Load 245
+ 247: 42(bool) GroupNonUniformAllEqual 44 246
+ 248: 31(int) Select 247 54 41
+ 249: 38(ptr) AccessChain 35(data) 242 37
+ Store 249 248
+ 250: 6(int) Load 8(invocation)
+ 253: 252(ptr) AccessChain 35(data) 54 243
+ 254: 30(f16vec4) Load 253
+ 255:251(f16vec2) VectorShuffle 254 254 0 1
+ 256: 42(bool) GroupNonUniformAllEqual 44 255
+ 257: 31(int) Select 256 54 41
+ 258: 38(ptr) AccessChain 35(data) 250 37
+ Store 258 257
+ 259: 6(int) Load 8(invocation)
+ 261: 252(ptr) AccessChain 35(data) 67 243
+ 262: 30(f16vec4) Load 261
+ 263:260(f16vec3) VectorShuffle 262 262 0 1 2
+ 264: 42(bool) GroupNonUniformAllEqual 44 263
+ 265: 31(int) Select 264 54 41
+ 266: 38(ptr) AccessChain 35(data) 259 37
+ Store 266 265
+ 267: 6(int) Load 8(invocation)
+ 268: 252(ptr) AccessChain 35(data) 76 243
+ 269: 30(f16vec4) Load 268
+ 270: 42(bool) GroupNonUniformAllEqual 44 269
+ 271: 31(int) Select 270 54 41
+ 272: 38(ptr) AccessChain 35(data) 267 37
+ Store 272 271
+ Branch 179
+ 179: Label
+ Branch 47
+ 47: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out
new file mode 100644
index 0000000..2197d41
--- /dev/null
+++ b/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out
@@ -0,0 +1,33 @@
+spv.subgroupExtendedTypesVoteNeg.comp
+ERROR: 0:29: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:30: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:31: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:32: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:34: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:35: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:36: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:37: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8
+ERROR: 0:39: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:40: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:41: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:44: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:45: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:46: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
+ERROR: 0:51: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:52: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:53: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:56: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:57: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:58: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
+ERROR: 0:61: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:62: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:63: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
+ERROR: 28 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/spv.subgroupExtendedTypesArithmetic.comp b/Test/spv.subgroupExtendedTypesArithmetic.comp
new file mode 100644
index 0000000..f58268f
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesArithmetic.comp
@@ -0,0 +1,715 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_arithmetic: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupAdd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupAdd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupAdd(data[3].i8);
+
+ data[invocation].i8.x = subgroupMul(data[0].i8.x);
+ data[invocation].i8.xy = subgroupMul(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz);
+ data[invocation].i8 = subgroupMul(data[3].i8);
+
+ data[invocation].i8.x = subgroupMin(data[0].i8.x);
+ data[invocation].i8.xy = subgroupMin(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz);
+ data[invocation].i8 = subgroupMin(data[3].i8);
+
+ data[invocation].i8.x = subgroupMax(data[0].i8.x);
+ data[invocation].i8.xy = subgroupMax(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz);
+ data[invocation].i8 = subgroupMax(data[3].i8);
+
+ data[invocation].i8.x = subgroupAnd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupAnd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupAnd(data[3].i8);
+
+ data[invocation].i8.x = subgroupOr(data[0].i8.x);
+ data[invocation].i8.xy = subgroupOr(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz);
+ data[invocation].i8 = subgroupOr(data[3].i8);
+
+ data[invocation].i8.x = subgroupXor(data[0].i8.x);
+ data[invocation].i8.xy = subgroupXor(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz);
+ data[invocation].i8 = subgroupXor(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveAdd(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveMul(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveMin(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveMax(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveAnd(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveOr(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveXor(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveAdd(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveMul(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveMin(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveMax(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveAnd(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveOr(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveXor(data[3].i8);
+
+ data[invocation].u8.x = subgroupAdd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupAdd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupAdd(data[3].u8);
+
+ data[invocation].u8.x = subgroupMul(data[0].u8.x);
+ data[invocation].u8.xy = subgroupMul(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz);
+ data[invocation].u8 = subgroupMul(data[3].u8);
+
+ data[invocation].u8.x = subgroupMin(data[0].u8.x);
+ data[invocation].u8.xy = subgroupMin(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz);
+ data[invocation].u8 = subgroupMin(data[3].u8);
+
+ data[invocation].u8.x = subgroupMax(data[0].u8.x);
+ data[invocation].u8.xy = subgroupMax(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz);
+ data[invocation].u8 = subgroupMax(data[3].u8);
+
+ data[invocation].u8.x = subgroupAnd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupAnd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupAnd(data[3].u8);
+
+ data[invocation].u8.x = subgroupOr(data[0].u8.x);
+ data[invocation].u8.xy = subgroupOr(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz);
+ data[invocation].u8 = subgroupOr(data[3].u8);
+
+ data[invocation].u8.x = subgroupXor(data[0].u8.x);
+ data[invocation].u8.xy = subgroupXor(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz);
+ data[invocation].u8 = subgroupXor(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveAdd(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveMul(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveMin(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveMax(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveAnd(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveOr(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveXor(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveAdd(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveMul(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveMin(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveMax(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveAnd(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveOr(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveXor(data[3].u8);
+
+ data[invocation].i16.x = subgroupAdd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupAdd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupAdd(data[3].i16);
+
+ data[invocation].i16.x = subgroupMul(data[0].i16.x);
+ data[invocation].i16.xy = subgroupMul(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz);
+ data[invocation].i16 = subgroupMul(data[3].i16);
+
+ data[invocation].i16.x = subgroupMin(data[0].i16.x);
+ data[invocation].i16.xy = subgroupMin(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz);
+ data[invocation].i16 = subgroupMin(data[3].i16);
+
+ data[invocation].i16.x = subgroupMax(data[0].i16.x);
+ data[invocation].i16.xy = subgroupMax(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz);
+ data[invocation].i16 = subgroupMax(data[3].i16);
+
+ data[invocation].i16.x = subgroupAnd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupAnd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupAnd(data[3].i16);
+
+ data[invocation].i16.x = subgroupOr(data[0].i16.x);
+ data[invocation].i16.xy = subgroupOr(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz);
+ data[invocation].i16 = subgroupOr(data[3].i16);
+
+ data[invocation].i16.x = subgroupXor(data[0].i16.x);
+ data[invocation].i16.xy = subgroupXor(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz);
+ data[invocation].i16 = subgroupXor(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveAdd(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveMul(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveMin(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveMax(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveAnd(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveOr(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveXor(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveAdd(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveMul(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveMin(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveMax(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveAnd(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveOr(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveXor(data[3].i16);
+
+ data[invocation].u16.x = subgroupAdd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupAdd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupAdd(data[3].u16);
+
+ data[invocation].u16.x = subgroupMul(data[0].u16.x);
+ data[invocation].u16.xy = subgroupMul(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz);
+ data[invocation].u16 = subgroupMul(data[3].u16);
+
+ data[invocation].u16.x = subgroupMin(data[0].u16.x);
+ data[invocation].u16.xy = subgroupMin(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz);
+ data[invocation].u16 = subgroupMin(data[3].u16);
+
+ data[invocation].u16.x = subgroupMax(data[0].u16.x);
+ data[invocation].u16.xy = subgroupMax(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz);
+ data[invocation].u16 = subgroupMax(data[3].u16);
+
+ data[invocation].u16.x = subgroupAnd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupAnd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupAnd(data[3].u16);
+
+ data[invocation].u16.x = subgroupOr(data[0].u16.x);
+ data[invocation].u16.xy = subgroupOr(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz);
+ data[invocation].u16 = subgroupOr(data[3].u16);
+
+ data[invocation].u16.x = subgroupXor(data[0].u16.x);
+ data[invocation].u16.xy = subgroupXor(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz);
+ data[invocation].u16 = subgroupXor(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveAdd(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveMul(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveMin(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveMax(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveAnd(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveOr(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveXor(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveAdd(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveMul(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveMin(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveMax(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveAnd(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveOr(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveXor(data[3].u16);
+
+ data[invocation].i64.x = subgroupAdd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupAdd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupAdd(data[3].i64);
+
+ data[invocation].i64.x = subgroupMul(data[0].i64.x);
+ data[invocation].i64.xy = subgroupMul(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz);
+ data[invocation].i64 = subgroupMul(data[3].i64);
+
+ data[invocation].i64.x = subgroupMin(data[0].i64.x);
+ data[invocation].i64.xy = subgroupMin(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz);
+ data[invocation].i64 = subgroupMin(data[3].i64);
+
+ data[invocation].i64.x = subgroupMax(data[0].i64.x);
+ data[invocation].i64.xy = subgroupMax(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz);
+ data[invocation].i64 = subgroupMax(data[3].i64);
+
+ data[invocation].i64.x = subgroupAnd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupAnd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupAnd(data[3].i64);
+
+ data[invocation].i64.x = subgroupOr(data[0].i64.x);
+ data[invocation].i64.xy = subgroupOr(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz);
+ data[invocation].i64 = subgroupOr(data[3].i64);
+
+ data[invocation].i64.x = subgroupXor(data[0].i64.x);
+ data[invocation].i64.xy = subgroupXor(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz);
+ data[invocation].i64 = subgroupXor(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveAdd(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveMul(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveMin(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveMax(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveAnd(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveOr(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveXor(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveAdd(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveMul(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveMin(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveMax(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveAnd(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveOr(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveXor(data[3].i64);
+
+ data[invocation].u64.x = subgroupAdd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupAdd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupAdd(data[3].u64);
+
+ data[invocation].u64.x = subgroupMul(data[0].u64.x);
+ data[invocation].u64.xy = subgroupMul(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz);
+ data[invocation].u64 = subgroupMul(data[3].u64);
+
+ data[invocation].u64.x = subgroupMin(data[0].u64.x);
+ data[invocation].u64.xy = subgroupMin(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz);
+ data[invocation].u64 = subgroupMin(data[3].u64);
+
+ data[invocation].u64.x = subgroupMax(data[0].u64.x);
+ data[invocation].u64.xy = subgroupMax(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz);
+ data[invocation].u64 = subgroupMax(data[3].u64);
+
+ data[invocation].u64.x = subgroupAnd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupAnd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupAnd(data[3].u64);
+
+ data[invocation].u64.x = subgroupOr(data[0].u64.x);
+ data[invocation].u64.xy = subgroupOr(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz);
+ data[invocation].u64 = subgroupOr(data[3].u64);
+
+ data[invocation].u64.x = subgroupXor(data[0].u64.x);
+ data[invocation].u64.xy = subgroupXor(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz);
+ data[invocation].u64 = subgroupXor(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveAdd(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveMul(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveMin(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveMax(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveAnd(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveOr(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveXor(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveAdd(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveMul(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveMin(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveMax(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveAnd(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveOr(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveXor(data[3].u64);
+
+ data[invocation].f16.x = subgroupAdd(data[0].f16.x);
+ data[invocation].f16.xy = subgroupAdd(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz);
+ data[invocation].f16 = subgroupAdd(data[3].f16);
+
+ data[invocation].f16.x = subgroupMul(data[0].f16.x);
+ data[invocation].f16.xy = subgroupMul(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz);
+ data[invocation].f16 = subgroupMul(data[3].f16);
+
+ data[invocation].f16.x = subgroupMin(data[0].f16.x);
+ data[invocation].f16.xy = subgroupMin(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz);
+ data[invocation].f16 = subgroupMin(data[3].f16);
+
+ data[invocation].f16.x = subgroupMax(data[0].f16.x);
+ data[invocation].f16.xy = subgroupMax(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz);
+ data[invocation].f16 = subgroupMax(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveAdd(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveMul(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveMin(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveMax(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveAdd(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveMul(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveMin(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveMax(data[3].f16);
+}
diff --git a/Test/spv.subgroupExtendedTypesArithmeticNeg.comp b/Test/spv.subgroupExtendedTypesArithmeticNeg.comp
new file mode 100644
index 0000000..eb22cab
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesArithmeticNeg.comp
@@ -0,0 +1,715 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_arithmetic: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupAdd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupAdd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupAdd(data[3].i8);
+
+ data[invocation].i8.x = subgroupMul(data[0].i8.x);
+ data[invocation].i8.xy = subgroupMul(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz);
+ data[invocation].i8 = subgroupMul(data[3].i8);
+
+ data[invocation].i8.x = subgroupMin(data[0].i8.x);
+ data[invocation].i8.xy = subgroupMin(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz);
+ data[invocation].i8 = subgroupMin(data[3].i8);
+
+ data[invocation].i8.x = subgroupMax(data[0].i8.x);
+ data[invocation].i8.xy = subgroupMax(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz);
+ data[invocation].i8 = subgroupMax(data[3].i8);
+
+ data[invocation].i8.x = subgroupAnd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupAnd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupAnd(data[3].i8);
+
+ data[invocation].i8.x = subgroupOr(data[0].i8.x);
+ data[invocation].i8.xy = subgroupOr(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz);
+ data[invocation].i8 = subgroupOr(data[3].i8);
+
+ data[invocation].i8.x = subgroupXor(data[0].i8.x);
+ data[invocation].i8.xy = subgroupXor(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz);
+ data[invocation].i8 = subgroupXor(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveAdd(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveMul(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveMin(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveMax(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveAnd(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveOr(data[3].i8);
+
+ data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x);
+ data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz);
+ data[invocation].i8 = subgroupInclusiveXor(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveAdd(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveMul(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveMin(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveMax(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveAnd(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveOr(data[3].i8);
+
+ data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x);
+ data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz);
+ data[invocation].i8 = subgroupExclusiveXor(data[3].i8);
+
+ data[invocation].u8.x = subgroupAdd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupAdd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupAdd(data[3].u8);
+
+ data[invocation].u8.x = subgroupMul(data[0].u8.x);
+ data[invocation].u8.xy = subgroupMul(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz);
+ data[invocation].u8 = subgroupMul(data[3].u8);
+
+ data[invocation].u8.x = subgroupMin(data[0].u8.x);
+ data[invocation].u8.xy = subgroupMin(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz);
+ data[invocation].u8 = subgroupMin(data[3].u8);
+
+ data[invocation].u8.x = subgroupMax(data[0].u8.x);
+ data[invocation].u8.xy = subgroupMax(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz);
+ data[invocation].u8 = subgroupMax(data[3].u8);
+
+ data[invocation].u8.x = subgroupAnd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupAnd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupAnd(data[3].u8);
+
+ data[invocation].u8.x = subgroupOr(data[0].u8.x);
+ data[invocation].u8.xy = subgroupOr(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz);
+ data[invocation].u8 = subgroupOr(data[3].u8);
+
+ data[invocation].u8.x = subgroupXor(data[0].u8.x);
+ data[invocation].u8.xy = subgroupXor(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz);
+ data[invocation].u8 = subgroupXor(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveAdd(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveMul(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveMin(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveMax(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveAnd(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveOr(data[3].u8);
+
+ data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x);
+ data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz);
+ data[invocation].u8 = subgroupInclusiveXor(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveAdd(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveMul(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveMin(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveMax(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveAnd(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveOr(data[3].u8);
+
+ data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x);
+ data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz);
+ data[invocation].u8 = subgroupExclusiveXor(data[3].u8);
+
+ data[invocation].i16.x = subgroupAdd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupAdd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupAdd(data[3].i16);
+
+ data[invocation].i16.x = subgroupMul(data[0].i16.x);
+ data[invocation].i16.xy = subgroupMul(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz);
+ data[invocation].i16 = subgroupMul(data[3].i16);
+
+ data[invocation].i16.x = subgroupMin(data[0].i16.x);
+ data[invocation].i16.xy = subgroupMin(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz);
+ data[invocation].i16 = subgroupMin(data[3].i16);
+
+ data[invocation].i16.x = subgroupMax(data[0].i16.x);
+ data[invocation].i16.xy = subgroupMax(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz);
+ data[invocation].i16 = subgroupMax(data[3].i16);
+
+ data[invocation].i16.x = subgroupAnd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupAnd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupAnd(data[3].i16);
+
+ data[invocation].i16.x = subgroupOr(data[0].i16.x);
+ data[invocation].i16.xy = subgroupOr(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz);
+ data[invocation].i16 = subgroupOr(data[3].i16);
+
+ data[invocation].i16.x = subgroupXor(data[0].i16.x);
+ data[invocation].i16.xy = subgroupXor(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz);
+ data[invocation].i16 = subgroupXor(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveAdd(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveMul(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveMin(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveMax(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveAnd(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveOr(data[3].i16);
+
+ data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x);
+ data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz);
+ data[invocation].i16 = subgroupInclusiveXor(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveAdd(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveMul(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveMin(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveMax(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveAnd(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveOr(data[3].i16);
+
+ data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x);
+ data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz);
+ data[invocation].i16 = subgroupExclusiveXor(data[3].i16);
+
+ data[invocation].u16.x = subgroupAdd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupAdd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupAdd(data[3].u16);
+
+ data[invocation].u16.x = subgroupMul(data[0].u16.x);
+ data[invocation].u16.xy = subgroupMul(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz);
+ data[invocation].u16 = subgroupMul(data[3].u16);
+
+ data[invocation].u16.x = subgroupMin(data[0].u16.x);
+ data[invocation].u16.xy = subgroupMin(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz);
+ data[invocation].u16 = subgroupMin(data[3].u16);
+
+ data[invocation].u16.x = subgroupMax(data[0].u16.x);
+ data[invocation].u16.xy = subgroupMax(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz);
+ data[invocation].u16 = subgroupMax(data[3].u16);
+
+ data[invocation].u16.x = subgroupAnd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupAnd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupAnd(data[3].u16);
+
+ data[invocation].u16.x = subgroupOr(data[0].u16.x);
+ data[invocation].u16.xy = subgroupOr(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz);
+ data[invocation].u16 = subgroupOr(data[3].u16);
+
+ data[invocation].u16.x = subgroupXor(data[0].u16.x);
+ data[invocation].u16.xy = subgroupXor(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz);
+ data[invocation].u16 = subgroupXor(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveAdd(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveMul(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveMin(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveMax(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveAnd(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveOr(data[3].u16);
+
+ data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x);
+ data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz);
+ data[invocation].u16 = subgroupInclusiveXor(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveAdd(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveMul(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveMin(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveMax(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveAnd(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveOr(data[3].u16);
+
+ data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x);
+ data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz);
+ data[invocation].u16 = subgroupExclusiveXor(data[3].u16);
+
+ data[invocation].i64.x = subgroupAdd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupAdd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupAdd(data[3].i64);
+
+ data[invocation].i64.x = subgroupMul(data[0].i64.x);
+ data[invocation].i64.xy = subgroupMul(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz);
+ data[invocation].i64 = subgroupMul(data[3].i64);
+
+ data[invocation].i64.x = subgroupMin(data[0].i64.x);
+ data[invocation].i64.xy = subgroupMin(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz);
+ data[invocation].i64 = subgroupMin(data[3].i64);
+
+ data[invocation].i64.x = subgroupMax(data[0].i64.x);
+ data[invocation].i64.xy = subgroupMax(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz);
+ data[invocation].i64 = subgroupMax(data[3].i64);
+
+ data[invocation].i64.x = subgroupAnd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupAnd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupAnd(data[3].i64);
+
+ data[invocation].i64.x = subgroupOr(data[0].i64.x);
+ data[invocation].i64.xy = subgroupOr(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz);
+ data[invocation].i64 = subgroupOr(data[3].i64);
+
+ data[invocation].i64.x = subgroupXor(data[0].i64.x);
+ data[invocation].i64.xy = subgroupXor(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz);
+ data[invocation].i64 = subgroupXor(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveAdd(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveMul(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveMin(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveMax(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveAnd(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveOr(data[3].i64);
+
+ data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x);
+ data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz);
+ data[invocation].i64 = subgroupInclusiveXor(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveAdd(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveMul(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveMin(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveMax(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveAnd(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveOr(data[3].i64);
+
+ data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x);
+ data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz);
+ data[invocation].i64 = subgroupExclusiveXor(data[3].i64);
+
+ data[invocation].u64.x = subgroupAdd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupAdd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupAdd(data[3].u64);
+
+ data[invocation].u64.x = subgroupMul(data[0].u64.x);
+ data[invocation].u64.xy = subgroupMul(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz);
+ data[invocation].u64 = subgroupMul(data[3].u64);
+
+ data[invocation].u64.x = subgroupMin(data[0].u64.x);
+ data[invocation].u64.xy = subgroupMin(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz);
+ data[invocation].u64 = subgroupMin(data[3].u64);
+
+ data[invocation].u64.x = subgroupMax(data[0].u64.x);
+ data[invocation].u64.xy = subgroupMax(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz);
+ data[invocation].u64 = subgroupMax(data[3].u64);
+
+ data[invocation].u64.x = subgroupAnd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupAnd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupAnd(data[3].u64);
+
+ data[invocation].u64.x = subgroupOr(data[0].u64.x);
+ data[invocation].u64.xy = subgroupOr(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz);
+ data[invocation].u64 = subgroupOr(data[3].u64);
+
+ data[invocation].u64.x = subgroupXor(data[0].u64.x);
+ data[invocation].u64.xy = subgroupXor(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz);
+ data[invocation].u64 = subgroupXor(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveAdd(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveMul(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveMin(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveMax(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveAnd(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveOr(data[3].u64);
+
+ data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x);
+ data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz);
+ data[invocation].u64 = subgroupInclusiveXor(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveAdd(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveMul(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveMin(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveMax(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveAnd(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveOr(data[3].u64);
+
+ data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x);
+ data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz);
+ data[invocation].u64 = subgroupExclusiveXor(data[3].u64);
+
+ data[invocation].f16.x = subgroupAdd(data[0].f16.x);
+ data[invocation].f16.xy = subgroupAdd(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz);
+ data[invocation].f16 = subgroupAdd(data[3].f16);
+
+ data[invocation].f16.x = subgroupMul(data[0].f16.x);
+ data[invocation].f16.xy = subgroupMul(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz);
+ data[invocation].f16 = subgroupMul(data[3].f16);
+
+ data[invocation].f16.x = subgroupMin(data[0].f16.x);
+ data[invocation].f16.xy = subgroupMin(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz);
+ data[invocation].f16 = subgroupMin(data[3].f16);
+
+ data[invocation].f16.x = subgroupMax(data[0].f16.x);
+ data[invocation].f16.xy = subgroupMax(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz);
+ data[invocation].f16 = subgroupMax(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveAdd(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveMul(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveMin(data[3].f16);
+
+ data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x);
+ data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz);
+ data[invocation].f16 = subgroupInclusiveMax(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveAdd(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveMul(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveMin(data[3].f16);
+
+ data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x);
+ data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz);
+ data[invocation].f16 = subgroupExclusiveMax(data[3].f16);
+}
diff --git a/Test/spv.subgroupExtendedTypesBallot.comp b/Test/spv.subgroupExtendedTypesBallot.comp
new file mode 100644
index 0000000..22d29cb
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesBallot.comp
@@ -0,0 +1,88 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_ballot: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3);
+ data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3);
+ data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3);
+ data[invocation].i8 = subgroupBroadcast(data[3].i8, 3);
+ data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x);
+ data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz);
+ data[invocation].i8 = subgroupBroadcastFirst(data[3].i8);
+
+ data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3);
+ data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3);
+ data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3);
+ data[invocation].u8 = subgroupBroadcast(data[3].u8, 3);
+ data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x);
+ data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz);
+ data[invocation].u8 = subgroupBroadcastFirst(data[3].u8);
+
+ data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3);
+ data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3);
+ data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3);
+ data[invocation].i16 = subgroupBroadcast(data[3].i16, 3);
+ data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x);
+ data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz);
+ data[invocation].i16 = subgroupBroadcastFirst(data[3].i16);
+
+ data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3);
+ data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3);
+ data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3);
+ data[invocation].u16 = subgroupBroadcast(data[3].u16, 3);
+ data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x);
+ data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz);
+ data[invocation].u16 = subgroupBroadcastFirst(data[3].u16);
+
+ data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3);
+ data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3);
+ data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3);
+ data[invocation].i64 = subgroupBroadcast(data[3].i64, 3);
+ data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x);
+ data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz);
+ data[invocation].i64 = subgroupBroadcastFirst(data[3].i64);
+
+ data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3);
+ data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3);
+ data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3);
+ data[invocation].u64 = subgroupBroadcast(data[3].u64, 3);
+ data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x);
+ data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz);
+ data[invocation].u64 = subgroupBroadcastFirst(data[3].u64);
+
+ data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3);
+ data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3);
+ data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3);
+ data[invocation].f16 = subgroupBroadcast(data[3].f16, 3);
+ data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x);
+ data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz);
+ data[invocation].f16 = subgroupBroadcastFirst(data[3].f16);
+}
diff --git a/Test/spv.subgroupExtendedTypesBallotNeg.comp b/Test/spv.subgroupExtendedTypesBallotNeg.comp
new file mode 100644
index 0000000..240ab59
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesBallotNeg.comp
@@ -0,0 +1,88 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_ballot: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3);
+ data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3);
+ data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3);
+ data[invocation].i8 = subgroupBroadcast(data[3].i8, 3);
+ data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x);
+ data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz);
+ data[invocation].i8 = subgroupBroadcastFirst(data[3].i8);
+
+ data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3);
+ data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3);
+ data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3);
+ data[invocation].u8 = subgroupBroadcast(data[3].u8, 3);
+ data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x);
+ data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz);
+ data[invocation].u8 = subgroupBroadcastFirst(data[3].u8);
+
+ data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3);
+ data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3);
+ data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3);
+ data[invocation].i16 = subgroupBroadcast(data[3].i16, 3);
+ data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x);
+ data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz);
+ data[invocation].i16 = subgroupBroadcastFirst(data[3].i16);
+
+ data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3);
+ data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3);
+ data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3);
+ data[invocation].u16 = subgroupBroadcast(data[3].u16, 3);
+ data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x);
+ data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz);
+ data[invocation].u16 = subgroupBroadcastFirst(data[3].u16);
+
+ data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3);
+ data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3);
+ data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3);
+ data[invocation].i64 = subgroupBroadcast(data[3].i64, 3);
+ data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x);
+ data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz);
+ data[invocation].i64 = subgroupBroadcastFirst(data[3].i64);
+
+ data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3);
+ data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3);
+ data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3);
+ data[invocation].u64 = subgroupBroadcast(data[3].u64, 3);
+ data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x);
+ data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz);
+ data[invocation].u64 = subgroupBroadcastFirst(data[3].u64);
+
+ data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3);
+ data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3);
+ data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3);
+ data[invocation].f16 = subgroupBroadcast(data[3].f16, 3);
+ data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x);
+ data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz);
+ data[invocation].f16 = subgroupBroadcastFirst(data[3].f16);
+}
diff --git a/Test/spv.subgroupExtendedTypesClustered.comp b/Test/spv.subgroupExtendedTypesClustered.comp
new file mode 100644
index 0000000..a215cbf
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesClustered.comp
@@ -0,0 +1,255 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_clustered: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1);
+
+ data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1);
+
+ data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1);
+
+ data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1);
+
+ data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1);
+
+ data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1);
+
+ data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1);
+}
diff --git a/Test/spv.subgroupExtendedTypesClusteredNeg.comp b/Test/spv.subgroupExtendedTypesClusteredNeg.comp
new file mode 100644
index 0000000..d521511
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesClusteredNeg.comp
@@ -0,0 +1,255 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_clustered: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1);
+
+ data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1);
+
+ data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1);
+
+ data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1);
+
+ data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1);
+
+ data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1);
+
+ data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1);
+}
diff --git a/Test/spv.subgroupExtendedTypesPartitioned.comp b/Test/spv.subgroupExtendedTypesPartitioned.comp
new file mode 100644
index 0000000..382a5b3
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesPartitioned.comp
@@ -0,0 +1,291 @@
+#version 450
+
+#extension GL_NV_shader_subgroup_partitioned: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ uvec4 ballot;
+ ballot = subgroupPartitionNV(data[0].i8.x);
+ ballot = subgroupPartitionNV(data[1].i8.xy);
+ ballot = subgroupPartitionNV(data[2].i8.xyz);
+ ballot = subgroupPartitionNV(data[3].i8);
+
+ ballot = subgroupPartitionNV(data[0].u8.x);
+ ballot = subgroupPartitionNV(data[1].u8.xy);
+ ballot = subgroupPartitionNV(data[2].u8.xyz);
+ ballot = subgroupPartitionNV(data[3].u8);
+
+ ballot = subgroupPartitionNV(data[0].i16.x);
+ ballot = subgroupPartitionNV(data[1].i16.xy);
+ ballot = subgroupPartitionNV(data[2].i16.xyz);
+ ballot = subgroupPartitionNV(data[3].i16);
+
+ ballot = subgroupPartitionNV(data[0].u16.x);
+ ballot = subgroupPartitionNV(data[1].u16.xy);
+ ballot = subgroupPartitionNV(data[2].u16.xyz);
+ ballot = subgroupPartitionNV(data[3].u16);
+
+ ballot = subgroupPartitionNV(data[0].i64.x);
+ ballot = subgroupPartitionNV(data[1].i64.xy);
+ ballot = subgroupPartitionNV(data[2].i64.xyz);
+ ballot = subgroupPartitionNV(data[3].i64);
+
+ ballot = subgroupPartitionNV(data[0].u64.x);
+ ballot = subgroupPartitionNV(data[1].u64.xy);
+ ballot = subgroupPartitionNV(data[2].u64.xyz);
+ ballot = subgroupPartitionNV(data[3].u64);
+
+ ballot = subgroupPartitionNV(data[0].f16.x);
+ ballot = subgroupPartitionNV(data[1].f16.xy);
+ ballot = subgroupPartitionNV(data[2].f16.xyz);
+ ballot = subgroupPartitionNV(data[3].f16);
+
+ data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot);
+}
diff --git a/Test/spv.subgroupExtendedTypesPartitionedNeg.comp b/Test/spv.subgroupExtendedTypesPartitionedNeg.comp
new file mode 100644
index 0000000..ad94e35
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesPartitionedNeg.comp
@@ -0,0 +1,291 @@
+#version 450
+
+#extension GL_NV_shader_subgroup_partitioned: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ uvec4 ballot;
+ ballot = subgroupPartitionNV(data[0].i8.x);
+ ballot = subgroupPartitionNV(data[1].i8.xy);
+ ballot = subgroupPartitionNV(data[2].i8.xyz);
+ ballot = subgroupPartitionNV(data[3].i8);
+
+ ballot = subgroupPartitionNV(data[0].u8.x);
+ ballot = subgroupPartitionNV(data[1].u8.xy);
+ ballot = subgroupPartitionNV(data[2].u8.xyz);
+ ballot = subgroupPartitionNV(data[3].u8);
+
+ ballot = subgroupPartitionNV(data[0].i16.x);
+ ballot = subgroupPartitionNV(data[1].i16.xy);
+ ballot = subgroupPartitionNV(data[2].i16.xyz);
+ ballot = subgroupPartitionNV(data[3].i16);
+
+ ballot = subgroupPartitionNV(data[0].u16.x);
+ ballot = subgroupPartitionNV(data[1].u16.xy);
+ ballot = subgroupPartitionNV(data[2].u16.xyz);
+ ballot = subgroupPartitionNV(data[3].u16);
+
+ ballot = subgroupPartitionNV(data[0].i64.x);
+ ballot = subgroupPartitionNV(data[1].i64.xy);
+ ballot = subgroupPartitionNV(data[2].i64.xyz);
+ ballot = subgroupPartitionNV(data[3].i64);
+
+ ballot = subgroupPartitionNV(data[0].u64.x);
+ ballot = subgroupPartitionNV(data[1].u64.xy);
+ ballot = subgroupPartitionNV(data[2].u64.xyz);
+ ballot = subgroupPartitionNV(data[3].u64);
+
+ ballot = subgroupPartitionNV(data[0].f16.x);
+ ballot = subgroupPartitionNV(data[1].f16.xy);
+ ballot = subgroupPartitionNV(data[2].f16.xyz);
+ ballot = subgroupPartitionNV(data[3].f16);
+
+ data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot);
+
+ data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot);
+ data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot);
+ data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot);
+ data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot);
+
+ data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot);
+ data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot);
+ data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot);
+ data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot);
+
+ data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot);
+ data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot);
+ data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot);
+ data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot);
+
+ data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot);
+ data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot);
+ data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot);
+ data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot);
+
+ data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot);
+ data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot);
+ data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot);
+ data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot);
+
+ data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot);
+ data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot);
+ data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot);
+ data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot);
+
+ data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot);
+ data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot);
+ data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot);
+ data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot);
+}
diff --git a/Test/spv.subgroupExtendedTypesQuad.comp b/Test/spv.subgroupExtendedTypesQuad.comp
new file mode 100644
index 0000000..1ef2ecf
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesQuad.comp
@@ -0,0 +1,165 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_quad: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x);
+ data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz);
+ data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8);
+
+ data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x);
+ data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz);
+ data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8);
+
+ data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x);
+ data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz);
+ data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8);
+
+ data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x);
+ data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz);
+ data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8);
+
+ data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x);
+ data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz);
+ data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8);
+
+ data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x);
+ data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz);
+ data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8);
+
+ data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x);
+ data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz);
+ data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16);
+
+ data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x);
+ data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz);
+ data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16);
+
+ data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x);
+ data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz);
+ data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16);
+
+ data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x);
+ data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz);
+ data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16);
+
+ data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x);
+ data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz);
+ data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16);
+
+ data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x);
+ data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz);
+ data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16);
+
+ data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x);
+ data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz);
+ data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64);
+
+ data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x);
+ data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz);
+ data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64);
+
+ data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x);
+ data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz);
+ data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64);
+
+ data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x);
+ data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz);
+ data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64);
+
+ data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x);
+ data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz);
+ data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64);
+
+ data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x);
+ data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz);
+ data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64);
+
+ data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x);
+ data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz);
+ data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16);
+
+ data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x);
+ data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz);
+ data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16);
+
+ data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x);
+ data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz);
+ data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16);
+}
diff --git a/Test/spv.subgroupExtendedTypesQuadNeg.comp b/Test/spv.subgroupExtendedTypesQuadNeg.comp
new file mode 100644
index 0000000..0724776
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesQuadNeg.comp
@@ -0,0 +1,165 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_quad: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1);
+ data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1);
+ data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1);
+ data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1);
+
+ data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x);
+ data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz);
+ data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8);
+
+ data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x);
+ data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz);
+ data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8);
+
+ data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x);
+ data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy);
+ data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz);
+ data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8);
+
+ data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1);
+ data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1);
+ data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1);
+ data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1);
+
+ data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x);
+ data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz);
+ data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8);
+
+ data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x);
+ data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz);
+ data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8);
+
+ data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x);
+ data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy);
+ data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz);
+ data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8);
+
+ data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1);
+ data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1);
+ data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1);
+ data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1);
+
+ data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x);
+ data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz);
+ data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16);
+
+ data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x);
+ data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz);
+ data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16);
+
+ data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x);
+ data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy);
+ data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz);
+ data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16);
+
+ data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1);
+ data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1);
+ data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1);
+ data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1);
+
+ data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x);
+ data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz);
+ data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16);
+
+ data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x);
+ data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz);
+ data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16);
+
+ data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x);
+ data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy);
+ data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz);
+ data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16);
+
+ data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1);
+ data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1);
+ data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1);
+ data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1);
+
+ data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x);
+ data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz);
+ data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64);
+
+ data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x);
+ data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz);
+ data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64);
+
+ data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x);
+ data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy);
+ data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz);
+ data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64);
+
+ data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1);
+ data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1);
+ data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1);
+ data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1);
+
+ data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x);
+ data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz);
+ data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64);
+
+ data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x);
+ data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz);
+ data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64);
+
+ data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x);
+ data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy);
+ data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz);
+ data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64);
+
+ data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1);
+ data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1);
+ data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1);
+ data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1);
+
+ data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x);
+ data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz);
+ data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16);
+
+ data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x);
+ data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz);
+ data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16);
+
+ data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x);
+ data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy);
+ data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz);
+ data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16);
+}
diff --git a/Test/spv.subgroupExtendedTypesShuffle.comp b/Test/spv.subgroupExtendedTypesShuffle.comp
new file mode 100644
index 0000000..de733e6
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesShuffle.comp
@@ -0,0 +1,95 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_shuffle: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffle(data[3].i8, invocation);
+
+ data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation);
+
+ data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffle(data[3].u8, invocation);
+
+ data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation);
+
+ data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffle(data[3].i16, invocation);
+
+ data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation);
+
+ data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffle(data[3].u16, invocation);
+
+ data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation);
+
+ data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffle(data[3].i64, invocation);
+
+ data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation);
+
+ data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffle(data[3].u64, invocation);
+
+ data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation);
+
+ data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffle(data[3].f16, invocation);
+
+ data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation);
+}
diff --git a/Test/spv.subgroupExtendedTypesShuffleNeg.comp b/Test/spv.subgroupExtendedTypesShuffleNeg.comp
new file mode 100644
index 0000000..af73b54
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesShuffleNeg.comp
@@ -0,0 +1,95 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_shuffle: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffle(data[3].i8, invocation);
+
+ data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation);
+
+ data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffle(data[3].u8, invocation);
+
+ data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation);
+
+ data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffle(data[3].i16, invocation);
+
+ data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation);
+
+ data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffle(data[3].u16, invocation);
+
+ data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation);
+
+ data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffle(data[3].i64, invocation);
+
+ data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation);
+
+ data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffle(data[3].u64, invocation);
+
+ data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation);
+
+ data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffle(data[3].f16, invocation);
+
+ data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation);
+}
diff --git a/Test/spv.subgroupExtendedTypesShuffleRelative.comp b/Test/spv.subgroupExtendedTypesShuffleRelative.comp
new file mode 100644
index 0000000..73f5970
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesShuffleRelative.comp
@@ -0,0 +1,95 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_shuffle_relative: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation);
+
+ data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation);
+
+ data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation);
+
+ data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation);
+
+ data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation);
+
+ data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation);
+
+ data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation);
+
+ data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation);
+
+ data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation);
+
+ data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation);
+
+ data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation);
+
+ data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation);
+
+ data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation);
+
+ data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation);
+}
diff --git a/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp b/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp
new file mode 100644
index 0000000..9857444
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp
@@ -0,0 +1,95 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_shuffle_relative: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation);
+
+ data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation);
+ data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation);
+ data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation);
+ data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation);
+
+ data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation);
+
+ data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation);
+ data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation);
+ data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation);
+ data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation);
+
+ data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation);
+
+ data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation);
+ data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation);
+ data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation);
+ data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation);
+
+ data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation);
+
+ data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation);
+ data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation);
+ data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation);
+ data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation);
+
+ data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation);
+
+ data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation);
+ data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation);
+ data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation);
+ data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation);
+
+ data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation);
+
+ data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation);
+ data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation);
+ data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation);
+ data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation);
+
+ data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation);
+
+ data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation);
+ data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation);
+ data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation);
+ data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation);
+}
diff --git a/Test/spv.subgroupExtendedTypesVote.comp b/Test/spv.subgroupExtendedTypesVote.comp
new file mode 100644
index 0000000..960156a
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesVote.comp
@@ -0,0 +1,66 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_vote: enable
+#extension GL_EXT_shader_subgroup_extended_types_int8: enable
+#extension GL_EXT_shader_subgroup_extended_types_int16: enable
+#extension GL_EXT_shader_subgroup_extended_types_int64: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+ int r;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ if (subgroupAll(data[invocation].r < 0))
+ {
+ data[invocation].r = int(subgroupAllEqual(data[0].i8.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i8.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i8));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u8.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u8.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u8));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].i16.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i16.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i16));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u16.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u16.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u16));
+ }
+ else if (subgroupAny(data[invocation].r < 0))
+ {
+ data[invocation].r = int(subgroupAllEqual(data[0].i64.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i64.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i64));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u64.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u64.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u64));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].f16.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].f16.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].f16));
+ }
+}
diff --git a/Test/spv.subgroupExtendedTypesVoteNeg.comp b/Test/spv.subgroupExtendedTypesVoteNeg.comp
new file mode 100644
index 0000000..be8d1bb
--- /dev/null
+++ b/Test/spv.subgroupExtendedTypesVoteNeg.comp
@@ -0,0 +1,66 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_vote: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ i8vec4 i8;
+ u8vec4 u8;
+ i16vec4 i16;
+ u16vec4 u16;
+ i64vec4 i64;
+ u64vec4 u64;
+ f16vec4 f16;
+ int r;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ if (subgroupAll(data[invocation].r < 0))
+ {
+ data[invocation].r = int(subgroupAllEqual(data[0].i8.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i8.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i8));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u8.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u8.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u8));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].i16.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i16.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i16));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u16.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u16.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u16));
+ }
+ else if (subgroupAny(data[invocation].r < 0))
+ {
+ data[invocation].r = int(subgroupAllEqual(data[0].i64.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i64.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i64));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u64.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u64.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u64));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].f16.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].f16.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].f16));
+ }
+}
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 48e983a..2344d36 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1743,58 +1743,6 @@
"bool subgroupAll(bool);\n"
"bool subgroupAny(bool);\n"
-
- "bool subgroupAllEqual(float);\n"
- "bool subgroupAllEqual(vec2);\n"
- "bool subgroupAllEqual(vec3);\n"
- "bool subgroupAllEqual(vec4);\n"
- "bool subgroupAllEqual(int);\n"
- "bool subgroupAllEqual(ivec2);\n"
- "bool subgroupAllEqual(ivec3);\n"
- "bool subgroupAllEqual(ivec4);\n"
- "bool subgroupAllEqual(uint);\n"
- "bool subgroupAllEqual(uvec2);\n"
- "bool subgroupAllEqual(uvec3);\n"
- "bool subgroupAllEqual(uvec4);\n"
- "bool subgroupAllEqual(bool);\n"
- "bool subgroupAllEqual(bvec2);\n"
- "bool subgroupAllEqual(bvec3);\n"
- "bool subgroupAllEqual(bvec4);\n"
-
- "float subgroupBroadcast(float, uint);\n"
- "vec2 subgroupBroadcast(vec2, uint);\n"
- "vec3 subgroupBroadcast(vec3, uint);\n"
- "vec4 subgroupBroadcast(vec4, uint);\n"
- "int subgroupBroadcast(int, uint);\n"
- "ivec2 subgroupBroadcast(ivec2, uint);\n"
- "ivec3 subgroupBroadcast(ivec3, uint);\n"
- "ivec4 subgroupBroadcast(ivec4, uint);\n"
- "uint subgroupBroadcast(uint, uint);\n"
- "uvec2 subgroupBroadcast(uvec2, uint);\n"
- "uvec3 subgroupBroadcast(uvec3, uint);\n"
- "uvec4 subgroupBroadcast(uvec4, uint);\n"
- "bool subgroupBroadcast(bool, uint);\n"
- "bvec2 subgroupBroadcast(bvec2, uint);\n"
- "bvec3 subgroupBroadcast(bvec3, uint);\n"
- "bvec4 subgroupBroadcast(bvec4, uint);\n"
-
- "float subgroupBroadcastFirst(float);\n"
- "vec2 subgroupBroadcastFirst(vec2);\n"
- "vec3 subgroupBroadcastFirst(vec3);\n"
- "vec4 subgroupBroadcastFirst(vec4);\n"
- "int subgroupBroadcastFirst(int);\n"
- "ivec2 subgroupBroadcastFirst(ivec2);\n"
- "ivec3 subgroupBroadcastFirst(ivec3);\n"
- "ivec4 subgroupBroadcastFirst(ivec4);\n"
- "uint subgroupBroadcastFirst(uint);\n"
- "uvec2 subgroupBroadcastFirst(uvec2);\n"
- "uvec3 subgroupBroadcastFirst(uvec3);\n"
- "uvec4 subgroupBroadcastFirst(uvec4);\n"
- "bool subgroupBroadcastFirst(bool);\n"
- "bvec2 subgroupBroadcastFirst(bvec2);\n"
- "bvec3 subgroupBroadcastFirst(bvec3);\n"
- "bvec4 subgroupBroadcastFirst(bvec4);\n"
-
"uvec4 subgroupBallot(bool);\n"
"bool subgroupInverseBallot(uvec4);\n"
"bool subgroupBallotBitExtract(uvec4, uint);\n"
@@ -1803,1002 +1751,130 @@
"uint subgroupBallotExclusiveBitCount(uvec4);\n"
"uint subgroupBallotFindLSB(uvec4);\n"
"uint subgroupBallotFindMSB(uvec4);\n"
+ );
- "float subgroupShuffle(float, uint);\n"
- "vec2 subgroupShuffle(vec2, uint);\n"
- "vec3 subgroupShuffle(vec3, uint);\n"
- "vec4 subgroupShuffle(vec4, uint);\n"
- "int subgroupShuffle(int, uint);\n"
- "ivec2 subgroupShuffle(ivec2, uint);\n"
- "ivec3 subgroupShuffle(ivec3, uint);\n"
- "ivec4 subgroupShuffle(ivec4, uint);\n"
- "uint subgroupShuffle(uint, uint);\n"
- "uvec2 subgroupShuffle(uvec2, uint);\n"
- "uvec3 subgroupShuffle(uvec3, uint);\n"
- "uvec4 subgroupShuffle(uvec4, uint);\n"
- "bool subgroupShuffle(bool, uint);\n"
- "bvec2 subgroupShuffle(bvec2, uint);\n"
- "bvec3 subgroupShuffle(bvec3, uint);\n"
- "bvec4 subgroupShuffle(bvec4, uint);\n"
+ // Generate all flavors of subgroup ops.
+ static const char *subgroupOps[] =
+ {
+ "bool subgroupAllEqual(%s);\n",
+ "%s subgroupBroadcast(%s, uint);\n",
+ "%s subgroupBroadcastFirst(%s);\n",
+ "%s subgroupShuffle(%s, uint);\n",
+ "%s subgroupShuffleXor(%s, uint);\n",
+ "%s subgroupShuffleUp(%s, uint delta);\n",
+ "%s subgroupShuffleDown(%s, uint delta);\n",
+ "%s subgroupAdd(%s);\n",
+ "%s subgroupMul(%s);\n",
+ "%s subgroupMin(%s);\n",
+ "%s subgroupMax(%s);\n",
+ "%s subgroupAnd(%s);\n",
+ "%s subgroupOr(%s);\n",
+ "%s subgroupXor(%s);\n",
+ "%s subgroupInclusiveAdd(%s);\n",
+ "%s subgroupInclusiveMul(%s);\n",
+ "%s subgroupInclusiveMin(%s);\n",
+ "%s subgroupInclusiveMax(%s);\n",
+ "%s subgroupInclusiveAnd(%s);\n",
+ "%s subgroupInclusiveOr(%s);\n",
+ "%s subgroupInclusiveXor(%s);\n",
+ "%s subgroupExclusiveAdd(%s);\n",
+ "%s subgroupExclusiveMul(%s);\n",
+ "%s subgroupExclusiveMin(%s);\n",
+ "%s subgroupExclusiveMax(%s);\n",
+ "%s subgroupExclusiveAnd(%s);\n",
+ "%s subgroupExclusiveOr(%s);\n",
+ "%s subgroupExclusiveXor(%s);\n",
+ "%s subgroupClusteredAdd(%s, uint);\n",
+ "%s subgroupClusteredMul(%s, uint);\n",
+ "%s subgroupClusteredMin(%s, uint);\n",
+ "%s subgroupClusteredMax(%s, uint);\n",
+ "%s subgroupClusteredAnd(%s, uint);\n",
+ "%s subgroupClusteredOr(%s, uint);\n",
+ "%s subgroupClusteredXor(%s, uint);\n",
+ "%s subgroupQuadBroadcast(%s, uint);\n",
+ "%s subgroupQuadSwapHorizontal(%s);\n",
+ "%s subgroupQuadSwapVertical(%s);\n",
+ "%s subgroupQuadSwapDiagonal(%s);\n",
+ "uvec4 subgroupPartitionNV(%s);\n",
+ "%s subgroupPartitionedAddNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedMulNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedMinNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedMaxNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedAndNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedOrNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedXorNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveAddNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveMulNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveMinNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveMaxNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveAndNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveOrNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedInclusiveXorNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveAddNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveMulNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveMinNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveMaxNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveAndNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveOrNV(%s, uvec4 ballot);\n",
+ "%s subgroupPartitionedExclusiveXorNV(%s, uvec4 ballot);\n",
+ };
- "float subgroupShuffleXor(float, uint);\n"
- "vec2 subgroupShuffleXor(vec2, uint);\n"
- "vec3 subgroupShuffleXor(vec3, uint);\n"
- "vec4 subgroupShuffleXor(vec4, uint);\n"
- "int subgroupShuffleXor(int, uint);\n"
- "ivec2 subgroupShuffleXor(ivec2, uint);\n"
- "ivec3 subgroupShuffleXor(ivec3, uint);\n"
- "ivec4 subgroupShuffleXor(ivec4, uint);\n"
- "uint subgroupShuffleXor(uint, uint);\n"
- "uvec2 subgroupShuffleXor(uvec2, uint);\n"
- "uvec3 subgroupShuffleXor(uvec3, uint);\n"
- "uvec4 subgroupShuffleXor(uvec4, uint);\n"
- "bool subgroupShuffleXor(bool, uint);\n"
- "bvec2 subgroupShuffleXor(bvec2, uint);\n"
- "bvec3 subgroupShuffleXor(bvec3, uint);\n"
- "bvec4 subgroupShuffleXor(bvec4, uint);\n"
+ static const char *floatTypes[] = {
+ "float", "vec2", "vec3", "vec4",
+ "float16_t", "f16vec2", "f16vec3", "f16vec4",
+ };
+ static const char *doubleTypes[] = {
+ "double", "dvec2", "dvec3", "dvec4",
+ };
+ static const char *intTypes[] = {
+ "int8_t", "i8vec2", "i8vec3", "i8vec4",
+ "int16_t", "i16vec2", "i16vec3", "i16vec4",
+ "int", "ivec2", "ivec3", "ivec4",
+ "int64_t", "i64vec2", "i64vec3", "i64vec4",
+ "uint8_t", "u8vec2", "u8vec3", "u8vec4",
+ "uint16_t", "u16vec2", "u16vec3", "u16vec4",
+ "uint", "uvec2", "uvec3", "uvec4",
+ "uint64_t", "u64vec2", "u64vec3", "u64vec4",
+ };
+ static const char *boolTypes[] = {
+ "bool", "bvec2", "bvec3", "bvec4",
+ };
- "float subgroupShuffleUp(float, uint delta);\n"
- "vec2 subgroupShuffleUp(vec2, uint delta);\n"
- "vec3 subgroupShuffleUp(vec3, uint delta);\n"
- "vec4 subgroupShuffleUp(vec4, uint delta);\n"
- "int subgroupShuffleUp(int, uint delta);\n"
- "ivec2 subgroupShuffleUp(ivec2, uint delta);\n"
- "ivec3 subgroupShuffleUp(ivec3, uint delta);\n"
- "ivec4 subgroupShuffleUp(ivec4, uint delta);\n"
- "uint subgroupShuffleUp(uint, uint delta);\n"
- "uvec2 subgroupShuffleUp(uvec2, uint delta);\n"
- "uvec3 subgroupShuffleUp(uvec3, uint delta);\n"
- "uvec4 subgroupShuffleUp(uvec4, uint delta);\n"
- "bool subgroupShuffleUp(bool, uint delta);\n"
- "bvec2 subgroupShuffleUp(bvec2, uint delta);\n"
- "bvec3 subgroupShuffleUp(bvec3, uint delta);\n"
- "bvec4 subgroupShuffleUp(bvec4, uint delta);\n"
+ for (size_t i = 0; i < sizeof(subgroupOps)/sizeof(subgroupOps[0]); ++i) {
+ const char *op = subgroupOps[i];
- "float subgroupShuffleDown(float, uint delta);\n"
- "vec2 subgroupShuffleDown(vec2, uint delta);\n"
- "vec3 subgroupShuffleDown(vec3, uint delta);\n"
- "vec4 subgroupShuffleDown(vec4, uint delta);\n"
- "int subgroupShuffleDown(int, uint delta);\n"
- "ivec2 subgroupShuffleDown(ivec2, uint delta);\n"
- "ivec3 subgroupShuffleDown(ivec3, uint delta);\n"
- "ivec4 subgroupShuffleDown(ivec4, uint delta);\n"
- "uint subgroupShuffleDown(uint, uint delta);\n"
- "uvec2 subgroupShuffleDown(uvec2, uint delta);\n"
- "uvec3 subgroupShuffleDown(uvec3, uint delta);\n"
- "uvec4 subgroupShuffleDown(uvec4, uint delta);\n"
- "bool subgroupShuffleDown(bool, uint delta);\n"
- "bvec2 subgroupShuffleDown(bvec2, uint delta);\n"
- "bvec3 subgroupShuffleDown(bvec3, uint delta);\n"
- "bvec4 subgroupShuffleDown(bvec4, uint delta);\n"
+ // Logical operations don't support float
+ bool logicalOp = strstr(op, "Or") || strstr(op, "And") ||
+ (strstr(op, "Xor") && !strstr(op, "ShuffleXor"));
+ // Math operations don't support bool
+ bool mathOp = strstr(op, "Add") || strstr(op, "Mul") || strstr(op, "Min") || strstr(op, "Max");
- "float subgroupAdd(float);\n"
- "vec2 subgroupAdd(vec2);\n"
- "vec3 subgroupAdd(vec3);\n"
- "vec4 subgroupAdd(vec4);\n"
- "int subgroupAdd(int);\n"
- "ivec2 subgroupAdd(ivec2);\n"
- "ivec3 subgroupAdd(ivec3);\n"
- "ivec4 subgroupAdd(ivec4);\n"
- "uint subgroupAdd(uint);\n"
- "uvec2 subgroupAdd(uvec2);\n"
- "uvec3 subgroupAdd(uvec3);\n"
- "uvec4 subgroupAdd(uvec4);\n"
+ const int bufSize = 256;
+ char buf[bufSize];
- "float subgroupMul(float);\n"
- "vec2 subgroupMul(vec2);\n"
- "vec3 subgroupMul(vec3);\n"
- "vec4 subgroupMul(vec4);\n"
- "int subgroupMul(int);\n"
- "ivec2 subgroupMul(ivec2);\n"
- "ivec3 subgroupMul(ivec3);\n"
- "ivec4 subgroupMul(ivec4);\n"
- "uint subgroupMul(uint);\n"
- "uvec2 subgroupMul(uvec2);\n"
- "uvec3 subgroupMul(uvec3);\n"
- "uvec4 subgroupMul(uvec4);\n"
-
- "float subgroupMin(float);\n"
- "vec2 subgroupMin(vec2);\n"
- "vec3 subgroupMin(vec3);\n"
- "vec4 subgroupMin(vec4);\n"
- "int subgroupMin(int);\n"
- "ivec2 subgroupMin(ivec2);\n"
- "ivec3 subgroupMin(ivec3);\n"
- "ivec4 subgroupMin(ivec4);\n"
- "uint subgroupMin(uint);\n"
- "uvec2 subgroupMin(uvec2);\n"
- "uvec3 subgroupMin(uvec3);\n"
- "uvec4 subgroupMin(uvec4);\n"
-
- "float subgroupMax(float);\n"
- "vec2 subgroupMax(vec2);\n"
- "vec3 subgroupMax(vec3);\n"
- "vec4 subgroupMax(vec4);\n"
- "int subgroupMax(int);\n"
- "ivec2 subgroupMax(ivec2);\n"
- "ivec3 subgroupMax(ivec3);\n"
- "ivec4 subgroupMax(ivec4);\n"
- "uint subgroupMax(uint);\n"
- "uvec2 subgroupMax(uvec2);\n"
- "uvec3 subgroupMax(uvec3);\n"
- "uvec4 subgroupMax(uvec4);\n"
-
- "int subgroupAnd(int);\n"
- "ivec2 subgroupAnd(ivec2);\n"
- "ivec3 subgroupAnd(ivec3);\n"
- "ivec4 subgroupAnd(ivec4);\n"
- "uint subgroupAnd(uint);\n"
- "uvec2 subgroupAnd(uvec2);\n"
- "uvec3 subgroupAnd(uvec3);\n"
- "uvec4 subgroupAnd(uvec4);\n"
- "bool subgroupAnd(bool);\n"
- "bvec2 subgroupAnd(bvec2);\n"
- "bvec3 subgroupAnd(bvec3);\n"
- "bvec4 subgroupAnd(bvec4);\n"
-
- "int subgroupOr(int);\n"
- "ivec2 subgroupOr(ivec2);\n"
- "ivec3 subgroupOr(ivec3);\n"
- "ivec4 subgroupOr(ivec4);\n"
- "uint subgroupOr(uint);\n"
- "uvec2 subgroupOr(uvec2);\n"
- "uvec3 subgroupOr(uvec3);\n"
- "uvec4 subgroupOr(uvec4);\n"
- "bool subgroupOr(bool);\n"
- "bvec2 subgroupOr(bvec2);\n"
- "bvec3 subgroupOr(bvec3);\n"
- "bvec4 subgroupOr(bvec4);\n"
-
- "int subgroupXor(int);\n"
- "ivec2 subgroupXor(ivec2);\n"
- "ivec3 subgroupXor(ivec3);\n"
- "ivec4 subgroupXor(ivec4);\n"
- "uint subgroupXor(uint);\n"
- "uvec2 subgroupXor(uvec2);\n"
- "uvec3 subgroupXor(uvec3);\n"
- "uvec4 subgroupXor(uvec4);\n"
- "bool subgroupXor(bool);\n"
- "bvec2 subgroupXor(bvec2);\n"
- "bvec3 subgroupXor(bvec3);\n"
- "bvec4 subgroupXor(bvec4);\n"
-
- "float subgroupInclusiveAdd(float);\n"
- "vec2 subgroupInclusiveAdd(vec2);\n"
- "vec3 subgroupInclusiveAdd(vec3);\n"
- "vec4 subgroupInclusiveAdd(vec4);\n"
- "int subgroupInclusiveAdd(int);\n"
- "ivec2 subgroupInclusiveAdd(ivec2);\n"
- "ivec3 subgroupInclusiveAdd(ivec3);\n"
- "ivec4 subgroupInclusiveAdd(ivec4);\n"
- "uint subgroupInclusiveAdd(uint);\n"
- "uvec2 subgroupInclusiveAdd(uvec2);\n"
- "uvec3 subgroupInclusiveAdd(uvec3);\n"
- "uvec4 subgroupInclusiveAdd(uvec4);\n"
-
- "float subgroupInclusiveMul(float);\n"
- "vec2 subgroupInclusiveMul(vec2);\n"
- "vec3 subgroupInclusiveMul(vec3);\n"
- "vec4 subgroupInclusiveMul(vec4);\n"
- "int subgroupInclusiveMul(int);\n"
- "ivec2 subgroupInclusiveMul(ivec2);\n"
- "ivec3 subgroupInclusiveMul(ivec3);\n"
- "ivec4 subgroupInclusiveMul(ivec4);\n"
- "uint subgroupInclusiveMul(uint);\n"
- "uvec2 subgroupInclusiveMul(uvec2);\n"
- "uvec3 subgroupInclusiveMul(uvec3);\n"
- "uvec4 subgroupInclusiveMul(uvec4);\n"
-
- "float subgroupInclusiveMin(float);\n"
- "vec2 subgroupInclusiveMin(vec2);\n"
- "vec3 subgroupInclusiveMin(vec3);\n"
- "vec4 subgroupInclusiveMin(vec4);\n"
- "int subgroupInclusiveMin(int);\n"
- "ivec2 subgroupInclusiveMin(ivec2);\n"
- "ivec3 subgroupInclusiveMin(ivec3);\n"
- "ivec4 subgroupInclusiveMin(ivec4);\n"
- "uint subgroupInclusiveMin(uint);\n"
- "uvec2 subgroupInclusiveMin(uvec2);\n"
- "uvec3 subgroupInclusiveMin(uvec3);\n"
- "uvec4 subgroupInclusiveMin(uvec4);\n"
-
- "float subgroupInclusiveMax(float);\n"
- "vec2 subgroupInclusiveMax(vec2);\n"
- "vec3 subgroupInclusiveMax(vec3);\n"
- "vec4 subgroupInclusiveMax(vec4);\n"
- "int subgroupInclusiveMax(int);\n"
- "ivec2 subgroupInclusiveMax(ivec2);\n"
- "ivec3 subgroupInclusiveMax(ivec3);\n"
- "ivec4 subgroupInclusiveMax(ivec4);\n"
- "uint subgroupInclusiveMax(uint);\n"
- "uvec2 subgroupInclusiveMax(uvec2);\n"
- "uvec3 subgroupInclusiveMax(uvec3);\n"
- "uvec4 subgroupInclusiveMax(uvec4);\n"
-
- "int subgroupInclusiveAnd(int);\n"
- "ivec2 subgroupInclusiveAnd(ivec2);\n"
- "ivec3 subgroupInclusiveAnd(ivec3);\n"
- "ivec4 subgroupInclusiveAnd(ivec4);\n"
- "uint subgroupInclusiveAnd(uint);\n"
- "uvec2 subgroupInclusiveAnd(uvec2);\n"
- "uvec3 subgroupInclusiveAnd(uvec3);\n"
- "uvec4 subgroupInclusiveAnd(uvec4);\n"
- "bool subgroupInclusiveAnd(bool);\n"
- "bvec2 subgroupInclusiveAnd(bvec2);\n"
- "bvec3 subgroupInclusiveAnd(bvec3);\n"
- "bvec4 subgroupInclusiveAnd(bvec4);\n"
-
- "int subgroupInclusiveOr(int);\n"
- "ivec2 subgroupInclusiveOr(ivec2);\n"
- "ivec3 subgroupInclusiveOr(ivec3);\n"
- "ivec4 subgroupInclusiveOr(ivec4);\n"
- "uint subgroupInclusiveOr(uint);\n"
- "uvec2 subgroupInclusiveOr(uvec2);\n"
- "uvec3 subgroupInclusiveOr(uvec3);\n"
- "uvec4 subgroupInclusiveOr(uvec4);\n"
- "bool subgroupInclusiveOr(bool);\n"
- "bvec2 subgroupInclusiveOr(bvec2);\n"
- "bvec3 subgroupInclusiveOr(bvec3);\n"
- "bvec4 subgroupInclusiveOr(bvec4);\n"
-
- "int subgroupInclusiveXor(int);\n"
- "ivec2 subgroupInclusiveXor(ivec2);\n"
- "ivec3 subgroupInclusiveXor(ivec3);\n"
- "ivec4 subgroupInclusiveXor(ivec4);\n"
- "uint subgroupInclusiveXor(uint);\n"
- "uvec2 subgroupInclusiveXor(uvec2);\n"
- "uvec3 subgroupInclusiveXor(uvec3);\n"
- "uvec4 subgroupInclusiveXor(uvec4);\n"
- "bool subgroupInclusiveXor(bool);\n"
- "bvec2 subgroupInclusiveXor(bvec2);\n"
- "bvec3 subgroupInclusiveXor(bvec3);\n"
- "bvec4 subgroupInclusiveXor(bvec4);\n"
-
- "float subgroupExclusiveAdd(float);\n"
- "vec2 subgroupExclusiveAdd(vec2);\n"
- "vec3 subgroupExclusiveAdd(vec3);\n"
- "vec4 subgroupExclusiveAdd(vec4);\n"
- "int subgroupExclusiveAdd(int);\n"
- "ivec2 subgroupExclusiveAdd(ivec2);\n"
- "ivec3 subgroupExclusiveAdd(ivec3);\n"
- "ivec4 subgroupExclusiveAdd(ivec4);\n"
- "uint subgroupExclusiveAdd(uint);\n"
- "uvec2 subgroupExclusiveAdd(uvec2);\n"
- "uvec3 subgroupExclusiveAdd(uvec3);\n"
- "uvec4 subgroupExclusiveAdd(uvec4);\n"
-
- "float subgroupExclusiveMul(float);\n"
- "vec2 subgroupExclusiveMul(vec2);\n"
- "vec3 subgroupExclusiveMul(vec3);\n"
- "vec4 subgroupExclusiveMul(vec4);\n"
- "int subgroupExclusiveMul(int);\n"
- "ivec2 subgroupExclusiveMul(ivec2);\n"
- "ivec3 subgroupExclusiveMul(ivec3);\n"
- "ivec4 subgroupExclusiveMul(ivec4);\n"
- "uint subgroupExclusiveMul(uint);\n"
- "uvec2 subgroupExclusiveMul(uvec2);\n"
- "uvec3 subgroupExclusiveMul(uvec3);\n"
- "uvec4 subgroupExclusiveMul(uvec4);\n"
-
- "float subgroupExclusiveMin(float);\n"
- "vec2 subgroupExclusiveMin(vec2);\n"
- "vec3 subgroupExclusiveMin(vec3);\n"
- "vec4 subgroupExclusiveMin(vec4);\n"
- "int subgroupExclusiveMin(int);\n"
- "ivec2 subgroupExclusiveMin(ivec2);\n"
- "ivec3 subgroupExclusiveMin(ivec3);\n"
- "ivec4 subgroupExclusiveMin(ivec4);\n"
- "uint subgroupExclusiveMin(uint);\n"
- "uvec2 subgroupExclusiveMin(uvec2);\n"
- "uvec3 subgroupExclusiveMin(uvec3);\n"
- "uvec4 subgroupExclusiveMin(uvec4);\n"
-
- "float subgroupExclusiveMax(float);\n"
- "vec2 subgroupExclusiveMax(vec2);\n"
- "vec3 subgroupExclusiveMax(vec3);\n"
- "vec4 subgroupExclusiveMax(vec4);\n"
- "int subgroupExclusiveMax(int);\n"
- "ivec2 subgroupExclusiveMax(ivec2);\n"
- "ivec3 subgroupExclusiveMax(ivec3);\n"
- "ivec4 subgroupExclusiveMax(ivec4);\n"
- "uint subgroupExclusiveMax(uint);\n"
- "uvec2 subgroupExclusiveMax(uvec2);\n"
- "uvec3 subgroupExclusiveMax(uvec3);\n"
- "uvec4 subgroupExclusiveMax(uvec4);\n"
-
- "int subgroupExclusiveAnd(int);\n"
- "ivec2 subgroupExclusiveAnd(ivec2);\n"
- "ivec3 subgroupExclusiveAnd(ivec3);\n"
- "ivec4 subgroupExclusiveAnd(ivec4);\n"
- "uint subgroupExclusiveAnd(uint);\n"
- "uvec2 subgroupExclusiveAnd(uvec2);\n"
- "uvec3 subgroupExclusiveAnd(uvec3);\n"
- "uvec4 subgroupExclusiveAnd(uvec4);\n"
- "bool subgroupExclusiveAnd(bool);\n"
- "bvec2 subgroupExclusiveAnd(bvec2);\n"
- "bvec3 subgroupExclusiveAnd(bvec3);\n"
- "bvec4 subgroupExclusiveAnd(bvec4);\n"
-
- "int subgroupExclusiveOr(int);\n"
- "ivec2 subgroupExclusiveOr(ivec2);\n"
- "ivec3 subgroupExclusiveOr(ivec3);\n"
- "ivec4 subgroupExclusiveOr(ivec4);\n"
- "uint subgroupExclusiveOr(uint);\n"
- "uvec2 subgroupExclusiveOr(uvec2);\n"
- "uvec3 subgroupExclusiveOr(uvec3);\n"
- "uvec4 subgroupExclusiveOr(uvec4);\n"
- "bool subgroupExclusiveOr(bool);\n"
- "bvec2 subgroupExclusiveOr(bvec2);\n"
- "bvec3 subgroupExclusiveOr(bvec3);\n"
- "bvec4 subgroupExclusiveOr(bvec4);\n"
-
- "int subgroupExclusiveXor(int);\n"
- "ivec2 subgroupExclusiveXor(ivec2);\n"
- "ivec3 subgroupExclusiveXor(ivec3);\n"
- "ivec4 subgroupExclusiveXor(ivec4);\n"
- "uint subgroupExclusiveXor(uint);\n"
- "uvec2 subgroupExclusiveXor(uvec2);\n"
- "uvec3 subgroupExclusiveXor(uvec3);\n"
- "uvec4 subgroupExclusiveXor(uvec4);\n"
- "bool subgroupExclusiveXor(bool);\n"
- "bvec2 subgroupExclusiveXor(bvec2);\n"
- "bvec3 subgroupExclusiveXor(bvec3);\n"
- "bvec4 subgroupExclusiveXor(bvec4);\n"
-
- "float subgroupClusteredAdd(float, uint);\n"
- "vec2 subgroupClusteredAdd(vec2, uint);\n"
- "vec3 subgroupClusteredAdd(vec3, uint);\n"
- "vec4 subgroupClusteredAdd(vec4, uint);\n"
- "int subgroupClusteredAdd(int, uint);\n"
- "ivec2 subgroupClusteredAdd(ivec2, uint);\n"
- "ivec3 subgroupClusteredAdd(ivec3, uint);\n"
- "ivec4 subgroupClusteredAdd(ivec4, uint);\n"
- "uint subgroupClusteredAdd(uint, uint);\n"
- "uvec2 subgroupClusteredAdd(uvec2, uint);\n"
- "uvec3 subgroupClusteredAdd(uvec3, uint);\n"
- "uvec4 subgroupClusteredAdd(uvec4, uint);\n"
-
- "float subgroupClusteredMul(float, uint);\n"
- "vec2 subgroupClusteredMul(vec2, uint);\n"
- "vec3 subgroupClusteredMul(vec3, uint);\n"
- "vec4 subgroupClusteredMul(vec4, uint);\n"
- "int subgroupClusteredMul(int, uint);\n"
- "ivec2 subgroupClusteredMul(ivec2, uint);\n"
- "ivec3 subgroupClusteredMul(ivec3, uint);\n"
- "ivec4 subgroupClusteredMul(ivec4, uint);\n"
- "uint subgroupClusteredMul(uint, uint);\n"
- "uvec2 subgroupClusteredMul(uvec2, uint);\n"
- "uvec3 subgroupClusteredMul(uvec3, uint);\n"
- "uvec4 subgroupClusteredMul(uvec4, uint);\n"
-
- "float subgroupClusteredMin(float, uint);\n"
- "vec2 subgroupClusteredMin(vec2, uint);\n"
- "vec3 subgroupClusteredMin(vec3, uint);\n"
- "vec4 subgroupClusteredMin(vec4, uint);\n"
- "int subgroupClusteredMin(int, uint);\n"
- "ivec2 subgroupClusteredMin(ivec2, uint);\n"
- "ivec3 subgroupClusteredMin(ivec3, uint);\n"
- "ivec4 subgroupClusteredMin(ivec4, uint);\n"
- "uint subgroupClusteredMin(uint, uint);\n"
- "uvec2 subgroupClusteredMin(uvec2, uint);\n"
- "uvec3 subgroupClusteredMin(uvec3, uint);\n"
- "uvec4 subgroupClusteredMin(uvec4, uint);\n"
-
- "float subgroupClusteredMax(float, uint);\n"
- "vec2 subgroupClusteredMax(vec2, uint);\n"
- "vec3 subgroupClusteredMax(vec3, uint);\n"
- "vec4 subgroupClusteredMax(vec4, uint);\n"
- "int subgroupClusteredMax(int, uint);\n"
- "ivec2 subgroupClusteredMax(ivec2, uint);\n"
- "ivec3 subgroupClusteredMax(ivec3, uint);\n"
- "ivec4 subgroupClusteredMax(ivec4, uint);\n"
- "uint subgroupClusteredMax(uint, uint);\n"
- "uvec2 subgroupClusteredMax(uvec2, uint);\n"
- "uvec3 subgroupClusteredMax(uvec3, uint);\n"
- "uvec4 subgroupClusteredMax(uvec4, uint);\n"
-
- "int subgroupClusteredAnd(int, uint);\n"
- "ivec2 subgroupClusteredAnd(ivec2, uint);\n"
- "ivec3 subgroupClusteredAnd(ivec3, uint);\n"
- "ivec4 subgroupClusteredAnd(ivec4, uint);\n"
- "uint subgroupClusteredAnd(uint, uint);\n"
- "uvec2 subgroupClusteredAnd(uvec2, uint);\n"
- "uvec3 subgroupClusteredAnd(uvec3, uint);\n"
- "uvec4 subgroupClusteredAnd(uvec4, uint);\n"
- "bool subgroupClusteredAnd(bool, uint);\n"
- "bvec2 subgroupClusteredAnd(bvec2, uint);\n"
- "bvec3 subgroupClusteredAnd(bvec3, uint);\n"
- "bvec4 subgroupClusteredAnd(bvec4, uint);\n"
-
- "int subgroupClusteredOr(int, uint);\n"
- "ivec2 subgroupClusteredOr(ivec2, uint);\n"
- "ivec3 subgroupClusteredOr(ivec3, uint);\n"
- "ivec4 subgroupClusteredOr(ivec4, uint);\n"
- "uint subgroupClusteredOr(uint, uint);\n"
- "uvec2 subgroupClusteredOr(uvec2, uint);\n"
- "uvec3 subgroupClusteredOr(uvec3, uint);\n"
- "uvec4 subgroupClusteredOr(uvec4, uint);\n"
- "bool subgroupClusteredOr(bool, uint);\n"
- "bvec2 subgroupClusteredOr(bvec2, uint);\n"
- "bvec3 subgroupClusteredOr(bvec3, uint);\n"
- "bvec4 subgroupClusteredOr(bvec4, uint);\n"
-
- "int subgroupClusteredXor(int, uint);\n"
- "ivec2 subgroupClusteredXor(ivec2, uint);\n"
- "ivec3 subgroupClusteredXor(ivec3, uint);\n"
- "ivec4 subgroupClusteredXor(ivec4, uint);\n"
- "uint subgroupClusteredXor(uint, uint);\n"
- "uvec2 subgroupClusteredXor(uvec2, uint);\n"
- "uvec3 subgroupClusteredXor(uvec3, uint);\n"
- "uvec4 subgroupClusteredXor(uvec4, uint);\n"
- "bool subgroupClusteredXor(bool, uint);\n"
- "bvec2 subgroupClusteredXor(bvec2, uint);\n"
- "bvec3 subgroupClusteredXor(bvec3, uint);\n"
- "bvec4 subgroupClusteredXor(bvec4, uint);\n"
-
- "float subgroupQuadBroadcast(float, uint);\n"
- "vec2 subgroupQuadBroadcast(vec2, uint);\n"
- "vec3 subgroupQuadBroadcast(vec3, uint);\n"
- "vec4 subgroupQuadBroadcast(vec4, uint);\n"
- "int subgroupQuadBroadcast(int, uint);\n"
- "ivec2 subgroupQuadBroadcast(ivec2, uint);\n"
- "ivec3 subgroupQuadBroadcast(ivec3, uint);\n"
- "ivec4 subgroupQuadBroadcast(ivec4, uint);\n"
- "uint subgroupQuadBroadcast(uint, uint);\n"
- "uvec2 subgroupQuadBroadcast(uvec2, uint);\n"
- "uvec3 subgroupQuadBroadcast(uvec3, uint);\n"
- "uvec4 subgroupQuadBroadcast(uvec4, uint);\n"
- "bool subgroupQuadBroadcast(bool, uint);\n"
- "bvec2 subgroupQuadBroadcast(bvec2, uint);\n"
- "bvec3 subgroupQuadBroadcast(bvec3, uint);\n"
- "bvec4 subgroupQuadBroadcast(bvec4, uint);\n"
-
- "float subgroupQuadSwapHorizontal(float);\n"
- "vec2 subgroupQuadSwapHorizontal(vec2);\n"
- "vec3 subgroupQuadSwapHorizontal(vec3);\n"
- "vec4 subgroupQuadSwapHorizontal(vec4);\n"
- "int subgroupQuadSwapHorizontal(int);\n"
- "ivec2 subgroupQuadSwapHorizontal(ivec2);\n"
- "ivec3 subgroupQuadSwapHorizontal(ivec3);\n"
- "ivec4 subgroupQuadSwapHorizontal(ivec4);\n"
- "uint subgroupQuadSwapHorizontal(uint);\n"
- "uvec2 subgroupQuadSwapHorizontal(uvec2);\n"
- "uvec3 subgroupQuadSwapHorizontal(uvec3);\n"
- "uvec4 subgroupQuadSwapHorizontal(uvec4);\n"
- "bool subgroupQuadSwapHorizontal(bool);\n"
- "bvec2 subgroupQuadSwapHorizontal(bvec2);\n"
- "bvec3 subgroupQuadSwapHorizontal(bvec3);\n"
- "bvec4 subgroupQuadSwapHorizontal(bvec4);\n"
-
- "float subgroupQuadSwapVertical(float);\n"
- "vec2 subgroupQuadSwapVertical(vec2);\n"
- "vec3 subgroupQuadSwapVertical(vec3);\n"
- "vec4 subgroupQuadSwapVertical(vec4);\n"
- "int subgroupQuadSwapVertical(int);\n"
- "ivec2 subgroupQuadSwapVertical(ivec2);\n"
- "ivec3 subgroupQuadSwapVertical(ivec3);\n"
- "ivec4 subgroupQuadSwapVertical(ivec4);\n"
- "uint subgroupQuadSwapVertical(uint);\n"
- "uvec2 subgroupQuadSwapVertical(uvec2);\n"
- "uvec3 subgroupQuadSwapVertical(uvec3);\n"
- "uvec4 subgroupQuadSwapVertical(uvec4);\n"
- "bool subgroupQuadSwapVertical(bool);\n"
- "bvec2 subgroupQuadSwapVertical(bvec2);\n"
- "bvec3 subgroupQuadSwapVertical(bvec3);\n"
- "bvec4 subgroupQuadSwapVertical(bvec4);\n"
-
- "float subgroupQuadSwapDiagonal(float);\n"
- "vec2 subgroupQuadSwapDiagonal(vec2);\n"
- "vec3 subgroupQuadSwapDiagonal(vec3);\n"
- "vec4 subgroupQuadSwapDiagonal(vec4);\n"
- "int subgroupQuadSwapDiagonal(int);\n"
- "ivec2 subgroupQuadSwapDiagonal(ivec2);\n"
- "ivec3 subgroupQuadSwapDiagonal(ivec3);\n"
- "ivec4 subgroupQuadSwapDiagonal(ivec4);\n"
- "uint subgroupQuadSwapDiagonal(uint);\n"
- "uvec2 subgroupQuadSwapDiagonal(uvec2);\n"
- "uvec3 subgroupQuadSwapDiagonal(uvec3);\n"
- "uvec4 subgroupQuadSwapDiagonal(uvec4);\n"
- "bool subgroupQuadSwapDiagonal(bool);\n"
- "bvec2 subgroupQuadSwapDiagonal(bvec2);\n"
- "bvec3 subgroupQuadSwapDiagonal(bvec3);\n"
- "bvec4 subgroupQuadSwapDiagonal(bvec4);\n"
-
- "uvec4 subgroupPartitionNV(float);\n"
- "uvec4 subgroupPartitionNV(vec2);\n"
- "uvec4 subgroupPartitionNV(vec3);\n"
- "uvec4 subgroupPartitionNV(vec4);\n"
- "uvec4 subgroupPartitionNV(int);\n"
- "uvec4 subgroupPartitionNV(ivec2);\n"
- "uvec4 subgroupPartitionNV(ivec3);\n"
- "uvec4 subgroupPartitionNV(ivec4);\n"
- "uvec4 subgroupPartitionNV(uint);\n"
- "uvec4 subgroupPartitionNV(uvec2);\n"
- "uvec4 subgroupPartitionNV(uvec3);\n"
- "uvec4 subgroupPartitionNV(uvec4);\n"
- "uvec4 subgroupPartitionNV(bool);\n"
- "uvec4 subgroupPartitionNV(bvec2);\n"
- "uvec4 subgroupPartitionNV(bvec3);\n"
- "uvec4 subgroupPartitionNV(bvec4);\n"
-
- "float subgroupPartitionedAddNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedAddNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedAddNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedAddNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedAddNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedAddNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedAddNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedAddNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedAddNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedAddNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedAddNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedAddNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedMulNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedMulNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedMulNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedMulNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedMulNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedMulNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedMulNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedMulNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedMulNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedMulNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedMulNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedMulNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedMinNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedMinNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedMinNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedMinNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedMinNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedMinNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedMinNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedMinNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedMinNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedMinNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedMinNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedMinNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedMaxNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedMaxNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedMaxNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedMaxNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedMaxNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedMaxNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedMaxNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedMaxNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedMaxNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedMaxNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedMaxNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedMaxNV(uvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedAndNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedAndNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedAndNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedAndNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedAndNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedAndNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedAndNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedAndNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedAndNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedAndNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedAndNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedAndNV(bvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedOrNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedOrNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedOrNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedOrNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedOrNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedOrNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedOrNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedOrNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedOrNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedOrNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedOrNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedOrNV(bvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedXorNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedXorNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedXorNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedXorNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedXorNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedXorNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedXorNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedXorNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedXorNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedXorNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedXorNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedXorNV(bvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedInclusiveAddNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedInclusiveAddNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedInclusiveAddNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedInclusiveAddNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedInclusiveAddNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveAddNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveAddNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveAddNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveAddNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveAddNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveAddNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveAddNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedInclusiveMulNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedInclusiveMulNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedInclusiveMulNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedInclusiveMulNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedInclusiveMulNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveMulNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveMulNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveMulNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveMulNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveMulNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveMulNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveMulNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedInclusiveMinNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedInclusiveMinNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedInclusiveMinNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedInclusiveMinNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedInclusiveMinNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveMinNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveMinNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveMinNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveMinNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveMinNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveMinNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveMinNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedInclusiveMaxNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedInclusiveMaxNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedInclusiveMaxNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedInclusiveMaxNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedInclusiveMaxNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveMaxNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveMaxNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveMaxNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveMaxNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveMaxNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveMaxNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveMaxNV(uvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedInclusiveAndNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveAndNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveAndNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveAndNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveAndNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveAndNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveAndNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveAndNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedInclusiveAndNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedInclusiveAndNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedInclusiveAndNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedInclusiveAndNV(bvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedInclusiveOrNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveOrNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveOrNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveOrNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveOrNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveOrNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveOrNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveOrNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedInclusiveOrNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedInclusiveOrNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedInclusiveOrNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedInclusiveOrNV(bvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedInclusiveXorNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedInclusiveXorNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedInclusiveXorNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedInclusiveXorNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedInclusiveXorNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedInclusiveXorNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedInclusiveXorNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedInclusiveXorNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedInclusiveXorNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedInclusiveXorNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedInclusiveXorNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedInclusiveXorNV(bvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedExclusiveAddNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedExclusiveAddNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedExclusiveAddNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedExclusiveAddNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedExclusiveAddNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveAddNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveAddNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveAddNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveAddNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveAddNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveAddNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveAddNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedExclusiveMulNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedExclusiveMulNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedExclusiveMulNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedExclusiveMulNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedExclusiveMulNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveMulNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveMulNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveMulNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveMulNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveMulNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveMulNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveMulNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedExclusiveMinNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedExclusiveMinNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedExclusiveMinNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedExclusiveMinNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedExclusiveMinNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveMinNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveMinNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveMinNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveMinNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveMinNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveMinNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveMinNV(uvec4, uvec4 ballot);\n"
-
- "float subgroupPartitionedExclusiveMaxNV(float, uvec4 ballot);\n"
- "vec2 subgroupPartitionedExclusiveMaxNV(vec2, uvec4 ballot);\n"
- "vec3 subgroupPartitionedExclusiveMaxNV(vec3, uvec4 ballot);\n"
- "vec4 subgroupPartitionedExclusiveMaxNV(vec4, uvec4 ballot);\n"
- "int subgroupPartitionedExclusiveMaxNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveMaxNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveMaxNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveMaxNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveMaxNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveMaxNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveMaxNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveMaxNV(uvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedExclusiveAndNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveAndNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveAndNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveAndNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveAndNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveAndNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveAndNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveAndNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedExclusiveAndNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedExclusiveAndNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedExclusiveAndNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedExclusiveAndNV(bvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedExclusiveOrNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveOrNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveOrNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveOrNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveOrNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveOrNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveOrNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveOrNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedExclusiveOrNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedExclusiveOrNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedExclusiveOrNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedExclusiveOrNV(bvec4, uvec4 ballot);\n"
-
- "int subgroupPartitionedExclusiveXorNV(int, uvec4 ballot);\n"
- "ivec2 subgroupPartitionedExclusiveXorNV(ivec2, uvec4 ballot);\n"
- "ivec3 subgroupPartitionedExclusiveXorNV(ivec3, uvec4 ballot);\n"
- "ivec4 subgroupPartitionedExclusiveXorNV(ivec4, uvec4 ballot);\n"
- "uint subgroupPartitionedExclusiveXorNV(uint, uvec4 ballot);\n"
- "uvec2 subgroupPartitionedExclusiveXorNV(uvec2, uvec4 ballot);\n"
- "uvec3 subgroupPartitionedExclusiveXorNV(uvec3, uvec4 ballot);\n"
- "uvec4 subgroupPartitionedExclusiveXorNV(uvec4, uvec4 ballot);\n"
- "bool subgroupPartitionedExclusiveXorNV(bool, uvec4 ballot);\n"
- "bvec2 subgroupPartitionedExclusiveXorNV(bvec2, uvec4 ballot);\n"
- "bvec3 subgroupPartitionedExclusiveXorNV(bvec3, uvec4 ballot);\n"
- "bvec4 subgroupPartitionedExclusiveXorNV(bvec4, uvec4 ballot);\n"
- "\n");
-
- if (profile != EEsProfile && version >= 400) {
- commonBuiltins.append(
- "bool subgroupAllEqual(double);\n"
- "bool subgroupAllEqual(dvec2);\n"
- "bool subgroupAllEqual(dvec3);\n"
- "bool subgroupAllEqual(dvec4);\n"
-
- "double subgroupBroadcast(double, uint);\n"
- "dvec2 subgroupBroadcast(dvec2, uint);\n"
- "dvec3 subgroupBroadcast(dvec3, uint);\n"
- "dvec4 subgroupBroadcast(dvec4, uint);\n"
-
- "double subgroupBroadcastFirst(double);\n"
- "dvec2 subgroupBroadcastFirst(dvec2);\n"
- "dvec3 subgroupBroadcastFirst(dvec3);\n"
- "dvec4 subgroupBroadcastFirst(dvec4);\n"
-
- "double subgroupShuffle(double, uint);\n"
- "dvec2 subgroupShuffle(dvec2, uint);\n"
- "dvec3 subgroupShuffle(dvec3, uint);\n"
- "dvec4 subgroupShuffle(dvec4, uint);\n"
-
- "double subgroupShuffleXor(double, uint);\n"
- "dvec2 subgroupShuffleXor(dvec2, uint);\n"
- "dvec3 subgroupShuffleXor(dvec3, uint);\n"
- "dvec4 subgroupShuffleXor(dvec4, uint);\n"
-
- "double subgroupShuffleUp(double, uint delta);\n"
- "dvec2 subgroupShuffleUp(dvec2, uint delta);\n"
- "dvec3 subgroupShuffleUp(dvec3, uint delta);\n"
- "dvec4 subgroupShuffleUp(dvec4, uint delta);\n"
-
- "double subgroupShuffleDown(double, uint delta);\n"
- "dvec2 subgroupShuffleDown(dvec2, uint delta);\n"
- "dvec3 subgroupShuffleDown(dvec3, uint delta);\n"
- "dvec4 subgroupShuffleDown(dvec4, uint delta);\n"
-
- "double subgroupAdd(double);\n"
- "dvec2 subgroupAdd(dvec2);\n"
- "dvec3 subgroupAdd(dvec3);\n"
- "dvec4 subgroupAdd(dvec4);\n"
-
- "double subgroupMul(double);\n"
- "dvec2 subgroupMul(dvec2);\n"
- "dvec3 subgroupMul(dvec3);\n"
- "dvec4 subgroupMul(dvec4);\n"
-
- "double subgroupMin(double);\n"
- "dvec2 subgroupMin(dvec2);\n"
- "dvec3 subgroupMin(dvec3);\n"
- "dvec4 subgroupMin(dvec4);\n"
-
- "double subgroupMax(double);\n"
- "dvec2 subgroupMax(dvec2);\n"
- "dvec3 subgroupMax(dvec3);\n"
- "dvec4 subgroupMax(dvec4);\n"
-
- "double subgroupInclusiveAdd(double);\n"
- "dvec2 subgroupInclusiveAdd(dvec2);\n"
- "dvec3 subgroupInclusiveAdd(dvec3);\n"
- "dvec4 subgroupInclusiveAdd(dvec4);\n"
-
- "double subgroupInclusiveMul(double);\n"
- "dvec2 subgroupInclusiveMul(dvec2);\n"
- "dvec3 subgroupInclusiveMul(dvec3);\n"
- "dvec4 subgroupInclusiveMul(dvec4);\n"
-
- "double subgroupInclusiveMin(double);\n"
- "dvec2 subgroupInclusiveMin(dvec2);\n"
- "dvec3 subgroupInclusiveMin(dvec3);\n"
- "dvec4 subgroupInclusiveMin(dvec4);\n"
-
- "double subgroupInclusiveMax(double);\n"
- "dvec2 subgroupInclusiveMax(dvec2);\n"
- "dvec3 subgroupInclusiveMax(dvec3);\n"
- "dvec4 subgroupInclusiveMax(dvec4);\n"
-
- "double subgroupExclusiveAdd(double);\n"
- "dvec2 subgroupExclusiveAdd(dvec2);\n"
- "dvec3 subgroupExclusiveAdd(dvec3);\n"
- "dvec4 subgroupExclusiveAdd(dvec4);\n"
-
- "double subgroupExclusiveMul(double);\n"
- "dvec2 subgroupExclusiveMul(dvec2);\n"
- "dvec3 subgroupExclusiveMul(dvec3);\n"
- "dvec4 subgroupExclusiveMul(dvec4);\n"
-
- "double subgroupExclusiveMin(double);\n"
- "dvec2 subgroupExclusiveMin(dvec2);\n"
- "dvec3 subgroupExclusiveMin(dvec3);\n"
- "dvec4 subgroupExclusiveMin(dvec4);\n"
-
- "double subgroupExclusiveMax(double);\n"
- "dvec2 subgroupExclusiveMax(dvec2);\n"
- "dvec3 subgroupExclusiveMax(dvec3);\n"
- "dvec4 subgroupExclusiveMax(dvec4);\n"
-
- "double subgroupClusteredAdd(double, uint);\n"
- "dvec2 subgroupClusteredAdd(dvec2, uint);\n"
- "dvec3 subgroupClusteredAdd(dvec3, uint);\n"
- "dvec4 subgroupClusteredAdd(dvec4, uint);\n"
-
- "double subgroupClusteredMul(double, uint);\n"
- "dvec2 subgroupClusteredMul(dvec2, uint);\n"
- "dvec3 subgroupClusteredMul(dvec3, uint);\n"
- "dvec4 subgroupClusteredMul(dvec4, uint);\n"
-
- "double subgroupClusteredMin(double, uint);\n"
- "dvec2 subgroupClusteredMin(dvec2, uint);\n"
- "dvec3 subgroupClusteredMin(dvec3, uint);\n"
- "dvec4 subgroupClusteredMin(dvec4, uint);\n"
-
- "double subgroupClusteredMax(double, uint);\n"
- "dvec2 subgroupClusteredMax(dvec2, uint);\n"
- "dvec3 subgroupClusteredMax(dvec3, uint);\n"
- "dvec4 subgroupClusteredMax(dvec4, uint);\n"
-
- "double subgroupQuadBroadcast(double, uint);\n"
- "dvec2 subgroupQuadBroadcast(dvec2, uint);\n"
- "dvec3 subgroupQuadBroadcast(dvec3, uint);\n"
- "dvec4 subgroupQuadBroadcast(dvec4, uint);\n"
-
- "double subgroupQuadSwapHorizontal(double);\n"
- "dvec2 subgroupQuadSwapHorizontal(dvec2);\n"
- "dvec3 subgroupQuadSwapHorizontal(dvec3);\n"
- "dvec4 subgroupQuadSwapHorizontal(dvec4);\n"
-
- "double subgroupQuadSwapVertical(double);\n"
- "dvec2 subgroupQuadSwapVertical(dvec2);\n"
- "dvec3 subgroupQuadSwapVertical(dvec3);\n"
- "dvec4 subgroupQuadSwapVertical(dvec4);\n"
-
- "double subgroupQuadSwapDiagonal(double);\n"
- "dvec2 subgroupQuadSwapDiagonal(dvec2);\n"
- "dvec3 subgroupQuadSwapDiagonal(dvec3);\n"
- "dvec4 subgroupQuadSwapDiagonal(dvec4);\n"
-
- "uvec4 subgroupPartitionNV(double);\n"
- "uvec4 subgroupPartitionNV(dvec2);\n"
- "uvec4 subgroupPartitionNV(dvec3);\n"
- "uvec4 subgroupPartitionNV(dvec4);\n"
-
- "double subgroupPartitionedAddNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedAddNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedAddNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedAddNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedMulNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedMulNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedMulNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedMulNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedMinNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedMinNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedMinNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedMinNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedMaxNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedMaxNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedMaxNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedMaxNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedInclusiveAddNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedInclusiveAddNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedInclusiveAddNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedInclusiveAddNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedInclusiveMulNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedInclusiveMulNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedInclusiveMulNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedInclusiveMulNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedInclusiveMinNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedInclusiveMinNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedInclusiveMinNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedInclusiveMinNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedInclusiveMaxNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedInclusiveMaxNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedInclusiveMaxNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedInclusiveMaxNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedExclusiveAddNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedExclusiveAddNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedExclusiveAddNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedExclusiveAddNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedExclusiveMulNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedExclusiveMulNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedExclusiveMulNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedExclusiveMulNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedExclusiveMinNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedExclusiveMinNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedExclusiveMinNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedExclusiveMinNV(dvec4, uvec4 ballot);\n"
-
- "double subgroupPartitionedExclusiveMaxNV(double, uvec4 ballot);\n"
- "dvec2 subgroupPartitionedExclusiveMaxNV(dvec2, uvec4 ballot);\n"
- "dvec3 subgroupPartitionedExclusiveMaxNV(dvec3, uvec4 ballot);\n"
- "dvec4 subgroupPartitionedExclusiveMaxNV(dvec4, uvec4 ballot);\n"
-
- "\n");
+ if (!logicalOp) {
+ for (size_t j = 0; j < sizeof(floatTypes)/sizeof(floatTypes[0]); ++j) {
+ snprintf(buf, bufSize, op, floatTypes[j], floatTypes[j]);
+ commonBuiltins.append(buf);
+ }
+ if (profile != EEsProfile && version >= 400) {
+ for (size_t j = 0; j < sizeof(doubleTypes)/sizeof(doubleTypes[0]); ++j) {
+ snprintf(buf, bufSize, op, doubleTypes[j], doubleTypes[j]);
+ commonBuiltins.append(buf);
+ }
+ }
}
+ if (!mathOp) {
+ for (size_t j = 0; j < sizeof(boolTypes)/sizeof(boolTypes[0]); ++j) {
+ snprintf(buf, bufSize, op, boolTypes[j], boolTypes[j]);
+ commonBuiltins.append(buf);
+ }
+ }
+ for (size_t j = 0; j < sizeof(intTypes)/sizeof(intTypes[0]); ++j) {
+ snprintf(buf, bufSize, op, intTypes[j], intTypes[j]);
+ commonBuiltins.append(buf);
+ }
+ }
stageBuiltins[EShLangCompute].append(
"void subgroupMemoryBarrierShared();"
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index c694391..3991830 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -2202,6 +2202,30 @@
// these require SPIR-V 1.3
if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3)
error(loc, "requires SPIR-V 1.3", "subgroup op", "");
+
+ // Check that if extended types are being used that the correct extensions are enabled.
+ if (arg0 != nullptr) {
+ const TType& type = arg0->getType();
+ switch (type.getBasicType()) {
+ default:
+ break;
+ case EbtInt8:
+ case EbtUint8:
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str());
+ break;
+ case EbtInt16:
+ case EbtUint16:
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str());
+ break;
+ case EbtInt64:
+ case EbtUint64:
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str());
+ break;
+ case EbtFloat16:
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str());
+ break;
+ }
+ }
}
}
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index eb1314a..df053b0 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -300,6 +300,12 @@
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float16] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float32] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float64] = EBhDisable;
+
+ // subgroup extended types
+ extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int8] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int16] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int64] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable;
}
#endif // GLSLANG_WEB
@@ -447,6 +453,11 @@
"#define GL_EXT_shader_explicit_arithmetic_types_float16 1\n"
"#define GL_EXT_shader_explicit_arithmetic_types_float32 1\n"
"#define GL_EXT_shader_explicit_arithmetic_types_float64 1\n"
+
+ "#define GL_EXT_shader_subgroup_extended_types_int8 1\n"
+ "#define GL_EXT_shader_subgroup_extended_types_int16 1\n"
+ "#define GL_EXT_shader_subgroup_extended_types_int64 1\n"
+ "#define GL_EXT_shader_subgroup_extended_types_float16 1\n"
;
if (version >= 150) {
@@ -826,6 +837,15 @@
updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString);
else if (strcmp(extension, "GL_NV_integer_cooperative_matrix") == 0)
updateExtensionBehavior(line, "GL_NV_cooperative_matrix", behaviorString);
+ // subgroup extended types to explicit types
+ else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int8") == 0)
+ updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int8", behaviorString);
+ else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int16") == 0)
+ updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int16", behaviorString);
+ else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int64") == 0)
+ updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int64", behaviorString);
+ else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_float16") == 0)
+ updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_float16", behaviorString);
}
void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 9535c89..05ba5d7 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -257,7 +257,7 @@
const char* const E_GL_OES_texture_buffer = "GL_OES_texture_buffer";
const char* const E_GL_OES_texture_cube_map_array = "GL_OES_texture_cube_map_array";
-// KHX
+// EXT
const char* const E_GL_EXT_shader_explicit_arithmetic_types = "GL_EXT_shader_explicit_arithmetic_types";
const char* const E_GL_EXT_shader_explicit_arithmetic_types_int8 = "GL_EXT_shader_explicit_arithmetic_types_int8";
const char* const E_GL_EXT_shader_explicit_arithmetic_types_int16 = "GL_EXT_shader_explicit_arithmetic_types_int16";
@@ -267,6 +267,11 @@
const char* const E_GL_EXT_shader_explicit_arithmetic_types_float32 = "GL_EXT_shader_explicit_arithmetic_types_float32";
const char* const E_GL_EXT_shader_explicit_arithmetic_types_float64 = "GL_EXT_shader_explicit_arithmetic_types_float64";
+const char* const E_GL_EXT_shader_subgroup_extended_types_int8 = "GL_EXT_shader_subgroup_extended_types_int8";
+const char* const E_GL_EXT_shader_subgroup_extended_types_int16 = "GL_EXT_shader_subgroup_extended_types_int16";
+const char* const E_GL_EXT_shader_subgroup_extended_types_int64 = "GL_EXT_shader_subgroup_extended_types_int64";
+const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16";
+
// Arrays of extensions for the above AEP duplications
const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader };
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index d12d39a..7ec1e40 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -459,6 +459,22 @@
"spv.subgroupShuffleRelative.comp",
"spv.subgroupQuad.comp",
"spv.subgroupVote.comp",
+ "spv.subgroupExtendedTypesArithmetic.comp",
+ "spv.subgroupExtendedTypesArithmeticNeg.comp",
+ "spv.subgroupExtendedTypesBallot.comp",
+ "spv.subgroupExtendedTypesBallotNeg.comp",
+ "spv.subgroupExtendedTypesClustered.comp",
+ "spv.subgroupExtendedTypesClusteredNeg.comp",
+ "spv.subgroupExtendedTypesPartitioned.comp",
+ "spv.subgroupExtendedTypesPartitionedNeg.comp",
+ "spv.subgroupExtendedTypesShuffle.comp",
+ "spv.subgroupExtendedTypesShuffleNeg.comp",
+ "spv.subgroupExtendedTypesShuffleRelative.comp",
+ "spv.subgroupExtendedTypesShuffleRelativeNeg.comp",
+ "spv.subgroupExtendedTypesQuad.comp",
+ "spv.subgroupExtendedTypesQuadNeg.comp",
+ "spv.subgroupExtendedTypesVote.comp",
+ "spv.subgroupExtendedTypesVoteNeg.comp",
"spv.vulkan110.storageBuffer.vert",
})),
FileNameAsCustomTestSuffix