diff options
Diffstat (limited to 'offload/tools/offload-tblgen/MiscGen.cpp')
| -rw-r--r-- | offload/tools/offload-tblgen/MiscGen.cpp | 14 |
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; + } } } |
