LLVM: lib/Target/ARC/ARCAsmPrinter.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

27

28using namespace llvm;

29

30#define DEBUG_TYPE "asm-printer"

31

32namespace {

33

34class ARCAsmPrinter : public AsmPrinter {

36

37public:

38 static char ID;

39

41 std::unique_ptr Streamer)

43 MCInstLowering(&OutContext, *this) {}

44

45 StringRef getPassName() const override { return "ARC Assembly Printer"; }

46 void emitInstruction(const MachineInstr *MI) override;

47

49};

50

51}

52

53void ARCAsmPrinter::emitInstruction(const MachineInstr *MI) {

54 ARC_MC::verifyInstructionPredicates(MI->getOpcode(),

55 getSubtargetInfo().getFeatureBits());

56

57 SmallString<128> Str;

58 raw_svector_ostream O(Str);

59

60 switch (MI->getOpcode()) {

61 case ARC::DBG_VALUE:

63 break;

64 }

65

66 MCInst TmpInst;

67 MCInstLowering.Lower(MI, TmpInst);

68 EmitToStreamer(*OutStreamer, TmpInst);

69}

70

71bool ARCAsmPrinter::runOnMachineFunction(MachineFunction &MF) {

72

75}

76

77char ARCAsmPrinter::ID = 0;

78

79INITIALIZE_PASS(ARCAsmPrinter, "arc-asm-printer", "ARC Assmebly Printer", false,

80 false)

81

82

85}

This file contains the declaration of the ARCInstPrinter class, which is used to print ARC MCInst to ...

#define LLVM_EXTERNAL_VISIBILITY

#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)

static TableGen::Emitter::OptClass< SkeletonEmitter > X("gen-skeleton-class", "Generate example skeleton class")

This class is used to lower an MachineInstr into an MCInst.

void Lower(const MachineInstr *MI, MCInst &OutMI) const

This class is intended to be used as a driving class for all asm writers.

bool runOnMachineFunction(MachineFunction &MF) override

Emit the specified function out to the OutStreamer.

void ensureAlignment(Align A)

ensureAlignment - Make sure the function is at least A bytes aligned.

Representation of each machine instruction.

StringRef - Represent a constant reference to a string, i.e.

Primary interface to the complete machine description for the target machine.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

constexpr char Align[]

Key for Kernel::Arg::Metadata::mAlign.

unsigned ID

LLVM IR allows to use arbitrary numbers as calling convention identifiers.

This is an optimization pass for GlobalISel generic memory operations.

Target & getTheARCTarget()

RegisterAsmPrinter - Helper template for registering a target specific assembly printer,...