Skip to content

Commit 21ff45d

Browse files
committed
Revert "[RISCV][NFC] Make generated intrinsic records more human-readable (#133710)"
This reverts commit d0cf5cd. Error: "declaration of ‘clang::RISCV::RequiredExtensions {anonymous}::SemaRecord::RequiredExtensions’ changes meaning of ‘RequiredExtensions’ [-fpermissive]"
1 parent b283ff7 commit 21ff45d

File tree

4 files changed

+33
-105
lines changed

4 files changed

+33
-105
lines changed

clang/include/clang/Support/RISCVVIntrinsicUtils.h

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
#include "llvm/ADT/ArrayRef.h"
1313
#include "llvm/ADT/BitmaskEnum.h"
14-
#include "llvm/ADT/Bitset.h"
1514
#include "llvm/ADT/SmallVector.h"
1615
#include "llvm/ADT/StringRef.h"
1716
#include <cstdint>
@@ -377,8 +376,6 @@ enum PolicyScheme : uint8_t {
377376
HasPolicyOperand,
378377
};
379378

380-
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, enum PolicyScheme PS);
381-
382379
// TODO refactor RVVIntrinsic class design after support all intrinsic
383380
// combination. This represents an instantiation of an intrinsic with a
384381
// particular type and prototype
@@ -510,23 +507,6 @@ enum RVVRequire {
510507
RVV_REQ_NUM,
511508
};
512509

513-
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, enum RVVRequire Require);
514-
515-
struct RequiredExtensions {
516-
llvm::Bitset<RVV_REQ_NUM> Bits;
517-
RequiredExtensions() {}
518-
RequiredExtensions(std::initializer_list<RVVRequire> Init) {
519-
for (auto I : Init)
520-
Bits.set(I);
521-
}
522-
523-
void set(unsigned I) { Bits.set(I); }
524-
bool operator[](unsigned I) const { return Bits[I]; }
525-
};
526-
527-
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
528-
const RequiredExtensions &Exts);
529-
530510
// Raw RVV intrinsic info, used to expand later.
531511
// This struct is highly compact for minimized code size.
532512
struct RVVIntrinsicRecord {
@@ -538,7 +518,7 @@ struct RVVIntrinsicRecord {
538518
const char *OverloadedName;
539519

540520
// Required target features for this intrinsic.
541-
RequiredExtensions RequiredExtensions;
521+
uint32_t RequiredExtensions[(RVV_REQ_NUM + 31) / 32];
542522

543523
// Prototype for this intrinsic, index of RVVSignatureTable.
544524
uint16_t PrototypeIndex;

clang/lib/Sema/SemaRISCV.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics(
232232
for (auto &Record : Recs) {
233233
// Check requirements.
234234
if (llvm::any_of(FeatureCheckList, [&](const auto &Item) {
235-
return Record.RequiredExtensions[Item.second] &&
235+
return ((Record.RequiredExtensions[Item.second / 32] &
236+
(1U << (Item.second % 32))) != 0) &&
236237
!TI.hasFeature(Item.first);
237238
}))
238239
continue;

clang/lib/Support/RISCVVIntrinsicUtils.cpp

Lines changed: 25 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,91 +1196,36 @@ SmallVector<PrototypeDescriptor> parsePrototypes(StringRef Prototypes) {
11961196
return PrototypeDescriptors;
11971197
}
11981198

1199-
#define STRINGIFY(NAME) \
1200-
case NAME: \
1201-
OS << #NAME; \
1202-
break;
1203-
1204-
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, enum PolicyScheme PS) {
1205-
switch (PS) {
1206-
STRINGIFY(SchemeNone)
1207-
STRINGIFY(HasPassthruOperand)
1208-
STRINGIFY(HasPolicyOperand)
1209-
}
1210-
return OS;
1211-
}
1212-
1213-
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, enum RVVRequire Require) {
1214-
switch (Require) {
1215-
STRINGIFY(RVV_REQ_RV64)
1216-
STRINGIFY(RVV_REQ_Zvfhmin)
1217-
STRINGIFY(RVV_REQ_Xsfvcp)
1218-
STRINGIFY(RVV_REQ_Xsfvfnrclipxfqf)
1219-
STRINGIFY(RVV_REQ_Xsfvfwmaccqqq)
1220-
STRINGIFY(RVV_REQ_Xsfvqmaccdod)
1221-
STRINGIFY(RVV_REQ_Xsfvqmaccqoq)
1222-
STRINGIFY(RVV_REQ_Zvbb)
1223-
STRINGIFY(RVV_REQ_Zvbc)
1224-
STRINGIFY(RVV_REQ_Zvkb)
1225-
STRINGIFY(RVV_REQ_Zvkg)
1226-
STRINGIFY(RVV_REQ_Zvkned)
1227-
STRINGIFY(RVV_REQ_Zvknha)
1228-
STRINGIFY(RVV_REQ_Zvknhb)
1229-
STRINGIFY(RVV_REQ_Zvksed)
1230-
STRINGIFY(RVV_REQ_Zvksh)
1231-
STRINGIFY(RVV_REQ_Zvfbfwma)
1232-
STRINGIFY(RVV_REQ_Zvfbfmin)
1233-
STRINGIFY(RVV_REQ_Zvfh)
1234-
STRINGIFY(RVV_REQ_Experimental)
1235-
default:
1236-
llvm_unreachable("Unsupported RVVRequire!");
1237-
break;
1238-
}
1239-
return OS;
1240-
}
1241-
1242-
#undef STRINGIFY
1243-
1244-
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
1245-
const RequiredExtensions &Exts) {
1246-
OS << "{";
1247-
ListSeparator LS;
1248-
for (unsigned I = 0; I < RVV_REQ_NUM; I++)
1249-
if (Exts[I])
1250-
OS << LS << static_cast<RVVRequire>(I);
1251-
OS << "}";
1252-
return OS;
1253-
}
1254-
12551199
raw_ostream &operator<<(raw_ostream &OS, const RVVIntrinsicRecord &Record) {
12561200
OS << "{";
1257-
OS << "/*Name=*/\"" << Record.Name << "\", ";
1201+
OS << "\"" << Record.Name << "\",";
12581202
if (Record.OverloadedName == nullptr ||
12591203
StringRef(Record.OverloadedName).empty())
1260-
OS << "/*OverloadedName=*/nullptr, ";
1204+
OS << "nullptr,";
12611205
else
1262-
OS << "/*OverloadedName=*/\"" << Record.OverloadedName << "\", ";
1263-
OS << "/*RequiredExtensions=*/" << Record.RequiredExtensions << ", ";
1264-
OS << "/*PrototypeIndex=*/" << Record.PrototypeIndex << ", ";
1265-
OS << "/*SuffixIndex=*/" << Record.SuffixIndex << ", ";
1266-
OS << "/*OverloadedSuffixIndex=*/" << Record.OverloadedSuffixIndex << ", ";
1267-
OS << "/*PrototypeLength=*/" << (int)Record.PrototypeLength << ", ";
1268-
OS << "/*SuffixLength=*/" << (int)Record.SuffixLength << ", ";
1269-
OS << "/*OverloadedSuffixSize=*/" << (int)Record.OverloadedSuffixSize << ", ";
1270-
OS << "/*TypeRangeMask=*/" << (int)Record.TypeRangeMask << ", ";
1271-
OS << "/*Log2LMULMask=*/" << (int)Record.Log2LMULMask << ", ";
1272-
OS << "/*NF=*/" << (int)Record.NF << ", ";
1273-
OS << "/*HasMasked=*/" << (int)Record.HasMasked << ", ";
1274-
OS << "/*HasVL=*/" << (int)Record.HasVL << ", ";
1275-
OS << "/*HasMaskedOffOperand=*/" << (int)Record.HasMaskedOffOperand << ", ";
1276-
OS << "/*HasTailPolicy=*/" << (int)Record.HasTailPolicy << ", ";
1277-
OS << "/*HasMaskPolicy=*/" << (int)Record.HasMaskPolicy << ", ";
1278-
OS << "/*HasFRMRoundModeOp=*/" << (int)Record.HasFRMRoundModeOp << ", ";
1279-
OS << "/*IsTuple=*/" << (int)Record.IsTuple << ", ";
1280-
OS << "/*UnMaskedPolicyScheme=*/" << (PolicyScheme)Record.UnMaskedPolicyScheme
1281-
<< ", ";
1282-
OS << "/*MaskedPolicyScheme=*/" << (PolicyScheme)Record.MaskedPolicyScheme
1283-
<< ", ";
1206+
OS << "\"" << Record.OverloadedName << "\",";
1207+
OS << "{";
1208+
for (uint32_t Exts : Record.RequiredExtensions)
1209+
OS << Exts << ',';
1210+
OS << "},";
1211+
OS << Record.PrototypeIndex << ",";
1212+
OS << Record.SuffixIndex << ",";
1213+
OS << Record.OverloadedSuffixIndex << ",";
1214+
OS << (int)Record.PrototypeLength << ",";
1215+
OS << (int)Record.SuffixLength << ",";
1216+
OS << (int)Record.OverloadedSuffixSize << ",";
1217+
OS << (int)Record.TypeRangeMask << ",";
1218+
OS << (int)Record.Log2LMULMask << ",";
1219+
OS << (int)Record.NF << ",";
1220+
OS << (int)Record.HasMasked << ",";
1221+
OS << (int)Record.HasVL << ",";
1222+
OS << (int)Record.HasMaskedOffOperand << ",";
1223+
OS << (int)Record.HasTailPolicy << ",";
1224+
OS << (int)Record.HasMaskPolicy << ",";
1225+
OS << (int)Record.HasFRMRoundModeOp << ",";
1226+
OS << (int)Record.IsTuple << ",";
1227+
OS << (int)Record.UnMaskedPolicyScheme << ",";
1228+
OS << (int)Record.MaskedPolicyScheme << ",";
12841229
OS << "},\n";
12851230
return OS;
12861231
}

clang/utils/TableGen/RISCVVEmitter.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ struct SemaRecord {
4545
unsigned Log2LMULMask;
4646

4747
// Required extensions for this intrinsic.
48-
RequiredExtensions RequiredExtensions;
48+
uint32_t RequiredExtensions[(RVV_REQ_NUM + 31) / 32];
4949

5050
// Prototype for this intrinsic.
5151
SmallVector<PrototypeDescriptor> Prototype;
@@ -769,6 +769,7 @@ void RVVEmitter::createRVVIntrinsics(
769769

770770
SR.Log2LMULMask = Log2LMULMask;
771771

772+
memset(SR.RequiredExtensions, 0, sizeof(SR.RequiredExtensions));
772773
for (auto RequiredFeature : RequiredFeatures) {
773774
unsigned RequireExt =
774775
StringSwitch<RVVRequire>(RequiredFeature)
@@ -792,7 +793,7 @@ void RVVEmitter::createRVVIntrinsics(
792793
.Case("Zvfbfmin", RVV_REQ_Zvfbfmin)
793794
.Case("Zvfh", RVV_REQ_Zvfh)
794795
.Case("Experimental", RVV_REQ_Experimental);
795-
SR.RequiredExtensions.set(RequireExt);
796+
SR.RequiredExtensions[RequireExt / 32] |= 1U << (RequireExt % 32);
796797
}
797798

798799
SR.NF = NF;
@@ -836,7 +837,8 @@ void RVVEmitter::createRVVIntrinsicRecords(std::vector<RVVIntrinsicRecord> &Out,
836837
R.PrototypeLength = SR.Prototype.size();
837838
R.SuffixLength = SR.Suffix.size();
838839
R.OverloadedSuffixSize = SR.OverloadedSuffix.size();
839-
R.RequiredExtensions = SR.RequiredExtensions;
840+
memcpy(R.RequiredExtensions, SR.RequiredExtensions,
841+
sizeof(R.RequiredExtensions));
840842
R.TypeRangeMask = SR.TypeRangeMask;
841843
R.Log2LMULMask = SR.Log2LMULMask;
842844
R.NF = SR.NF;

0 commit comments

Comments
 (0)