[llvm] [BinaryFormat][NFC] Use compact enums (PR #206074)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 26 08:05:55 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-hlsl
Author: Alexis Engelke (aengelke)
<details>
<summary>Changes</summary>
Straight-forward replacement.
---
Patch is 36.56 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/206074.diff
7 Files Affected:
- (modified) llvm/include/llvm/BinaryFormat/DXContainer.h (+21-21)
- (modified) llvm/include/llvm/BinaryFormat/SFrame.h (+9-9)
- (modified) llvm/lib/BinaryFormat/DXContainer.cpp (+143-137)
- (modified) llvm/lib/BinaryFormat/SFrame.cpp (+43-35)
- (modified) llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp (+7-7)
- (modified) llvm/lib/ObjectYAML/DXContainerYAML.cpp (+24-23)
- (modified) llvm/tools/llvm-objdump/DXContainerDump.cpp (+8-11)
``````````diff
diff --git a/llvm/include/llvm/BinaryFormat/DXContainer.h b/llvm/include/llvm/BinaryFormat/DXContainer.h
index 4d832368ae888..ab09afc589340 100644
--- a/llvm/include/llvm/BinaryFormat/DXContainer.h
+++ b/llvm/include/llvm/BinaryFormat/DXContainer.h
@@ -24,7 +24,7 @@
#include <stdint.h>
namespace llvm {
-template <typename T> struct EnumEntry;
+template <typename, unsigned> class EnumStrings;
// The DXContainer file format is arranged as a header and "parts". Semantically
// parts are similar to sections in other object file formats. The File format
@@ -167,7 +167,7 @@ enum class RootFlags : uint32_t {
LLVM_MARK_AS_BITMASK_ENUM(SamplerHeapDirectlyIndexed)
};
-LLVM_ABI ArrayRef<EnumEntry<RootFlags>> getRootFlags();
+LLVM_ABI EnumStrings<RootFlags, 1> getRootFlags();
#define ROOT_DESCRIPTOR_FLAG(Num, Enum, Flag) Enum = Num,
enum class RootDescriptorFlags : uint32_t {
@@ -176,7 +176,7 @@ enum class RootDescriptorFlags : uint32_t {
LLVM_MARK_AS_BITMASK_ENUM(DataStatic)
};
-LLVM_ABI ArrayRef<EnumEntry<RootDescriptorFlags>> getRootDescriptorFlags();
+LLVM_ABI EnumStrings<RootDescriptorFlags, 1> getRootDescriptorFlags();
#define DESCRIPTOR_RANGE_FLAG(Num, Enum, Flag) Enum = Num,
enum class DescriptorRangeFlags : uint32_t {
@@ -185,7 +185,7 @@ enum class DescriptorRangeFlags : uint32_t {
LLVM_MARK_AS_BITMASK_ENUM(DescriptorsStaticKeepingBufferBoundsChecks)
};
-LLVM_ABI ArrayRef<EnumEntry<DescriptorRangeFlags>> getDescriptorRangeFlags();
+LLVM_ABI EnumStrings<DescriptorRangeFlags, 1> getDescriptorRangeFlags();
#define STATIC_SAMPLER_FLAG(Num, Enum, Flag) Enum = Num,
enum class StaticSamplerFlags : uint32_t {
@@ -194,14 +194,14 @@ enum class StaticSamplerFlags : uint32_t {
LLVM_MARK_AS_BITMASK_ENUM(NonNormalizedCoordinates)
};
-LLVM_ABI ArrayRef<EnumEntry<StaticSamplerFlags>> getStaticSamplerFlags();
+LLVM_ABI EnumStrings<StaticSamplerFlags, 1> getStaticSamplerFlags();
#define ROOT_PARAMETER(Val, Enum) Enum = Val,
enum class RootParameterType : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<RootParameterType>> getRootParameterTypes();
+LLVM_ABI EnumStrings<RootParameterType, 1> getRootParameterTypes();
LLVM_ABI bool isValidParameterType(uint32_t V);
@@ -212,7 +212,7 @@ enum class ShaderVisibility : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<ShaderVisibility>> getShaderVisibility();
+LLVM_ABI EnumStrings<ShaderVisibility, 1> getShaderVisibility();
LLVM_ABI bool isValidShaderVisibility(uint32_t V);
@@ -223,14 +223,14 @@ enum class SamplerFilter : uint32_t {
LLVM_ABI bool isValidSamplerFilter(uint32_t V);
-LLVM_ABI ArrayRef<EnumEntry<SamplerFilter>> getSamplerFilters();
+LLVM_ABI EnumStrings<SamplerFilter, 1> getSamplerFilters();
#define TEXTURE_ADDRESS_MODE(Val, Enum) Enum = Val,
enum class TextureAddressMode : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<TextureAddressMode>> getTextureAddressModes();
+LLVM_ABI EnumStrings<TextureAddressMode, 1> getTextureAddressModes();
LLVM_ABI bool isValidAddress(uint32_t V);
@@ -239,7 +239,7 @@ enum class ComparisonFunc : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<ComparisonFunc>> getComparisonFuncs();
+LLVM_ABI EnumStrings<ComparisonFunc, 1> getComparisonFuncs();
LLVM_ABI bool isValidComparisonFunc(uint32_t V);
@@ -256,7 +256,7 @@ LLVM_ABI bool isValidDescriptorRangeFlags(uint32_t V);
LLVM_ABI bool isValidStaticSamplerFlags(uint32_t V);
-LLVM_ABI ArrayRef<EnumEntry<StaticBorderColor>> getStaticBorderColors();
+LLVM_ABI EnumStrings<StaticBorderColor, 1> getStaticBorderColors();
LLVM_ABI PartType parsePartType(StringRef S);
@@ -394,35 +394,35 @@ enum class SemanticKind : uint8_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<SemanticKind>> getSemanticKinds();
+LLVM_ABI EnumStrings<SemanticKind, 1> getSemanticKinds();
#define COMPONENT_TYPE(Val, Enum) Enum = Val,
enum class ComponentType : uint8_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<ComponentType>> getComponentTypes();
+LLVM_ABI EnumStrings<ComponentType, 1> getComponentTypes();
#define INTERPOLATION_MODE(Val, Enum) Enum = Val,
enum class InterpolationMode : uint8_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<InterpolationMode>> getInterpolationModes();
+LLVM_ABI EnumStrings<InterpolationMode, 1> getInterpolationModes();
#define RESOURCE_TYPE(Val, Enum) Enum = Val,
enum class ResourceType : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<ResourceType>> getResourceTypes();
+LLVM_ABI EnumStrings<ResourceType, 1> getResourceTypes();
#define RESOURCE_KIND(Val, Enum) Enum = Val,
enum class ResourceKind : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<ResourceKind>> getResourceKinds();
+LLVM_ABI EnumStrings<ResourceKind, 1> getResourceKinds();
#define RESOURCE_FLAG(Index, Enum) bool Enum = false;
struct ResourceFlags {
@@ -591,21 +591,21 @@ enum class SigMinPrecision : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<SigMinPrecision>> getSigMinPrecisions();
+LLVM_ABI EnumStrings<SigMinPrecision, 1> getSigMinPrecisions();
#define D3D_SYSTEM_VALUE(Val, Enum) Enum = Val,
enum class D3DSystemValue : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<D3DSystemValue>> getD3DSystemValues();
+LLVM_ABI EnumStrings<D3DSystemValue, 1> getD3DSystemValues();
#define COMPONENT_TYPE(Val, Enum) Enum = Val,
enum class SigComponentType : uint32_t {
#include "DXContainerConstants.def"
};
-LLVM_ABI ArrayRef<EnumEntry<SigComponentType>> getSigComponentTypes();
+LLVM_ABI EnumStrings<SigComponentType, 1> getSigComponentTypes();
struct ProgramSignatureHeader {
uint32_t ParamCount;
@@ -881,7 +881,7 @@ enum class SectionType : uint16_t {
LLVM_MARK_AS_BITMASK_ENUM(Args)
};
-LLVM_ABI ArrayRef<EnumEntry<SectionType>> getSectionTypes();
+LLVM_ABI EnumStrings<SectionType, 1> getSectionTypes();
LLVM_ABI bool isValidSectionType(uint16_t V);
LLVM_ABI StringRef getSectionName(SectionType Type);
@@ -950,7 +950,7 @@ enum class CompressionType : uint16_t {
LLVM_MARK_AS_BITMASK_ENUM(Zlib)
};
-LLVM_ABI ArrayRef<EnumEntry<CompressionType>> getCompressionTypes();
+LLVM_ABI EnumStrings<CompressionType, 1> getCompressionTypes();
LLVM_ABI bool isValidCompressionType(uint16_t V);
struct Header {
diff --git a/llvm/include/llvm/BinaryFormat/SFrame.h b/llvm/include/llvm/BinaryFormat/SFrame.h
index 7b58043c60363..4f750c1bb9833 100644
--- a/llvm/include/llvm/BinaryFormat/SFrame.h
+++ b/llvm/include/llvm/BinaryFormat/SFrame.h
@@ -23,7 +23,7 @@
namespace llvm {
-template <typename T> struct EnumEntry;
+template <typename, unsigned> class EnumStrings;
namespace sframe {
@@ -168,14 +168,14 @@ template <endianness E> using FrameRowEntryAddr1 = FrameRowEntry<uint8_t, E>;
template <endianness E> using FrameRowEntryAddr2 = FrameRowEntry<uint16_t, E>;
template <endianness E> using FrameRowEntryAddr4 = FrameRowEntry<uint32_t, E>;
-LLVM_ABI ArrayRef<EnumEntry<Version>> getVersions();
-LLVM_ABI ArrayRef<EnumEntry<Flags>> getFlags();
-LLVM_ABI ArrayRef<EnumEntry<ABI>> getABIs();
-LLVM_ABI ArrayRef<EnumEntry<FREType>> getFRETypes();
-LLVM_ABI ArrayRef<EnumEntry<FDEType>> getFDETypes();
-LLVM_ABI ArrayRef<EnumEntry<AArch64PAuthKey>> getAArch64PAuthKeys();
-LLVM_ABI ArrayRef<EnumEntry<FREOffset>> getFREOffsets();
-LLVM_ABI ArrayRef<EnumEntry<BaseReg>> getBaseRegisters();
+LLVM_ABI EnumStrings<Version, 1> getVersions();
+LLVM_ABI EnumStrings<Flags, 1> getFlags();
+LLVM_ABI EnumStrings<ABI, 1> getABIs();
+LLVM_ABI EnumStrings<FREType, 1> getFRETypes();
+LLVM_ABI EnumStrings<FDEType, 1> getFDETypes();
+LLVM_ABI EnumStrings<AArch64PAuthKey, 1> getAArch64PAuthKeys();
+LLVM_ABI EnumStrings<FREOffset, 1> getFREOffsets();
+LLVM_ABI EnumStrings<BaseReg, 1> getBaseRegisters();
} // namespace sframe
} // namespace llvm
diff --git a/llvm/lib/BinaryFormat/DXContainer.cpp b/llvm/lib/BinaryFormat/DXContainer.cpp
index 46d91347742b2..9eaf75cd256c4 100644
--- a/llvm/lib/BinaryFormat/DXContainer.cpp
+++ b/llvm/lib/BinaryFormat/DXContainer.cpp
@@ -142,208 +142,214 @@ bool ShaderHash::isPopulated() {
return Flags > 0 || 0 != memcmp(&Digest, &Zeros, 16);
}
-#define COMPONENT_PRECISION(Val, Enum) {#Enum, SigMinPrecision::Enum},
-
-static const EnumEntry<SigMinPrecision> SigMinPrecisionNames[] = {
+EnumStrings<SigMinPrecision> dxbc::getSigMinPrecisions() {
+ constexpr EnumStringDef<SigMinPrecision> SigMinPrecisionNameDefs[] = {
+#define COMPONENT_PRECISION(Val, Enum) {{#Enum}, SigMinPrecision::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<SigMinPrecision>> dxbc::getSigMinPrecisions() {
- return ArrayRef(SigMinPrecisionNames);
+ };
+ static constexpr auto SigMinPrecisionNames =
+ BUILD_ENUM_STRINGS(SigMinPrecisionNameDefs);
+ return EnumStrings(SigMinPrecisionNames);
}
-#define D3D_SYSTEM_VALUE(Val, Enum) {#Enum, D3DSystemValue::Enum},
-
-static const EnumEntry<D3DSystemValue> D3DSystemValueNames[] = {
+EnumStrings<D3DSystemValue> dxbc::getD3DSystemValues() {
+ constexpr EnumStringDef<D3DSystemValue> D3DSystemValueNameDefs[] = {
+#define D3D_SYSTEM_VALUE(Val, Enum) {{#Enum}, D3DSystemValue::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<D3DSystemValue>> dxbc::getD3DSystemValues() {
- return ArrayRef(D3DSystemValueNames);
+ };
+ static constexpr auto D3DSystemValueNames =
+ BUILD_ENUM_STRINGS(D3DSystemValueNameDefs);
+ return EnumStrings(D3DSystemValueNames);
}
-#define COMPONENT_TYPE(Val, Enum) {#Enum, SigComponentType::Enum},
-
-static const EnumEntry<SigComponentType> SigComponentTypes[] = {
+EnumStrings<SigComponentType> dxbc::getSigComponentTypes() {
+ constexpr EnumStringDef<SigComponentType> SigComponentTypeDefs[] = {
+#define COMPONENT_TYPE(Val, Enum) {{#Enum}, SigComponentType::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<SigComponentType>> dxbc::getSigComponentTypes() {
- return ArrayRef(SigComponentTypes);
+ };
+ static constexpr auto SigComponentTypes =
+ BUILD_ENUM_STRINGS(SigComponentTypeDefs);
+ return EnumStrings(SigComponentTypes);
}
-static const EnumEntry<RootFlags> RootFlagNames[] = {
-#define ROOT_SIGNATURE_FLAG(Val, Enum) {#Enum, RootFlags::Enum},
+EnumStrings<RootFlags> dxbc::getRootFlags() {
+ constexpr EnumStringDef<RootFlags> RootFlagNameDefs[] = {
+#define ROOT_SIGNATURE_FLAG(Val, Enum) {{#Enum}, RootFlags::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<RootFlags>> dxbc::getRootFlags() {
- return ArrayRef(RootFlagNames);
+ };
+ static constexpr auto RootFlagNames = BUILD_ENUM_STRINGS(RootFlagNameDefs);
+ return EnumStrings(RootFlagNames);
}
-static const EnumEntry<RootDescriptorFlags> RootDescriptorFlagNames[] = {
+EnumStrings<RootDescriptorFlags> dxbc::getRootDescriptorFlags() {
+ constexpr EnumStringDef<RootDescriptorFlags> RootDescriptorFlagNameDefs[] = {
#define ROOT_DESCRIPTOR_FLAG(Val, Enum, Flag) \
- {#Enum, RootDescriptorFlags::Enum},
+ {{#Enum}, RootDescriptorFlags::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<RootDescriptorFlags>> dxbc::getRootDescriptorFlags() {
- return ArrayRef(RootDescriptorFlagNames);
+ };
+ static constexpr auto RootDescriptorFlagNames =
+ BUILD_ENUM_STRINGS(RootDescriptorFlagNameDefs);
+ return EnumStrings(RootDescriptorFlagNames);
}
-static const EnumEntry<DescriptorRangeFlags> DescriptorRangeFlagNames[] = {
+EnumStrings<DescriptorRangeFlags> dxbc::getDescriptorRangeFlags() {
+ constexpr EnumStringDef<DescriptorRangeFlags> DescriptorRangeFlagNameDefs[] =
+ {
#define DESCRIPTOR_RANGE_FLAG(Val, Enum, Flag) \
- {#Enum, DescriptorRangeFlags::Enum},
+ {{#Enum}, DescriptorRangeFlags::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<DescriptorRangeFlags>> dxbc::getDescriptorRangeFlags() {
- return ArrayRef(DescriptorRangeFlagNames);
+ };
+ static constexpr auto DescriptorRangeFlagNames =
+ BUILD_ENUM_STRINGS(DescriptorRangeFlagNameDefs);
+ return EnumStrings(DescriptorRangeFlagNames);
}
-static const EnumEntry<StaticSamplerFlags> StaticSamplerFlagNames[] = {
-#define STATIC_SAMPLER_FLAG(Val, Enum, Flag) {#Enum, StaticSamplerFlags::Enum},
+EnumStrings<StaticSamplerFlags> dxbc::getStaticSamplerFlags() {
+ constexpr EnumStringDef<StaticSamplerFlags> StaticSamplerFlagNameDefs[] = {
+#define STATIC_SAMPLER_FLAG(Val, Enum, Flag) \
+ {{#Enum}, StaticSamplerFlags::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<StaticSamplerFlags>> dxbc::getStaticSamplerFlags() {
- return ArrayRef(StaticSamplerFlagNames);
+ };
+ static constexpr auto StaticSamplerFlagNames =
+ BUILD_ENUM_STRINGS(StaticSamplerFlagNameDefs);
+ return EnumStrings(StaticSamplerFlagNames);
}
-#define SHADER_VISIBILITY(Val, Enum) {#Enum, ShaderVisibility::Enum},
-
-static const EnumEntry<ShaderVisibility> ShaderVisibilityValues[] = {
+EnumStrings<ShaderVisibility> dxbc::getShaderVisibility() {
+ constexpr EnumStringDef<ShaderVisibility> ShaderVisibilityValueDefs[] = {
+#define SHADER_VISIBILITY(Val, Enum) {{#Enum}, ShaderVisibility::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<ShaderVisibility>> dxbc::getShaderVisibility() {
- return ArrayRef(ShaderVisibilityValues);
+ };
+ static constexpr auto ShaderVisibilityValues =
+ BUILD_ENUM_STRINGS(ShaderVisibilityValueDefs);
+ return EnumStrings(ShaderVisibilityValues);
}
-#define FILTER(Val, Enum) {#Enum, SamplerFilter::Enum},
-
-static const EnumEntry<SamplerFilter> SamplerFilterNames[] = {
+EnumStrings<SamplerFilter> dxbc::getSamplerFilters() {
+ constexpr EnumStringDef<SamplerFilter> SamplerFilterNameDefs[] = {
+#define FILTER(Val, Enum) {{#Enum}, SamplerFilter::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<SamplerFilter>> dxbc::getSamplerFilters() {
- return ArrayRef(SamplerFilterNames);
+ };
+ static constexpr auto SamplerFilterNames =
+ BUILD_ENUM_STRINGS(SamplerFilterNameDefs);
+ return EnumStrings(SamplerFilterNames);
}
-#define TEXTURE_ADDRESS_MODE(Val, Enum) {#Enum, TextureAddressMode::Enum},
-
-static const EnumEntry<TextureAddressMode> TextureAddressModeNames[] = {
+EnumStrings<TextureAddressMode> dxbc::getTextureAddressModes() {
+ constexpr EnumStringDef<TextureAddressMode> TextureAddressModeNameDefs[] = {
+#define TEXTURE_ADDRESS_MODE(Val, Enum) {{#Enum}, TextureAddressMode::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<TextureAddressMode>> dxbc::getTextureAddressModes() {
- return ArrayRef(TextureAddressModeNames);
+ };
+ static constexpr auto TextureAddressModeNames =
+ BUILD_ENUM_STRINGS(TextureAddressModeNameDefs);
+ return EnumStrings(TextureAddressModeNames);
}
-#define COMPARISON_FUNC(Val, Enum) {#Enum, ComparisonFunc::Enum},
-
-static const EnumEntry<ComparisonFunc> ComparisonFuncNames[] = {
+EnumStrings<ComparisonFunc> dxbc::getComparisonFuncs() {
+ constexpr EnumStringDef<ComparisonFunc> ComparisonFuncNameDefs[] = {
+#define COMPARISON_FUNC(Val, Enum) {{#Enum}, ComparisonFunc::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<ComparisonFunc>> dxbc::getComparisonFuncs() {
- return ArrayRef(ComparisonFuncNames);
+ };
+ static constexpr auto ComparisonFuncNames =
+ BUILD_ENUM_STRINGS(ComparisonFuncNameDefs);
+ return EnumStrings(ComparisonFuncNames);
}
-#define STATIC_BORDER_COLOR(Val, Enum) {#Enum, StaticBorderColor::Enum},
-
-static const EnumEntry<StaticBorderColor> StaticBorderColorValues[] = {
+EnumStrings<StaticBorderColor> dxbc::getStaticBorderColors() {
+ constexpr EnumStringDef<StaticBorderColor> StaticBorderColorValueDefs[] = {
+#define STATIC_BORDER_COLOR(Val, Enum) {{#Enum}, StaticBorderColor::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<StaticBorderColor>> dxbc::getStaticBorderColors() {
- return ArrayRef(StaticBorderColorValues);
+ };
+ static constexpr auto StaticBorderColorValues =
+ BUILD_ENUM_STRINGS(StaticBorderColorValueDefs);
+ return EnumStrings(StaticBorderColorValues);
}
-#define ROOT_PARAMETER(Val, Enum) {#Enum, RootParameterType::Enum},
-
-static const EnumEntry<RootParameterType> RootParameterTypes[] = {
+EnumStrings<RootParameterType> dxbc::getRootParameterTypes() {
+ constexpr EnumStringDef<RootParameterType> RootParameterTypeDefs[] = {
+#define ROOT_PARAMETER(Val, Enum) {{#Enum}, RootParameterType::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<RootParameterType>> dxbc::getRootParameterTypes() {
- return ArrayRef(RootParameterTypes);
+ };
+ static constexpr auto RootParameterTypes =
+ BUILD_ENUM_STRINGS(RootParameterTypeDefs);
+ return EnumStrings(RootParameterTypes);
}
-#define SEMANTIC_KIND(Val, Enum) {#Enum, PSV::SemanticKind::Enum},
-
-static const EnumEntry<PSV::SemanticKind> SemanticKindNames[] = {
+EnumStrings<PSV::SemanticKind> PSV::getSemanticKinds() {
+ constexpr EnumStringDef<PSV::SemanticKind> SemanticKindNameDefs[] = {
+#define SEMANTIC_KIND(Val, Enum) {{#Enum}, PSV::SemanticKind::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::SemanticKind>> PSV::getSemanticKinds() {
- return ArrayRef(SemanticKindNames);
+ };
+ static constexpr auto SemanticKindNames =
+ BUILD_ENUM_STRINGS(SemanticKindNameDefs);
+ return EnumStrings(SemanticKindNames);
}
-#define COMPONENT_TYPE(Val, Enum) {#Enum, PSV::ComponentType::Enum},
-
-static const EnumEntry<PSV::ComponentType> ComponentTypeNames[] = {
+EnumStrings<PSV::ComponentType> PSV::getComponentTypes() {
+ constexpr EnumStringDef<PSV::ComponentType> ComponentTypeNameDefs[] = {
+#define COMPONENT_TYPE(Val, Enum) {{#Enum}, PSV::ComponentType::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::ComponentType>> PSV::getComponentTypes() {
- return ArrayRef(ComponentTypeNames);
+ };
+ static constexpr auto ComponentTypeNames =
+ BUILD_ENUM_STRINGS(ComponentTypeNameDefs);
+ return EnumStrings(ComponentTypeNames);
}
-#define INTERPOLATION_MODE(Val, Enum) {#Enum, PSV::InterpolationMode::Enum},
-
-static const EnumEntry<PSV::InterpolationMode> InterpolationModeNames[] = {
+EnumStrings<PSV::InterpolationMode> PSV::getInterpolationModes() {
+ constexpr EnumStringDef<PSV::InterpolationMode> InterpolationModeNameDefs[] =
+ {
+#define INTERPOLATION_MODE(Val, Enum) {{#Enum}, PSV::InterpolationMode::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::InterpolationMode>> PSV::getInterpolationModes() {
- return ArrayRef(InterpolationModeNames);
+ };
+ static constexpr auto InterpolationModeNames =
+ BUILD_ENUM_STRINGS(InterpolationModeNameDefs);
+ return EnumStrings(InterpolationModeNames);
}
-#define RESOURCE_TYPE(Val, Enum) {#Enum, PSV::ResourceType::Enum},
-
-static const EnumEntry<PSV::ResourceType> ResourceTypeNames[] = {
+EnumStrings<PSV::ResourceType> PSV::getResourceTypes() {
+ constexpr EnumStringDef<PSV::ResourceType> ResourceTypeNameDefs[] = {
+#define RESOURCE_TYPE(Val, Enum) {{#Enum}, PSV::ResourceType::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::ResourceType>> PSV::getResourceTypes() {
- return ArrayRef(ResourceTypeNames);
+ };
+ static constexpr auto ResourceTypeNames =
+ BUILD_ENUM_STRINGS(ResourceTypeNameDefs);
+ return EnumStrings(ResourceTypeNames);
}
-#define RESOURCE_KIND(Val, Enum) {#Enum, PSV::ResourceKind::Enum},
-
-static const EnumEntry<PSV::ResourceKind> ResourceKindNames[] = {
+EnumStrings<PSV::ResourceKind> PSV::getResourceKinds() {
+ constexpr EnumStringDef<PSV::ResourceKind> ResourceKindNameDefs[] = {
+#define RESOURCE_KIND(Val, Enum) {{#Enum}, PSV::ResourceKind::Enum},
#include "llvm/BinaryFormat/DXContainerConstants.def"
-};
-
-ArrayRef<EnumEntry<PSV::ResourceKind>> PS...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/206074
More information about the llvm-commits
mailing list