Skip to content

Commit a3dea91

Browse files
authored
[NFC] Return a VersionNumber from getRequiredSPIRVVersion (#2469)
This eliminates the need for casts, making the various overrides easier to read.
1 parent 80dfd86 commit a3dea91

File tree

4 files changed

+24
-25
lines changed

4 files changed

+24
-25
lines changed

lib/SPIRV/libSPIRV/SPIRVDecorate.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,21 @@ class SPIRVDecorateGeneric : public SPIRVAnnotationGeneric {
8989
}
9090
}
9191

92-
SPIRVWord getRequiredSPIRVVersion() const override {
92+
VersionNumber getRequiredSPIRVVersion() const override {
9393
switch (Dec) {
9494
case DecorationSpecId:
9595
if (getModule()->hasCapability(CapabilityKernel))
96-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_1);
96+
return VersionNumber::SPIRV_1_1;
9797
else
98-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_0);
98+
return VersionNumber::SPIRV_1_0;
9999

100100
case DecorationMaxByteOffset:
101-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_1);
101+
return VersionNumber::SPIRV_1_1;
102102
case DecorationUserSemantic:
103-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_4);
103+
return VersionNumber::SPIRV_1_4;
104104

105105
default:
106-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_0);
106+
return VersionNumber::SPIRV_1_0;
107107
}
108108
}
109109

lib/SPIRV/libSPIRV/SPIRVEntry.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,7 @@ void SPIRVEntry::updateModuleVersion() const {
592592
if (!Module)
593593
return;
594594

595-
Module->setMinSPIRVVersion(
596-
static_cast<VersionNumber>(getRequiredSPIRVVersion()));
595+
Module->setMinSPIRVVersion(getRequiredSPIRVVersion());
597596
}
598597

599598
spv_ostream &operator<<(spv_ostream &O, const SPIRVEntry &E) {

lib/SPIRV/libSPIRV/SPIRVEntry.h

+14-14
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class SPIRVExtInst;
7676
void decode(std::istream &I) override;
7777

7878
#define _REQ_SPIRV_VER(Version) \
79-
SPIRVWord getRequiredSPIRVVersion() const override { return Version; }
79+
VersionNumber getRequiredSPIRVVersion() const override { return Version; }
8080

8181
// Add implementation of encode/decode functions to a class.
8282
// Used out side of class definition.
@@ -417,8 +417,8 @@ class SPIRVEntry {
417417
void validateBuiltin(SPIRVWord, SPIRVWord) const;
418418

419419
// By default assume SPIRV 1.0 as required version
420-
virtual SPIRVWord getRequiredSPIRVVersion() const {
421-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_0);
420+
virtual VersionNumber getRequiredSPIRVVersion() const {
421+
return VersionNumber::SPIRV_1_0;
422422
}
423423

424424
virtual std::vector<SPIRVEntry *> getNonLiteralOperands() const {
@@ -683,16 +683,16 @@ class SPIRVExecutionMode : public SPIRVAnnotation {
683683
return getCapability(ExecMode);
684684
}
685685

686-
SPIRVWord getRequiredSPIRVVersion() const override {
686+
VersionNumber getRequiredSPIRVVersion() const override {
687687
switch (ExecMode) {
688688
case ExecutionModeFinalizer:
689689
case ExecutionModeInitializer:
690690
case ExecutionModeSubgroupSize:
691691
case ExecutionModeSubgroupsPerWorkgroup:
692-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_1);
692+
return VersionNumber::SPIRV_1_1;
693693

694694
default:
695-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_0);
695+
return VersionNumber::SPIRV_1_0;
696696
}
697697
}
698698

@@ -730,8 +730,8 @@ class SPIRVExecutionModeId : public SPIRVExecutionMode {
730730
}
731731
// Incomplete constructor
732732
SPIRVExecutionModeId() : SPIRVExecutionMode() {}
733-
SPIRVWord getRequiredSPIRVVersion() const override {
734-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_2);
733+
VersionNumber getRequiredSPIRVVersion() const override {
734+
return VersionNumber::SPIRV_1_2;
735735
}
736736
};
737737

@@ -870,7 +870,7 @@ class SPIRVCapability : public SPIRVEntryNoId<OpCapability> {
870870
SPIRVCapability() : Kind(CapabilityMatrix) {}
871871
_SPIRV_DCL_ENCDEC
872872

873-
SPIRVWord getRequiredSPIRVVersion() const override {
873+
VersionNumber getRequiredSPIRVVersion() const override {
874874
switch (Kind) {
875875
case CapabilityGroupNonUniform:
876876
case CapabilityGroupNonUniformVote:
@@ -879,15 +879,15 @@ class SPIRVCapability : public SPIRVEntryNoId<OpCapability> {
879879
case CapabilityGroupNonUniformShuffle:
880880
case CapabilityGroupNonUniformShuffleRelative:
881881
case CapabilityGroupNonUniformClustered:
882-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_3);
882+
return VersionNumber::SPIRV_1_3;
883883

884884
case CapabilityNamedBarrier:
885885
case CapabilitySubgroupDispatch:
886886
case CapabilityPipeStorage:
887-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_1);
887+
return VersionNumber::SPIRV_1_1;
888888

889889
default:
890-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_0);
890+
return VersionNumber::SPIRV_1_0;
891891
}
892892
}
893893

@@ -1022,8 +1022,8 @@ class SPIRVModuleProcessed : public SPIRVEntryNoId<OpModuleProcessed> {
10221022
SPIRVModuleProcessed() { updateModuleVersion(); }
10231023
_SPIRV_DCL_ENCDEC
10241024
void validate() const override;
1025-
SPIRVWord getRequiredSPIRVVersion() const override {
1026-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_1);
1025+
VersionNumber getRequiredSPIRVVersion() const override {
1026+
return VersionNumber::SPIRV_1_1;
10271027
}
10281028

10291029
std::string getProcessStr();

lib/SPIRV/libSPIRV/SPIRVInstruction.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -2512,20 +2512,20 @@ class SPIRVGroupNonUniformBallotInst : public SPIRVInstTemplateBase {
25122512
return getVec(CapabilityGroupNonUniformBallot);
25132513
}
25142514

2515-
SPIRVWord getRequiredSPIRVVersion() const override {
2515+
VersionNumber getRequiredSPIRVVersion() const override {
25162516
switch (OpCode) {
25172517
case OpGroupNonUniformBroadcast: {
25182518
assert(Ops.size() == 3 && "Expecting (Execution, Value, Id) operands");
25192519
if (!isConstantOpCode(getOperand(2)->getOpCode())) {
25202520
// Before version 1.5, Id must come from a constant instruction.
2521-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_5);
2521+
return VersionNumber::SPIRV_1_5;
25222522
}
25232523
break;
25242524
}
25252525
default:
25262526
break;
25272527
}
2528-
return static_cast<SPIRVWord>(VersionNumber::SPIRV_1_3);
2528+
return VersionNumber::SPIRV_1_3;
25292529
}
25302530
};
25312531

0 commit comments

Comments
 (0)