LLVM 19.0.0git
Enumerations
llvm::AArch64II Namespace Reference

Enumerations

enum  TOF {
  MO_NO_FLAG , MO_FRAGMENT = 0x7 , MO_PAGE = 1 , MO_PAGEOFF = 2 ,
  MO_G3 = 3 , MO_G2 = 4 , MO_G1 = 5 , MO_G0 = 6 ,
  MO_HI12 = 7 , MO_COFFSTUB = 0x8 , MO_GOT = 0x10 , MO_NC = 0x20 ,
  MO_TLS = 0x40 , MO_DLLIMPORT = 0x80 , MO_S = 0x100 , MO_PREL = 0x200 ,
  MO_TAGGED = 0x400 , MO_ARM64EC_CALLMANGLE = 0x800
}
 Target Operand Flag enum. More...
 

Enumeration Type Documentation

◆ TOF

Target Operand Flag enum.

Enumerator
MO_NO_FLAG 
MO_FRAGMENT 
MO_PAGE 

MO_PAGE - A symbol operand with this flag represents the pc-relative offset of the 4K page containing the symbol.

This is used with the ADRP instruction.

MO_PAGEOFF 

MO_PAGEOFF - A symbol operand with this flag represents the offset of that symbol within a 4K page.

This offset is added to the page address to produce the complete address.

MO_G3 

MO_G3 - A symbol operand with this flag (granule 3) represents the high 16-bits of a 64-bit address, used in a MOVZ or MOVK instruction.

MO_G2 

MO_G2 - A symbol operand with this flag (granule 2) represents the bits 32-47 of a 64-bit address, used in a MOVZ or MOVK instruction.

MO_G1 

MO_G1 - A symbol operand with this flag (granule 1) represents the bits 16-31 of a 64-bit address, used in a MOVZ or MOVK instruction.

MO_G0 

MO_G0 - A symbol operand with this flag (granule 0) represents the bits 0-15 of a 64-bit address, used in a MOVZ or MOVK instruction.

MO_HI12 

MO_HI12 - This flag indicates that a symbol operand represents the bits 13-24 of a 64-bit address, used in a arithmetic immediate-shifted-left- by-12-bits instruction.

MO_COFFSTUB 

MO_COFFSTUB - On a symbol operand "FOO", this indicates that the reference is actually to the ".refptr.FOO" symbol.

This is used for stub symbols on windows.

MO_GOT 

MO_GOT - This flag indicates that a symbol operand represents the address of the GOT entry for the symbol, rather than the address of the symbol itself.

MO_NC 

MO_NC - Indicates whether the linker is expected to check the symbol reference for overflow.

For example in an ADRP/ADD pair of relocations the ADRP usually does check, but not the ADD.

MO_TLS 

MO_TLS - Indicates that the operand being accessed is some kind of thread-local symbol.

On Darwin, only one type of thread-local access exists (pre linker-relaxation), but on ELF the TLSModel used for the referee will affect interpretation.

MO_DLLIMPORT 

MO_DLLIMPORT - On a symbol operand, this represents that the reference to the symbol is for an import stub.

This is used for DLL import storage class indication on Windows.

MO_S 

MO_S - Indicates that the bits of the symbol operand represented by MO_G0 etc are signed.

MO_PREL 

MO_PREL - Indicates that the bits of the symbol operand represented by MO_G0 etc are PC relative.

MO_TAGGED 

MO_TAGGED - With MO_PAGE, indicates that the page includes a memory tag in bits 56-63.

On a FrameIndex operand, indicates that the underlying memory is tagged with an unknown tag value (MTE); this needs to be lowered either to an SP-relative load or store instruction (which do not check tags), or to an LDG instruction to obtain the tag value.

MO_ARM64EC_CALLMANGLE 

MO_ARM64EC_CALLMANGLE - Operand refers to the Arm64EC-mangled version of a symbol, not the original.

For dllimport symbols, this means it uses "__imp_aux". For other symbols, this means it uses the mangled ("#" prefix for C) name.

Definition at line 725 of file AArch64BaseInfo.h.