summaryrefslogtreecommitdiff
path: root/offload/tools/offload-tblgen/MiscGen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'offload/tools/offload-tblgen/MiscGen.cpp')
-rw-r--r--offload/tools/offload-tblgen/MiscGen.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/offload/tools/offload-tblgen/MiscGen.cpp b/offload/tools/offload-tblgen/MiscGen.cpp
index b90e5cfdec8b..17378331242a 100644
--- a/offload/tools/offload-tblgen/MiscGen.cpp
+++ b/offload/tools/offload-tblgen/MiscGen.cpp
@@ -107,10 +107,16 @@ void EmitOffloadInfo(const RecordKeeper &Records, raw_ostream &OS) {
)";
- auto ErrorCodeEnum = EnumRec{Records.getDef("DeviceInfo")};
- uint32_t EtorVal = 0;
- for (const auto &EnumVal : ErrorCodeEnum.getValues()) {
+ auto Enum = EnumRec{Records.getDef("DeviceInfo")};
+ // Bitfields start from 1, other enums from 0
+ uint32_t EtorVal = Enum.isBitField();
+ for (const auto &EnumVal : Enum.getValues()) {
OS << formatv(TAB_1 "OFFLOAD_DEVINFO({0}, \"{1}\", {2})\n",
- EnumVal.getName(), EnumVal.getDesc(), EtorVal++);
+ EnumVal.getName(), EnumVal.getDesc(), EtorVal);
+ if (Enum.isBitField()) {
+ EtorVal <<= 1u;
+ } else {
+ ++EtorVal;
+ }
}
}