[llvm] [LLVM][TableGen] Change DXILEmitter to use const Record pointers (PR #110111)
Rahul Joshi via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 26 04:36:09 PDT 2024
https://github.com/jurahul created https://github.com/llvm/llvm-project/pull/110111
Change DXILEmitter to use const Record pointers.
>From 8be2217bc7ff1c885e6c65c59038de6c7e7c8802 Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Thu, 26 Sep 2024 04:34:42 -0700
Subject: [PATCH] [LLVM][TableGen] Change DXILEmitter to use const Record
pointers
---
llvm/utils/TableGen/DXILEmitter.cpp | 39 ++++++++++++++---------------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/llvm/utils/TableGen/DXILEmitter.cpp b/llvm/utils/TableGen/DXILEmitter.cpp
index a4b54950928677..bab53adbaefe37 100644
--- a/llvm/utils/TableGen/DXILEmitter.cpp
+++ b/llvm/utils/TableGen/DXILEmitter.cpp
@@ -39,10 +39,10 @@ struct DXILOperationDesc {
StringRef OpClass; // name of the opcode class
StringRef Doc; // the documentation description of this instruction
// Vector of operand type records - return type is at index 0
- SmallVector<Record *> OpTypes;
- SmallVector<Record *> OverloadRecs;
- SmallVector<Record *> StageRecs;
- SmallVector<Record *> AttrRecs;
+ SmallVector<const Record *> OpTypes;
+ SmallVector<const Record *> OverloadRecs;
+ SmallVector<const Record *> StageRecs;
+ SmallVector<const Record *> AttrRecs;
StringRef Intrinsic; // The llvm intrinsic map to OpName. Default is "" which
// means no map exists
SmallVector<StringRef, 4>
@@ -57,8 +57,8 @@ struct DXILOperationDesc {
/// In-place sort TableGen records of class with a field
/// Version dxil_version
/// in the ascending version order.
-static void AscendingSortByVersion(std::vector<Record *> &Recs) {
- std::sort(Recs.begin(), Recs.end(), [](Record *RecA, Record *RecB) {
+static void AscendingSortByVersion(std::vector<const Record *> &Recs) {
+ sort(Recs, [](const Record *RecA, const Record *RecB) {
unsigned RecAMaj =
RecA->getValueAsDef("dxil_version")->getValueAsInt("Major");
unsigned RecAMin =
@@ -82,13 +82,12 @@ DXILOperationDesc::DXILOperationDesc(const Record *R) {
OpCode = R->getValueAsInt("OpCode");
Doc = R->getValueAsString("Doc");
- SmallVector<Record *> ParamTypeRecs;
+ SmallVector<const Record *> ParamTypeRecs;
ParamTypeRecs.push_back(R->getValueAsDef("result"));
- std::vector<Record *> ArgTys = R->getValueAsListOfDefs("arguments");
- for (auto Ty : ArgTys) {
- ParamTypeRecs.push_back(Ty);
+ for (const Record *ArgTy : R->getValueAsListOfDefs("arguments")) {
+ ParamTypeRecs.push_back(ArgTy);
}
size_t ParamTypeRecsSize = ParamTypeRecs.size();
// Populate OpTypes with return type and parameter types
@@ -100,7 +99,7 @@ DXILOperationDesc::DXILOperationDesc(const Record *R) {
// llvm/IR/Intrinsics.td
OverloadParamIndex = -1; // A sigil meaning none.
for (unsigned i = 0; i < ParamTypeRecsSize; i++) {
- Record *TR = ParamTypeRecs[i];
+ const Record *TR = ParamTypeRecs[i];
// Track operation parameter indices of any overload types
if (TR->getValueAsInt("isOverload")) {
if (OverloadParamIndex != -1) {
@@ -117,17 +116,17 @@ DXILOperationDesc::DXILOperationDesc(const Record *R) {
}
// Get overload records
- std::vector<Record *> Recs = R->getValueAsListOfDefs("overloads");
+ std::vector<const Record *> Recs = R->getValueAsListOfConstDefs("overloads");
// Sort records in ascending order of DXIL version
AscendingSortByVersion(Recs);
- for (Record *CR : Recs) {
+ for (const Record *CR : Recs) {
OverloadRecs.push_back(CR);
}
// Get stage records
- Recs = R->getValueAsListOfDefs("stages");
+ Recs = R->getValueAsListOfConstDefs("stages");
if (Recs.empty()) {
PrintFatalError(R, Twine("Atleast one specification of valid stage for ") +
@@ -137,17 +136,17 @@ DXILOperationDesc::DXILOperationDesc(const Record *R) {
// Sort records in ascending order of DXIL version
AscendingSortByVersion(Recs);
- for (Record *CR : Recs) {
+ for (const Record *CR : Recs) {
StageRecs.push_back(CR);
}
// Get attribute records
- Recs = R->getValueAsListOfDefs("attributes");
+ Recs = R->getValueAsListOfConstDefs("attributes");
// Sort records in ascending order of DXIL version
AscendingSortByVersion(Recs);
- for (Record *CR : Recs) {
+ for (const Record *CR : Recs) {
AttrRecs.push_back(CR);
}
@@ -201,7 +200,7 @@ static StringRef getOverloadKindStr(const Record *R) {
/// \return std::string string representation of overload mask string
/// predicated by DXIL Version. E.g.,
// {{{1, 0}, Mask1}, {{1, 2}, Mask2}, ...}
-static std::string getOverloadMaskString(const SmallVector<Record *> Recs) {
+static std::string getOverloadMaskString(ArrayRef<const Record *> Recs) {
std::string MaskString = "";
std::string Prefix = "";
MaskString.append("{");
@@ -247,7 +246,7 @@ static std::string getOverloadMaskString(const SmallVector<Record *> Recs) {
/// \return std::string string representation of stages mask string
/// predicated by DXIL Version. E.g.,
// {{{1, 0}, Mask1}, {{1, 2}, Mask2}, ...}
-static std::string getStageMaskString(const SmallVector<Record *> Recs) {
+static std::string getStageMaskString(ArrayRef<const Record *> Recs) {
std::string MaskString = "";
std::string Prefix = "";
MaskString.append("{");
@@ -290,7 +289,7 @@ static std::string getStageMaskString(const SmallVector<Record *> Recs) {
/// \return std::string string representation of stages mask string
/// predicated by DXIL Version. E.g.,
// {{{1, 0}, Mask1}, {{1, 2}, Mask2}, ...}
-static std::string getAttributeMaskString(const SmallVector<Record *> Recs) {
+static std::string getAttributeMaskString(ArrayRef<const Record *> Recs) {
std::string MaskString = "";
std::string Prefix = "";
MaskString.append("{");
More information about the llvm-commits
mailing list