v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::wasm::SimdShuffle Class Reference

#include <simd-shuffle.h>

Collaboration diagram for v8::internal::wasm::SimdShuffle:

Public Types

enum class  CanonicalShuffle : uint8_t {
  kUnknown , kIdentity , kS64x2Even , kS64x2Odd ,
  kS64x2ReverseBytes , kS64x2Reverse , kS32x4Even , kS32x4Odd ,
  kS32x4InterleaveLowHalves , kS32x4InterleaveHighHalves , kS32x4ReverseBytes , kS32x4Reverse ,
  kS32x2Reverse , kS32x4TransposeEven , kS32x4TransposeOdd , kS16x8Even ,
  kS16x8Odd , kS16x8InterleaveLowHalves , kS16x8InterleaveHighHalves , kS16x8ReverseBytes ,
  kS16x2Reverse , kS16x4Reverse , kS16x8TransposeEven , kS16x8TransposeOdd ,
  kS8x16Even , kS8x16Odd , kS8x16InterleaveLowHalves , kS8x16InterleaveHighHalves ,
  kS8x16TransposeEven , kS8x16TransposeOdd , kMaxShuffles
}
 
using ShuffleArray = std::array<uint8_t, kSimd128Size>
 

Static Public Member Functions

template<const int simd_size = kSimd128Size>
requires (simd_size == kSimd128Size || simd_size == kSimd256Size)
static void CanonicalizeShuffle (bool inputs_equal, uint8_t *shuffle, bool *needs_swap, bool *is_swizzle)
 
static bool TryMatchIdentity (const uint8_t *shuffle)
 
template<int LANES>
static bool TryMatchSplat (const uint8_t *shuffle, int *index)
 
static bool TryMatch32x4Rotate (const uint8_t *shuffle, uint8_t *shuffle32x4, bool is_swizzle)
 
static bool TryMatch32x4Reverse (const uint8_t *shuffle32x4)
 
static bool TryMatch32x4OneLaneSwizzle (const uint8_t *shuffle32x4, uint8_t *from, uint8_t *to)
 
static bool TryMatch64x1Shuffle (const uint8_t *shuffle, uint8_t *shuffle64x1)
 
static bool TryMatch64x2Shuffle (const uint8_t *shuffle, uint8_t *shuffle64x2)
 
static bool TryMatch32x1Shuffle (const uint8_t *shuffle, uint8_t *shuffle32x1)
 
static bool TryMatch32x2Shuffle (const uint8_t *shuffle, uint8_t *shuffle32x2)
 
static bool TryMatch32x4Shuffle (const uint8_t *shuffle, uint8_t *shuffle32x4)
 
static bool TryMatch32x8Shuffle (const uint8_t *shuffle, uint8_t *shuffle32x8)
 
static bool TryMatch16x1Shuffle (const uint8_t *shuffle, uint8_t *shuffle16x1)
 
static bool TryMatch16x2Shuffle (const uint8_t *shuffle, uint8_t *shuffle16x2)
 
static bool TryMatch16x4Shuffle (const uint8_t *shuffle, uint8_t *shuffle16x4)
 
static bool TryMatch16x8Shuffle (const uint8_t *shuffle, uint8_t *shuffle16x8)
 
static bool TryMatchConcat (const uint8_t *shuffle, uint8_t *offset)
 
static bool TryMatchBlend (const uint8_t *shuffle)
 
static bool TryMatchByteToDwordZeroExtend (const uint8_t *shuffle)
 
static bool TryMatch8x16UpperToLowerReduce (const uint8_t *shuffle1, const uint8_t *shuffle2, const uint8_t *shuffle3, const uint8_t *shuffle4)
 
static bool TryMatch16x8UpperToLowerReduce (const uint8_t *shuffle1, const uint8_t *shuffle2, const uint8_t *shuffle3)
 
static bool TryMatch32x4UpperToLowerReduce (const uint8_t *shuffle1, const uint8_t *shuffle2)
 
static bool TryMatch32x4PairwiseReduce (const uint8_t *shuffle1, const uint8_t *shuffle2)
 
static bool TryMatch64x2Reduce (const uint8_t *shuffle64x2)
 
