27 switch (
unsigned(Kind)) {
32 return (int64_t)Value / 2;
42 SystemZMCAsmBackend(uint8_t osABI)
51 virtual void applyFixup(
const MCFixup &Fixup,
char *Data,
unsigned DataSize,
56 virtual bool fixupNeedsRelaxation(
const MCFixup &Fixup,
63 virtual void relaxInstruction(
const MCInst &Inst,
67 virtual bool writeNopData(uint64_t Count,
97 void SystemZMCAsmBackend::applyFixup(
const MCFixup &Fixup,
char *Data,
98 unsigned DataSize, uint64_t
Value)
const {
101 unsigned Size = (getFixupKindInfo(Kind).TargetSize + 7) / 8;
103 assert(Offset + Size <= DataSize &&
"Invalid fixup offset!");
107 unsigned ShiftValue = (Size * 8) - 8;
108 for (
unsigned I = 0;
I != Size; ++
I) {
109 Data[Offset +
I] |= uint8_t(Value >> ShiftValue);
114 bool SystemZMCAsmBackend::writeNopData(uint64_t Count,
116 for (uint64_t
I = 0;
I != Count; ++
I)
125 return new SystemZMCAsmBackend(OSABI);
MCAsmBackend * createSystemZMCAsmBackend(const Target &T, const MCRegisterInfo &MRI, StringRef TT, StringRef CPU)
#define llvm_unreachable(msg)
MCObjectWriter * createSystemZObjectWriter(raw_ostream &OS, uint8_t OSABI)
uint32_t getOffset() const
void Write8(uint8_t Value)
MCFixupKind
MCFixupKind - Extensible enumeration to represent the type of a fixup.
MCFixupKind getKind() const
static uint64_t extractBitsForFixup(MCFixupKind Kind, uint64_t Value)
MCFixupKindInfo - Target independent information on a fixup kind.
LLVM Value Representation.
MCAsmBackend - Generic interface to target specific assembler backends.
const MCRegisterInfo & MRI
virtual const MCFixupKindInfo & getFixupKindInfo(MCFixupKind Kind) const
getFixupKindInfo - Get information on a fixup kind.