Commit abebd025 by Neil Henning

Add GL_EXT_shader_subgroup_extended_types support.

parent 0971c1d3
This source diff could not be displayed because it is too large. You can view the blob instead.
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
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
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
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
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
#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);
}
#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);
}
#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);
}
#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);
}
#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);
}
#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);
}
#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);
}
#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);
}
#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));
}
}
#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));
}
}
...@@ -2140,6 +2140,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan ...@@ -2140,6 +2140,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
// these require SPIR-V 1.3 // these require SPIR-V 1.3
if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3) if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3)
error(loc, "requires SPIR-V 1.3", "subgroup op", ""); 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;
}
}
} }
} }
......
...@@ -295,6 +295,12 @@ void TParseVersions::initializeExtensionBehavior() ...@@ -295,6 +295,12 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float16] = EBhDisable; 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_float32] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float64] = 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;
} }
// Get code that is not part of a shared symbol table, is specific to this shader, // Get code that is not part of a shared symbol table, is specific to this shader,
...@@ -439,6 +445,11 @@ void TParseVersions::getPreamble(std::string& preamble) ...@@ -439,6 +445,11 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_EXT_shader_explicit_arithmetic_types_float16 1\n" "#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_float32 1\n"
"#define GL_EXT_shader_explicit_arithmetic_types_float64 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) { if (version >= 150) {
...@@ -808,6 +819,15 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co ...@@ -808,6 +819,15 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co
else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0) else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0)
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
#endif #endif
// 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) void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
......
...@@ -255,7 +255,7 @@ const char* const E_GL_OES_tessellation_point_size = "GL_OES_tessel ...@@ -255,7 +255,7 @@ const char* const E_GL_OES_tessellation_point_size = "GL_OES_tessel
const char* const E_GL_OES_texture_buffer = "GL_OES_texture_buffer"; 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"; 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 = "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_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"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int16 = "GL_EXT_shader_explicit_arithmetic_types_int16";
...@@ -265,6 +265,11 @@ const char* const E_GL_EXT_shader_explicit_arithmetic_types_float16 = "GL_EXT_s ...@@ -265,6 +265,11 @@ const char* const E_GL_EXT_shader_explicit_arithmetic_types_float16 = "GL_EXT_s
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_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_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 // Arrays of extensions for the above AEP duplications
const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader };
......
...@@ -445,6 +445,20 @@ INSTANTIATE_TEST_CASE_P( ...@@ -445,6 +445,20 @@ INSTANTIATE_TEST_CASE_P(
"spv.subgroupShuffleRelative.comp", "spv.subgroupShuffleRelative.comp",
"spv.subgroupQuad.comp", "spv.subgroupQuad.comp",
"spv.subgroupVote.comp", "spv.subgroupVote.comp",
"spv.subgroupExtendedTypesArithmetic.comp",
"spv.subgroupExtendedTypesArithmeticNeg.comp",
"spv.subgroupExtendedTypesBallot.comp",
"spv.subgroupExtendedTypesBallotNeg.comp",
"spv.subgroupExtendedTypesClustered.comp",
"spv.subgroupExtendedTypesClusteredNeg.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", "spv.vulkan110.storageBuffer.vert",
})), })),
FileNameAsCustomTestSuffix FileNameAsCustomTestSuffix
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment