LLVM  13.0.0git
Enumerations
llvm::PPCII Namespace Reference

PPCII - This namespace holds all of the PowerPC target-specific per-instruction flags. More...

Enumerations

enum  TOF {
  MO_NO_FLAG, MO_PLT = 1, MO_PIC_FLAG = 2, MO_PCREL_FLAG = 4,
  MO_GOT_FLAG = 8, MO_PCREL_OPT_FLAG = 16, MO_TLSGD_FLAG = 32, MO_TPREL_FLAG = 64,
  MO_TLSLD_FLAG = 128, MO_TLSGDM_FLAG = 256, MO_GOT_TLSGD_PCREL_FLAG = MO_PCREL_FLAG | MO_GOT_FLAG | MO_TLSGD_FLAG, MO_GOT_TLSLD_PCREL_FLAG = MO_PCREL_FLAG | MO_GOT_FLAG | MO_TLSLD_FLAG,
  MO_GOT_TPREL_PCREL_FLAG = MO_GOT_FLAG | MO_TPREL_FLAG | MO_PCREL_FLAG, MO_ACCESS_MASK = 0xf00, MO_LO = 1 << 8, MO_HA = 2 << 8,
  MO_TPREL_LO = 4 << 8, MO_TPREL_HA = 3 << 8, MO_DTPREL_LO = 5 << 8, MO_TLSLD_LO = 6 << 8,
  MO_TOC_LO = 7 << 8, MO_TLS = 8 << 8
}
 Target Operand Flag enum. More...
 
enum  {
  PPC970_First = 0x1, PPC970_Single = 0x2, PPC970_Cracked = 0x4, PPC970_Shift = 3,
  PPC970_Mask = 0x07 << PPC970_Shift
}
 
enum  PPC970_Unit {
  PPC970_Pseudo = 0 << PPC970_Shift, PPC970_FXU = 1 << PPC970_Shift, PPC970_LSU = 2 << PPC970_Shift, PPC970_FPU = 3 << PPC970_Shift,
  PPC970_CRU = 4 << PPC970_Shift, PPC970_VALU = 5 << PPC970_Shift, PPC970_VPERM = 6 << PPC970_Shift, PPC970_BRU = 7 << PPC970_Shift
}
 
enum  { NewDef_Shift = 6, XFormMemOp = 0x1 << NewDef_Shift, Prefixed = 0x1 << (NewDef_Shift+1) }
 

Detailed Description

PPCII - This namespace holds all of the PowerPC target-specific per-instruction flags.

These must match the corresponding definitions in PPC.td and PPCInstrFormats.td.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PPC970_First 

PPC970_First - This instruction starts a new dispatch group, so it will always be the first one in the group.

PPC970_Single 

PPC970_Single - This instruction starts a new dispatch group and terminates it, so it will be the sole instruction in the group.

PPC970_Cracked 

PPC970_Cracked - This instruction is cracked into two pieces, requiring two dispatch pipes to be available to issue.

PPC970_Shift 

PPC970_Mask/Shift - This is a bitmask that selects the pipeline type that an instruction is issued to.

PPC970_Mask 

Definition at line 28 of file PPCInstrInfo.h.

◆ anonymous enum

anonymous enum
Enumerator
NewDef_Shift 

Shift count to bypass PPC970 flags.

XFormMemOp 

This instruction is an X-Form memory operation.

Prefixed 

This instruction is prefixed.

Definition at line 63 of file PPCInstrInfo.h.

◆ PPC970_Unit

Enumerator
PPC970_Pseudo 

These are the various PPC970 execution unit pipelines.

Each instruction is one of these.

PPC970_FXU 
PPC970_LSU 
PPC970_FPU 
PPC970_CRU 
PPC970_VALU 
PPC970_VPERM 
PPC970_BRU 

Definition at line 50 of file PPCInstrInfo.h.

◆ TOF

Target Operand Flag enum.

Enumerator
MO_NO_FLAG 
MO_PLT 

On a symbol operand "FOO", this indicates that the reference is actually to "FOO@plt".

This is used for calls and jumps to external functions and for PIC calls on 32-bit ELF systems.

MO_PIC_FLAG 

MO_PIC_FLAG - If this bit is set, the symbol reference is relative to the function's picbase, e.g.

lo16(symbol-picbase).

MO_PCREL_FLAG 

MO_PCREL_FLAG - If this bit is set, the symbol reference is relative to the current instruction address(pc), e.g., var@pcrel.

Fixup is VK_PCREL.

MO_GOT_FLAG 

MO_GOT_FLAG - If this bit is set the symbol reference is to be computed via the GOT.

For example when combined with the MO_PCREL_FLAG it should produce the relocation @got@pcrel. Fixup is VK_PPC_GOT_PCREL.

MO_PCREL_OPT_FLAG 
MO_TLSGD_FLAG 

MO_TLSGD_FLAG - If this bit is set the symbol reference is relative to TLS General Dynamic model for Linux and the variable offset of TLS General Dynamic model for AIX.

MO_TPREL_FLAG 

MO_TPREL_FLAG - If this bit is set the symbol reference is relative to TLS Initial Exec model.

MO_TLSLD_FLAG 

MO_TLSLD_FLAG - If this bit is set the symbol reference is relative to TLS Local Dynamic model.

MO_TLSGDM_FLAG 

MO_TLSGDM_FLAG - If this bit is set the symbol reference is relative to the region handle of TLS General Dynamic model for AIX.

MO_GOT_TLSGD_PCREL_FLAG 

MO_GOT_TLSGD_PCREL_FLAG - A combintaion of flags, if these bits are set they should produce the relocation @got@tlsgd@pcrel.

Fix up is VK_PPC_GOT_TLSGD_PCREL

MO_GOT_TLSLD_PCREL_FLAG 

MO_GOT_TLSLD_PCREL_FLAG - A combintaion of flags, if these bits are set they should produce the relocation @got@tlsld@pcrel.

Fix up is VK_PPC_GOT_TLSLD_PCREL

MO_GOT_TPREL_PCREL_FLAG 

MO_GOT_TPREL_PCREL_FLAG - A combintaion of flags, if these bits are set they should produce the relocation @got@tprel@pcrel.

Fix up is VK_PPC_GOT_TPREL_PCREL

MO_ACCESS_MASK 

The next are not flags but distinct values.

MO_LO 

MO_LO, MO_HA - lo16(symbol) and ha16(symbol)

MO_HA 
MO_TPREL_LO 
MO_TPREL_HA 
MO_DTPREL_LO 

These values identify relocations on immediates folded into memory operations.

MO_TLSLD_LO 
MO_TOC_LO 
MO_TLS 

Definition at line 91 of file PPC.h.