LLVM  7.0.0svn
Macros | Functions
X86InstComments.cpp File Reference
#include "X86InstComments.h"
#include "X86ATTInstPrinter.h"
#include "MCTargetDesc/X86BaseInfo.h"
#include "MCTargetDesc/X86MCTargetDesc.h"
#include "Utils/X86ShuffleDecode.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for X86InstComments.cpp:

Go to the source code of this file.

Macros

#define CASE_SSE_INS_COMMON(Inst, src)   case X86::Inst##src:
 
#define CASE_AVX_INS_COMMON(Inst, Suffix, src)   case X86::V##Inst##Suffix##src:
 
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)   case X86::V##Inst##Suffix##src##k:
 
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)   case X86::V##Inst##Suffix##src##kz:
 
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)
 
#define CASE_MOVDUP(Inst, src)
 
#define CASE_MASK_MOVDUP(Inst, src)
 
#define CASE_MASKZ_MOVDUP(Inst, src)
 
#define CASE_PMOVZX(Inst, src)
 
#define CASE_MASK_PMOVZX(Inst, src)
 
#define CASE_MASKZ_PMOVZX(Inst, src)
 
#define CASE_UNPCK(Inst, src)
 
#define CASE_MASK_UNPCK(Inst, src)
 
#define CASE_MASKZ_UNPCK(Inst, src)
 
#define CASE_SHUF(Inst, suf)
 
#define CASE_MASK_SHUF(Inst, src)
 
#define CASE_MASKZ_SHUF(Inst, src)
 
#define CASE_VPERMILPI(Inst, src)
 
#define CASE_MASK_VPERMILPI(Inst, src)
 
#define CASE_MASKZ_VPERMILPI(Inst, src)
 
#define CASE_VPERM(Inst, src)
 
#define CASE_MASK_VPERM(Inst, src)
 
#define CASE_MASKZ_VPERM(Inst, src)
 
#define CASE_VSHUF(Inst, src)
 
#define CASE_MASK_VSHUF(Inst, src)
 
#define CASE_MASKZ_VSHUF(Inst, src)
 
#define CASE_AVX512_FMA(Inst, suf)
 
#define CASE_FMA(Inst, suf)
 
#define CASE_FMA_PACKED_REG(Inst)
 
#define CASE_FMA_PACKED_MEM(Inst)
 
#define CASE_FMA_SCALAR_REG(Inst)
 
#define CASE_FMA_SCALAR_MEM(Inst)
 

Functions

static unsigned getVectorRegSize (unsigned RegNo)
 
static unsigned getRegOperandNumElts (const MCInst *MI, unsigned ScalarSize, unsigned OperandIndex)
 
static const chargetRegName (unsigned Reg)
 
static void printMasking (raw_ostream &OS, const MCInst *MI, const MCInstrInfo &MCII)
 Wraps the destination register name with AVX512 mask/maskz filtering. More...
 
static bool printFMA3Comments (const MCInst *MI, raw_ostream &OS)
 

Macro Definition Documentation

◆ CASE_AVX512_FMA

#define CASE_AVX512_FMA (   Inst,
  suf 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z256, suf) \
CASE_AVX512_INS_COMMON(Inst, Z128, suf)
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 163 of file X86InstComments.cpp.

◆ CASE_AVX512_INS_COMMON

#define CASE_AVX512_INS_COMMON (   Inst,
  Suffix,
  src 
)
Value:
CASE_AVX_INS_COMMON(Inst, Suffix, src) \
CASE_MASK_INS_COMMON(Inst, Suffix, src) \
CASE_MASKZ_INS_COMMON(Inst, Suffix, src)
#define CASE_AVX_INS_COMMON(Inst, Suffix, src)

Definition at line 38 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_AVX_INS_COMMON

#define CASE_AVX_INS_COMMON (   Inst,
  Suffix,
  src 
)    case X86::V##Inst##Suffix##src:

Definition at line 29 of file X86InstComments.cpp.

◆ CASE_FMA

#define CASE_FMA (   Inst,
  suf 
)
Value:
CASE_AVX512_FMA(Inst, suf) \
CASE_AVX_INS_COMMON(Inst, , suf) \
CASE_AVX_INS_COMMON(Inst, Y, suf)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_FMA(Inst, suf)

