LLVM: lib/Target/ARM/ARMAsmPrinter.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H

10#define LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H

11

14

15namespace llvm {

16

23

24namespace ARM {

29}

30

32public:

33 static char ID;

34

35private:

36

37

39

40

41

43

44

45

46 bool InConstantPool;

47

48

49

51

52

53

54

55 int OptimizationGoals;

56

57

58

59

60

62

63

64

66

67public:

69 std::unique_ptr Streamer);

70

72 return "ARM Assembly Printer";

73 }

74

76

78

80 bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,

81 const char *ExtraCode, raw_ostream &O) override;

82 bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNum,

83 const char *ExtraCode, raw_ostream &O) override;

84

87

90 void emitJumpTableTBInst(const MachineInstr *MI, unsigned OffsetWidth);

91 void emitInstruction(const MachineInstr *MI) override;

95 getCodeViewJumpTableInfo(int JTI, const MachineInstr *BranchInstr,

96 const MCSymbol *BranchLabel) const override;

97

101 void emitFunctionBodyEnd() override;

102 void emitFunctionEntryLabel() override;

103 void emitStartOfAsmFile(Module &M) override;

104 void emitEndOfAsmFile(Module &M) override;

106 void emitGlobalVariable(const GlobalVariable *GV) override;

107

108 MCSymbol *GetCPISymbol(unsigned CPID) const override;

109

110

112

113

114

115

116public:

117

118 void LowerPATCHABLE_FUNCTION_ENTER(const MachineInstr &MI);

119 void LowerPATCHABLE_FUNCTION_EXIT(const MachineInstr &MI);

120 void LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI);

121

122

124

125private:

126 void EmitSled(const MachineInstr &MI, SledKind Kind);

127

128

129 void EmitKCFI_CHECK_ARM32(Register AddrReg, int64_t Type,

131 void EmitKCFI_CHECK_Thumb2(Register AddrReg, int64_t Type,

133 void EmitKCFI_CHECK_Thumb1(Register AddrReg, int64_t Type,

135

136

137 void emitAttributes();

138

139 void EmitUnwindingInstruction(const MachineInstr *MI);

140

141

143

144public:

146

147 const Triple &TT = TM.getTargetTriple();

148 if (!TT.isOSBinFormatMachO())

149 return 0;

150 bool isThumb = TT.isThumb() ||

154 }

155

156private:

158 MCSymbol *GetARMJTIPICJumpTableLabel(unsigned uid) const;

159

160 MCSymbol *GetARMGVSymbol(const GlobalValue *GV, unsigned char TargetFlags);

161

162public:

163

164

166};

167

168}

169

170#endif

static bool isThumb(const MCSubtargetInfo &STI)

MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL

#define LLVM_LIBRARY_VISIBILITY

static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol, HexagonAsmPrinter &Printer, bool MustExtend)

const GCNTargetMachine & getTM(const GCNSubtarget *STI)

static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)

void emitConstantPool() override

Print to the current output stream assembly representations of the constants in the constant pool MCP...

Definition ARMAsmPrinter.h:98

unsigned getISAEncoding() override

Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.

Definition ARMAsmPrinter.h:145

ARMAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer)

StringRef getPassName() const override

getPassName - Return a nice clean name for a pass.

Definition ARMAsmPrinter.h:71

static char ID

Definition ARMAsmPrinter.h:33

ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...

TargetMachine & TM

Target machine description.

AsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer, char &ID=AsmPrinter::ID)

This is an important base class in LLVM.

A parsed version of the target data layout string in and methods for querying it.

Instances of this class represent a single low-level machine instruction.

Instances of this class represent operands of the MCInst class.

Generic base class for all target subtargets.

MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...

Abstract base class for all machine specific constantpool value subclasses.

The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...

Representation of each machine instruction.

MachineOperand class - Representation of each machine instruction operand.

A Module instance is used to store all the information related to an LLVM module.

Wrapper class representing virtual and physical registers.

SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

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

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

Triple - Helper class for working with autoconf configuration names.

The instances of the Type class are immutable: once they are created, they are never changed.

This class implements an extremely fast bulk output stream that can only output to a stream.

Define some predicates that are used for node matching.

DW_ISA

Definition ARMAsmPrinter.h:25

@ DW_ISA_ARM_arm

Definition ARMAsmPrinter.h:27

@ DW_ISA_ARM_thumb

Definition ARMAsmPrinter.h:26

This is an optimization pass for GlobalISel generic memory operations.