static uint8_t PackShuffle4 (uint8_t *shuffle)
 
static uint8_t PackBlend8 (const uint8_t *shuffle16x8)
 
static uint8_t PackBlend4 (const uint8_t *shuffle32x4)
 
static int32_t Pack2Lanes (const std::array< uint8_t, 2 > &shuffle)
 
static int32_t Pack4Lanes (const uint8_t *shuffle)
 
static void Pack16Lanes (uint32_t *dst, const uint8_t *shuffle)
 
static CanonicalShuffle TryMatchCanonical (const ShuffleArray &shuffle)
 

Detailed Description

Definition at line 44 of file simd-shuffle.h.

Member Typedef Documentation

◆ ShuffleArray

Definition at line 286 of file simd-shuffle.h.

Member Enumeration Documentation

◆ CanonicalShuffle

Enumerator
kUnknown 
kIdentity 
kS64x2Even 
kS64x2Odd 
kS64x2ReverseBytes 
kS64x2Reverse 
kS32x4Even 
kS32x4Odd 
kS32x4InterleaveLowHalves 
kS32x4InterleaveHighHalves 
kS32x4ReverseBytes 
kS32x4Reverse 
kS32x2Reverse 
kS32x4TransposeEven 
kS32x4TransposeOdd 
kS16x8Even 
kS16x8Odd 
kS16x8InterleaveLowHalves 
kS16x8InterleaveHighHalves 
kS16x8ReverseBytes 
kS16x2Reverse 
kS16x4Reverse 
kS16x8TransposeEven 
kS16x8TransposeOdd 
kS8x16Even 
kS8x16Odd 
kS8x16InterleaveLowHalves 
kS8x16InterleaveHighHalves 
kS8x16TransposeEven 
kS8x16TransposeOdd 
kMaxShuffles 

Definition at line 252 of file simd-shuffle.h.

Member Function Documentation

◆ CanonicalizeShuffle()

template<const int simd_size = kSimd128Size>
requires (simd_size == kSimd128Size || simd_size == kSimd256Size)
static void v8::internal::wasm::SimdShuffle::CanonicalizeShuffle ( bool inputs_equal,
uint8_t * shuffle,
bool * needs_swap,
bool * is_swizzle )
inlinestatic

Definition at line 51 of file simd-shuffle.h.

◆ Pack16Lanes()

void v8::internal::wasm::SimdShuffle::Pack16Lanes ( uint32_t * dst,
const uint8_t * shuffle )
static

Definition at line 409 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ Pack2Lanes()

int32_t v8::internal::wasm::SimdShuffle::Pack2Lanes ( const std::array< uint8_t, 2 > & shuffle)
static

Definition at line 391 of file simd-shuffle.cc.

◆ Pack4Lanes()

int32_t v8::internal::wasm::SimdShuffle::Pack4Lanes ( const uint8_t * shuffle)
static

Definition at line 400 of file simd-shuffle.cc.

Here is the caller graph for this function:

◆ PackBlend4()

uint8_t v8::internal::wasm::SimdShuffle::PackBlend4 ( const uint8_t * shuffle32x4)
static

Definition at line 383 of file simd-shuffle.cc.

◆ PackBlend8()

uint8_t v8::internal::wasm::SimdShuffle::PackBlend8 ( const uint8_t * shuffle16x8)
static

Definition at line 375 of file simd-shuffle.cc.

◆ PackShuffle4()

uint8_t v8::internal::wasm::SimdShuffle::PackShuffle4 ( uint8_t * shuffle)
static

Definition at line 370 of file simd-shuffle.cc.

◆ TryMatch16x1Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch16x1Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle16x1 )
static

Definition at line 220 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch16x2Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch16x2Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle16x2 )
static

Definition at line 225 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch16x4Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch16x4Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle16x4 )
static

Definition at line 230 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch16x8Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch16x8Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle16x8 )
static

Definition at line 235 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch16x8UpperToLowerReduce()

bool v8::internal::wasm::SimdShuffle::TryMatch16x8UpperToLowerReduce ( const uint8_t * shuffle1,
const uint8_t * shuffle2,
const uint8_t * shuffle3 )
static

Definition at line 347 of file simd-shuffle.cc.

◆ TryMatch32x1Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch32x1Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle32x1 )
static

Definition at line 200 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch32x2Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch32x2Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle32x2 )
static

Definition at line 205 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch32x4OneLaneSwizzle()

bool v8::internal::wasm::SimdShuffle::TryMatch32x4OneLaneSwizzle ( const uint8_t * shuffle32x4,
uint8_t * from,
uint8_t * to )
static

Definition at line 118 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch32x4PairwiseReduce()

bool v8::internal::wasm::SimdShuffle::TryMatch32x4PairwiseReduce ( const uint8_t * shuffle1,
const uint8_t * shuffle2 )
static

Definition at line 361 of file simd-shuffle.cc.

◆ TryMatch32x4Reverse()

bool v8::internal::wasm::SimdShuffle::TryMatch32x4Reverse ( const uint8_t * shuffle32x4)
static

Definition at line 113 of file simd-shuffle.cc.

◆ TryMatch32x4Rotate()

bool v8::internal::wasm::SimdShuffle::TryMatch32x4Rotate ( const uint8_t * shuffle,
uint8_t * shuffle32x4,
bool is_swizzle )
static

Definition at line 94 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch32x4Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch32x4Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle32x4 )
static

Definition at line 210 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch32x4UpperToLowerReduce()

bool v8::internal::wasm::SimdShuffle::TryMatch32x4UpperToLowerReduce ( const uint8_t * shuffle1,
const uint8_t * shuffle2 )
static

Definition at line 355 of file simd-shuffle.cc.

◆ TryMatch32x8Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch32x8Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle32x8 )
static

Definition at line 215 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch64x1Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch64x1Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle64x1 )
static

Definition at line 195 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatch64x2Reduce()

bool v8::internal::wasm::SimdShuffle::TryMatch64x2Reduce ( const uint8_t * shuffle64x2)
static

Definition at line 366 of file simd-shuffle.cc.

◆ TryMatch64x2Shuffle()

bool v8::internal::wasm::SimdShuffle::TryMatch64x2Shuffle ( const uint8_t * shuffle,
uint8_t * shuffle64x2 )
static

Definition at line 157 of file simd-shuffle.cc.

◆ TryMatch8x16UpperToLowerReduce()

bool v8::internal::wasm::SimdShuffle::TryMatch8x16UpperToLowerReduce ( const uint8_t * shuffle1,
const uint8_t * shuffle2,
const uint8_t * shuffle3,
const uint8_t * shuffle4 )
static

Definition at line 337 of file simd-shuffle.cc.

◆ TryMatchBlend()

bool v8::internal::wasm::SimdShuffle::TryMatchBlend ( const uint8_t * shuffle)
static

Definition at line 257 of file simd-shuffle.cc.

◆ TryMatchByteToDwordZeroExtend()

bool v8::internal::wasm::SimdShuffle::TryMatchByteToDwordZeroExtend ( const uint8_t * shuffle)
static

Definition at line 264 of file simd-shuffle.cc.

◆ TryMatchCanonical()

SimdShuffle::CanonicalShuffle v8::internal::wasm::SimdShuffle::TryMatchCanonical ( const ShuffleArray & shuffle)
static

Definition at line 29 of file simd-shuffle.cc.

Here is the call graph for this function:

◆ TryMatchConcat()

bool v8::internal::wasm::SimdShuffle::TryMatchConcat ( const uint8_t * shuffle,
uint8_t * offset )
static

Definition at line 240 of file simd-shuffle.cc.

Here is the caller graph for this function:

◆ TryMatchIdentity()

bool v8::internal::wasm::SimdShuffle::TryMatchIdentity ( const uint8_t * shuffle)
static

Definition at line 87 of file simd-shuffle.cc.

◆ TryMatchSplat()

template<int LANES>
static bool v8::internal::wasm::SimdShuffle::TryMatchSplat ( const uint8_t * shuffle,
int * index )
inlinestatic

Definition at line 104 of file simd-shuffle.h.

Here is the caller graph for this function:

The documentation for this class was generated from the following files: