LLVM 19.0.0git
Macros | Functions | Variables
X86InstrFMA3Info.cpp File Reference
#include "X86InstrFMA3Info.h"
#include "X86InstrInfo.h"
#include "llvm/Support/Threading.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(Name, 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(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 23 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_FULL

#define FMA3GROUP_FULL (   Name,
  Attrs 
)
Value:
FMA3GROUP_SCALAR(Name, Attrs)
std::string Name
#define FMA3GROUP_PACKED(Name, Attrs)

Definition at line 69 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 26 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED

#define FMA3GROUP_PACKED (   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 46 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_AVX512

#define FMA3GROUP_PACKED_AVX512 (   Name,
  Suf,
  Attrs 
)
Value:
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 87 of file X86InstrFMA3Info.cpp.

◆ FMA3GROUP_PACKED_AVX512_ROUND

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

Definition at line 92 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 82 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 39 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 31 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 64 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 97 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 57 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 51 of file X86InstrFMA3Info.cpp.

Function Documentation

◆ verifyTables()

static void verifyTables ( )
static

Definition at line 127 of file X86InstrFMA3Info.cpp.

References assert(), BroadcastGroups, Groups, llvm::is_sorted(), and RoundGroups.

Referenced by llvm::getFMA3Group().

Variable Documentation

◆ BroadcastGroups

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

Definition at line 105 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 114 of file X86InstrFMA3Info.cpp.

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