diff options
Diffstat (limited to 'mlir/lib/Dialect/SPIRV/IR')
-rw-r--r-- | mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp | 6 | ||||
-rw-r--r-- | mlir/lib/Dialect/SPIRV/IR/SPIRVTypes.cpp | 23 |
2 files changed, 20 insertions, 9 deletions
diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp index 405ef8f52f29..8621281ea017 100644 --- a/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp +++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp @@ -483,7 +483,8 @@ namespace { // parseAndVerify does the actual parsing and verification of individual // elements. This is a functor since parsing the last element of the list // (termination condition) needs partial specialization. -template <typename ParseType, typename... Args> struct ParseCommaSeparatedList { +template <typename ParseType, typename... Args> +struct ParseCommaSeparatedList { Optional<std::tuple<ParseType, Args...>> operator()(SPIRVDialect const &dialect, DialectAsmParser &parser) const { auto parseVal = parseAndVerify<ParseType>(dialect, parser); @@ -503,7 +504,8 @@ template <typename ParseType, typename... Args> struct ParseCommaSeparatedList { // Partial specialization of the function to parse a comma separated list of // specs to parse the last element of the list. -template <typename ParseType> struct ParseCommaSeparatedList<ParseType> { +template <typename ParseType> +struct ParseCommaSeparatedList<ParseType> { Optional<std::tuple<ParseType>> operator()(SPIRVDialect const &dialect, DialectAsmParser &parser) const { if (auto value = parseAndVerify<ParseType>(dialect, parser)) diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVTypes.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVTypes.cpp index 494f32925315..bf4582511f1a 100644 --- a/mlir/lib/Dialect/SPIRV/IR/SPIRVTypes.cpp +++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVTypes.cpp @@ -259,33 +259,42 @@ void CooperativeMatrixNVType::getCapabilities( // ImageType //===----------------------------------------------------------------------===// -template <typename T> static constexpr unsigned getNumBits() { return 0; } -template <> constexpr unsigned getNumBits<Dim>() { +template <typename T> +static constexpr unsigned getNumBits() { + return 0; +} +template <> +constexpr unsigned getNumBits<Dim>() { static_assert((1 << 3) > getMaxEnumValForDim(), "Not enough bits to encode Dim value"); return 3; } -template <> constexpr unsigned getNumBits<ImageDepthInfo>() { +template <> +constexpr unsigned getNumBits<ImageDepthInfo>() { static_assert((1 << 2) > getMaxEnumValForImageDepthInfo(), "Not enough bits to encode ImageDepthInfo value"); return 2; } -template <> constexpr unsigned getNumBits<ImageArrayedInfo>() { +template <> +constexpr unsigned getNumBits<ImageArrayedInfo>() { static_assert((1 << 1) > getMaxEnumValForImageArrayedInfo(), "Not enough bits to encode ImageArrayedInfo value"); return 1; } -template <> constexpr unsigned getNumBits<ImageSamplingInfo>() { +template <> +constexpr unsigned getNumBits<ImageSamplingInfo>() { static_assert((1 << 1) > getMaxEnumValForImageSamplingInfo(), "Not enough bits to encode ImageSamplingInfo value"); return 1; } -template <> constexpr unsigned getNumBits<ImageSamplerUseInfo>() { +template <> +constexpr unsigned getNumBits<ImageSamplerUseInfo>() { static_assert((1 << 2) > getMaxEnumValForImageSamplerUseInfo(), "Not enough bits to encode ImageSamplerUseInfo value"); return 2; } -template <> constexpr unsigned getNumBits<ImageFormat>() { +template <> +constexpr unsigned getNumBits<ImageFormat>() { static_assert((1 << 6) > getMaxEnumValForImageFormat(), "Not enough bits to encode ImageFormat value"); return 6; |