LLVM 19.0.0git
Enumerations
llvm::PPCII Namespace Reference

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

Enumerations

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) , SExt32To64 = 0x1 << (NewDef_Shift + 2) ,
  ZExt32To64 = 0x1 << (NewDef_Shift + 3)
}
 
enum  TOF {
  MO_NO_FLAG , MO_PLT , MO_PIC_FLAG , MO_PCREL_FLAG ,
  MO_GOT_FLAG , MO_PCREL_OPT_FLAG , MO_TLSGD_FLAG , MO_TPREL_FLAG ,
  MO_TLSLD_FLAG , MO_TLSGDM_FLAG , MO_GOT_TLSGD_PCREL_FLAG , MO_GOT_TLSLD_PCREL_FLAG ,
  MO_GOT_TPREL_PCREL_FLAG , MO_LO , MO_HA , MO_TPREL_LO ,
  MO_TPREL_HA , MO_DTPREL_LO , MO_TLSLD_LO , MO_TOC_LO ,
  MO_TLS , MO_PIC_HA_FLAG , MO_PIC_LO_FLAG , MO_TPREL_PCREL_FLAG ,
  MO_TLS_PCREL_FLAG , MO_GOT_PCREL_FLAG
}
 Target Operand Flag enum. More...
 

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 128 of file PPCMCTargetDesc.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.

SExt32To64 

This instruction produced a sign extended result.

ZExt32To64 

This instruction produced a zero extended result.

Definition at line 163 of file PPCMCTargetDesc.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 150 of file PPCMCTargetDesc.h.

◆ TOF

Target Operand Flag enum.

Enumerator
MO_NO_FLAG 
MO_PLT 

On PPC, the 12 bits are not enough for all target operand flags.

Treat all PPC target flags as direct flags. To define new flag that is combination of other flags, add new enum entry instead of combining existing flags. See example MO_GOT_TPREL_PCREL_FLAG. 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_PCREL_OPT_FLAG - If this bit is set the operand is part of a PC Relative linker optimization.

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 the thread pointer and the symbol can be used for the TLS Initial Exec and Local Exec models.

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_TLSGD_PCREL_FLAG = MO_PCREL_FLAG | MO_GOT_FLAG | MO_TLSGD_FLAG,

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_TLSLD_PCREL_FLAG = MO_PCREL_FLAG | MO_GOT_FLAG | MO_TLSLD_FLAG,

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_GOT_TPREL_PCREL_FLAG = MO_GOT_FLAG | MO_TPREL_FLAG | MO_PCREL_FLAG,

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 

Symbol for VK_PPC_TLS fixup attached to an ADD instruction.

MO_PIC_HA_FLAG 

MO_PIC_HA_FLAG = MO_PIC_FLAG | MO_HA.

MO_PIC_LO_FLAG 

MO_PIC_LO_FLAG = MO_PIC_FLAG | MO_LO.

MO_TPREL_PCREL_FLAG 

MO_TPREL_PCREL_FLAG = MO_PCREL_FLAG | MO_TPREL_FLAG.

MO_TLS_PCREL_FLAG 

MO_TPREL_PCREL_FLAG = MO_PCREL_FLAG | MO_TLS.

MO_GOT_PCREL_FLAG 

MO_GOT_PCREL_FLAG = MO_PCREL_FLAG | MO_GOT_FLAG.

Definition at line 100 of file PPC.h.