Skip to content

Commit 37729d8

Browse files
joaosaffranJoao Saffran
andauthored
[HLSL] Refactoring DXILABI.h to not depend on scope printer (llvm#153840)
This patch refactors DXILABI to remove the dependency on scope printer. Closes: llvm#153827 --------- Co-authored-by: Joao Saffran <{ID}+{username}@users.noreply.github.com>
1 parent e342dcd commit 37729d8

File tree

4 files changed

+17
-24
lines changed

4 files changed

+17
-24
lines changed

llvm/include/llvm/Support/DXILABI.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#define LLVM_SUPPORT_DXILABI_H
1919

2020
#include "llvm/ADT/StringRef.h"
21-
#include "llvm/Support/ScopedPrinter.h"
2221
#include <cstdint>
2322

2423
namespace llvm {
@@ -101,8 +100,6 @@ enum class SamplerFeedbackType : uint32_t {
101100
const unsigned MinWaveSize = 4;
102101
const unsigned MaxWaveSize = 128;
103102

104-
LLVM_ABI ArrayRef<EnumEntry<ResourceClass>> getResourceClasses();
105-
106103
LLVM_ABI StringRef getResourceClassName(ResourceClass RC);
107104

108105
} // namespace dxil

llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
#include "llvm/Frontend/HLSL/HLSLRootSignature.h"
14+
#include "llvm/Support/DXILABI.h"
1415
#include "llvm/Support/ScopedPrinter.h"
1516

1617
namespace llvm {
@@ -93,9 +94,7 @@ static raw_ostream &operator<<(raw_ostream &OS,
9394
}
9495

9596
static raw_ostream &operator<<(raw_ostream &OS, const ClauseType &Type) {
96-
OS << enumToStringRef(dxil::ResourceClass(llvm::to_underlying(Type)),
97-
dxil::getResourceClasses());
98-
97+
OS << dxil::getResourceClassName(Type);
9998
return OS;
10099
}
101100

llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "llvm/Frontend/HLSL/RootSignatureValidations.h"
1616
#include "llvm/IR/IRBuilder.h"
1717
#include "llvm/IR/Metadata.h"
18+
#include "llvm/Support/DXILABI.h"
1819
#include "llvm/Support/ScopedPrinter.h"
1920

2021
using namespace llvm;
@@ -120,8 +121,7 @@ MDNode *MetadataBuilder::BuildRootConstants(const RootConstants &Constants) {
120121
MDNode *MetadataBuilder::BuildRootDescriptor(const RootDescriptor &Descriptor) {
121122
IRBuilder<> Builder(Ctx);
122123
StringRef ResName =
123-
enumToStringRef(dxil::ResourceClass(to_underlying(Descriptor.Type)),
124-
dxil::getResourceClasses());
124+
dxil::getResourceClassName(dxil::ResourceClass(Descriptor.Type));
125125
assert(!ResName.empty() && "Provided an invalid Resource Class");
126126
SmallString<7> Name({"Root", ResName});
127127
Metadata *Operands[] = {
@@ -161,9 +161,7 @@ MDNode *MetadataBuilder::BuildDescriptorTable(const DescriptorTable &Table) {
161161
MDNode *MetadataBuilder::BuildDescriptorTableClause(
162162
const DescriptorTableClause &Clause) {
163163
IRBuilder<> Builder(Ctx);
164-
StringRef ResName =
165-
enumToStringRef(dxil::ResourceClass(to_underlying(Clause.Type)),
166-
dxil::getResourceClasses());
164+
StringRef ResName = dxil::getResourceClassName(Clause.Type);
167165
assert(!ResName.empty() && "Provided an invalid Resource Class");
168166
Metadata *Operands[] = {
169167
MDString::get(Ctx, ResName),

llvm/lib/Support/DXILABI.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,19 @@
1515
//===----------------------------------------------------------------------===//
1616

1717
#include "llvm/Support/DXILABI.h"
18-
#include "llvm/Support/ScopedPrinter.h"
18+
#include "llvm/Support/ErrorHandling.h"
1919
using namespace llvm;
2020

21-
static const EnumEntry<dxil::ResourceClass> ResourceClassNames[] = {
22-
{"SRV", llvm::dxil::ResourceClass::SRV},
23-
{"UAV", llvm::dxil::ResourceClass::UAV},
24-
{"CBV", llvm::dxil::ResourceClass::CBuffer},
25-
{"Sampler", llvm::dxil::ResourceClass::Sampler},
26-
};
27-
28-
ArrayRef<EnumEntry<llvm::dxil::ResourceClass>> dxil::getResourceClasses() {
29-
return ArrayRef(ResourceClassNames);
30-
}
31-
3221
StringRef dxil::getResourceClassName(dxil::ResourceClass RC) {
33-
return enumToStringRef(RC, getResourceClasses());
22+
switch (RC) {
23+
case dxil::ResourceClass::SRV:
24+
return "SRV";
25+
case dxil::ResourceClass::UAV:
26+
return "UAV";
27+
case dxil::ResourceClass::CBuffer:
28+
return "CBV";
29+
case dxil::ResourceClass::Sampler:
30+
return "Sampler";
31+
}
32+
llvm_unreachable("Invalid ResourceClass enum value");
3433
}

0 commit comments

Comments
 (0)