[llvm-branch-commits] [llvm] [NFC][DXIL] moving `getResourceClassName` into `DXILABI.h` (PR #153490)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Aug 13 13:30:51 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-hlsl
@llvm/pr-subscribers-backend-directx
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
More information about the llvm-branch-commits
mailing list