LLVM  6.0.0svn
Macros | Variables
X86InstrFMA3Info.cpp File Reference
#include "X86InstrFMA3Info.h"
#include "X86InstrInfo.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/Threading.h"
#include <cassert>
#include <cstdint>
Include dependency graph for X86InstrFMA3Info.cpp:

Go to the source code of this file.

Macros

#define FMA3RM(R132, R213, R231, M132, M213, M231)
 
#define FMA3RMA(R132, R213, R231, M132, M213, M231, Attrs)
 
#define FMA3R(R132, R213, R231)
 
#define FMA3RA(R132, R213, R231, Attrs)
 
#define FMA3M(M132, M213, M231)
 
#define FMA3MA(M132, M213, M231, Attrs)
 
#define FMA3_AVX2_VECTOR_GROUP(Name)
 
#define FMA3_AVX2_SCALAR_GROUP(Name)
 
#define FMA3_AVX2_FULL_GROUP(Name)
 
#define FMA3_AVX512_VECTOR_GROUP(Name)
 
#define FMA3_AVX512_SCALAR_GROUP(Name)
 
#define FMA3_AVX512_FULL_GROUP(Name)
 

Variables

static llvm::once_flag InitGroupsOnceFlag
 This flag is used in the method llvm::call_once() used below to make the initialization of the map 'OpcodeToGroup' thread safe. More...
 
static ManagedStatic< X86InstrFMA3InfoX86InstrFMA3InfoObj
 

Macro Definition Documentation

◆ FMA3_AVX2_FULL_GROUP

#define FMA3_AVX2_FULL_GROUP (   Name)
Value:
FMA3_AVX2_SCALAR_GROUP(Name);
#define FMA3_AVX2_VECTOR_GROUP(Name)

Definition at line 125 of file X86InstrFMA3Info.cpp.

◆ FMA3_AVX2_SCALAR_GROUP

#define FMA3_AVX2_SCALAR_GROUP (   Name)
Value:
FMA3RM(Name##132SSr, Name##213SSr, Name##231SSr, \
Name##132SSm, Name##213SSm, Name##231SSm); \
FMA3RM(Name##132SDr, Name##213SDr, Name##231SDr, \
Name##132SDm, Name##213SDm, Name##231SDm); \
FMA3RMA(Name##132SSr_Int, Name##213SSr_Int, Name##231SSr_Int, \
Name##132SSm_Int, Name##213SSm_Int, Name##231SSm_Int, \
X86InstrFMA3Group::X86FMA3Intrinsic); \
FMA3RMA(Name##132SDr_Int, Name##213SDr_Int, Name##231SDr_Int, \
Name##132SDm_Int, Name##213SDm_Int, Name##231SDm_Int, \
X86InstrFMA3Group::X86FMA3Intrinsic);
#define FMA3RM(R132, R213, R231, M132, M213, M231)

Definition at line 113 of file X86InstrFMA3Info.cpp.

◆ FMA3_AVX2_VECTOR_GROUP

#define FMA3_AVX2_VECTOR_GROUP (   Name)
Value:
FMA3RM(Name##132PSr, Name##213PSr, Name##231PSr, \
Name##132PSm, Name##213PSm, Name##231PSm); \
FMA3RM(Name##132PDr, Name##213PDr, Name##231PDr, \
Name##132PDm, Name##213PDm, Name##231PDm); \
FMA3RM(Name##132PSYr, Name##213PSYr, Name##231PSYr, \
Name##132PSYm, Name##213PSYm, Name##231PSYm); \
FMA3RM(Name##132PDYr, Name##213PDYr, Name##231PDYr, \
Name##132PDYm, Name##213PDYm, Name##231PDYm);
#define FMA3RM(R132, R213, R231, M132, M213, M231)

Definition at line 103 of file X86InstrFMA3Info.cpp.

◆ FMA3_AVX512_FULL_GROUP

#define FMA3_AVX512_FULL_GROUP (   Name)
Value:
FMA3_AVX512_SCALAR_GROUP(Name);
#define FMA3_AVX512_VECTOR_GROUP(Name)

Definition at line 263 of file X86InstrFMA3Info.cpp.

◆ FMA3_AVX512_SCALAR_GROUP

#define FMA3_AVX512_SCALAR_GROUP (   Name)

Definition at line 219 of file X86InstrFMA3Info.cpp.

◆ FMA3_AVX512_VECTOR_GROUP

#define FMA3_AVX512_VECTOR_GROUP (   Name)

Definition at line 129 of file X86InstrFMA3Info.cpp.

◆ FMA3M

#define FMA3M (   M132,
  M213,
  M231 
)
Value:
static const uint16_t Mem##M132[3] = {X86::M132, X86::M213, X86::M231}; \
initMGroup(Mem##M132);

Definition at line 95 of file X86InstrFMA3Info.cpp.

◆ FMA3MA

#define FMA3MA (   M132,
  M213,
  M231,
  Attrs 
)
Value:
static const uint16_t Mem##M132[3] = {X86::M132, X86::M213, X86::M231}; \
initMGroup(Mem##M132, (Attrs));
constexpr char Attrs[]
Key for Kernel::Metadata::mAttrs.

Definition at line 99 of file X86InstrFMA3Info.cpp.

◆ FMA3R

#define FMA3R (   R132,
  R213,
  R231 
)
Value:
static const uint16_t Reg##R132[3] = {X86::R132, X86::R213, X86::R231}; \
initRGroup(Reg##R132);
Reg
All possible values of the reg field in the ModR/M byte.

Definition at line 87 of file X86InstrFMA3Info.cpp.

◆ FMA3RA

#define FMA3RA (   R132,
  R213,
  R231,
  Attrs 
)
Value:
static const uint16_t Reg##R132[3] = {X86::R132, X86::R213, X86::R231}; \
initRGroup(Reg##R132, (Attrs));
Reg
All possible values of the reg field in the ModR/M byte.
constexpr char Attrs[]
Key for Kernel::Metadata::mAttrs.

Definition at line 91 of file X86InstrFMA3Info.cpp.

◆ FMA3RM

#define FMA3RM (   R132,
  R213,
  R231,
  M132,
  M213,
  M231 
)
Value:
static const uint16_t Reg##R132[3] = {X86::R132, X86::R213, X86::R231}; \
static const uint16_t Mem##R132[3] = {X86::M132, X86::M213, X86::M231}; \
initRMGroup(Reg##R132, Mem##R132);
Reg
All possible values of the reg field in the ModR/M byte.

Definition at line 77 of file X86InstrFMA3Info.cpp.

◆ FMA3RMA

#define FMA3RMA (   R132,
  R213,
  R231,
  M132,
  M213,
  M231,
  Attrs 
)
Value:
static const uint16_t Reg##R132[3] = {X86::R132, X86::R213, X86::R231}; \
static const uint16_t Mem##R132[3] = {X86::M132, X86::M213, X86::M231}; \
initRMGroup(Reg##R132, Mem##R132, (Attrs));
Reg
All possible values of the reg field in the ModR/M byte.
constexpr char Attrs[]
Key for Kernel::Metadata::mAttrs.

Definition at line 82 of file X86InstrFMA3Info.cpp.

Variable Documentation

◆ InitGroupsOnceFlag

llvm::once_flag InitGroupsOnceFlag
static

This flag is used in the method llvm::call_once() used below to make the initialization of the map 'OpcodeToGroup' thread safe.

Definition at line 26 of file X86InstrFMA3Info.cpp.

◆ X86InstrFMA3InfoObj

ManagedStatic<X86InstrFMA3Info> X86InstrFMA3InfoObj
static

Definition at line 28 of file X86InstrFMA3Info.cpp.

Referenced by llvm::X86InstrFMA3Info::getX86InstrFMA3Info().