LLVM 20.0.0git
Macros | Functions | Variables
X86InstrFMA3Info.cpp File Reference
#include "X86InstrFMA3Info.h"
#include "X86InstrInfo.h"
#include <atomic>
#include <cassert>
#include <cstdint>

Go to the source code of this file.

Macros

#define FMA3GROUP(Name, Suf, Attrs)    { { X86::Name##132##Suf, X86::Name##213##Suf, X86::Name##231##Suf }, Attrs },
 
#define FMA3GROUP_MASKED(Name, Suf, Attrs)
 
#define FMA3GROUP_PACKED_WIDTHS_Z(Name, Suf, Attrs)
 
#define FMA3GROUP_PACKED_WIDTHS_ALL(Name, Suf, Attrs)
 
#define FMA3GROUP_PACKED_DHS(Name, Attrs)
 
#define FMA3GROUP_PACKED_BF16(Name, Attrs)    FMA3GROUP_PACKED_WIDTHS_Z(Name, NEPBF16, Attrs)
 
#define FMA3GROUP_SCALAR_WIDTHS_Z(Name, Suf, Attrs)
 
#define FMA3GROUP_SCALAR_WIDTHS_ALL(Name, Suf, Attrs)
 
#define FMA3GROUP_SCALAR(Name, Attrs)
 
#define FMA3GROUP_FULL(Name, Attrs)
 
#define FMA3GROUP_PACKED_AVX512_WIDTHS(Name, Type, Suf, Attrs)
 
#define FMA3GROUP_PACKED_AVX512_ALL(Name, Suf, Attrs)
 
#define FMA3GROUP_PACKED_AVX512_DHS(Name, Suf, Attrs)
 
#define FMA3GROUP_PACKED_AVX512_ROUND(Name, Suf, Attrs)
 
#define FMA3GROUP_SCALAR_AVX512_ROUND(Name, Suf, Attrs)
 

Functions

static void verifyTables ()
 

Variables

static const X86InstrFMA3Group Groups []
 
static const X86InstrFMA3Group BroadcastGroups []
 
static const X86InstrFMA3Group RoundGroups []
 

Macro Definition Documentation

◆ FMA3GROUP

#define FMA3GROUP (   Name,
  Suf,
  Attrs 
)     { { X86::Name##132##Suf, X86::Name##213##Suf, X86::Name##231##Suf }, Attrs },

Definition at line 22 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_FULL

#define FMA3GROUP_FULL (   Name,
  Attrs 
)
Value:
FMA3GROUP_PACKED_DHS(Name, Attrs) \
FMA3GROUP_SCALAR(Name, Attrs)
std::string Name
#define FMA3GROUP_PACKED_BF16(Name, Attrs)

Definition at line 71 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_MASKED

#define FMA3GROUP_MASKED (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP(Name, Suf, Attrs) \
FMA3GROUP(Name, Suf##k, Attrs | X86InstrFMA3Group::KMergeMasked) \
FMA3GROUP(Name, Suf##kz, Attrs | X86InstrFMA3Group::KZeroMasked)
#define FMA3GROUP(Name, Suf, Attrs)
@ KZeroMasked
This bit must be set in the 'Attributes' field of FMA group if such group of FMA opcodes consists of ...
@ KMergeMasked
This bit must be set in the 'Attributes' field of FMA group if such group of FMA opcodes consists of ...

Definition at line 25 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_AVX512_ALL

#define FMA3GROUP_PACKED_AVX512_ALL (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP_PACKED_AVX512_WIDTHS(Name, NEPBF16, Suf, Attrs) \
FMA3GROUP_PACKED_AVX512_WIDTHS(Name, PD, Suf, Attrs) \
FMA3GROUP_PACKED_AVX512_WIDTHS(Name, PH, Suf, Attrs) \
FMA3GROUP_PACKED_AVX512_WIDTHS(Name, PS, Suf, Attrs)
#define FMA3GROUP_PACKED_AVX512_WIDTHS(Name, Type, Suf, Attrs)

Definition at line 90 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_AVX512_DHS

#define FMA3GROUP_PACKED_AVX512_DHS (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP_PACKED_AVX512_WIDTHS(Name, PH, Suf, Attrs) \
FMA3GROUP_PACKED_AVX512_WIDTHS(Name, PS, Suf, Attrs)

Definition at line 96 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_AVX512_ROUND

#define FMA3GROUP_PACKED_AVX512_ROUND (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP_MASKED(Name, PDZ256##Suf, Attrs) \
FMA3GROUP_MASKED(Name, PDZ##Suf, Attrs) \
FMA3GROUP_MASKED(Name, PHZ256##Suf, Attrs) \
FMA3GROUP_MASKED(Name, PHZ##Suf, Attrs) \
FMA3GROUP_MASKED(Name, PSZ256##Suf, Attrs) \
FMA3GROUP_MASKED(Name, PSZ##Suf, Attrs)
#define FMA3GROUP_MASKED(Name, Suf, Attrs)

Definition at line 101 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_AVX512_WIDTHS

#define FMA3GROUP_PACKED_AVX512_WIDTHS (   Name,
  Type,
  Suf,
  Attrs 
)
Value:
FMA3GROUP_MASKED(Name, Type##Z128##Suf, Attrs) \
FMA3GROUP_MASKED(Name, Type##Z256##Suf, Attrs) \
FMA3GROUP_MASKED(Name, Type##Z##Suf, Attrs)
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45

Definition at line 85 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_BF16

#define FMA3GROUP_PACKED_BF16 (   Name,
  Attrs 
)     FMA3GROUP_PACKED_WIDTHS_Z(Name, NEPBF16, Attrs)

Definition at line 50 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_DHS

#define FMA3GROUP_PACKED_DHS (   Name,
  Attrs 
)
Value:
FMA3GROUP_PACKED_WIDTHS_Z(Name, PH, Attrs) \
FMA3GROUP_PACKED_WIDTHS_ALL(Name, PS, Attrs)
#define FMA3GROUP_PACKED_WIDTHS_ALL(Name, Suf, Attrs)

Definition at line 45 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_WIDTHS_ALL

#define FMA3GROUP_PACKED_WIDTHS_ALL (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP(Name, Suf##Ym, Attrs) \
FMA3GROUP(Name, Suf##Yr, Attrs) \
FMA3GROUP_PACKED_WIDTHS_Z(Name, Suf, Attrs) \
FMA3GROUP(Name, Suf##m, Attrs) \
FMA3GROUP(Name, Suf##r, Attrs)

Definition at line 38 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_WIDTHS_Z

#define FMA3GROUP_PACKED_WIDTHS_Z (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP_MASKED(Name, Suf##Z128m, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Z128r, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Z256m, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Z256r, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Zm, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Zr, Attrs) \

Definition at line 30 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_SCALAR

#define FMA3GROUP_SCALAR (   Name,
  Attrs 
)
Value:
FMA3GROUP_SCALAR_WIDTHS_Z(Name, SH, Attrs) \
FMA3GROUP_SCALAR_WIDTHS_ALL(Name, SS, Attrs)
#define FMA3GROUP_SCALAR_WIDTHS_ALL(Name, Suf, Attrs)

Definition at line 66 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_SCALAR_AVX512_ROUND

#define FMA3GROUP_SCALAR_AVX512_ROUND (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP(Name, SDZ##Suf, Attrs) \
FMA3GROUP_MASKED(Name, SDZ##Suf##_Int, Attrs) \
FMA3GROUP(Name, SHZ##Suf, Attrs) \
FMA3GROUP_MASKED(Name, SHZ##Suf##_Int, Attrs) \
FMA3GROUP(Name, SSZ##Suf, Attrs) \
FMA3GROUP_MASKED(Name, SSZ##Suf##_Int, Attrs)

Definition at line 109 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_SCALAR_WIDTHS_ALL

#define FMA3GROUP_SCALAR_WIDTHS_ALL (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP(Name, Suf##m, Attrs) \
FMA3GROUP(Name, Suf##m_Int, Attrs | X86InstrFMA3Group::Intrinsic) \
FMA3GROUP(Name, Suf##r, Attrs) \
FMA3GROUP(Name, Suf##r_Int, Attrs | X86InstrFMA3Group::Intrinsic)
#define FMA3GROUP_SCALAR_WIDTHS_Z(Name, Suf, Attrs)
@ Intrinsic
This bit must be set in the 'Attributes' field of FMA group if such group of FMA opcodes consists of ...

Definition at line 59 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_SCALAR_WIDTHS_Z

#define FMA3GROUP_SCALAR_WIDTHS_Z (   Name,
  Suf,
  Attrs 
)
Value:
FMA3GROUP(Name, Suf##Zm, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Zm_Int, Attrs | X86InstrFMA3Group::Intrinsic) \
FMA3GROUP(Name, Suf##Zr, Attrs) \
FMA3GROUP_MASKED(Name, Suf##Zr_Int, Attrs | X86InstrFMA3Group::Intrinsic) \

Definition at line 53 of file X86InstrFMA3Info.cpp.

Function Documentation

◆ verifyTables()

static void verifyTables ( )
static

Variable Documentation

◆ BroadcastGroups

const X86InstrFMA3Group BroadcastGroups[]
static
Initial value:
= {
}

Definition at line 117 of file X86InstrFMA3Info.cpp.

Referenced by llvm::getFMA3Group(), and verifyTables().

◆ Groups

const X86InstrFMA3Group Groups[]
static

◆ RoundGroups

const X86InstrFMA3Group RoundGroups[]
static
Initial value:
= {
}

Definition at line 126 of file X86InstrFMA3Info.cpp.

Referenced by llvm::getFMA3Group(), and verifyTables().