Definition at line 168 of file X86InstComments.cpp.

◆ CASE_FMA_PACKED_MEM

#define CASE_FMA_PACKED_MEM (   Inst)
Value:
CASE_FMA(Inst##PD, m) \
CASE_FMA(Inst##PS, m) \
CASE_AVX512_FMA(Inst##PD, mb) \
CASE_AVX512_FMA(Inst##PS, mb)
#define CASE_FMA(Inst, suf)

Definition at line 177 of file X86InstComments.cpp.

Referenced by printFMA3Comments().

◆ CASE_FMA_PACKED_REG

#define CASE_FMA_PACKED_REG (   Inst)
Value:
CASE_FMA(Inst##PD, r) \
CASE_FMA(Inst##PS, r)
#define CASE_FMA(Inst, suf)

Definition at line 173 of file X86InstComments.cpp.

Referenced by printFMA3Comments().

◆ CASE_FMA_SCALAR_MEM

#define CASE_FMA_SCALAR_MEM (   Inst)
Value:
CASE_AVX_INS_COMMON(Inst##SD, , m) \
CASE_AVX_INS_COMMON(Inst##SS, , m) \
CASE_AVX_INS_COMMON(Inst##SD, , m_Int) \
CASE_AVX_INS_COMMON(Inst##SS, , m_Int) \
CASE_AVX_INS_COMMON(Inst##SD, Z, m) \
CASE_AVX_INS_COMMON(Inst##SS, Z, m) \
CASE_AVX512_INS_COMMON(Inst##SD, Z, m_Int) \
CASE_AVX512_INS_COMMON(Inst##SS, Z, m_Int)
#define CASE_AVX_INS_COMMON(Inst, Suffix, src)

Definition at line 193 of file X86InstComments.cpp.

Referenced by printFMA3Comments().

◆ CASE_FMA_SCALAR_REG

#define CASE_FMA_SCALAR_REG (   Inst)
Value:
CASE_AVX_INS_COMMON(Inst##SD, , r) \
CASE_AVX_INS_COMMON(Inst##SS, , r) \
CASE_AVX_INS_COMMON(Inst##SD, , r_Int) \
CASE_AVX_INS_COMMON(Inst##SS, , r_Int) \
CASE_AVX_INS_COMMON(Inst##SD, Z, r) \
CASE_AVX_INS_COMMON(Inst##SS, Z, r) \
CASE_AVX512_INS_COMMON(Inst##SD, Z, r_Int) \
CASE_AVX512_INS_COMMON(Inst##SS, Z, r_Int)
#define CASE_AVX_INS_COMMON(Inst, Suffix, src)

Definition at line 183 of file X86InstComments.cpp.

Referenced by printFMA3Comments().

◆ CASE_MASK_INS_COMMON

#define CASE_MASK_INS_COMMON (   Inst,
  Suffix,
  src 
)    case X86::V##Inst##Suffix##src##k:

Definition at line 32 of file X86InstComments.cpp.

◆ CASE_MASK_MOVDUP

#define CASE_MASK_MOVDUP (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(Inst, Z, r##src) \
CASE_MASK_INS_COMMON(Inst, Z256, r##src) \
CASE_MASK_INS_COMMON(Inst, Z128, r##src)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 51 of file X86InstComments.cpp.

◆ CASE_MASK_PMOVZX

#define CASE_MASK_PMOVZX (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(Inst, Z, r##src) \
CASE_MASK_INS_COMMON(Inst, Z256, r##src) \
CASE_MASK_INS_COMMON(Inst, Z128, r##src)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 69 of file X86InstComments.cpp.

◆ CASE_MASK_SHUF

#define CASE_MASK_SHUF (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(Inst, Z, r##src##i) \
CASE_MASK_INS_COMMON(Inst, Z256, r##src##i) \
CASE_MASK_INS_COMMON(Inst, Z128, r##src##i)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 105 of file X86InstComments.cpp.

◆ CASE_MASK_UNPCK

#define CASE_MASK_UNPCK (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(Inst, Z, r##src) \
CASE_MASK_INS_COMMON(Inst, Z256, r##src) \
CASE_MASK_INS_COMMON(Inst, Z128, r##src)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 87 of file X86InstComments.cpp.

◆ CASE_MASK_VPERM

#define CASE_MASK_VPERM (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(Inst, Z, src##i) \
CASE_MASK_INS_COMMON(Inst, Z256, src##i)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 137 of file X86InstComments.cpp.

◆ CASE_MASK_VPERMILPI

#define CASE_MASK_VPERMILPI (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(Inst, Z, src##i) \
CASE_MASK_INS_COMMON(Inst, Z256, src##i) \
CASE_MASK_INS_COMMON(Inst, Z128, src##i)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 122 of file X86InstComments.cpp.

◆ CASE_MASK_VSHUF

#define CASE_MASK_VSHUF (   Inst,
  src 
)
Value:
CASE_MASK_INS_COMMON(SHUFF##Inst, Z, r##src##i) \
CASE_MASK_INS_COMMON(SHUFI##Inst, Z, r##src##i) \
CASE_MASK_INS_COMMON(SHUFF##Inst, Z256, r##src##i) \
CASE_MASK_INS_COMMON(SHUFI##Inst, Z256, r##src##i)
#define CASE_MASK_INS_COMMON(Inst, Suffix, src)

Definition at line 151 of file X86InstComments.cpp.

◆ CASE_MASKZ_INS_COMMON

#define CASE_MASKZ_INS_COMMON (   Inst,
  Suffix,
  src 
)    case X86::V##Inst##Suffix##src##kz:

Definition at line 35 of file X86InstComments.cpp.

◆ CASE_MASKZ_MOVDUP

#define CASE_MASKZ_MOVDUP (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(Inst, Z, r##src) \
CASE_MASKZ_INS_COMMON(Inst, Z256, r##src) \
CASE_MASKZ_INS_COMMON(Inst, Z128, r##src)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 56 of file X86InstComments.cpp.

◆ CASE_MASKZ_PMOVZX

#define CASE_MASKZ_PMOVZX (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(Inst, Z, r##src) \
CASE_MASKZ_INS_COMMON(Inst, Z256, r##src) \
CASE_MASKZ_INS_COMMON(Inst, Z128, r##src)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 74 of file X86InstComments.cpp.

◆ CASE_MASKZ_SHUF

#define CASE_MASKZ_SHUF (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(Inst, Z, r##src##i) \
CASE_MASKZ_INS_COMMON(Inst, Z256, r##src##i) \
CASE_MASKZ_INS_COMMON(Inst, Z128, r##src##i)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 110 of file X86InstComments.cpp.

◆ CASE_MASKZ_UNPCK

#define CASE_MASKZ_UNPCK (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(Inst, Z, r##src) \
CASE_MASKZ_INS_COMMON(Inst, Z256, r##src) \
CASE_MASKZ_INS_COMMON(Inst, Z128, r##src)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 92 of file X86InstComments.cpp.

◆ CASE_MASKZ_VPERM

#define CASE_MASKZ_VPERM (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(Inst, Z, src##i) \
CASE_MASKZ_INS_COMMON(Inst, Z256, src##i)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 141 of file X86InstComments.cpp.

◆ CASE_MASKZ_VPERMILPI

#define CASE_MASKZ_VPERMILPI (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(Inst, Z, src##i) \
CASE_MASKZ_INS_COMMON(Inst, Z256, src##i) \
CASE_MASKZ_INS_COMMON(Inst, Z128, src##i)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 127 of file X86InstComments.cpp.

◆ CASE_MASKZ_VSHUF

#define CASE_MASKZ_VSHUF (   Inst,
  src 
)
Value:
CASE_MASKZ_INS_COMMON(SHUFF##Inst, Z, r##src##i) \
CASE_MASKZ_INS_COMMON(SHUFI##Inst, Z, r##src##i) \
CASE_MASKZ_INS_COMMON(SHUFF##Inst, Z256, r##src##i) \
CASE_MASKZ_INS_COMMON(SHUFI##Inst, Z256, r##src##i)
#define CASE_MASKZ_INS_COMMON(Inst, Suffix, src)

Definition at line 157 of file X86InstComments.cpp.

◆ CASE_MOVDUP

#define CASE_MOVDUP (   Inst,
  src 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z, r##src) \
CASE_AVX512_INS_COMMON(Inst, Z256, r##src) \
CASE_AVX512_INS_COMMON(Inst, Z128, r##src) \
CASE_AVX_INS_COMMON(Inst, , r##src) \
CASE_AVX_INS_COMMON(Inst, Y, r##src) \
CASE_SSE_INS_COMMON(Inst, r##src)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 43 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_PMOVZX

#define CASE_PMOVZX (   Inst,
  src 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z, r##src) \
CASE_AVX512_INS_COMMON(Inst, Z256, r##src) \
CASE_AVX512_INS_COMMON(Inst, Z128, r##src) \
CASE_AVX_INS_COMMON(Inst, , r##src) \
CASE_AVX_INS_COMMON(Inst, Y, r##src) \
CASE_SSE_INS_COMMON(Inst, r##src)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 61 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_SHUF

#define CASE_SHUF (   Inst,
  suf 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z256, suf) \
CASE_AVX512_INS_COMMON(Inst, Z128, suf) \
CASE_AVX_INS_COMMON(Inst, , suf) \
CASE_AVX_INS_COMMON(Inst, Y, suf) \
CASE_SSE_INS_COMMON(Inst, suf)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 97 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_SSE_INS_COMMON

#define CASE_SSE_INS_COMMON (   Inst,
  src 
)    case X86::Inst##src:

Definition at line 26 of file X86InstComments.cpp.

◆ CASE_UNPCK

#define CASE_UNPCK (   Inst,
  src 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z, r##src) \
CASE_AVX512_INS_COMMON(Inst, Z256, r##src) \
CASE_AVX512_INS_COMMON(Inst, Z128, r##src) \
CASE_AVX_INS_COMMON(Inst, , r##src) \
CASE_AVX_INS_COMMON(Inst, Y, r##src) \
CASE_SSE_INS_COMMON(Inst, r##src)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 79 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_VPERM

#define CASE_VPERM (   Inst,
  src 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z, src##i) \
CASE_AVX512_INS_COMMON(Inst, Z256, src##i) \
CASE_AVX_INS_COMMON(Inst, Y, src##i)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 132 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_VPERMILPI

#define CASE_VPERMILPI (   Inst,
  src 
)
Value:
CASE_AVX512_INS_COMMON(Inst, Z, src##i) \
CASE_AVX512_INS_COMMON(Inst, Z256, src##i) \
CASE_AVX512_INS_COMMON(Inst, Z128, src##i) \
CASE_AVX_INS_COMMON(Inst, , src##i) \
CASE_AVX_INS_COMMON(Inst, Y, src##i)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector")
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 115 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

◆ CASE_VSHUF

#define CASE_VSHUF (   Inst,
  src 
)
Value:
CASE_AVX512_INS_COMMON(SHUFF##Inst, Z, r##src##i) \
CASE_AVX512_INS_COMMON(SHUFI##Inst, Z, r##src##i) \
CASE_AVX512_INS_COMMON(SHUFF##Inst, Z256, r##src##i) \
CASE_AVX512_INS_COMMON(SHUFI##Inst, Z256, r##src##i)
#define CASE_AVX512_INS_COMMON(Inst, Suffix, src)

Definition at line 145 of file X86InstComments.cpp.

Referenced by llvm::EmitAnyX86InstComments().

Function Documentation

◆ getRegName()

static const char* getRegName ( unsigned  Reg)
static

◆ getRegOperandNumElts()

static unsigned getRegOperandNumElts ( const MCInst MI,
unsigned  ScalarSize,
unsigned  OperandIndex 
)
static

◆ getVectorRegSize()

static unsigned getVectorRegSize ( unsigned  RegNo)
static

Definition at line 203 of file X86InstComments.cpp.

References llvm_unreachable.

Referenced by getRegOperandNumElts().

◆ printFMA3Comments()

static bool printFMA3Comments ( const MCInst MI,
raw_ostream OS 
)
static

◆ printMasking()

static void printMasking ( raw_ostream OS,
const MCInst MI,
const MCInstrInfo MCII 
)
static