Skip to content

Commit 2442aa3

Browse files
committed
[mlir][spirv] Add extensions implied by SPIR-V 1.6
This adds existing extensions as implied by SPIR-V 1.6. Also clean up the surrounding code. Fixes: llvm#59348. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D139369
1 parent 2c7827d commit 2442aa3

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,8 @@ def SPV_KHR_fragment_shader_barycentric : I32EnumAttrCase<"SPV_KHR_fragment
340340
def SPV_KHR_ray_cull_mask : I32EnumAttrCase<"SPV_KHR_ray_cull_mask", 26>;
341341
def SPV_KHR_uniform_group_instructions : I32EnumAttrCase<"SPV_KHR_uniform_group_instructions", 27>;
342342
def SPV_KHR_subgroup_rotate : I32EnumAttrCase<"SPV_KHR_subgroup_rotate", 28>;
343+
def SPV_KHR_non_semantic_info : I32EnumAttrCase<"SPV_KHR_non_semantic_info", 29>;
344+
def SPV_KHR_terminate_invocation : I32EnumAttrCase<"SPV_KHR_terminate_invocation", 30>;
343345

344346
def SPV_EXT_demote_to_helper_invocation : I32EnumAttrCase<"SPV_EXT_demote_to_helper_invocation", 1000>;
345347
def SPV_EXT_descriptor_indexing : I32EnumAttrCase<"SPV_EXT_descriptor_indexing", 1001>;
@@ -430,6 +432,7 @@ def SPIRV_ExtensionAttr :
430432
SPV_KHR_ray_tracing, SPV_KHR_subgroup_uniform_control_flow, SPV_KHR_linkonce_odr,
431433
SPV_KHR_fragment_shader_barycentric, SPV_KHR_ray_cull_mask,
432434
SPV_KHR_uniform_group_instructions, SPV_KHR_subgroup_rotate,
435+
SPV_KHR_non_semantic_info, SPV_KHR_terminate_invocation,
433436
SPV_EXT_demote_to_helper_invocation, SPV_EXT_descriptor_indexing,
434437
SPV_EXT_fragment_fully_covered, SPV_EXT_fragment_invocation_density,
435438
SPV_EXT_fragment_shader_interlock, SPV_EXT_physical_storage_buffer,

mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@
1212

1313
#include "mlir/Dialect/SPIRV/IR/SPIRVEnums.h"
1414

15-
#include "mlir/IR/BuiltinTypes.h"
16-
1715
#include "llvm/ADT/SetVector.h"
1816
#include "llvm/ADT/StringExtras.h"
19-
#include "llvm/ADT/StringRef.h"
2017

2118
#include <iterator>
2219

@@ -54,25 +51,37 @@ ArrayRef<spirv::Extension> spirv::getImpliedExtensions(spirv::Version version) {
5451
Extension::SPV_KHR_physical_storage_buffer, \
5552
Extension::SPV_KHR_vulkan_memory_model
5653

54+
#define V_1_6_IMPLIED_EXTS \
55+
Extension::SPV_KHR_non_semantic_info, \
56+
Extension::SPV_KHR_integer_dot_product, \
57+
Extension::SPV_KHR_terminate_invocation, \
58+
Extension::SPV_EXT_demote_to_helper_invocation
59+
5760
switch (version) {
5861
default:
5962
return {};
6063
case Version::V_1_3: {
6164
// The following manual ArrayRef constructor call is to satisfy GCC 5.
6265
static const Extension exts[] = {V_1_3_IMPLIED_EXTS};
63-
return ArrayRef<spirv::Extension>(exts, std::size(exts));
66+
return exts;
6467
}
6568
case Version::V_1_4: {
6669
static const Extension exts[] = {V_1_3_IMPLIED_EXTS, V_1_4_IMPLIED_EXTS};
67-
return ArrayRef<spirv::Extension>(exts, std::size(exts));
70+
return exts;
6871
}
6972
case Version::V_1_5: {
7073
static const Extension exts[] = {V_1_3_IMPLIED_EXTS, V_1_4_IMPLIED_EXTS,
7174
V_1_5_IMPLIED_EXTS};
72-
return ArrayRef<spirv::Extension>(exts, std::size(exts));
75+
return exts;
76+
}
77+
case Version::V_1_6: {
78+
static const Extension exts[] = {V_1_3_IMPLIED_EXTS, V_1_4_IMPLIED_EXTS,
79+
V_1_5_IMPLIED_EXTS, V_1_6_IMPLIED_EXTS};
80+
return exts;
7381
}
7482
}
7583

84+
#undef V_1_6_IMPLIED_EXTS
7685
#undef V_1_5_IMPLIED_EXTS
7786
#undef V_1_4_IMPLIED_EXTS
7887
#undef V_1_3_IMPLIED_EXTS

0 commit comments

Comments
 (0)