Add GL_KHR_shader_subgroup_rotate support
Co-authored-by: Neil Hickey <neil.hickey@arm.com> Co-authored-by: Stuart Brady <stuart.brady@arm.com> Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
This commit is contained in:
parent
8c3dbb3596
commit
b1f7affe94
20 changed files with 5765 additions and 7 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2014-2020 The Khronos Group Inc.
|
** Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||||
|
** Copyright (C) 2022-2024 Arm Limited.
|
||||||
** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
**
|
**
|
||||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
|
@ -58,5 +59,6 @@ static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_A
|
||||||
static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch";
|
static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch";
|
||||||
static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix";
|
static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix";
|
||||||
static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence";
|
static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence";
|
||||||
|
static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate";
|
||||||
|
|
||||||
#endif // #ifndef GLSLextKHR_H
|
#endif // #ifndef GLSLextKHR_H
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2014-2016 LunarG, Inc.
|
// Copyright (C) 2014-2016 LunarG, Inc.
|
||||||
// Copyright (C) 2015-2020 Google, Inc.
|
// Copyright (C) 2015-2020 Google, Inc.
|
||||||
// Copyright (C) 2017 ARM Limited.
|
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
|
|
@ -8318,6 +8318,11 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s
|
||||||
builder.addCapability(spv::CapabilityGroupNonUniform);
|
builder.addCapability(spv::CapabilityGroupNonUniform);
|
||||||
builder.addCapability(spv::CapabilityGroupNonUniformBallot);
|
builder.addCapability(spv::CapabilityGroupNonUniformBallot);
|
||||||
break;
|
break;
|
||||||
|
case glslang::EOpSubgroupRotate:
|
||||||
|
case glslang::EOpSubgroupClusteredRotate:
|
||||||
|
builder.addExtension(spv::E_SPV_KHR_subgroup_rotate);
|
||||||
|
builder.addCapability(spv::CapabilityGroupNonUniformRotateKHR);
|
||||||
|
break;
|
||||||
case glslang::EOpSubgroupShuffle:
|
case glslang::EOpSubgroupShuffle:
|
||||||
case glslang::EOpSubgroupShuffleXor:
|
case glslang::EOpSubgroupShuffleXor:
|
||||||
builder.addCapability(spv::CapabilityGroupNonUniform);
|
builder.addCapability(spv::CapabilityGroupNonUniform);
|
||||||
|
|
@ -8425,6 +8430,8 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s
|
||||||
case glslang::EOpSubgroupShuffleXor: opCode = spv::OpGroupNonUniformShuffleXor; break;
|
case glslang::EOpSubgroupShuffleXor: opCode = spv::OpGroupNonUniformShuffleXor; break;
|
||||||
case glslang::EOpSubgroupShuffleUp: opCode = spv::OpGroupNonUniformShuffleUp; break;
|
case glslang::EOpSubgroupShuffleUp: opCode = spv::OpGroupNonUniformShuffleUp; break;
|
||||||
case glslang::EOpSubgroupShuffleDown: opCode = spv::OpGroupNonUniformShuffleDown; break;
|
case glslang::EOpSubgroupShuffleDown: opCode = spv::OpGroupNonUniformShuffleDown; break;
|
||||||
|
case glslang::EOpSubgroupRotate:
|
||||||
|
case glslang::EOpSubgroupClusteredRotate: opCode = spv::OpGroupNonUniformRotateKHR; break;
|
||||||
case glslang::EOpSubgroupAdd:
|
case glslang::EOpSubgroupAdd:
|
||||||
case glslang::EOpSubgroupInclusiveAdd:
|
case glslang::EOpSubgroupInclusiveAdd:
|
||||||
case glslang::EOpSubgroupExclusiveAdd:
|
case glslang::EOpSubgroupExclusiveAdd:
|
||||||
|
|
@ -8851,6 +8858,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
|
||||||
case glslang::EOpSubgroupShuffleXor:
|
case glslang::EOpSubgroupShuffleXor:
|
||||||
case glslang::EOpSubgroupShuffleUp:
|
case glslang::EOpSubgroupShuffleUp:
|
||||||
case glslang::EOpSubgroupShuffleDown:
|
case glslang::EOpSubgroupShuffleDown:
|
||||||
|
case glslang::EOpSubgroupRotate:
|
||||||
|
case glslang::EOpSubgroupClusteredRotate:
|
||||||
case glslang::EOpSubgroupClusteredAdd:
|
case glslang::EOpSubgroupClusteredAdd:
|
||||||
case glslang::EOpSubgroupClusteredMul:
|
case glslang::EOpSubgroupClusteredMul:
|
||||||
case glslang::EOpSubgroupClusteredMin:
|
case glslang::EOpSubgroupClusteredMin:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2014-2015 LunarG, Inc.
|
// Copyright (C) 2014-2015 LunarG, Inc.
|
||||||
|
// Copyright (C) 2022-2024 Arm Limited.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
|
|
@ -942,6 +943,7 @@ const char* CapabilityString(int info)
|
||||||
case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR";
|
case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR";
|
||||||
case CapabilityDrawParameters: return "DrawParameters";
|
case CapabilityDrawParameters: return "DrawParameters";
|
||||||
case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR";
|
case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR";
|
||||||
|
case CapabilityGroupNonUniformRotateKHR: return "CapabilityGroupNonUniformRotateKHR";
|
||||||
|
|
||||||
case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16";
|
case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16";
|
||||||
case CapabilityStorageUniform16: return "StorageUniform16";
|
case CapabilityStorageUniform16: return "StorageUniform16";
|
||||||
|
|
@ -1483,6 +1485,8 @@ const char* OpcodeString(int op)
|
||||||
case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT";
|
case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT";
|
||||||
case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT";
|
case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT";
|
||||||
|
|
||||||
|
case OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR";
|
||||||
|
|
||||||
case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR";
|
case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR";
|
||||||
case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR";
|
case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR";
|
||||||
case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR";
|
case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR";
|
||||||
|
|
@ -2901,6 +2905,11 @@ void Parameterize()
|
||||||
InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'");
|
InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'");
|
||||||
InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'");
|
InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'");
|
||||||
|
|
||||||
|
InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandScope, "'Execution'");
|
||||||
|
InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'X'");
|
||||||
|
InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'Delta'");
|
||||||
|
InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'ClusterSize'", true);
|
||||||
|
|
||||||
InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'");
|
InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'");
|
||||||
InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'");
|
InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'");
|
||||||
|
|
||||||
|
|
|
||||||
2177
Test/baseResults/glsl.450.subgroupRotate.comp.out
Normal file
2177
Test/baseResults/glsl.450.subgroupRotate.comp.out
Normal file
File diff suppressed because it is too large
Load diff
1833
Test/baseResults/glsl.es320.subgroupRotate.comp.out
Normal file
1833
Test/baseResults/glsl.es320.subgroupRotate.comp.out
Normal file
File diff suppressed because it is too large
Load diff
711
Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out
Normal file
711
Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out
Normal file
|
|
@ -0,0 +1,711 @@
|
||||||
|
spv.subgroupExtendedTypesRotate.comp
|
||||||
|
// Module Version 10300
|
||||||
|
// Generated by (magic number): 8000b
|
||||||
|
// Id's are bound by 553
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability Float16
|
||||||
|
Capability Int64
|
||||||
|
Capability Int16
|
||||||
|
Capability Int8
|
||||||
|
Capability StorageUniformBufferBlock16
|
||||||
|
Capability StorageBuffer8BitAccess
|
||||||
|
Capability CapabilityGroupNonUniformRotateKHR
|
||||||
|
Extension "SPV_KHR_8bit_storage"
|
||||||
|
Extension "SPV_KHR_subgroup_rotate"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint GLCompute 4 "main"
|
||||||
|
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_rotate"
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "delta"
|
||||||
|
Name 9 "roblock"
|
||||||
|
MemberName 9(roblock) 0 "delta"
|
||||||
|
Name 11 "ro"
|
||||||
|
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 35 "data"
|
||||||
|
MemberDecorate 9(roblock) 0 NonWritable
|
||||||
|
MemberDecorate 9(roblock) 0 Offset 0
|
||||||
|
Decorate 9(roblock) Block
|
||||||
|
Decorate 11(ro) DescriptorSet 0
|
||||||
|
Decorate 11(ro) Binding 1
|
||||||
|
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 35(data) DescriptorSet 0
|
||||||
|
Decorate 35(data) Binding 0
|
||||||
|
Decorate 552 BuiltIn WorkgroupSize
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 0
|
||||||
|
7: TypePointer Function 6(int)
|
||||||
|
9(roblock): TypeStruct 6(int)
|
||||||
|
10: TypePointer StorageBuffer 9(roblock)
|
||||||
|
11(ro): 10(ptr) Variable StorageBuffer
|
||||||
|
12: TypeInt 32 1
|
||||||
|
13: 12(int) Constant 0
|
||||||
|
14: TypePointer StorageBuffer 6(int)
|
||||||
|
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: 6(int) Constant 4
|
||||||
|
33: TypeArray 31(Buffers) 32
|
||||||
|
34: TypePointer StorageBuffer 33
|
||||||
|
35(data): 34(ptr) Variable StorageBuffer
|
||||||
|
37: 6(int) Constant 0
|
||||||
|
38: TypePointer StorageBuffer 17(int8_t)
|
||||||
|
42: 6(int) Constant 3
|
||||||
|
46: 12(int) Constant 1
|
||||||
|
47: TypeVector 17(int8_t) 2
|
||||||
|
48: TypePointer StorageBuffer 18(i8vec4)
|
||||||
|
56: 6(int) Constant 1
|
||||||
|
60: 12(int) Constant 2
|
||||||
|
61: TypeVector 17(int8_t) 3
|
||||||
|
71: 6(int) Constant 2
|
||||||
|
75: 12(int) Constant 3
|
||||||
|
116: TypePointer StorageBuffer 19(int8_t)
|
||||||
|
123: TypeVector 19(int8_t) 2
|
||||||
|
124: TypePointer StorageBuffer 20(i8vec4)
|
||||||
|
135: TypeVector 19(int8_t) 3
|
||||||
|
188: TypePointer StorageBuffer 21(int16_t)
|
||||||
|
195: TypeVector 21(int16_t) 2
|
||||||
|
196: TypePointer StorageBuffer 22(i16vec4)
|
||||||
|
207: TypeVector 21(int16_t) 3
|
||||||
|
260: TypePointer StorageBuffer 23(int16_t)
|
||||||
|
267: TypeVector 23(int16_t) 2
|
||||||
|
268: TypePointer StorageBuffer 24(i16vec4)
|
||||||
|
279: TypeVector 23(int16_t) 3
|
||||||
|
332: 12(int) Constant 4
|
||||||
|
333: TypePointer StorageBuffer 25(int64_t)
|
||||||
|
340: TypeVector 25(int64_t) 2
|
||||||
|
341: TypePointer StorageBuffer 26(i64vec4)
|
||||||
|
352: TypeVector 25(int64_t) 3
|
||||||
|
405: 12(int) Constant 5
|
||||||
|
406: TypePointer StorageBuffer 27(int64_t)
|
||||||
|
413: TypeVector 27(int64_t) 2
|
||||||
|
414: TypePointer StorageBuffer 28(i64vec4)
|
||||||
|
425: TypeVector 27(int64_t) 3
|
||||||
|
478: 12(int) Constant 6
|
||||||
|
479: TypePointer StorageBuffer 29(float16_t)
|
||||||
|
486: TypeVector 29(float16_t) 2
|
||||||
|
487: TypePointer StorageBuffer 30(f16vec4)
|
||||||
|
498: TypeVector 29(float16_t) 3
|
||||||
|
550: TypeVector 6(int) 3
|
||||||
|
551: 6(int) Constant 8
|
||||||
|
552: 550(ivec3) ConstantComposite 551 56 56
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
8(delta): 7(ptr) Variable Function
|
||||||
|
15: 14(ptr) AccessChain 11(ro) 13
|
||||||
|
16: 6(int) Load 15
|
||||||
|
Store 8(delta) 16
|
||||||
|
36: 6(int) Load 8(delta)
|
||||||
|
39: 38(ptr) AccessChain 35(data) 13 13 37
|
||||||
|
40: 17(int8_t) Load 39
|
||||||
|
41: 6(int) Load 8(delta)
|
||||||
|
43: 17(int8_t) GroupNonUniformRotateKHR 42 40 41
|
||||||
|
44: 38(ptr) AccessChain 35(data) 36 13 37
|
||||||
|
Store 44 43
|
||||||
|
45: 6(int) Load 8(delta)
|
||||||
|
49: 48(ptr) AccessChain 35(data) 46 13
|
||||||
|
50: 18(i8vec4) Load 49
|
||||||
|
51: 47(i8vec2) VectorShuffle 50 50 0 1
|
||||||
|
52: 6(int) Load 8(delta)
|
||||||
|
53: 47(i8vec2) GroupNonUniformRotateKHR 42 51 52
|
||||||
|
54: 38(ptr) AccessChain 35(data) 45 13 37
|
||||||
|
55: 17(int8_t) CompositeExtract 53 0
|
||||||
|
Store 54 55
|
||||||
|
57: 38(ptr) AccessChain 35(data) 45 13 56
|
||||||
|
58: 17(int8_t) CompositeExtract 53 1
|
||||||
|
Store 57 58
|
||||||
|
59: 6(int) Load 8(delta)
|
||||||
|
62: 48(ptr) AccessChain 35(data) 60 13
|
||||||
|
63: 18(i8vec4) Load 62
|
||||||
|
64: 61(i8vec3) VectorShuffle 63 63 0 1 2
|
||||||
|
65: 6(int) Load 8(delta)
|
||||||
|
66: 61(i8vec3) GroupNonUniformRotateKHR 42 64 65
|
||||||
|
67: 38(ptr) AccessChain 35(data) 59 13 37
|
||||||
|
68: 17(int8_t) CompositeExtract 66 0
|
||||||
|
Store 67 68
|
||||||
|
69: 38(ptr) AccessChain 35(data) 59 13 56
|
||||||
|
70: 17(int8_t) CompositeExtract 66 1
|
||||||
|
Store 69 70
|
||||||
|
72: 38(ptr) AccessChain 35(data) 59 13 71
|
||||||
|
73: 17(int8_t) CompositeExtract 66 2
|
||||||
|
Store 72 73
|
||||||
|
74: 6(int) Load 8(delta)
|
||||||
|
76: 48(ptr) AccessChain 35(data) 75 13
|
||||||
|
77: 18(i8vec4) Load 76
|
||||||
|
78: 6(int) Load 8(delta)
|
||||||
|
79: 18(i8vec4) GroupNonUniformRotateKHR 42 77 78
|
||||||
|
80: 48(ptr) AccessChain 35(data) 74 13
|
||||||
|
Store 80 79
|
||||||
|
81: 6(int) Load 8(delta)
|
||||||
|
82: 38(ptr) AccessChain 35(data) 13 13 37
|
||||||
|
83: 17(int8_t) Load 82
|
||||||
|
84: 6(int) Load 8(delta)
|
||||||
|
85: 17(int8_t) GroupNonUniformRotateKHR 42 83 84 56
|
||||||
|
86: 38(ptr) AccessChain 35(data) 81 13 37
|
||||||
|
Store 86 85
|
||||||
|
87: 6(int) Load 8(delta)
|
||||||
|
88: 48(ptr) AccessChain 35(data) 46 13
|
||||||
|
89: 18(i8vec4) Load 88
|
||||||
|
90: 47(i8vec2) VectorShuffle 89 89 0 1
|
||||||
|
91: 6(int) Load 8(delta)
|
||||||
|
92: 47(i8vec2) GroupNonUniformRotateKHR 42 90 91 56
|
||||||
|
93: 38(ptr) AccessChain 35(data) 87 13 37
|
||||||
|
94: 17(int8_t) CompositeExtract 92 0
|
||||||
|
Store 93 94
|
||||||
|
95: 38(ptr) AccessChain 35(data) 87 13 56
|
||||||
|
96: 17(int8_t) CompositeExtract 92 1
|
||||||
|
Store 95 96
|
||||||
|
97: 6(int) Load 8(delta)
|
||||||
|
98: 48(ptr) AccessChain 35(data) 60 13
|
||||||
|
99: 18(i8vec4) Load 98
|
||||||
|
100: 61(i8vec3) VectorShuffle 99 99 0 1 2
|
||||||
|
101: 6(int) Load 8(delta)
|
||||||
|
102: 61(i8vec3) GroupNonUniformRotateKHR 42 100 101 56
|
||||||
|
103: 38(ptr) AccessChain 35(data) 97 13 37
|
||||||
|
104: 17(int8_t) CompositeExtract 102 0
|
||||||
|
Store 103 104
|
||||||
|
105: 38(ptr) AccessChain 35(data) 97 13 56
|
||||||
|
106: 17(int8_t) CompositeExtract 102 1
|
||||||
|
Store 105 106
|
||||||
|
107: 38(ptr) AccessChain 35(data) 97 13 71
|
||||||
|
108: 17(int8_t) CompositeExtract 102 2
|
||||||
|
Store 107 108
|
||||||
|
109: 6(int) Load 8(delta)
|
||||||
|
110: 48(ptr) AccessChain 35(data) 75 13
|
||||||
|
111: 18(i8vec4) Load 110
|
||||||
|
112: 6(int) Load 8(delta)
|
||||||
|
113: 18(i8vec4) GroupNonUniformRotateKHR 42 111 112 56
|
||||||
|
114: 48(ptr) AccessChain 35(data) 109 13
|
||||||
|
Store 114 113
|
||||||
|
115: 6(int) Load 8(delta)
|
||||||
|
117: 116(ptr) AccessChain 35(data) 13 46 37
|
||||||
|
118: 19(int8_t) Load 117
|
||||||
|
119: 6(int) Load 8(delta)
|
||||||
|
120: 19(int8_t) GroupNonUniformRotateKHR 42 118 119
|
||||||
|
121: 116(ptr) AccessChain 35(data) 115 46 37
|
||||||
|
Store 121 120
|
||||||
|
122: 6(int) Load 8(delta)
|
||||||
|
125: 124(ptr) AccessChain 35(data) 46 46
|
||||||
|
126: 20(i8vec4) Load 125
|
||||||
|
127: 123(i8vec2) VectorShuffle 126 126 0 1
|
||||||
|
128: 6(int) Load 8(delta)
|
||||||
|
129: 123(i8vec2) GroupNonUniformRotateKHR 42 127 128
|
||||||
|
130: 116(ptr) AccessChain 35(data) 122 46 37
|
||||||
|
131: 19(int8_t) CompositeExtract 129 0
|
||||||
|
Store 130 131
|
||||||
|
132: 116(ptr) AccessChain 35(data) 122 46 56
|
||||||
|
133: 19(int8_t) CompositeExtract 129 1
|
||||||
|
Store 132 133
|
||||||
|
134: 6(int) Load 8(delta)
|
||||||
|
136: 124(ptr) AccessChain 35(data) 60 46
|
||||||
|
137: 20(i8vec4) Load 136
|
||||||
|
138: 135(i8vec3) VectorShuffle 137 137 0 1 2
|
||||||
|
139: 6(int) Load 8(delta)
|
||||||
|
140: 135(i8vec3) GroupNonUniformRotateKHR 42 138 139
|
||||||
|
141: 116(ptr) AccessChain 35(data) 134 46 37
|
||||||
|
142: 19(int8_t) CompositeExtract 140 0
|
||||||
|
Store 141 142
|
||||||
|
143: 116(ptr) AccessChain 35(data) 134 46 56
|
||||||
|
144: 19(int8_t) CompositeExtract 140 1
|
||||||
|
Store 143 144
|
||||||
|
145: 116(ptr) AccessChain 35(data) 134 46 71
|
||||||
|
146: 19(int8_t) CompositeExtract 140 2
|
||||||
|
Store 145 146
|
||||||
|
147: 6(int) Load 8(delta)
|
||||||
|
148: 124(ptr) AccessChain 35(data) 75 46
|
||||||
|
149: 20(i8vec4) Load 148
|
||||||
|
150: 6(int) Load 8(delta)
|
||||||
|
151: 20(i8vec4) GroupNonUniformRotateKHR 42 149 150
|
||||||
|
152: 124(ptr) AccessChain 35(data) 147 46
|
||||||
|
Store 152 151
|
||||||
|
153: 6(int) Load 8(delta)
|
||||||
|
154: 116(ptr) AccessChain 35(data) 13 46 37
|
||||||
|
155: 19(int8_t) Load 154
|
||||||
|
156: 6(int) Load 8(delta)
|
||||||
|
157: 19(int8_t) GroupNonUniformRotateKHR 42 155 156 56
|
||||||
|
158: 116(ptr) AccessChain 35(data) 153 46 37
|
||||||
|
Store 158 157
|
||||||
|
159: 6(int) Load 8(delta)
|
||||||
|
160: 124(ptr) AccessChain 35(data) 46 46
|
||||||
|
161: 20(i8vec4) Load 160
|
||||||
|
162: 123(i8vec2) VectorShuffle 161 161 0 1
|
||||||
|
163: 6(int) Load 8(delta)
|
||||||
|
164: 123(i8vec2) GroupNonUniformRotateKHR 42 162 163 56
|
||||||
|
165: 116(ptr) AccessChain 35(data) 159 46 37
|
||||||
|
166: 19(int8_t) CompositeExtract 164 0
|
||||||
|
Store 165 166
|
||||||
|
167: 116(ptr) AccessChain 35(data) 159 46 56
|
||||||
|
168: 19(int8_t) CompositeExtract 164 1
|
||||||
|
Store 167 168
|
||||||
|
169: 6(int) Load 8(delta)
|
||||||
|
170: 124(ptr) AccessChain 35(data) 60 46
|
||||||
|
171: 20(i8vec4) Load 170
|
||||||
|
172: 135(i8vec3) VectorShuffle 171 171 0 1 2
|
||||||
|
173: 6(int) Load 8(delta)
|
||||||
|
174: 135(i8vec3) GroupNonUniformRotateKHR 42 172 173 56
|
||||||
|
175: 116(ptr) AccessChain 35(data) 169 46 37
|
||||||
|
176: 19(int8_t) CompositeExtract 174 0
|
||||||
|
Store 175 176
|
||||||
|
177: 116(ptr) AccessChain 35(data) 169 46 56
|
||||||
|
178: 19(int8_t) CompositeExtract 174 1
|
||||||
|
Store 177 178
|
||||||
|
179: 116(ptr) AccessChain 35(data) 169 46 71
|
||||||
|
180: 19(int8_t) CompositeExtract 174 2
|
||||||
|
Store 179 180
|
||||||
|
181: 6(int) Load 8(delta)
|
||||||
|
182: 124(ptr) AccessChain 35(data) 75 46
|
||||||
|
183: 20(i8vec4) Load 182
|
||||||
|
184: 6(int) Load 8(delta)
|
||||||
|
185: 20(i8vec4) GroupNonUniformRotateKHR 42 183 184 56
|
||||||
|
186: 124(ptr) AccessChain 35(data) 181 46
|
||||||
|
Store 186 185
|
||||||
|
187: 6(int) Load 8(delta)
|
||||||
|
189: 188(ptr) AccessChain 35(data) 13 60 37
|
||||||
|
190: 21(int16_t) Load 189
|
||||||
|
191: 6(int) Load 8(delta)
|
||||||
|
192: 21(int16_t) GroupNonUniformRotateKHR 42 190 191
|
||||||
|
193: 188(ptr) AccessChain 35(data) 187 60 37
|
||||||
|
Store 193 192
|
||||||
|
194: 6(int) Load 8(delta)
|
||||||
|
197: 196(ptr) AccessChain 35(data) 46 60
|
||||||
|
198: 22(i16vec4) Load 197
|
||||||
|
199:195(i16vec2) VectorShuffle 198 198 0 1
|
||||||
|
200: 6(int) Load 8(delta)
|
||||||
|
201:195(i16vec2) GroupNonUniformRotateKHR 42 199 200
|
||||||
|
202: 188(ptr) AccessChain 35(data) 194 60 37
|
||||||
|
203: 21(int16_t) CompositeExtract 201 0
|
||||||
|
Store 202 203
|
||||||
|
204: 188(ptr) AccessChain 35(data) 194 60 56
|
||||||
|
205: 21(int16_t) CompositeExtract 201 1
|
||||||
|
Store 204 205
|
||||||
|
206: 6(int) Load 8(delta)
|
||||||
|
208: 196(ptr) AccessChain 35(data) 60 60
|
||||||
|
209: 22(i16vec4) Load 208
|
||||||
|
210:207(i16vec3) VectorShuffle 209 209 0 1 2
|
||||||
|
211: 6(int) Load 8(delta)
|
||||||
|
212:207(i16vec3) GroupNonUniformRotateKHR 42 210 211
|
||||||
|
213: 188(ptr) AccessChain 35(data) 206 60 37
|
||||||
|
214: 21(int16_t) CompositeExtract 212 0
|
||||||
|
Store 213 214
|
||||||
|
215: 188(ptr) AccessChain 35(data) 206 60 56
|
||||||
|
216: 21(int16_t) CompositeExtract 212 1
|
||||||
|
Store 215 216
|
||||||
|
217: 188(ptr) AccessChain 35(data) 206 60 71
|
||||||
|
218: 21(int16_t) CompositeExtract 212 2
|
||||||
|
Store 217 218
|
||||||
|
219: 6(int) Load 8(delta)
|
||||||
|
220: 196(ptr) AccessChain 35(data) 75 60
|
||||||
|
221: 22(i16vec4) Load 220
|
||||||
|
222: 6(int) Load 8(delta)
|
||||||
|
223: 22(i16vec4) GroupNonUniformRotateKHR 42 221 222
|
||||||
|
224: 196(ptr) AccessChain 35(data) 219 60
|
||||||
|
Store 224 223
|
||||||
|
225: 6(int) Load 8(delta)
|
||||||
|
226: 188(ptr) AccessChain 35(data) 13 60 37
|
||||||
|
227: 21(int16_t) Load 226
|
||||||
|
228: 6(int) Load 8(delta)
|
||||||
|
229: 21(int16_t) GroupNonUniformRotateKHR 42 227 228 56
|
||||||
|
230: 188(ptr) AccessChain 35(data) 225 60 37
|
||||||
|
Store 230 229
|
||||||
|
231: 6(int) Load 8(delta)
|
||||||
|
232: 196(ptr) AccessChain 35(data) 46 60
|
||||||
|
233: 22(i16vec4) Load 232
|
||||||
|
234:195(i16vec2) VectorShuffle 233 233 0 1
|
||||||
|
235: 6(int) Load 8(delta)
|
||||||
|
236:195(i16vec2) GroupNonUniformRotateKHR 42 234 235 56
|
||||||
|
237: 188(ptr) AccessChain 35(data) 231 60 37
|
||||||
|
238: 21(int16_t) CompositeExtract 236 0
|
||||||
|
Store 237 238
|
||||||
|
239: 188(ptr) AccessChain 35(data) 231 60 56
|
||||||
|
240: 21(int16_t) CompositeExtract 236 1
|
||||||
|
Store 239 240
|
||||||
|
241: 6(int) Load 8(delta)
|
||||||
|
242: 196(ptr) AccessChain 35(data) 60 60
|
||||||
|
243: 22(i16vec4) Load 242
|
||||||
|
244:207(i16vec3) VectorShuffle 243 243 0 1 2
|
||||||
|
245: 6(int) Load 8(delta)
|
||||||
|
246:207(i16vec3) GroupNonUniformRotateKHR 42 244 245 56
|
||||||
|
247: 188(ptr) AccessChain 35(data) 241 60 37
|
||||||
|
248: 21(int16_t) CompositeExtract 246 0
|
||||||
|
Store 247 248
|
||||||
|
249: 188(ptr) AccessChain 35(data) 241 60 56
|
||||||
|
250: 21(int16_t) CompositeExtract 246 1
|
||||||
|
Store 249 250
|
||||||
|
251: 188(ptr) AccessChain 35(data) 241 60 71
|
||||||
|
252: 21(int16_t) CompositeExtract 246 2
|
||||||
|
Store 251 252
|
||||||
|
253: 6(int) Load 8(delta)
|
||||||
|
254: 196(ptr) AccessChain 35(data) 75 60
|
||||||
|
255: 22(i16vec4) Load 254
|
||||||
|
256: 6(int) Load 8(delta)
|
||||||
|
257: 22(i16vec4) GroupNonUniformRotateKHR 42 255 256 56
|
||||||
|
258: 196(ptr) AccessChain 35(data) 253 60
|
||||||
|
Store 258 257
|
||||||
|
259: 6(int) Load 8(delta)
|
||||||
|
261: 260(ptr) AccessChain 35(data) 13 75 37
|
||||||
|
262: 23(int16_t) Load 261
|
||||||
|
263: 6(int) Load 8(delta)
|
||||||
|
264: 23(int16_t) GroupNonUniformRotateKHR 42 262 263
|
||||||
|
265: 260(ptr) AccessChain 35(data) 259 75 37
|
||||||
|
Store 265 264
|
||||||
|
266: 6(int) Load 8(delta)
|
||||||
|
269: 268(ptr) AccessChain 35(data) 46 75
|
||||||
|
270: 24(i16vec4) Load 269
|
||||||
|
271:267(i16vec2) VectorShuffle 270 270 0 1
|
||||||
|
272: 6(int) Load 8(delta)
|
||||||
|
273:267(i16vec2) GroupNonUniformRotateKHR 42 271 272
|
||||||
|
274: 260(ptr) AccessChain 35(data) 266 75 37
|
||||||
|
275: 23(int16_t) CompositeExtract 273 0
|
||||||
|
Store 274 275
|
||||||
|
276: 260(ptr) AccessChain 35(data) 266 75 56
|
||||||
|
277: 23(int16_t) CompositeExtract 273 1
|
||||||
|
Store 276 277
|
||||||
|
278: 6(int) Load 8(delta)
|
||||||
|
280: 268(ptr) AccessChain 35(data) 60 75
|
||||||
|
281: 24(i16vec4) Load 280
|
||||||
|
282:279(i16vec3) VectorShuffle 281 281 0 1 2
|
||||||
|
283: 6(int) Load 8(delta)
|
||||||
|
284:279(i16vec3) GroupNonUniformRotateKHR 42 282 283
|
||||||
|
285: 260(ptr) AccessChain 35(data) 278 75 37
|
||||||
|
286: 23(int16_t) CompositeExtract 284 0
|
||||||
|
Store 285 286
|
||||||
|
287: 260(ptr) AccessChain 35(data) 278 75 56
|
||||||
|
288: 23(int16_t) CompositeExtract 284 1
|
||||||
|
Store 287 288
|
||||||
|
289: 260(ptr) AccessChain 35(data) 278 75 71
|
||||||
|
290: 23(int16_t) CompositeExtract 284 2
|
||||||
|
Store 289 290
|
||||||
|
291: 6(int) Load 8(delta)
|
||||||
|
292: 268(ptr) AccessChain 35(data) 75 75
|
||||||
|
293: 24(i16vec4) Load 292
|
||||||
|
294: 6(int) Load 8(delta)
|
||||||
|
295: 24(i16vec4) GroupNonUniformRotateKHR 42 293 294
|
||||||
|
296: 268(ptr) AccessChain 35(data) 291 75
|
||||||
|
Store 296 295
|
||||||
|
297: 6(int) Load 8(delta)
|
||||||
|
298: 260(ptr) AccessChain 35(data) 13 75 37
|
||||||
|
299: 23(int16_t) Load 298
|
||||||
|
300: 6(int) Load 8(delta)
|
||||||
|
301: 23(int16_t) GroupNonUniformRotateKHR 42 299 300 56
|
||||||
|
302: 260(ptr) AccessChain 35(data) 297 75 37
|
||||||
|
Store 302 301
|
||||||
|
303: 6(int) Load 8(delta)
|
||||||
|
304: 268(ptr) AccessChain 35(data) 46 75
|
||||||
|
305: 24(i16vec4) Load 304
|
||||||
|
306:267(i16vec2) VectorShuffle 305 305 0 1
|
||||||
|
307: 6(int) Load 8(delta)
|
||||||
|
308:267(i16vec2) GroupNonUniformRotateKHR 42 306 307 56
|
||||||
|
309: 260(ptr) AccessChain 35(data) 303 75 37
|
||||||
|
310: 23(int16_t) CompositeExtract 308 0
|
||||||
|
Store 309 310
|
||||||
|
311: 260(ptr) AccessChain 35(data) 303 75 56
|
||||||
|
312: 23(int16_t) CompositeExtract 308 1
|
||||||
|
Store 311 312
|
||||||
|
313: 6(int) Load 8(delta)
|
||||||
|
314: 268(ptr) AccessChain 35(data) 60 75
|
||||||
|
315: 24(i16vec4) Load 314
|
||||||
|
316:279(i16vec3) VectorShuffle 315 315 0 1 2
|
||||||
|
317: 6(int) Load 8(delta)
|
||||||
|
318:279(i16vec3) GroupNonUniformRotateKHR 42 316 317 56
|
||||||
|
319: 260(ptr) AccessChain 35(data) 313 75 37
|
||||||
|
320: 23(int16_t) CompositeExtract 318 0
|
||||||
|
Store 319 320
|
||||||
|
321: 260(ptr) AccessChain 35(data) 313 75 56
|
||||||
|
322: 23(int16_t) CompositeExtract 318 1
|
||||||
|
Store 321 322
|
||||||
|
323: 260(ptr) AccessChain 35(data) 313 75 71
|
||||||
|
324: 23(int16_t) CompositeExtract 318 2
|
||||||
|
Store 323 324
|
||||||
|
325: 6(int) Load 8(delta)
|
||||||
|
326: 268(ptr) AccessChain 35(data) 75 75
|
||||||
|
327: 24(i16vec4) Load 326
|
||||||
|
328: 6(int) Load 8(delta)
|
||||||
|
329: 24(i16vec4) GroupNonUniformRotateKHR 42 327 328 56
|
||||||
|
330: 268(ptr) AccessChain 35(data) 325 75
|
||||||
|
Store 330 329
|
||||||
|
331: 6(int) Load 8(delta)
|
||||||
|
334: 333(ptr) AccessChain 35(data) 13 332 37
|
||||||
|
335: 25(int64_t) Load 334
|
||||||
|
336: 6(int) Load 8(delta)
|
||||||
|
337: 25(int64_t) GroupNonUniformRotateKHR 42 335 336
|
||||||
|
338: 333(ptr) AccessChain 35(data) 331 332 37
|
||||||
|
Store 338 337
|
||||||
|
339: 6(int) Load 8(delta)
|
||||||
|
342: 341(ptr) AccessChain 35(data) 46 332
|
||||||
|
343: 26(i64vec4) Load 342
|
||||||
|
344:340(i64vec2) VectorShuffle 343 343 0 1
|
||||||
|
345: 6(int) Load 8(delta)
|
||||||
|
346:340(i64vec2) GroupNonUniformRotateKHR 42 344 345
|
||||||
|
347: 333(ptr) AccessChain 35(data) 339 332 37
|
||||||
|
348: 25(int64_t) CompositeExtract 346 0
|
||||||
|
Store 347 348
|
||||||
|
349: 333(ptr) AccessChain 35(data) 339 332 56
|
||||||
|
350: 25(int64_t) CompositeExtract 346 1
|
||||||
|
Store 349 350
|
||||||
|
351: 6(int) Load 8(delta)
|
||||||
|
353: 341(ptr) AccessChain 35(data) 60 332
|
||||||
|
354: 26(i64vec4) Load 353
|
||||||
|
355:352(i64vec3) VectorShuffle 354 354 0 1 2
|
||||||
|
356: 6(int) Load 8(delta)
|
||||||
|
357:352(i64vec3) GroupNonUniformRotateKHR 42 355 356
|
||||||
|
358: 333(ptr) AccessChain 35(data) 351 332 37
|
||||||
|
359: 25(int64_t) CompositeExtract 357 0
|
||||||
|
Store 358 359
|
||||||
|
360: 333(ptr) AccessChain 35(data) 351 332 56
|
||||||
|
361: 25(int64_t) CompositeExtract 357 1
|
||||||
|
Store 360 361
|
||||||
|
362: 333(ptr) AccessChain 35(data) 351 332 71
|
||||||
|
363: 25(int64_t) CompositeExtract 357 2
|
||||||
|
Store 362 363
|
||||||
|
364: 6(int) Load 8(delta)
|
||||||
|
365: 341(ptr) AccessChain 35(data) 75 332
|
||||||
|
366: 26(i64vec4) Load 365
|
||||||
|
367: 6(int) Load 8(delta)
|
||||||
|
368: 26(i64vec4) GroupNonUniformRotateKHR 42 366 367
|
||||||
|
369: 341(ptr) AccessChain 35(data) 364 332
|
||||||
|
Store 369 368
|
||||||
|
370: 6(int) Load 8(delta)
|
||||||
|
371: 333(ptr) AccessChain 35(data) 13 332 37
|
||||||
|
372: 25(int64_t) Load 371
|
||||||
|
373: 6(int) Load 8(delta)
|
||||||
|
374: 25(int64_t) GroupNonUniformRotateKHR 42 372 373 56
|
||||||
|
375: 333(ptr) AccessChain 35(data) 370 332 37
|
||||||
|
Store 375 374
|
||||||
|
376: 6(int) Load 8(delta)
|
||||||
|
377: 341(ptr) AccessChain 35(data) 46 332
|
||||||
|
378: 26(i64vec4) Load 377
|
||||||
|
379:340(i64vec2) VectorShuffle 378 378 0 1
|
||||||
|
380: 6(int) Load 8(delta)
|
||||||
|
381:340(i64vec2) GroupNonUniformRotateKHR 42 379 380 56
|
||||||
|
382: 333(ptr) AccessChain 35(data) 376 332 37
|
||||||
|
383: 25(int64_t) CompositeExtract 381 0
|
||||||
|
Store 382 383
|
||||||
|
384: 333(ptr) AccessChain 35(data) 376 332 56
|
||||||
|
385: 25(int64_t) CompositeExtract 381 1
|
||||||
|
Store 384 385
|
||||||
|
386: 6(int) Load 8(delta)
|
||||||
|
387: 341(ptr) AccessChain 35(data) 60 332
|
||||||
|
388: 26(i64vec4) Load 387
|
||||||
|
389:352(i64vec3) VectorShuffle 388 388 0 1 2
|
||||||
|
390: 6(int) Load 8(delta)
|
||||||
|
391:352(i64vec3) GroupNonUniformRotateKHR 42 389 390 56
|
||||||
|
392: 333(ptr) AccessChain 35(data) 386 332 37
|
||||||
|
393: 25(int64_t) CompositeExtract 391 0
|
||||||
|
Store 392 393
|
||||||
|
394: 333(ptr) AccessChain 35(data) 386 332 56
|
||||||
|
395: 25(int64_t) CompositeExtract 391 1
|
||||||
|
Store 394 395
|
||||||
|
396: 333(ptr) AccessChain 35(data) 386 332 71
|
||||||
|
397: 25(int64_t) CompositeExtract 391 2
|
||||||
|
Store 396 397
|
||||||
|
398: 6(int) Load 8(delta)
|
||||||
|
399: 341(ptr) AccessChain 35(data) 75 332
|
||||||
|
400: 26(i64vec4) Load 399
|
||||||
|
401: 6(int) Load 8(delta)
|
||||||
|
402: 26(i64vec4) GroupNonUniformRotateKHR 42 400 401 56
|
||||||
|
403: 341(ptr) AccessChain 35(data) 398 332
|
||||||
|
Store 403 402
|
||||||
|
404: 6(int) Load 8(delta)
|
||||||
|
407: 406(ptr) AccessChain 35(data) 13 405 37
|
||||||
|
408: 27(int64_t) Load 407
|
||||||
|
409: 6(int) Load 8(delta)
|
||||||
|
410: 27(int64_t) GroupNonUniformRotateKHR 42 408 409
|
||||||
|
411: 406(ptr) AccessChain 35(data) 404 405 37
|
||||||
|
Store 411 410
|
||||||
|
412: 6(int) Load 8(delta)
|
||||||
|
415: 414(ptr) AccessChain 35(data) 46 405
|
||||||
|
416: 28(i64vec4) Load 415
|
||||||
|
417:413(i64vec2) VectorShuffle 416 416 0 1
|
||||||
|
418: 6(int) Load 8(delta)
|
||||||
|
419:413(i64vec2) GroupNonUniformRotateKHR 42 417 418
|
||||||
|
420: 406(ptr) AccessChain 35(data) 412 405 37
|
||||||
|
421: 27(int64_t) CompositeExtract 419 0
|
||||||
|
Store 420 421
|
||||||
|
422: 406(ptr) AccessChain 35(data) 412 405 56
|
||||||
|
423: 27(int64_t) CompositeExtract 419 1
|
||||||
|
Store 422 423
|
||||||
|
424: 6(int) Load 8(delta)
|
||||||
|
426: 414(ptr) AccessChain 35(data) 60 405
|
||||||
|
427: 28(i64vec4) Load 426
|
||||||
|
428:425(i64vec3) VectorShuffle 427 427 0 1 2
|
||||||
|
429: 6(int) Load 8(delta)
|
||||||
|
430:425(i64vec3) GroupNonUniformRotateKHR 42 428 429
|
||||||
|
431: 406(ptr) AccessChain 35(data) 424 405 37
|
||||||
|
432: 27(int64_t) CompositeExtract 430 0
|
||||||
|
Store 431 432
|
||||||
|
433: 406(ptr) AccessChain 35(data) 424 405 56
|
||||||
|
434: 27(int64_t) CompositeExtract 430 1
|
||||||
|
Store 433 434
|
||||||
|
435: 406(ptr) AccessChain 35(data) 424 405 71
|
||||||
|
436: 27(int64_t) CompositeExtract 430 2
|
||||||
|
Store 435 436
|
||||||
|
437: 6(int) Load 8(delta)
|
||||||
|
438: 414(ptr) AccessChain 35(data) 75 405
|
||||||
|
439: 28(i64vec4) Load 438
|
||||||
|
440: 6(int) Load 8(delta)
|
||||||
|
441: 28(i64vec4) GroupNonUniformRotateKHR 42 439 440
|
||||||
|
442: 414(ptr) AccessChain 35(data) 437 405
|
||||||
|
Store 442 441
|
||||||
|
443: 6(int) Load 8(delta)
|
||||||
|
444: 406(ptr) AccessChain 35(data) 13 405 37
|
||||||
|
445: 27(int64_t) Load 444
|
||||||
|
446: 6(int) Load 8(delta)
|
||||||
|
447: 27(int64_t) GroupNonUniformRotateKHR 42 445 446 56
|
||||||
|
448: 406(ptr) AccessChain 35(data) 443 405 37
|
||||||
|
Store 448 447
|
||||||
|
449: 6(int) Load 8(delta)
|
||||||
|
450: 414(ptr) AccessChain 35(data) 46 405
|
||||||
|
451: 28(i64vec4) Load 450
|
||||||
|
452:413(i64vec2) VectorShuffle 451 451 0 1
|
||||||
|
453: 6(int) Load 8(delta)
|
||||||
|
454:413(i64vec2) GroupNonUniformRotateKHR 42 452 453 56
|
||||||
|
455: 406(ptr) AccessChain 35(data) 449 405 37
|
||||||
|
456: 27(int64_t) CompositeExtract 454 0
|
||||||
|
Store 455 456
|
||||||
|
457: 406(ptr) AccessChain 35(data) 449 405 56
|
||||||
|
458: 27(int64_t) CompositeExtract 454 1
|
||||||
|
Store 457 458
|
||||||
|
459: 6(int) Load 8(delta)
|
||||||
|
460: 414(ptr) AccessChain 35(data) 60 405
|
||||||
|
461: 28(i64vec4) Load 460
|
||||||
|
462:425(i64vec3) VectorShuffle 461 461 0 1 2
|
||||||
|
463: 6(int) Load 8(delta)
|
||||||
|
464:425(i64vec3) GroupNonUniformRotateKHR 42 462 463 56
|
||||||
|
465: 406(ptr) AccessChain 35(data) 459 405 37
|
||||||
|
466: 27(int64_t) CompositeExtract 464 0
|
||||||
|
Store 465 466
|
||||||
|
467: 406(ptr) AccessChain 35(data) 459 405 56
|
||||||
|
468: 27(int64_t) CompositeExtract 464 1
|
||||||
|
Store 467 468
|
||||||
|
469: 406(ptr) AccessChain 35(data) 459 405 71
|
||||||
|
470: 27(int64_t) CompositeExtract 464 2
|
||||||
|
Store 469 470
|
||||||
|
471: 6(int) Load 8(delta)
|
||||||
|
472: 414(ptr) AccessChain 35(data) 75 405
|
||||||
|
473: 28(i64vec4) Load 472
|
||||||
|
474: 6(int) Load 8(delta)
|
||||||
|
475: 28(i64vec4) GroupNonUniformRotateKHR 42 473 474 56
|
||||||
|
476: 414(ptr) AccessChain 35(data) 471 405
|
||||||
|
Store 476 475
|
||||||
|
477: 6(int) Load 8(delta)
|
||||||
|
480: 479(ptr) AccessChain 35(data) 13 478 37
|
||||||
|
481:29(float16_t) Load 480
|
||||||
|
482: 6(int) Load 8(delta)
|
||||||
|
483:29(float16_t) GroupNonUniformRotateKHR 42 481 482
|
||||||
|
484: 479(ptr) AccessChain 35(data) 477 478 37
|
||||||
|
Store 484 483
|
||||||
|
485: 6(int) Load 8(delta)
|
||||||
|
488: 487(ptr) AccessChain 35(data) 46 478
|
||||||
|
489: 30(f16vec4) Load 488
|
||||||
|
490:486(f16vec2) VectorShuffle 489 489 0 1
|
||||||
|
491: 6(int) Load 8(delta)
|
||||||
|
492:486(f16vec2) GroupNonUniformRotateKHR 42 490 491
|
||||||
|
493: 479(ptr) AccessChain 35(data) 485 478 37
|
||||||
|
494:29(float16_t) CompositeExtract 492 0
|
||||||
|
Store 493 494
|
||||||
|
495: 479(ptr) AccessChain 35(data) 485 478 56
|
||||||
|
496:29(float16_t) CompositeExtract 492 1
|
||||||
|
Store 495 496
|
||||||
|
497: 6(int) Load 8(delta)
|
||||||
|
499: 487(ptr) AccessChain 35(data) 60 478
|
||||||
|
500: 30(f16vec4) Load 499
|
||||||
|
501:498(f16vec3) VectorShuffle 500 500 0 1 2
|
||||||
|
502: 6(int) Load 8(delta)
|
||||||
|
503:498(f16vec3) GroupNonUniformRotateKHR 42 501 502
|
||||||
|
504: 479(ptr) AccessChain 35(data) 497 478 37
|
||||||
|
505:29(float16_t) CompositeExtract 503 0
|
||||||
|
Store 504 505
|
||||||
|
506: 479(ptr) AccessChain 35(data) 497 478 56
|
||||||
|
507:29(float16_t) CompositeExtract 503 1
|
||||||
|
Store 506 507
|
||||||
|
508: 479(ptr) AccessChain 35(data) 497 478 71
|
||||||
|
509:29(float16_t) CompositeExtract 503 2
|
||||||
|
Store 508 509
|
||||||
|
510: 6(int) Load 8(delta)
|
||||||
|
511: 487(ptr) AccessChain 35(data) 75 478
|
||||||
|
512: 30(f16vec4) Load 511
|
||||||
|
513: 6(int) Load 8(delta)
|
||||||
|
514: 30(f16vec4) GroupNonUniformRotateKHR 42 512 513
|
||||||
|
515: 487(ptr) AccessChain 35(data) 510 478
|
||||||
|
Store 515 514
|
||||||
|
516: 6(int) Load 8(delta)
|
||||||
|
517: 479(ptr) AccessChain 35(data) 13 478 37
|
||||||
|
518:29(float16_t) Load 517
|
||||||
|
519: 6(int) Load 8(delta)
|
||||||
|
520:29(float16_t) GroupNonUniformRotateKHR 42 518 519 56
|
||||||
|
521: 479(ptr) AccessChain 35(data) 516 478 37
|
||||||
|
Store 521 520
|
||||||
|
522: 6(int) Load 8(delta)
|
||||||
|
523: 487(ptr) AccessChain 35(data) 46 478
|
||||||
|
524: 30(f16vec4) Load 523
|
||||||
|
525:486(f16vec2) VectorShuffle 524 524 0 1
|
||||||
|
526: 6(int) Load 8(delta)
|
||||||
|
527:486(f16vec2) GroupNonUniformRotateKHR 42 525 526 56
|
||||||
|
528: 479(ptr) AccessChain 35(data) 522 478 37
|
||||||
|
529:29(float16_t) CompositeExtract 527 0
|
||||||
|
Store 528 529
|
||||||
|
530: 479(ptr) AccessChain 35(data) 522 478 56
|
||||||
|
531:29(float16_t) CompositeExtract 527 1
|
||||||
|
Store 530 531
|
||||||
|
532: 6(int) Load 8(delta)
|
||||||
|
533: 487(ptr) AccessChain 35(data) 60 478
|
||||||
|
534: 30(f16vec4) Load 533
|
||||||
|
535:498(f16vec3) VectorShuffle 534 534 0 1 2
|
||||||
|
536: 6(int) Load 8(delta)
|
||||||
|
537:498(f16vec3) GroupNonUniformRotateKHR 42 535 536 56
|
||||||
|
538: 479(ptr) AccessChain 35(data) 532 478 37
|
||||||
|
539:29(float16_t) CompositeExtract 537 0
|
||||||
|
Store 538 539
|
||||||
|
540: 479(ptr) AccessChain 35(data) 532 478 56
|
||||||
|
541:29(float16_t) CompositeExtract 537 1
|
||||||
|
Store 540 541
|
||||||
|
542: 479(ptr) AccessChain 35(data) 532 478 71
|
||||||
|
543:29(float16_t) CompositeExtract 537 2
|
||||||
|
Store 542 543
|
||||||
|
544: 6(int) Load 8(delta)
|
||||||
|
545: 487(ptr) AccessChain 35(data) 75 478
|
||||||
|
546: 30(f16vec4) Load 545
|
||||||
|
547: 6(int) Load 8(delta)
|
||||||
|
548: 30(f16vec4) GroupNonUniformRotateKHR 42 546 547 56
|
||||||
|
549: 487(ptr) AccessChain 35(data) 544 478
|
||||||
|
Store 549 548
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
61
Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out
Normal file
61
Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
spv.subgroupExtendedTypesRotateNeg.comp
|
||||||
|
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 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 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 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 int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
ERROR: 0:57: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
ERROR: 0:58: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int16_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 uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
ERROR: 0:67: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
ERROR: 0:68: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16
|
||||||
|
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 int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
ERROR: 0:77: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
ERROR: 0:78: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int64_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 uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
ERROR: 0:87: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
ERROR: 0:88: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64
|
||||||
|
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: 0:96: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
|
||||||
|
ERROR: 0:97: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
|
||||||
|
ERROR: 0:98: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16
|
||||||
|
ERROR: 0:99: '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
|
||||||
528
Test/baseResults/spv.subgroupRotate.comp.out
Normal file
528
Test/baseResults/spv.subgroupRotate.comp.out
Normal file
|
|
@ -0,0 +1,528 @@
|
||||||
|
spv.subgroupRotate.comp
|
||||||
|
// Module Version 10300
|
||||||
|
// Generated by (magic number): 8000b
|
||||||
|
// Id's are bound by 418
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability Float64
|
||||||
|
Capability CapabilityGroupNonUniformRotateKHR
|
||||||
|
Extension "SPV_KHR_subgroup_rotate"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint GLCompute 4 "main"
|
||||||
|
ExecutionMode 4 LocalSize 8 8 1
|
||||||
|
Source GLSL 450
|
||||||
|
SourceExtension "GL_KHR_shader_subgroup_rotate"
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "delta"
|
||||||
|
Name 9 "roblock"
|
||||||
|
MemberName 9(roblock) 0 "delta"
|
||||||
|
Name 11 "ro"
|
||||||
|
Name 23 "Buffers"
|
||||||
|
MemberName 23(Buffers) 0 "f4"
|
||||||
|
MemberName 23(Buffers) 1 "i4"
|
||||||
|
MemberName 23(Buffers) 2 "u4"
|
||||||
|
MemberName 23(Buffers) 3 "d4"
|
||||||
|
Name 27 "data"
|
||||||
|
MemberDecorate 9(roblock) 0 NonWritable
|
||||||
|
MemberDecorate 9(roblock) 0 Offset 0
|
||||||
|
Decorate 9(roblock) Block
|
||||||
|
Decorate 11(ro) DescriptorSet 0
|
||||||
|
Decorate 11(ro) Binding 1
|
||||||
|
MemberDecorate 23(Buffers) 0 Offset 0
|
||||||
|
MemberDecorate 23(Buffers) 1 Offset 16
|
||||||
|
MemberDecorate 23(Buffers) 2 Offset 32
|
||||||
|
MemberDecorate 23(Buffers) 3 Offset 64
|
||||||
|
Decorate 23(Buffers) Block
|
||||||
|
Decorate 27(data) DescriptorSet 0
|
||||||
|
Decorate 27(data) Binding 0
|
||||||
|
Decorate 417 BuiltIn WorkgroupSize
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 0
|
||||||
|
7: TypePointer Function 6(int)
|
||||||
|
9(roblock): TypeStruct 6(int)
|
||||||
|
10: TypePointer StorageBuffer 9(roblock)
|
||||||
|
11(ro): 10(ptr) Variable StorageBuffer
|
||||||
|
12: TypeInt 32 1
|
||||||
|
13: 12(int) Constant 0
|
||||||
|
14: TypePointer StorageBuffer 6(int)
|
||||||
|
17: TypeFloat 32
|
||||||
|
18: TypeVector 17(float) 4
|
||||||
|
19: TypeVector 12(int) 4
|
||||||
|
20: TypeVector 6(int) 4
|
||||||
|
21: TypeFloat 64
|
||||||
|
22: TypeVector 21(float64_t) 4
|
||||||
|
23(Buffers): TypeStruct 18(fvec4) 19(ivec4) 20(ivec4) 22(f64vec4)
|
||||||
|
24: 6(int) Constant 4
|
||||||
|
25: TypeArray 23(Buffers) 24
|
||||||
|
26: TypePointer StorageBuffer 25
|
||||||
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
|
29: 6(int) Constant 0
|
||||||
|
30: TypePointer StorageBuffer 17(float)
|
||||||
|
34: 6(int) Constant 3
|
||||||
|
38: 12(int) Constant 1
|
||||||
|
39: TypeVector 17(float) 2
|
||||||
|
40: TypePointer StorageBuffer 18(fvec4)
|
||||||
|
48: 6(int) Constant 1
|
||||||
|
52: 12(int) Constant 2
|
||||||
|
53: TypeVector 17(float) 3
|
||||||
|
63: 6(int) Constant 2
|
||||||
|
67: 12(int) Constant 3
|
||||||
|
74: TypePointer StorageBuffer 12(int)
|
||||||
|
81: TypeVector 12(int) 2
|
||||||
|
82: TypePointer StorageBuffer 19(ivec4)
|
||||||
|
93: TypeVector 12(int) 3
|
||||||
|
118: TypeVector 6(int) 2
|
||||||
|
119: TypePointer StorageBuffer 20(ivec4)
|
||||||
|
130: TypeVector 6(int) 3
|
||||||
|
149: TypePointer StorageBuffer 21(float64_t)
|
||||||
|
156: TypeVector 21(float64_t) 2
|
||||||
|
157: TypePointer StorageBuffer 22(f64vec4)
|
||||||
|
168: TypeVector 21(float64_t) 3
|
||||||
|
189: TypeBool
|
||||||
|
199: 81(ivec2) ConstantComposite 13 13
|
||||||
|
200: TypeVector 189(bool) 2
|
||||||
|
204: 81(ivec2) ConstantComposite 38 38
|
||||||
|
214: 93(ivec3) ConstantComposite 13 13 13
|
||||||
|
215: TypeVector 189(bool) 3
|
||||||
|
219: 93(ivec3) ConstantComposite 38 38 38
|
||||||
|
230: 19(ivec4) ConstantComposite 13 13 13 13
|
||||||
|
231: TypeVector 189(bool) 4
|
||||||
|
235: 19(ivec4) ConstantComposite 38 38 38 38
|
||||||
|
416: 6(int) Constant 8
|
||||||
|
417: 130(ivec3) ConstantComposite 416 416 48
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
8(delta): 7(ptr) Variable Function
|
||||||
|
15: 14(ptr) AccessChain 11(ro) 13
|
||||||
|
16: 6(int) Load 15
|
||||||
|
Store 8(delta) 16
|
||||||
|
28: 6(int) Load 8(delta)
|
||||||
|
31: 30(ptr) AccessChain 27(data) 13 13 29
|
||||||
|
32: 17(float) Load 31
|
||||||
|
33: 6(int) Load 8(delta)
|
||||||
|
35: 17(float) GroupNonUniformRotateKHR 34 32 33
|
||||||
|
36: 30(ptr) AccessChain 27(data) 28 13 29
|
||||||
|
Store 36 35
|
||||||
|
37: 6(int) Load 8(delta)
|
||||||
|
41: 40(ptr) AccessChain 27(data) 38 13
|
||||||
|
42: 18(fvec4) Load 41
|
||||||
|
43: 39(fvec2) VectorShuffle 42 42 0 1
|
||||||
|
44: 6(int) Load 8(delta)
|
||||||
|
45: 39(fvec2) GroupNonUniformRotateKHR 34 43 44
|
||||||
|
46: 30(ptr) AccessChain 27(data) 37 13 29
|
||||||
|
47: 17(float) CompositeExtract 45 0
|
||||||
|
Store 46 47
|
||||||
|
49: 30(ptr) AccessChain 27(data) 37 13 48
|
||||||
|
50: 17(float) CompositeExtract 45 1
|
||||||
|
Store 49 50
|
||||||
|
51: 6(int) Load 8(delta)
|
||||||
|
54: 40(ptr) AccessChain 27(data) 52 13
|
||||||
|
55: 18(fvec4) Load 54
|
||||||
|
56: 53(fvec3) VectorShuffle 55 55 0 1 2
|
||||||
|
57: 6(int) Load 8(delta)
|
||||||
|
58: 53(fvec3) GroupNonUniformRotateKHR 34 56 57
|
||||||
|
59: 30(ptr) AccessChain 27(data) 51 13 29
|
||||||
|
60: 17(float) CompositeExtract 58 0
|
||||||
|
Store 59 60
|
||||||
|
61: 30(ptr) AccessChain 27(data) 51 13 48
|
||||||
|
62: 17(float) CompositeExtract 58 1
|
||||||
|
Store 61 62
|
||||||
|
64: 30(ptr) AccessChain 27(data) 51 13 63
|
||||||
|
65: 17(float) CompositeExtract 58 2
|
||||||
|
Store 64 65
|
||||||
|
66: 6(int) Load 8(delta)
|
||||||
|
68: 40(ptr) AccessChain 27(data) 67 13
|
||||||
|
69: 18(fvec4) Load 68
|
||||||
|
70: 6(int) Load 8(delta)
|
||||||
|
71: 18(fvec4) GroupNonUniformRotateKHR 34 69 70
|
||||||
|
72: 40(ptr) AccessChain 27(data) 66 13
|
||||||
|
Store 72 71
|
||||||
|
73: 6(int) Load 8(delta)
|
||||||
|
75: 74(ptr) AccessChain 27(data) 13 38 29
|
||||||
|
76: 12(int) Load 75
|
||||||
|
77: 6(int) Load 8(delta)
|
||||||
|
78: 12(int) GroupNonUniformRotateKHR 34 76 77
|
||||||
|
79: 74(ptr) AccessChain 27(data) 73 38 29
|
||||||
|
Store 79 78
|
||||||
|
80: 6(int) Load 8(delta)
|
||||||
|
83: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
84: 19(ivec4) Load 83
|
||||||
|
85: 81(ivec2) VectorShuffle 84 84 0 1
|
||||||
|
86: 6(int) Load 8(delta)
|
||||||
|
87: 81(ivec2) GroupNonUniformRotateKHR 34 85 86
|
||||||
|
88: 74(ptr) AccessChain 27(data) 80 38 29
|
||||||
|
89: 12(int) CompositeExtract 87 0
|
||||||
|
Store 88 89
|
||||||
|
90: 74(ptr) AccessChain 27(data) 80 38 48
|
||||||
|
91: 12(int) CompositeExtract 87 1
|
||||||
|
Store 90 91
|
||||||
|
92: 6(int) Load 8(delta)
|
||||||
|
94: 82(ptr) AccessChain 27(data) 52 38
|
||||||
|
95: 19(ivec4) Load 94
|
||||||
|
96: 93(ivec3) VectorShuffle 95 95 0 1 2
|
||||||
|
97: 6(int) Load 8(delta)
|
||||||
|
98: 93(ivec3) GroupNonUniformRotateKHR 34 96 97
|
||||||
|
99: 74(ptr) AccessChain 27(data) 92 38 29
|
||||||
|
100: 12(int) CompositeExtract 98 0
|
||||||
|
Store 99 100
|
||||||
|
101: 74(ptr) AccessChain 27(data) 92 38 48
|
||||||
|
102: 12(int) CompositeExtract 98 1
|
||||||
|
Store 101 102
|
||||||
|
103: 74(ptr) AccessChain 27(data) 92 38 63
|
||||||
|
104: 12(int) CompositeExtract 98 2
|
||||||
|
Store 103 104
|
||||||
|
105: 6(int) Load 8(delta)
|
||||||
|
106: 82(ptr) AccessChain 27(data) 67 38
|
||||||
|
107: 19(ivec4) Load 106
|
||||||
|
108: 6(int) Load 8(delta)
|
||||||
|
109: 19(ivec4) GroupNonUniformRotateKHR 34 107 108
|
||||||
|
110: 82(ptr) AccessChain 27(data) 105 38
|
||||||
|
Store 110 109
|
||||||
|
111: 6(int) Load 8(delta)
|
||||||
|
112: 14(ptr) AccessChain 27(data) 13 52 29
|
||||||
|
113: 6(int) Load 112
|
||||||
|
114: 6(int) Load 8(delta)
|
||||||
|
115: 6(int) GroupNonUniformRotateKHR 34 113 114
|
||||||
|
116: 14(ptr) AccessChain 27(data) 111 52 29
|
||||||
|
Store 116 115
|
||||||
|
117: 6(int) Load 8(delta)
|
||||||
|
120: 119(ptr) AccessChain 27(data) 38 52
|
||||||
|
121: 20(ivec4) Load 120
|
||||||
|
122: 118(ivec2) VectorShuffle 121 121 0 1
|
||||||
|
123: 6(int) Load 8(delta)
|
||||||
|
124: 118(ivec2) GroupNonUniformRotateKHR 34 122 123
|
||||||
|
125: 14(ptr) AccessChain 27(data) 117 52 29
|
||||||
|
126: 6(int) CompositeExtract 124 0
|
||||||
|
Store 125 126
|
||||||
|
127: 14(ptr) AccessChain 27(data) 117 52 48
|
||||||
|
128: 6(int) CompositeExtract 124 1
|
||||||
|
Store 127 128
|
||||||
|
129: 6(int) Load 8(delta)
|
||||||
|
131: 119(ptr) AccessChain 27(data) 52 52
|
||||||
|
132: 20(ivec4) Load 131
|
||||||
|
133: 130(ivec3) VectorShuffle 132 132 0 1 2
|
||||||
|
134: 6(int) Load 8(delta)
|
||||||
|
135: 130(ivec3) GroupNonUniformRotateKHR 34 133 134
|
||||||
|
136: 14(ptr) AccessChain 27(data) 129 52 29
|
||||||
|
137: 6(int) CompositeExtract 135 0
|
||||||
|
Store 136 137
|
||||||
|
138: 14(ptr) AccessChain 27(data) 129 52 48
|
||||||
|
139: 6(int) CompositeExtract 135 1
|
||||||
|
Store 138 139
|
||||||
|
140: 14(ptr) AccessChain 27(data) 129 52 63
|
||||||
|
141: 6(int) CompositeExtract 135 2
|
||||||
|
Store 140 141
|
||||||
|
142: 6(int) Load 8(delta)
|
||||||
|
143: 119(ptr) AccessChain 27(data) 67 52
|
||||||
|
144: 20(ivec4) Load 143
|
||||||
|
145: 6(int) Load 8(delta)
|
||||||
|
146: 20(ivec4) GroupNonUniformRotateKHR 34 144 145
|
||||||
|
147: 119(ptr) AccessChain 27(data) 142 52
|
||||||
|
Store 147 146
|
||||||
|
148: 6(int) Load 8(delta)
|
||||||
|
150: 149(ptr) AccessChain 27(data) 13 67 29
|
||||||
|
151:21(float64_t) Load 150
|
||||||
|
152: 6(int) Load 8(delta)
|
||||||
|
153:21(float64_t) GroupNonUniformRotateKHR 34 151 152
|
||||||
|
154: 149(ptr) AccessChain 27(data) 148 67 29
|
||||||
|
Store 154 153
|
||||||
|
155: 6(int) Load 8(delta)
|
||||||
|
158: 157(ptr) AccessChain 27(data) 38 67
|
||||||
|
159: 22(f64vec4) Load 158
|
||||||
|
160:156(f64vec2) VectorShuffle 159 159 0 1
|
||||||
|
161: 6(int) Load 8(delta)
|
||||||
|
162:156(f64vec2) GroupNonUniformRotateKHR 34 160 161
|
||||||
|
163: 149(ptr) AccessChain 27(data) 155 67 29
|
||||||
|
164:21(float64_t) CompositeExtract 162 0
|
||||||
|
Store 163 164
|
||||||
|
165: 149(ptr) AccessChain 27(data) 155 67 48
|
||||||
|
166:21(float64_t) CompositeExtract 162 1
|
||||||
|
Store 165 166
|
||||||
|
167: 6(int) Load 8(delta)
|
||||||
|
169: 157(ptr) AccessChain 27(data) 52 67
|
||||||
|
170: 22(f64vec4) Load 169
|
||||||
|
171:168(f64vec3) VectorShuffle 170 170 0 1 2
|
||||||
|
172: 6(int) Load 8(delta)
|
||||||
|
173:168(f64vec3) GroupNonUniformRotateKHR 34 171 172
|
||||||
|
174: 149(ptr) AccessChain 27(data) 167 67 29
|
||||||
|
175:21(float64_t) CompositeExtract 173 0
|
||||||
|
Store 174 175
|
||||||
|
176: 149(ptr) AccessChain 27(data) 167 67 48
|
||||||
|
177:21(float64_t) CompositeExtract 173 1
|
||||||
|
Store 176 177
|
||||||
|
178: 149(ptr) AccessChain 27(data) 167 67 63
|
||||||
|
179:21(float64_t) CompositeExtract 173 2
|
||||||
|
Store 178 179
|
||||||
|
180: 6(int) Load 8(delta)
|
||||||
|
181: 157(ptr) AccessChain 27(data) 67 67
|
||||||
|
182: 22(f64vec4) Load 181
|
||||||
|
183: 6(int) Load 8(delta)
|
||||||
|
184: 22(f64vec4) GroupNonUniformRotateKHR 34 182 183
|
||||||
|
185: 157(ptr) AccessChain 27(data) 180 67
|
||||||
|
Store 185 184
|
||||||
|
186: 6(int) Load 8(delta)
|
||||||
|
187: 74(ptr) AccessChain 27(data) 13 38 29
|
||||||
|
188: 12(int) Load 187
|
||||||
|
190: 189(bool) SLessThan 188 13
|
||||||
|
191: 6(int) Load 8(delta)
|
||||||
|
192: 189(bool) GroupNonUniformRotateKHR 34 190 191
|
||||||
|
193: 12(int) Select 192 38 13
|
||||||
|
194: 74(ptr) AccessChain 27(data) 186 38 29
|
||||||
|
Store 194 193
|
||||||
|
195: 6(int) Load 8(delta)
|
||||||
|
196: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
197: 19(ivec4) Load 196
|
||||||
|
198: 81(ivec2) VectorShuffle 197 197 0 1
|
||||||
|
201: 200(bvec2) SLessThan 198 199
|
||||||
|
202: 6(int) Load 8(delta)
|
||||||
|
203: 200(bvec2) GroupNonUniformRotateKHR 34 201 202
|
||||||
|
205: 81(ivec2) Select 203 204 199
|
||||||
|
206: 74(ptr) AccessChain 27(data) 195 38 29
|
||||||
|
207: 12(int) CompositeExtract 205 0
|
||||||
|
Store 206 207
|
||||||
|
208: 74(ptr) AccessChain 27(data) 195 38 48
|
||||||
|
209: 12(int) CompositeExtract 205 1
|
||||||
|
Store 208 209
|
||||||
|
210: 6(int) Load 8(delta)
|
||||||
|
211: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
212: 19(ivec4) Load 211
|
||||||
|
213: 93(ivec3) VectorShuffle 212 212 0 1 2
|
||||||
|
216: 215(bvec3) SLessThan 213 214
|
||||||
|
217: 6(int) Load 8(delta)
|
||||||
|
218: 215(bvec3) GroupNonUniformRotateKHR 34 216 217
|
||||||
|
220: 93(ivec3) Select 218 219 214
|
||||||
|
221: 74(ptr) AccessChain 27(data) 210 38 29
|
||||||
|
222: 12(int) CompositeExtract 220 0
|
||||||
|
Store 221 222
|
||||||
|
223: 74(ptr) AccessChain 27(data) 210 38 48
|
||||||
|
224: 12(int) CompositeExtract 220 1
|
||||||
|
Store 223 224
|
||||||
|
225: 74(ptr) AccessChain 27(data) 210 38 63
|
||||||
|
226: 12(int) CompositeExtract 220 2
|
||||||
|
Store 225 226
|
||||||
|
227: 6(int) Load 8(delta)
|
||||||
|
228: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
229: 19(ivec4) Load 228
|
||||||
|
232: 231(bvec4) SLessThan 229 230
|
||||||
|
233: 6(int) Load 8(delta)
|
||||||
|
234: 231(bvec4) GroupNonUniformRotateKHR 34 232 233
|
||||||
|
236: 19(ivec4) Select 234 235 230
|
||||||
|
237: 82(ptr) AccessChain 27(data) 227 38
|
||||||
|
Store 237 236
|
||||||
|
238: 6(int) Load 8(delta)
|
||||||
|
239: 30(ptr) AccessChain 27(data) 13 13 29
|
||||||
|
240: 17(float) Load 239
|
||||||
|
241: 6(int) Load 8(delta)
|
||||||
|
242: 17(float) GroupNonUniformRotateKHR 34 240 241 48
|
||||||
|
243: 30(ptr) AccessChain 27(data) 238 13 29
|
||||||
|
Store 243 242
|
||||||
|
244: 6(int) Load 8(delta)
|
||||||
|
245: 40(ptr) AccessChain 27(data) 38 13
|
||||||
|
246: 18(fvec4) Load 245
|
||||||
|
247: 39(fvec2) VectorShuffle 246 246 0 1
|
||||||
|
248: 6(int) Load 8(delta)
|
||||||
|
249: 39(fvec2) GroupNonUniformRotateKHR 34 247 248 48
|
||||||
|
250: 30(ptr) AccessChain 27(data) 244 13 29
|
||||||
|
251: 17(float) CompositeExtract 249 0
|
||||||
|
Store 250 251
|
||||||
|
252: 30(ptr) AccessChain 27(data) 244 13 48
|
||||||
|
253: 17(float) CompositeExtract 249 1
|
||||||
|
Store 252 253
|
||||||
|
254: 6(int) Load 8(delta)
|
||||||
|
255: 40(ptr) AccessChain 27(data) 52 13
|
||||||
|
256: 18(fvec4) Load 255
|
||||||
|
257: 53(fvec3) VectorShuffle 256 256 0 1 2
|
||||||
|
258: 6(int) Load 8(delta)
|
||||||
|
259: 53(fvec3) GroupNonUniformRotateKHR 34 257 258 48
|
||||||
|
260: 30(ptr) AccessChain 27(data) 254 13 29
|
||||||
|
261: 17(float) CompositeExtract 259 0
|
||||||
|
Store 260 261
|
||||||
|
262: 30(ptr) AccessChain 27(data) 254 13 48
|
||||||
|
263: 17(float) CompositeExtract 259 1
|
||||||
|
Store 262 263
|
||||||
|
264: 30(ptr) AccessChain 27(data) 254 13 63
|
||||||
|
265: 17(float) CompositeExtract 259 2
|
||||||
|
Store 264 265
|
||||||
|
266: 6(int) Load 8(delta)
|
||||||
|
267: 40(ptr) AccessChain 27(data) 67 13
|
||||||
|
268: 18(fvec4) Load 267
|
||||||
|
269: 6(int) Load 8(delta)
|
||||||
|
270: 18(fvec4) GroupNonUniformRotateKHR 34 268 269 48
|
||||||
|
271: 40(ptr) AccessChain 27(data) 266 13
|
||||||
|
Store 271 270
|
||||||
|
272: 6(int) Load 8(delta)
|
||||||
|
273: 74(ptr) AccessChain 27(data) 13 38 29
|
||||||
|
274: 12(int) Load 273
|
||||||
|
275: 6(int) Load 8(delta)
|
||||||
|
276: 12(int) GroupNonUniformRotateKHR 34 274 275 48
|
||||||
|
277: 74(ptr) AccessChain 27(data) 272 38 29
|
||||||
|
Store 277 276
|
||||||
|
278: 6(int) Load 8(delta)
|
||||||
|
279: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
280: 19(ivec4) Load 279
|
||||||
|
281: 81(ivec2) VectorShuffle 280 280 0 1
|
||||||
|
282: 6(int) Load 8(delta)
|
||||||
|
283: 81(ivec2) GroupNonUniformRotateKHR 34 281 282 48
|
||||||
|
284: 74(ptr) AccessChain 27(data) 278 38 29
|
||||||
|
285: 12(int) CompositeExtract 283 0
|
||||||
|
Store 284 285
|
||||||
|
286: 74(ptr) AccessChain 27(data) 278 38 48
|
||||||
|
287: 12(int) CompositeExtract 283 1
|
||||||
|
Store 286 287
|
||||||
|
288: 6(int) Load 8(delta)
|
||||||
|
289: 82(ptr) AccessChain 27(data) 52 38
|
||||||
|
290: 19(ivec4) Load 289
|
||||||
|
291: 93(ivec3) VectorShuffle 290 290 0 1 2
|
||||||
|
292: 6(int) Load 8(delta)
|
||||||
|
293: 93(ivec3) GroupNonUniformRotateKHR 34 291 292 48
|
||||||
|
294: 74(ptr) AccessChain 27(data) 288 38 29
|
||||||
|
295: 12(int) CompositeExtract 293 0
|
||||||
|
Store 294 295
|
||||||
|
296: 74(ptr) AccessChain 27(data) 288 38 48
|
||||||
|
297: 12(int) CompositeExtract 293 1
|
||||||
|
Store 296 297
|
||||||
|
298: 74(ptr) AccessChain 27(data) 288 38 63
|
||||||
|
299: 12(int) CompositeExtract 293 2
|
||||||
|
Store 298 299
|
||||||
|
300: 6(int) Load 8(delta)
|
||||||
|
301: 82(ptr) AccessChain 27(data) 67 38
|
||||||
|
302: 19(ivec4) Load 301
|
||||||
|
303: 6(int) Load 8(delta)
|
||||||
|
304: 19(ivec4) GroupNonUniformRotateKHR 34 302 303 48
|
||||||
|
305: 82(ptr) AccessChain 27(data) 300 38
|
||||||
|
Store 305 304
|
||||||
|
306: 6(int) Load 8(delta)
|
||||||
|
307: 14(ptr) AccessChain 27(data) 13 52 29
|
||||||
|
308: 6(int) Load 307
|
||||||
|
309: 6(int) Load 8(delta)
|
||||||
|
310: 6(int) GroupNonUniformRotateKHR 34 308 309 48
|
||||||
|
311: 14(ptr) AccessChain 27(data) 306 52 29
|
||||||
|
Store 311 310
|
||||||
|
312: 6(int) Load 8(delta)
|
||||||
|
313: 119(ptr) AccessChain 27(data) 38 52
|
||||||
|
314: 20(ivec4) Load 313
|
||||||
|
315: 118(ivec2) VectorShuffle 314 314 0 1
|
||||||
|
316: 6(int) Load 8(delta)
|
||||||
|
317: 118(ivec2) GroupNonUniformRotateKHR 34 315 316 48
|
||||||
|
318: 14(ptr) AccessChain 27(data) 312 52 29
|
||||||
|
319: 6(int) CompositeExtract 317 0
|
||||||
|
Store 318 319
|
||||||
|
320: 14(ptr) AccessChain 27(data) 312 52 48
|
||||||
|
321: 6(int) CompositeExtract 317 1
|
||||||
|
Store 320 321
|
||||||
|
322: 6(int) Load 8(delta)
|
||||||
|
323: 119(ptr) AccessChain 27(data) 52 52
|
||||||
|
324: 20(ivec4) Load 323
|
||||||
|
325: 130(ivec3) VectorShuffle 324 324 0 1 2
|
||||||
|
326: 6(int) Load 8(delta)
|
||||||
|
327: 130(ivec3) GroupNonUniformRotateKHR 34 325 326 48
|
||||||
|
328: 14(ptr) AccessChain 27(data) 322 52 29
|
||||||
|
329: 6(int) CompositeExtract 327 0
|
||||||
|
Store 328 329
|
||||||
|
330: 14(ptr) AccessChain 27(data) 322 52 48
|
||||||
|
331: 6(int) CompositeExtract 327 1
|
||||||
|
Store 330 331
|
||||||
|
332: 14(ptr) AccessChain 27(data) 322 52 63
|
||||||
|
333: 6(int) CompositeExtract 327 2
|
||||||
|
Store 332 333
|
||||||
|
334: 6(int) Load 8(delta)
|
||||||
|
335: 119(ptr) AccessChain 27(data) 67 52
|
||||||
|
336: 20(ivec4) Load 335
|
||||||
|
337: 6(int) Load 8(delta)
|
||||||
|
338: 20(ivec4) GroupNonUniformRotateKHR 34 336 337 48
|
||||||
|
339: 119(ptr) AccessChain 27(data) 334 52
|
||||||
|
Store 339 338
|
||||||
|
340: 6(int) Load 8(delta)
|
||||||
|
341: 149(ptr) AccessChain 27(data) 13 67 29
|
||||||
|
342:21(float64_t) Load 341
|
||||||
|
343: 6(int) Load 8(delta)
|
||||||
|
344:21(float64_t) GroupNonUniformRotateKHR 34 342 343 48
|
||||||
|
345: 149(ptr) AccessChain 27(data) 340 67 29
|
||||||
|
Store 345 344
|
||||||
|
346: 6(int) Load 8(delta)
|
||||||
|
347: 157(ptr) AccessChain 27(data) 38 67
|
||||||
|
348: 22(f64vec4) Load 347
|
||||||
|
349:156(f64vec2) VectorShuffle 348 348 0 1
|
||||||
|
350: 6(int) Load 8(delta)
|
||||||
|
351:156(f64vec2) GroupNonUniformRotateKHR 34 349 350 48
|
||||||
|
352: 149(ptr) AccessChain 27(data) 346 67 29
|
||||||
|
353:21(float64_t) CompositeExtract 351 0
|
||||||
|
Store 352 353
|
||||||
|
354: 149(ptr) AccessChain 27(data) 346 67 48
|
||||||
|
355:21(float64_t) CompositeExtract 351 1
|
||||||
|
Store 354 355
|
||||||
|
356: 6(int) Load 8(delta)
|
||||||
|
357: 157(ptr) AccessChain 27(data) 52 67
|
||||||
|
358: 22(f64vec4) Load 357
|
||||||
|
359:168(f64vec3) VectorShuffle 358 358 0 1 2
|
||||||
|
360: 6(int) Load 8(delta)
|
||||||
|
361:168(f64vec3) GroupNonUniformRotateKHR 34 359 360 48
|
||||||
|
362: 149(ptr) AccessChain 27(data) 356 67 29
|
||||||
|
363:21(float64_t) CompositeExtract 361 0
|
||||||
|
Store 362 363
|
||||||
|
364: 149(ptr) AccessChain 27(data) 356 67 48
|
||||||
|
365:21(float64_t) CompositeExtract 361 1
|
||||||
|
Store 364 365
|
||||||
|
366: 149(ptr) AccessChain 27(data) 356 67 63
|
||||||
|
367:21(float64_t) CompositeExtract 361 2
|
||||||
|
Store 366 367
|
||||||
|
368: 6(int) Load 8(delta)
|
||||||
|
369: 157(ptr) AccessChain 27(data) 67 67
|
||||||
|
370: 22(f64vec4) Load 369
|
||||||
|
371: 6(int) Load 8(delta)
|
||||||
|
372: 22(f64vec4) GroupNonUniformRotateKHR 34 370 371 48
|
||||||
|
373: 157(ptr) AccessChain 27(data) 368 67
|
||||||
|
Store 373 372
|
||||||
|
374: 6(int) Load 8(delta)
|
||||||
|
375: 74(ptr) AccessChain 27(data) 13 38 29
|
||||||
|
376: 12(int) Load 375
|
||||||
|
377: 189(bool) SLessThan 376 13
|
||||||
|
378: 6(int) Load 8(delta)
|
||||||
|
379: 189(bool) GroupNonUniformRotateKHR 34 377 378 48
|
||||||
|
380: 12(int) Select 379 38 13
|
||||||
|
381: 74(ptr) AccessChain 27(data) 374 38 29
|
||||||
|
Store 381 380
|
||||||
|
382: 6(int) Load 8(delta)
|
||||||
|
383: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
384: 19(ivec4) Load 383
|
||||||
|
385: 81(ivec2) VectorShuffle 384 384 0 1
|
||||||
|
386: 200(bvec2) SLessThan 385 199
|
||||||
|
387: 6(int) Load 8(delta)
|
||||||
|
388: 200(bvec2) GroupNonUniformRotateKHR 34 386 387 48
|
||||||
|
389: 81(ivec2) Select 388 204 199
|
||||||
|
390: 74(ptr) AccessChain 27(data) 382 38 29
|
||||||
|
391: 12(int) CompositeExtract 389 0
|
||||||
|
Store 390 391
|
||||||
|
392: 74(ptr) AccessChain 27(data) 382 38 48
|
||||||
|
393: 12(int) CompositeExtract 389 1
|
||||||
|
Store 392 393
|
||||||
|
394: 6(int) Load 8(delta)
|
||||||
|
395: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
396: 19(ivec4) Load 395
|
||||||
|
397: 93(ivec3) VectorShuffle 396 396 0 1 2
|
||||||
|
398: 215(bvec3) SLessThan 397 214
|
||||||
|
399: 6(int) Load 8(delta)
|
||||||
|
400: 215(bvec3) GroupNonUniformRotateKHR 34 398 399 48
|
||||||
|
401: 93(ivec3) Select 400 219 214
|
||||||
|
402: 74(ptr) AccessChain 27(data) 394 38 29
|
||||||
|
403: 12(int) CompositeExtract 401 0
|
||||||
|
Store 402 403
|
||||||
|
404: 74(ptr) AccessChain 27(data) 394 38 48
|
||||||
|
405: 12(int) CompositeExtract 401 1
|
||||||
|
Store 404 405
|
||||||
|
406: 74(ptr) AccessChain 27(data) 394 38 63
|
||||||
|
407: 12(int) CompositeExtract 401 2
|
||||||
|
Store 406 407
|
||||||
|
408: 6(int) Load 8(delta)
|
||||||
|
409: 82(ptr) AccessChain 27(data) 38 38
|
||||||
|
410: 19(ivec4) Load 409
|
||||||
|
411: 231(bvec4) SLessThan 410 230
|
||||||
|
412: 6(int) Load 8(delta)
|
||||||
|
413: 231(bvec4) GroupNonUniformRotateKHR 34 411 412 48
|
||||||
|
414: 19(ivec4) Select 413 235 230
|
||||||
|
415: 82(ptr) AccessChain 27(data) 408 38
|
||||||
|
Store 415 414
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
73
Test/glsl.450.subgroupRotate.comp
Normal file
73
Test/glsl.450.subgroupRotate.comp
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_KHR_shader_subgroup_rotate: enable
|
||||||
|
|
||||||
|
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||||
|
|
||||||
|
readonly buffer roblock
|
||||||
|
{
|
||||||
|
uint delta;
|
||||||
|
} ro;
|
||||||
|
|
||||||
|
layout(binding = 0) buffer Buffers
|
||||||
|
{
|
||||||
|
vec4 f4;
|
||||||
|
ivec4 i4;
|
||||||
|
uvec4 u4;
|
||||||
|
dvec4 d4;
|
||||||
|
} data[4];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint delta = ro.delta;
|
||||||
|
|
||||||
|
data[delta].f4.x = subgroupRotate(data[0].f4.x, delta);
|
||||||
|
data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta);
|
||||||
|
data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta);
|
||||||
|
data[delta].f4 = subgroupRotate(data[3].f4, delta);
|
||||||
|
|
||||||
|
data[delta].i4.x = subgroupRotate(data[0].i4.x, delta);
|
||||||
|
data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta);
|
||||||
|
data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta);
|
||||||
|
data[delta].i4 = subgroupRotate(data[3].i4, delta);
|
||||||
|
|
||||||
|
data[delta].u4.x = subgroupRotate(data[0].u4.x, delta);
|
||||||
|
data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta);
|
||||||
|
data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta);
|
||||||
|
data[delta].u4 = subgroupRotate(data[3].u4, delta);
|
||||||
|
|
||||||
|
data[delta].d4.x = subgroupRotate(data[0].d4.x, delta);
|
||||||
|
data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta);
|
||||||
|
data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta);
|
||||||
|
data[delta].d4 = subgroupRotate(data[3].d4, delta);
|
||||||
|
|
||||||
|
data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta));
|
||||||
|
data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta));
|
||||||
|
data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta));
|
||||||
|
data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta));
|
||||||
|
|
||||||
|
data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1);
|
||||||
|
data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1);
|
||||||
|
data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1);
|
||||||
|
data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1);
|
||||||
|
data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1);
|
||||||
|
data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1);
|
||||||
|
data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1);
|
||||||
|
data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1);
|
||||||
|
data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1);
|
||||||
|
data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1);
|
||||||
|
data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1);
|
||||||
|
data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1);
|
||||||
|
data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1));
|
||||||
|
data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1));
|
||||||
|
data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1));
|
||||||
|
data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1));
|
||||||
|
}
|
||||||
62
Test/glsl.es320.subgroupRotate.comp
Normal file
62
Test/glsl.es320.subgroupRotate.comp
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#version 320 es
|
||||||
|
|
||||||
|
#extension GL_KHR_shader_subgroup_rotate: enable
|
||||||
|
|
||||||
|
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||||
|
|
||||||
|
readonly buffer roblock
|
||||||
|
{
|
||||||
|
uint delta;
|
||||||
|
} ro;
|
||||||
|
|
||||||
|
layout(binding = 0) buffer Buffers
|
||||||
|
{
|
||||||
|
vec4 f4;
|
||||||
|
ivec4 i4;
|
||||||
|
uvec4 u4;
|
||||||
|
} data[4];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint delta = ro.delta;
|
||||||
|
|
||||||
|
data[0].f4.x = subgroupRotate(data[0].f4.x, delta);
|
||||||
|
data[0].f4.xy = subgroupRotate(data[1].f4.xy, delta);
|
||||||
|
data[0].f4.xyz = subgroupRotate(data[2].f4.xyz, delta);
|
||||||
|
data[0].f4 = subgroupRotate(data[3].f4, delta);
|
||||||
|
|
||||||
|
data[0].i4.x = subgroupRotate(data[0].i4.x, delta);
|
||||||
|
data[0].i4.xy = subgroupRotate(data[1].i4.xy, delta);
|
||||||
|
data[0].i4.xyz = subgroupRotate(data[2].i4.xyz, delta);
|
||||||
|
data[0].i4 = subgroupRotate(data[3].i4, delta);
|
||||||
|
|
||||||
|
data[1].u4.x = subgroupRotate(data[0].u4.x, delta);
|
||||||
|
data[1].u4.xy = subgroupRotate(data[1].u4.xy, delta);
|
||||||
|
data[1].u4.xyz = subgroupRotate(data[2].u4.xyz, delta);
|
||||||
|
data[1].u4 = subgroupRotate(data[3].u4, delta);
|
||||||
|
|
||||||
|
data[1].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta));
|
||||||
|
data[1].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta));
|
||||||
|
data[1].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta));
|
||||||
|
data[1].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta));
|
||||||
|
|
||||||
|
data[2].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1u);
|
||||||
|
data[2].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1u);
|
||||||
|
data[2].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1u);
|
||||||
|
data[2].f4 = subgroupClusteredRotate(data[3].f4, delta, 1u);
|
||||||
|
|
||||||
|
data[2].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1u);
|
||||||
|
data[2].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1u);
|
||||||
|
data[2].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1u);
|
||||||
|
data[2].i4 = subgroupClusteredRotate(data[3].i4, delta, 1u);
|
||||||
|
|
||||||
|
data[3].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1u);
|
||||||
|
data[3].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1u);
|
||||||
|
data[3].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1u);
|
||||||
|
data[3].u4 = subgroupClusteredRotate(data[3].u4, delta, 1u);
|
||||||
|
|
||||||
|
data[3].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1u));
|
||||||
|
data[3].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1u));
|
||||||
|
data[3].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1u));
|
||||||
|
data[3].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1u));
|
||||||
|
}
|
||||||
100
Test/spv.subgroupExtendedTypesRotate.comp
Normal file
100
Test/spv.subgroupExtendedTypesRotate.comp
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_KHR_shader_subgroup_rotate: 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;
|
||||||
|
|
||||||
|
readonly buffer roblock
|
||||||
|
{
|
||||||
|
uint delta;
|
||||||
|
} ro;
|
||||||
|
|
||||||
|
layout(binding = 0) buffer Buffers
|
||||||
|
{
|
||||||
|
i8vec4 i8;
|
||||||
|
u8vec4 u8;
|
||||||
|
i16vec4 i16;
|
||||||
|
u16vec4 u16;
|
||||||
|
i64vec4 i64;
|
||||||
|
u64vec4 u64;
|
||||||
|
f16vec4 f16;
|
||||||
|
} data[4];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint delta = ro.delta;
|
||||||
|
|
||||||
|
data[delta].i8.x = subgroupRotate(data[0].i8.x, delta);
|
||||||
|
data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta);
|
||||||
|
data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta);
|
||||||
|
data[delta].i8 = subgroupRotate(data[3].i8, delta);
|
||||||
|
|
||||||
|
data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1);
|
||||||
|
data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1);
|
||||||
|
data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1);
|
||||||
|
data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u8.x = subgroupRotate(data[0].u8.x, delta);
|
||||||
|
data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta);
|
||||||
|
data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta);
|
||||||
|
data[delta].u8 = subgroupRotate(data[3].u8, delta);
|
||||||
|
|
||||||
|
data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1);
|
||||||
|
data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1);
|
||||||
|
data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1);
|
||||||
|
data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i16.x = subgroupRotate(data[0].i16.x, delta);
|
||||||
|
data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta);
|
||||||
|
data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta);
|
||||||
|
data[delta].i16 = subgroupRotate(data[3].i16, delta);
|
||||||
|
|
||||||
|
data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1);
|
||||||
|
data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1);
|
||||||
|
data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1);
|
||||||
|
data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u16.x = subgroupRotate(data[0].u16.x, delta);
|
||||||
|
data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta);
|
||||||
|
data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta);
|
||||||
|
data[delta].u16 = subgroupRotate(data[3].u16, delta);
|
||||||
|
|
||||||
|
data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1);
|
||||||
|
data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1);
|
||||||
|
data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1);
|
||||||
|
data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i64.x = subgroupRotate(data[0].i64.x, delta);
|
||||||
|
data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta);
|
||||||
|
data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta);
|
||||||
|
data[delta].i64 = subgroupRotate(data[3].i64, delta);
|
||||||
|
|
||||||
|
data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1);
|
||||||
|
data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1);
|
||||||
|
data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1);
|
||||||
|
data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u64.x = subgroupRotate(data[0].u64.x, delta);
|
||||||
|
data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta);
|
||||||
|
data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta);
|
||||||
|
data[delta].u64 = subgroupRotate(data[3].u64, delta);
|
||||||
|
|
||||||
|
data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1);
|
||||||
|
data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1);
|
||||||
|
data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1);
|
||||||
|
data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1);
|
||||||
|
|
||||||
|
data[delta].f16.x = subgroupRotate(data[0].f16.x, delta);
|
||||||
|
data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta);
|
||||||
|
data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta);
|
||||||
|
data[delta].f16 = subgroupRotate(data[3].f16, delta);
|
||||||
|
|
||||||
|
data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1);
|
||||||
|
data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1);
|
||||||
|
data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1);
|
||||||
|
data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1);
|
||||||
|
}
|
||||||
100
Test/spv.subgroupExtendedTypesRotateNeg.comp
Normal file
100
Test/spv.subgroupExtendedTypesRotateNeg.comp
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_KHR_shader_subgroup_rotate: 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;
|
||||||
|
|
||||||
|
readonly buffer roblock
|
||||||
|
{
|
||||||
|
uint delta;
|
||||||
|
} ro;
|
||||||
|
|
||||||
|
layout(binding = 0) buffer Buffers
|
||||||
|
{
|
||||||
|
i8vec4 i8;
|
||||||
|
u8vec4 u8;
|
||||||
|
i16vec4 i16;
|
||||||
|
u16vec4 u16;
|
||||||
|
i64vec4 i64;
|
||||||
|
u64vec4 u64;
|
||||||
|
f16vec4 f16;
|
||||||
|
} data[4];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint delta = ro.delta;
|
||||||
|
|
||||||
|
data[delta].i8.x = subgroupRotate(data[0].i8.x, delta);
|
||||||
|
data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta);
|
||||||
|
data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta);
|
||||||
|
data[delta].i8 = subgroupRotate(data[3].i8, delta);
|
||||||
|
|
||||||
|
data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1);
|
||||||
|
data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1);
|
||||||
|
data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1);
|
||||||
|
data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u8.x = subgroupRotate(data[0].u8.x, delta);
|
||||||
|
data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta);
|
||||||
|
data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta);
|
||||||
|
data[delta].u8 = subgroupRotate(data[3].u8, delta);
|
||||||
|
|
||||||
|
data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1);
|
||||||
|
data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1);
|
||||||
|
data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1);
|
||||||
|
data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i16.x = subgroupRotate(data[0].i16.x, delta);
|
||||||
|
data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta);
|
||||||
|
data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta);
|
||||||
|
data[delta].i16 = subgroupRotate(data[3].i16, delta);
|
||||||
|
|
||||||
|
data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1);
|
||||||
|
data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1);
|
||||||
|
data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1);
|
||||||
|
data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u16.x = subgroupRotate(data[0].u16.x, delta);
|
||||||
|
data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta);
|
||||||
|
data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta);
|
||||||
|
data[delta].u16 = subgroupRotate(data[3].u16, delta);
|
||||||
|
|
||||||
|
data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1);
|
||||||
|
data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1);
|
||||||
|
data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1);
|
||||||
|
data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i64.x = subgroupRotate(data[0].i64.x, delta);
|
||||||
|
data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta);
|
||||||
|
data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta);
|
||||||
|
data[delta].i64 = subgroupRotate(data[3].i64, delta);
|
||||||
|
|
||||||
|
data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1);
|
||||||
|
data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1);
|
||||||
|
data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1);
|
||||||
|
data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u64.x = subgroupRotate(data[0].u64.x, delta);
|
||||||
|
data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta);
|
||||||
|
data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta);
|
||||||
|
data[delta].u64 = subgroupRotate(data[3].u64, delta);
|
||||||
|
|
||||||
|
data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1);
|
||||||
|
data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1);
|
||||||
|
data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1);
|
||||||
|
data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1);
|
||||||
|
|
||||||
|
data[delta].f16.x = subgroupRotate(data[0].f16.x, delta);
|
||||||
|
data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta);
|
||||||
|
data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta);
|
||||||
|
data[delta].f16 = subgroupRotate(data[3].f16, delta);
|
||||||
|
|
||||||
|
data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1);
|
||||||
|
data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1);
|
||||||
|
data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1);
|
||||||
|
data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1);
|
||||||
|
}
|
||||||
73
Test/spv.subgroupRotate.comp
Normal file
73
Test/spv.subgroupRotate.comp
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_KHR_shader_subgroup_rotate: enable
|
||||||
|
|
||||||
|
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||||
|
|
||||||
|
readonly buffer roblock
|
||||||
|
{
|
||||||
|
uint delta;
|
||||||
|
} ro;
|
||||||
|
|
||||||
|
layout(binding = 0) buffer Buffers
|
||||||
|
{
|
||||||
|
vec4 f4;
|
||||||
|
ivec4 i4;
|
||||||
|
uvec4 u4;
|
||||||
|
dvec4 d4;
|
||||||
|
} data[4];
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
uint delta = ro.delta;
|
||||||
|
|
||||||
|
data[delta].f4.x = subgroupRotate(data[0].f4.x, delta);
|
||||||
|
data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta);
|
||||||
|
data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta);
|
||||||
|
data[delta].f4 = subgroupRotate(data[3].f4, delta);
|
||||||
|
|
||||||
|
data[delta].i4.x = subgroupRotate(data[0].i4.x, delta);
|
||||||
|
data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta);
|
||||||
|
data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta);
|
||||||
|
data[delta].i4 = subgroupRotate(data[3].i4, delta);
|
||||||
|
|
||||||
|
data[delta].u4.x = subgroupRotate(data[0].u4.x, delta);
|
||||||
|
data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta);
|
||||||
|
data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta);
|
||||||
|
data[delta].u4 = subgroupRotate(data[3].u4, delta);
|
||||||
|
|
||||||
|
data[delta].d4.x = subgroupRotate(data[0].d4.x, delta);
|
||||||
|
data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta);
|
||||||
|
data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta);
|
||||||
|
data[delta].d4 = subgroupRotate(data[3].d4, delta);
|
||||||
|
|
||||||
|
data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta));
|
||||||
|
data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta));
|
||||||
|
data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta));
|
||||||
|
data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta));
|
||||||
|
|
||||||
|
data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1);
|
||||||
|
data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1);
|
||||||
|
data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1);
|
||||||
|
data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1);
|
||||||
|
data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1);
|
||||||
|
data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1);
|
||||||
|
data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1);
|
||||||
|
data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1);
|
||||||
|
data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1);
|
||||||
|
data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1);
|
||||||
|
data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1);
|
||||||
|
data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1);
|
||||||
|
data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1);
|
||||||
|
|
||||||
|
data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1));
|
||||||
|
data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1));
|
||||||
|
data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1));
|
||||||
|
data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1));
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// Copyright (C) 2012-2016 LunarG, Inc.
|
// Copyright (C) 2012-2016 LunarG, Inc.
|
||||||
// Copyright (C) 2017 ARM Limited.
|
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
|
|
@ -506,6 +506,8 @@ enum TOperator {
|
||||||
EOpSubgroupShuffleXor,
|
EOpSubgroupShuffleXor,
|
||||||
EOpSubgroupShuffleUp,
|
EOpSubgroupShuffleUp,
|
||||||
EOpSubgroupShuffleDown,
|
EOpSubgroupShuffleDown,
|
||||||
|
EOpSubgroupRotate,
|
||||||
|
EOpSubgroupClusteredRotate,
|
||||||
EOpSubgroupAdd,
|
EOpSubgroupAdd,
|
||||||
EOpSubgroupMul,
|
EOpSubgroupMul,
|
||||||
EOpSubgroupMin,
|
EOpSubgroupMin,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// Copyright (C) 2012-2016 LunarG, Inc.
|
// Copyright (C) 2012-2016 LunarG, Inc.
|
||||||
// Copyright (C) 2015-2020 Google, Inc.
|
// Copyright (C) 2015-2020 Google, Inc.
|
||||||
// Copyright (C) 2017 ARM Limited.
|
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||||
// Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
|
|
@ -2099,6 +2099,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||||
"%s subgroupShuffleXor(%s, uint);\n",
|
"%s subgroupShuffleXor(%s, uint);\n",
|
||||||
"%s subgroupShuffleUp(%s, uint delta);\n",
|
"%s subgroupShuffleUp(%s, uint delta);\n",
|
||||||
"%s subgroupShuffleDown(%s, uint delta);\n",
|
"%s subgroupShuffleDown(%s, uint delta);\n",
|
||||||
|
"%s subgroupRotate(%s, uint);\n",
|
||||||
|
"%s subgroupClusteredRotate(%s, uint, uint);\n",
|
||||||
"%s subgroupAdd(%s);\n",
|
"%s subgroupAdd(%s);\n",
|
||||||
"%s subgroupMul(%s);\n",
|
"%s subgroupMul(%s);\n",
|
||||||
"%s subgroupMin(%s);\n",
|
"%s subgroupMin(%s);\n",
|
||||||
|
|
@ -8670,6 +8672,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||||
symbolTable.setFunctionExtensions("subgroupShuffleXor", 1, &E_GL_KHR_shader_subgroup_shuffle);
|
symbolTable.setFunctionExtensions("subgroupShuffleXor", 1, &E_GL_KHR_shader_subgroup_shuffle);
|
||||||
symbolTable.setFunctionExtensions("subgroupShuffleUp", 1, &E_GL_KHR_shader_subgroup_shuffle_relative);
|
symbolTable.setFunctionExtensions("subgroupShuffleUp", 1, &E_GL_KHR_shader_subgroup_shuffle_relative);
|
||||||
symbolTable.setFunctionExtensions("subgroupShuffleDown", 1, &E_GL_KHR_shader_subgroup_shuffle_relative);
|
symbolTable.setFunctionExtensions("subgroupShuffleDown", 1, &E_GL_KHR_shader_subgroup_shuffle_relative);
|
||||||
|
symbolTable.setFunctionExtensions("subgroupRotate", 1, &E_GL_KHR_shader_subgroup_rotate);
|
||||||
|
symbolTable.setFunctionExtensions("subgroupClusteredRotate", 1, &E_GL_KHR_shader_subgroup_rotate);
|
||||||
symbolTable.setFunctionExtensions("subgroupAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
|
symbolTable.setFunctionExtensions("subgroupAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
|
||||||
symbolTable.setFunctionExtensions("subgroupMul", 1, &E_GL_KHR_shader_subgroup_arithmetic);
|
symbolTable.setFunctionExtensions("subgroupMul", 1, &E_GL_KHR_shader_subgroup_arithmetic);
|
||||||
symbolTable.setFunctionExtensions("subgroupMin", 1, &E_GL_KHR_shader_subgroup_arithmetic);
|
symbolTable.setFunctionExtensions("subgroupMin", 1, &E_GL_KHR_shader_subgroup_arithmetic);
|
||||||
|
|
@ -9931,6 +9935,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||||
symbolTable.relateToOperator("subgroupShuffleXor", EOpSubgroupShuffleXor);
|
symbolTable.relateToOperator("subgroupShuffleXor", EOpSubgroupShuffleXor);
|
||||||
symbolTable.relateToOperator("subgroupShuffleUp", EOpSubgroupShuffleUp);
|
symbolTable.relateToOperator("subgroupShuffleUp", EOpSubgroupShuffleUp);
|
||||||
symbolTable.relateToOperator("subgroupShuffleDown", EOpSubgroupShuffleDown);
|
symbolTable.relateToOperator("subgroupShuffleDown", EOpSubgroupShuffleDown);
|
||||||
|
symbolTable.relateToOperator("subgroupRotate", EOpSubgroupRotate);
|
||||||
|
symbolTable.relateToOperator("subgroupClusteredRotate", EOpSubgroupClusteredRotate);
|
||||||
symbolTable.relateToOperator("subgroupAdd", EOpSubgroupAdd);
|
symbolTable.relateToOperator("subgroupAdd", EOpSubgroupAdd);
|
||||||
symbolTable.relateToOperator("subgroupMul", EOpSubgroupMul);
|
symbolTable.relateToOperator("subgroupMul", EOpSubgroupMul);
|
||||||
symbolTable.relateToOperator("subgroupMin", EOpSubgroupMin);
|
symbolTable.relateToOperator("subgroupMin", EOpSubgroupMin);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// Copyright (C) 2012-2013 LunarG, Inc.
|
// Copyright (C) 2012-2013 LunarG, Inc.
|
||||||
// Copyright (C) 2017 ARM Limited.
|
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||||
// Copyright (C) 2015-2020 Google, Inc.
|
// Copyright (C) 2015-2020 Google, Inc.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
@ -235,6 +235,7 @@ void TParseVersions::initializeExtensionBehavior()
|
||||||
extensionBehavior[E_GL_KHR_shader_subgroup_ballot] = EBhDisable;
|
extensionBehavior[E_GL_KHR_shader_subgroup_ballot] = EBhDisable;
|
||||||
extensionBehavior[E_GL_KHR_shader_subgroup_shuffle] = EBhDisable;
|
extensionBehavior[E_GL_KHR_shader_subgroup_shuffle] = EBhDisable;
|
||||||
extensionBehavior[E_GL_KHR_shader_subgroup_shuffle_relative] = EBhDisable;
|
extensionBehavior[E_GL_KHR_shader_subgroup_shuffle_relative] = EBhDisable;
|
||||||
|
extensionBehavior[E_GL_KHR_shader_subgroup_rotate] = EBhDisable;
|
||||||
extensionBehavior[E_GL_KHR_shader_subgroup_clustered] = EBhDisable;
|
extensionBehavior[E_GL_KHR_shader_subgroup_clustered] = EBhDisable;
|
||||||
extensionBehavior[E_GL_KHR_shader_subgroup_quad] = EBhDisable;
|
extensionBehavior[E_GL_KHR_shader_subgroup_quad] = EBhDisable;
|
||||||
extensionBehavior[E_GL_KHR_memory_scope_semantics] = EBhDisable;
|
extensionBehavior[E_GL_KHR_memory_scope_semantics] = EBhDisable;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// Copyright (C) 2012-2013 LunarG, Inc.
|
// Copyright (C) 2012-2013 LunarG, Inc.
|
||||||
// Copyright (C) 2017 ARM Limited.
|
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||||
// Copyright (C) 2015-2018 Google, Inc.
|
// Copyright (C) 2015-2018 Google, Inc.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
@ -171,6 +171,7 @@ const char* const E_GL_KHR_shader_subgroup_arithmetic = "GL_KHR_shader_sub
|
||||||
const char* const E_GL_KHR_shader_subgroup_ballot = "GL_KHR_shader_subgroup_ballot";
|
const char* const E_GL_KHR_shader_subgroup_ballot = "GL_KHR_shader_subgroup_ballot";
|
||||||
const char* const E_GL_KHR_shader_subgroup_shuffle = "GL_KHR_shader_subgroup_shuffle";
|
const char* const E_GL_KHR_shader_subgroup_shuffle = "GL_KHR_shader_subgroup_shuffle";
|
||||||
const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_subgroup_shuffle_relative";
|
const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_subgroup_shuffle_relative";
|
||||||
|
const char* const E_GL_KHR_shader_subgroup_rotate = "GL_KHR_shader_subgroup_rotate";
|
||||||
const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered";
|
const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered";
|
||||||
const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad";
|
const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad";
|
||||||
const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics";
|
const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics";
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
|
||||||
// Copyright (C) 2012-2016 LunarG, Inc.
|
// Copyright (C) 2012-2016 LunarG, Inc.
|
||||||
// Copyright (C) 2017 ARM Limited.
|
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
|
|
@ -565,6 +565,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
|
||||||
case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break;
|
case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break;
|
||||||
case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break;
|
case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break;
|
||||||
case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break;
|
case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break;
|
||||||
|
case EOpSubgroupRotate: out.debug << "subgroupRotate"; break;
|
||||||
|
case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break;
|
||||||
case EOpSubgroupAdd: out.debug << "subgroupAdd"; break;
|
case EOpSubgroupAdd: out.debug << "subgroupAdd"; break;
|
||||||
case EOpSubgroupMul: out.debug << "subgroupMul"; break;
|
case EOpSubgroupMul: out.debug << "subgroupMul"; break;
|
||||||
case EOpSubgroupMin: out.debug << "subgroupMin"; break;
|
case EOpSubgroupMin: out.debug << "subgroupMin"; break;
|
||||||
|
|
@ -1002,6 +1004,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
||||||
case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break;
|
case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break;
|
||||||
case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break;
|
case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break;
|
||||||
case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break;
|
case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break;
|
||||||
|
case EOpSubgroupRotate: out.debug << "subgroupRotate"; break;
|
||||||
|
case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break;
|
||||||
case EOpSubgroupAdd: out.debug << "subgroupAdd"; break;
|
case EOpSubgroupAdd: out.debug << "subgroupAdd"; break;
|
||||||
case EOpSubgroupMul: out.debug << "subgroupMul"; break;
|
case EOpSubgroupMul: out.debug << "subgroupMul"; break;
|
||||||
case EOpSubgroupMin: out.debug << "subgroupMin"; break;
|
case EOpSubgroupMin: out.debug << "subgroupMin"; break;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2016 Google, Inc.
|
// Copyright (C) 2016 Google, Inc.
|
||||||
|
// Copyright (C) 2022-2024 Arm Limited.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
@ -252,6 +253,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
"glsl.450.subgroupClustered.comp",
|
"glsl.450.subgroupClustered.comp",
|
||||||
"glsl.450.subgroupClusteredNeg.comp",
|
"glsl.450.subgroupClusteredNeg.comp",
|
||||||
"glsl.450.subgroupPartitioned.comp",
|
"glsl.450.subgroupPartitioned.comp",
|
||||||
|
"glsl.450.subgroupRotate.comp",
|
||||||
"glsl.450.subgroupShuffle.comp",
|
"glsl.450.subgroupShuffle.comp",
|
||||||
"glsl.450.subgroupShuffleRelative.comp",
|
"glsl.450.subgroupShuffleRelative.comp",
|
||||||
"glsl.450.subgroupQuad.comp",
|
"glsl.450.subgroupQuad.comp",
|
||||||
|
|
@ -277,6 +279,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
"glsl.es320.subgroupClustered.comp",
|
"glsl.es320.subgroupClustered.comp",
|
||||||
"glsl.es320.subgroupClusteredNeg.comp",
|
"glsl.es320.subgroupClusteredNeg.comp",
|
||||||
"glsl.es320.subgroupPartitioned.comp",
|
"glsl.es320.subgroupPartitioned.comp",
|
||||||
|
"glsl.es320.subgroupRotate.comp",
|
||||||
"glsl.es320.subgroupShuffle.comp",
|
"glsl.es320.subgroupShuffle.comp",
|
||||||
"glsl.es320.subgroupShuffleRelative.comp",
|
"glsl.es320.subgroupShuffleRelative.comp",
|
||||||
"glsl.es320.subgroupQuad.comp",
|
"glsl.es320.subgroupQuad.comp",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
//
|
//
|
||||||
// Copyright (C) 2016 Google, Inc.
|
// Copyright (C) 2016 Google, Inc.
|
||||||
// Copyright (C) 2019 ARM Limited.
|
// Copyright (C) 2019, 2022-2024 Arm Limited.
|
||||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
|
|
@ -616,6 +616,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
"spv.subgroupClustered.comp",
|
"spv.subgroupClustered.comp",
|
||||||
"spv.subgroupClusteredNeg.comp",
|
"spv.subgroupClusteredNeg.comp",
|
||||||
"spv.subgroupPartitioned.comp",
|
"spv.subgroupPartitioned.comp",
|
||||||
|
"spv.subgroupRotate.comp",
|
||||||
"spv.subgroupShuffle.comp",
|
"spv.subgroupShuffle.comp",
|
||||||
"spv.subgroupShuffleRelative.comp",
|
"spv.subgroupShuffleRelative.comp",
|
||||||
"spv.subgroupQuad.comp",
|
"spv.subgroupQuad.comp",
|
||||||
|
|
@ -628,6 +629,8 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
"spv.subgroupExtendedTypesClusteredNeg.comp",
|
"spv.subgroupExtendedTypesClusteredNeg.comp",
|
||||||
"spv.subgroupExtendedTypesPartitioned.comp",
|
"spv.subgroupExtendedTypesPartitioned.comp",
|
||||||
"spv.subgroupExtendedTypesPartitionedNeg.comp",
|
"spv.subgroupExtendedTypesPartitionedNeg.comp",
|
||||||
|
"spv.subgroupExtendedTypesRotate.comp",
|
||||||
|
"spv.subgroupExtendedTypesRotateNeg.comp",
|
||||||
"spv.subgroupExtendedTypesShuffle.comp",
|
"spv.subgroupExtendedTypesShuffle.comp",
|
||||||
"spv.subgroupExtendedTypesShuffleNeg.comp",
|
"spv.subgroupExtendedTypesShuffleNeg.comp",
|
||||||
"spv.subgroupExtendedTypesShuffleRelative.comp",
|
"spv.subgroupExtendedTypesShuffleRelative.comp",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue