v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
macro-assembler-shared-ia32-x64.h File Reference
Include dependency graph for macro-assembler-shared-ia32-x64.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::SharedMacroAssemblerBase
 
struct  v8::internal::SharedMacroAssemblerBase::AvxHelper< Dst, Arg, Args >
 
class  v8::internal::SharedMacroAssembler< Impl >
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define QFMA(ps_or_pd)
 
#define QFMS(ps_or_pd)
 
#define AVX_OP(macro_name, name)
 
#define AVX_OP_WITH_DIFF_SSE_INSTR(macro_name, avx_name, sse_name)
 
#define AVX_OP_SSE3(macro_name, name)
 
#define AVX_OP_SSSE3(macro_name, name)
 
#define AVX_OP_SSE4_1(macro_name, name)
 
#define AVX_OP_SSE4_2(macro_name, name)
 

Variables

constexpr int v8::internal::kStackSavedSavedFPSize = kDoubleSize
 

Macro Definition Documentation

◆ AVX_OP

#define AVX_OP ( macro_name,
name )
Value:
template <typename Dst, typename Arg, typename... Args> \
void macro_name(Dst dst, Arg arg, Args... args) { \
AvxHelper<Dst, Arg, Args...>{this} \
.template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
args...); \
}
base::Vector< const DirectHandle< Object > > args
Definition execution.cc:74

Definition at line 236 of file macro-assembler-shared-ia32-x64.h.

◆ AVX_OP_SSE3

#define AVX_OP_SSE3 ( macro_name,
name )
Value:
template <typename Dst, typename Arg, typename... Args> \
void macro_name(Dst dst, Arg arg, Args... args) { \
AvxHelper<Dst, Arg, Args...>{this, std::optional<CpuFeature>(SSE3)} \
.template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
args...); \
}

Definition at line 263 of file macro-assembler-shared-ia32-x64.h.

◆ AVX_OP_SSE4_1

#define AVX_OP_SSE4_1 ( macro_name,
name )
Value:
template <typename Dst, typename Arg, typename... Args> \
void macro_name(Dst dst, Arg arg, Args... args) { \
AvxHelper<Dst, Arg, Args...>{this, std::optional<CpuFeature>(SSE4_1)} \
.template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
args...); \
}

Definition at line 279 of file macro-assembler-shared-ia32-x64.h.

◆ AVX_OP_SSE4_2

#define AVX_OP_SSE4_2 ( macro_name,
name )
Value:
template <typename Dst, typename Arg, typename... Args> \
void macro_name(Dst dst, Arg arg, Args... args) { \
AvxHelper<Dst, Arg, Args...>{this, std::optional<CpuFeature>(SSE4_2)} \
.template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
args...); \
}

Definition at line 287 of file macro-assembler-shared-ia32-x64.h.

◆ AVX_OP_SSSE3

#define AVX_OP_SSSE3 ( macro_name,
name )
Value:
template <typename Dst, typename Arg, typename... Args> \
void macro_name(Dst dst, Arg arg, Args... args) { \
AvxHelper<Dst, Arg, Args...>{this, std::optional<CpuFeature>(SSSE3)} \
.template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
args...); \
}

Definition at line 271 of file macro-assembler-shared-ia32-x64.h.

◆ AVX_OP_WITH_DIFF_SSE_INSTR

#define AVX_OP_WITH_DIFF_SSE_INSTR ( macro_name,
avx_name,
sse_name )
Value:
template <typename Dst, typename Arg, typename... Args> \
void macro_name(Dst dst, Arg arg, Args... args) { \
AvxHelper<Dst, Arg, Args...>{this} \
.template emit<&Assembler::v##avx_name, &Assembler::sse_name>( \
dst, arg, args...); \
}

Definition at line 255 of file macro-assembler-shared-ia32-x64.h.

◆ QFMA

#define QFMA ( ps_or_pd)

Definition at line 25 of file macro-assembler-shared-ia32-x64.h.

◆ QFMS

#define QFMS ( ps_or_pd)
Value:
if (CpuFeatures::IsSupported(FMA3)) { \
CpuFeatureScope fma3_scope(this, FMA3); \
if (dst == src1) { \
vfnmadd213##ps_or_pd(dst, src2, src3); \
} else if (dst == src2) { \
vfnmadd213##ps_or_pd(dst, src1, src3); \
} else if (dst == src3) { \
vfnmadd231##ps_or_pd(dst, src2, src1); \
} else { \
CpuFeatureScope avx_scope(this, AVX); \
vmovups(dst, src1); \
vfnmadd213##ps_or_pd(dst, src2, src3); \
} \
} else if (CpuFeatures::IsSupported(AVX)) { \
CpuFeatureScope avx_scope(this, AVX); \
vmul##ps_or_pd(tmp, src1, src2); \
vsub##ps_or_pd(dst, src3, tmp); \
} else { \
movaps(tmp, src1); \
mul##ps_or_pd(tmp, src2); \
if (dst != src3) { \
movaps(dst, src3); \
} \
sub##ps_or_pd(dst, tmp); \
}

Definition at line 65 of file macro-assembler-shared-ia32-x64.h.