LLVM 18.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 = 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...
 

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 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 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_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 100 of file PPC.h.