llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-llvm-binary-utilities Author: None (joaosaffran) <details> <summary>Changes</summary> In order to solve a circular dependency between `DXILABI.h` and `BinaryFormat/DXContainer.h` we need to move `getResourceClassName` into `DXILABI.h` --- Full diff: https://github.com/llvm/llvm-project/pull/153490.diff 6 Files Affected: - (modified) llvm/include/llvm/BinaryFormat/DXContainer.h (-2) - (modified) llvm/include/llvm/Support/DXILABI.h (+4-1) - (modified) llvm/lib/BinaryFormat/DXContainer.cpp (-11) - (modified) llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp (+1-1) - (modified) llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp (+2-2) - (modified) llvm/lib/Support/DXILABI.cpp (+12-1) ``````````diff diff --git a/llvm/include/llvm/BinaryFormat/DXContainer.h b/llvm/include/llvm/BinaryFormat/DXContainer.h index cc4af3d9be8d7..f74c9775cb3f3 100644 --- a/llvm/include/llvm/BinaryFormat/DXContainer.h +++ b/llvm/include/llvm/BinaryFormat/DXContainer.h @@ -158,8 +158,6 @@ enum class FeatureFlags : uint64_t { static_assert((uint64_t)FeatureFlags::NextUnusedBit <= 1ull << 63, "Shader flag bits exceed enum size."); -LLVM_ABI ArrayRef<EnumEntry<llvm::dxil::ResourceClass>> getResourceClasses(); - #define ROOT_SIGNATURE_FLAG(Num, Val) Val = Num, enum class RootFlags : uint32_t { #include "DXContainerConstants.def" diff --git a/llvm/include/llvm/Support/DXILABI.h b/llvm/include/llvm/Support/DXILABI.h index 397906a3466c5..dcd611eb3b7db 100644 --- a/llvm/include/llvm/Support/DXILABI.h +++ b/llvm/include/llvm/Support/DXILABI.h @@ -18,6 +18,7 @@ #define LLVM_SUPPORT_DXILABI_H #include "llvm/ADT/StringRef.h" +#include "llvm/Support/ScopedPrinter.h" #include <cstdint> namespace llvm { @@ -100,7 +101,9 @@ enum class SamplerFeedbackType : uint32_t { const unsigned MinWaveSize = 4; const unsigned MaxWaveSize = 128; -StringRef getResourceClassName(ResourceClass RC); +LLVM_ABI ArrayRef<EnumEntry<llvm::dxil::ResourceClass>> getResourceClasses(); + +LLVM_ABI StringRef getResourceClassName(ResourceClass RC); } // namespace dxil } // namespace llvm diff --git a/llvm/lib/BinaryFormat/DXContainer.cpp b/llvm/lib/BinaryFormat/DXContainer.cpp index eb83945c9c42f..36d10d0b63078 100644 --- a/llvm/lib/BinaryFormat/DXContainer.cpp +++ b/llvm/lib/BinaryFormat/DXContainer.cpp @@ -60,17 +60,6 @@ ArrayRef<EnumEntry<SigComponentType>> dxbc::getSigComponentTypes() { return ArrayRef(SigComponentTypes); } -static const EnumEntry<dxil::ResourceClass> ResourceClassNames[] = { - {"SRV", llvm::dxil::ResourceClass::SRV}, - {"UAV", llvm::dxil::ResourceClass::UAV}, - {"CBV", llvm::dxil::ResourceClass::CBuffer}, - {"Sampler", llvm::dxil::ResourceClass::Sampler}, -}; - -ArrayRef<EnumEntry<llvm::dxil::ResourceClass>> dxbc::getResourceClasses() { - return ArrayRef(ResourceClassNames); -} - static const EnumEntry<RootFlags> RootFlagNames[] = { #define ROOT_SIGNATURE_FLAG(Val, Enum) {#Enum, RootFlags::Enum}, #include "llvm/BinaryFormat/DXContainerConstants.def" diff --git a/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp b/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp index 574883e0d7fd7..050cc46e8c9b0 100644 --- a/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp +++ b/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp @@ -94,7 +94,7 @@ static raw_ostream &operator<<(raw_ostream &OS, static raw_ostream &operator<<(raw_ostream &OS, const ClauseType &Type) { OS << enumToStringRef(dxil::ResourceClass(llvm::to_underlying(Type)), - dxbc::getResourceClasses()); + dxil::getResourceClasses()); return OS; } diff --git a/llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp b/llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp index 1cda3080442b2..157bfc665b207 100644 --- a/llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp +++ b/llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp @@ -121,7 +121,7 @@ MDNode *MetadataBuilder::BuildRootDescriptor(const RootDescriptor &Descriptor) { IRBuilder<> Builder(Ctx); StringRef ResName = enumToStringRef(dxil::ResourceClass(to_underlying(Descriptor.Type)), - dxbc::getResourceClasses()); + dxil::getResourceClasses()); assert(!ResName.empty() && "Provided an invalid Resource Class"); SmallString<7> Name({"Root", ResName}); Metadata *Operands[] = { @@ -163,7 +163,7 @@ MDNode *MetadataBuilder::BuildDescriptorTableClause( IRBuilder<> Builder(Ctx); StringRef ResName = enumToStringRef(dxil::ResourceClass(to_underlying(Clause.Type)), - dxbc::getResourceClasses()); + dxil::getResourceClasses()); assert(!ResName.empty() && "Provided an invalid Resource Class"); Metadata *Operands[] = { MDString::get(Ctx, ResName), diff --git a/llvm/lib/Support/DXILABI.cpp b/llvm/lib/Support/DXILABI.cpp index c6499b21613fb..892c910dbe97b 100644 --- a/llvm/lib/Support/DXILABI.cpp +++ b/llvm/lib/Support/DXILABI.cpp @@ -15,6 +15,17 @@ #include "llvm/Support/ScopedPrinter.h" using namespace llvm; +static const EnumEntry<dxil::ResourceClass> ResourceClassNames[] = { + {"SRV", llvm::dxil::ResourceClass::SRV}, + {"UAV", llvm::dxil::ResourceClass::UAV}, + {"CBV", llvm::dxil::ResourceClass::CBuffer}, + {"Sampler", llvm::dxil::ResourceClass::Sampler}, +}; + +ArrayRef<EnumEntry<llvm::dxil::ResourceClass>> dxil::getResourceClasses() { + return ArrayRef(ResourceClassNames); +} + StringRef dxil::getResourceClassName(dxil::ResourceClass RC) { - return enumToStringRef(RC, dxbc::getResourceClasses()); + return enumToStringRef(RC, getResourceClasses()); } `````````` </details> https://github.com/llvm/llvm-project/pull/153490 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits