Skip to content

Commit a3d840e

Browse files
authored
Use VersionNumber instead of SPIRVWord (#2507)
-This reduces the number of required type casts.- This unifies all the version methods used in translator.
1 parent 6b47e8c commit a3d840e

File tree

4 files changed

+18
-18
lines changed

4 files changed

+18
-18
lines changed

include/LLVMSPIRVOpts.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ inline constexpr std::string_view formatVersionNumber(uint32_t Version) {
8989
return "unknown";
9090
}
9191

92-
inline bool isSPIRVVersionKnown(uint32_t Ver) {
93-
return Ver >= static_cast<uint32_t>(VersionNumber::MinimumVersion) &&
94-
Ver <= static_cast<uint32_t>(VersionNumber::MaximumVersion);
92+
inline bool isSPIRVVersionKnown(VersionNumber Ver) {
93+
return Ver >= VersionNumber::MinimumVersion &&
94+
Ver <= VersionNumber::MaximumVersion;
9595
}
9696

9797
enum class ExtensionID : uint32_t {

lib/SPIRV/SPIRVReader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4923,7 +4923,7 @@ std::optional<SPIRVModuleReport> getSpirvReport(std::istream &IS,
49234923
return {};
49244924
}
49254925
D >> Word;
4926-
if (!isSPIRVVersionKnown(Word)) {
4926+
if (!isSPIRVVersionKnown(static_cast<VersionNumber>(Word))) {
49274927
ErrCode = SPIRVEC_InvalidVersionNumber;
49284928
return {};
49294929
}

lib/SPIRV/libSPIRV/SPIRVModule.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ SPIRVModule::~SPIRVModule() {}
7878
class SPIRVModuleImpl : public SPIRVModule {
7979
public:
8080
SPIRVModuleImpl()
81-
: SPIRVModule(), NextId(1),
82-
SPIRVVersion(static_cast<SPIRVWord>(VersionNumber::SPIRV_1_0)),
81+
: SPIRVModule(), NextId(1), SPIRVVersion(VersionNumber::SPIRV_1_0),
8382
GeneratorId(SPIRVGEN_KhronosLLVMSPIRVTranslator), GeneratorVer(0),
8483
InstSchema(SPIRVISCH_Default), SrcLang(SourceLanguageOpenCL_C),
8584
SrcLangVer(102000), BoolTy(nullptr), VoidTy(nullptr) {
@@ -152,7 +151,7 @@ class SPIRVModuleImpl : public SPIRVModule {
152151
bool isEntryPoint(SPIRVExecutionModelKind, SPIRVId EP) const override;
153152
unsigned short getGeneratorId() const override { return GeneratorId; }
154153
unsigned short getGeneratorVer() const override { return GeneratorVer; }
155-
SPIRVWord getSPIRVVersion() const override { return SPIRVVersion; }
154+
VersionNumber getSPIRVVersion() const override { return SPIRVVersion; }
156155
const std::vector<SPIRVExtInst *> &getDebugInstVec() const override {
157156
return DebugInstVec;
158157
}
@@ -184,8 +183,8 @@ class SPIRVModuleImpl : public SPIRVModule {
184183
void resolveUnknownStructFields() override;
185184
void insertEntryNoId(SPIRVEntry *Entry) override { EntryNoId.insert(Entry); }
186185

187-
void setSPIRVVersion(SPIRVWord Ver) override {
188-
if (!this->isAllowedToUseVersion(static_cast<VersionNumber>(Ver))) {
186+
void setSPIRVVersion(VersionNumber Ver) override {
187+
if (!this->isAllowedToUseVersion(Ver)) {
189188
std::stringstream SS;
190189
SS << "SPIR-V version was restricted to at most "
191190
<< to_string(getMaximumAllowedSPIRVVersion())
@@ -496,7 +495,7 @@ class SPIRVModuleImpl : public SPIRVModule {
496495
private:
497496
SPIRVErrorLog ErrLog;
498497
SPIRVId NextId;
499-
SPIRVWord SPIRVVersion;
498+
VersionNumber SPIRVVersion;
500499
unsigned short GeneratorId;
501500
unsigned short GeneratorVer;
502501
SPIRVInstructionSchemaKind InstSchema;
@@ -1994,7 +1993,7 @@ spv_ostream &operator<<(spv_ostream &O, SPIRVModule &M) {
19941993
MI.CurrentDebugLine.reset();
19951994

19961995
SPIRVEncoder Encoder(O);
1997-
Encoder << MagicNumber << MI.SPIRVVersion
1996+
Encoder << MagicNumber << (SPIRVWord)MI.SPIRVVersion
19981997
<< (((SPIRVWord)MI.GeneratorId << 16) | MI.GeneratorVer)
19991998
<< MI.NextId /* Bound for Id */
20001999
<< MI.InstSchema;
@@ -2227,7 +2226,7 @@ std::istream &SPIRVModuleImpl::parseSPT(std::istream &I) {
22272226
return I;
22282227
}
22292228

2230-
MI.SPIRVVersion = ReadSPIRVWord(I);
2229+
MI.SPIRVVersion = static_cast<VersionNumber>(ReadSPIRVWord(I));
22312230
if (!ErrorLog.checkError(!I.fail(), SPIRVEC_InvalidModule,
22322231
"header parsing error")) {
22332232
MI.setInvalid();
@@ -2337,7 +2336,8 @@ std::istream &SPIRVModuleImpl::parseSPIRV(std::istream &I) {
23372336
!ErrorLog.checkError(Header[0] == MagicNumber, SPIRVEC_InvalidModule,
23382337
"invalid magic number") ||
23392338
!ErrorLog.checkError(
2340-
isSPIRVVersionKnown(Header[1]), SPIRVEC_InvalidModule,
2339+
isSPIRVVersionKnown(static_cast<VersionNumber>(Header[1])),
2340+
SPIRVEC_InvalidModule,
23412341
"unsupported SPIR-V version number '" + to_string(Header[1]) +
23422342
"'. Range of supported/known SPIR-V "
23432343
"versions is " +
@@ -2355,7 +2355,7 @@ std::istream &SPIRVModuleImpl::parseSPIRV(std::istream &I) {
23552355
return I;
23562356
}
23572357

2358-
MI.SPIRVVersion = Header[1];
2358+
MI.SPIRVVersion = static_cast<VersionNumber>(Header[1]);
23592359
MI.GeneratorId = Header[2] >> 16;
23602360
MI.GeneratorVer = Header[2] & 0xFFFF;
23612361
MI.NextId = Header[3];

lib/SPIRV/libSPIRV/SPIRVModule.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class SPIRVModule {
157157
virtual bool isEntryPoint(SPIRVExecutionModelKind, SPIRVId) const = 0;
158158
virtual unsigned short getGeneratorId() const = 0;
159159
virtual unsigned short getGeneratorVer() const = 0;
160-
virtual SPIRVWord getSPIRVVersion() const = 0;
160+
virtual VersionNumber getSPIRVVersion() const = 0;
161161
virtual const std::vector<SPIRVExtInst *> &getDebugInstVec() const = 0;
162162
virtual const std::vector<SPIRVExtInst *> &getAuxDataInstVec() const = 0;
163163

@@ -177,15 +177,15 @@ class SPIRVModule {
177177
virtual void setGeneratorId(unsigned short) = 0;
178178
virtual void setGeneratorVer(unsigned short) = 0;
179179
virtual void resolveUnknownStructFields() = 0;
180-
virtual void setSPIRVVersion(SPIRVWord) = 0;
180+
virtual void setSPIRVVersion(VersionNumber) = 0;
181181
virtual void insertEntryNoId(SPIRVEntry *Entry) = 0;
182182

183183
void setMinSPIRVVersion(VersionNumber Ver) {
184-
setSPIRVVersion(std::max(static_cast<SPIRVWord>(Ver), getSPIRVVersion()));
184+
setSPIRVVersion(std::max(Ver, getSPIRVVersion()));
185185
}
186186

187187
void setMaxSPIRVVersion(VersionNumber Ver) {
188-
assert(static_cast<SPIRVWord>(Ver) >= getSPIRVVersion() &&
188+
assert(Ver >= getSPIRVVersion() &&
189189
"Maximum version can't be lower than minimum version!");
190190
MaxVersion = std::min(Ver, MaxVersion);
191191
}

0 commit comments

Comments
 (0)