18#ifndef LLVM_BINARYFORMAT_GOFF_H
19#define LLVM_BINARYFORMAT_GOFF_H
207 return (OldValue & ~Mask) |
Value;
215 template <
typename T>
217 Val = bits(BitIndex,
Length,
static_cast<uint8_t>(NewValue), Val);
220 template <
typename T>
222 return static_cast<T>((Val >> (8 - BitIndex -
Length)) &
226 constexpr operator uint8_t()
const {
return Val; }
235#define GOFF_SYMBOL_FLAG(NAME, TYPE, BITINDEX, LENGTH) \
236 void set##NAME(TYPE Val) { SymFlags.set<TYPE>(BITINDEX, LENGTH, Val); } \
237 TYPE get##NAME() const { return SymFlags.get<TYPE>(BITINDEX, LENGTH); }
245#undef GOFF_SYMBOL_FLAG
256#define GOFF_BEHAVIORAL_ATTRIBUTE(NAME, TYPE, ATTRIDX, BITINDEX, LENGTH) \
257 void set##NAME(TYPE Val) { Attr[ATTRIDX].set<TYPE>(BITINDEX, LENGTH, Val); } \
258 TYPE get##NAME() const { return Attr[ATTRIDX].get<TYPE>(BITINDEX, LENGTH); }
278#undef GOFF_BEHAVIORAL_ATTRIBUTE
constexpr Flags(uint8_t BitIndex, uint8_t Length, uint8_t Value)
constexpr Flags()=default
constexpr T get(uint8_t BitIndex, uint8_t Length) const
constexpr void set(uint8_t BitIndex, uint8_t Length, T NewValue)
LLVM Value Representation.
ESDDuplicateSymbolSeverity
constexpr uint8_t RecordPrefixLength
constexpr uint8_t PayloadLength
constexpr uint8_t RecordContentLength
constexpr uint16_t MaxDataLength
Maximum data length before starting a new card for RLD and TXT data.
@ RLD_RT_RLongDisplacement
@ RLD_RT_RRelativeImmediate
constexpr uint8_t PTVPrefix
Prefix byte on every record. This indicates GOFF format.
constexpr uint8_t RecordLength
Length of the parts of a physical GOFF record.
@ ESD_NS_ProgramManagementBinder
@ ESD_ST_ElementDefinition
@ ESD_ST_SectionDefinition
@ ESD_ST_ExternalReference
This is an optimization pass for GlobalISel generic memory operations.
GOFF_BEHAVIORAL_ATTRIBUTE(BindingAlgorithm, GOFF::ESDBindingAlgorithm, 2, 4, 4) GOFF_BEHAVIORAL_ATTRIBUTE(DuplicateSymbolSeverity