#include "src/wasm/simd-shuffle.h"
#include <algorithm>
#include "src/common/globals.h"
namespace v8 {
namespace internal {
namespace wasm {
bool SimdShuffle::TryMatchIdentity(const uint8_t* shuffle) { … }
bool SimdShuffle::TryMatch32x4Rotate(const uint8_t* shuffle,
uint8_t* shuffle32x4, bool is_swizzle) { … }
bool SimdShuffle::TryMatch32x4Reverse(const uint8_t* shuffle32x4) { … }
bool SimdShuffle::TryMatch32x4OneLaneSwizzle(const uint8_t* shuffle32x4,
uint8_t* from_lane,
uint8_t* to_lane) { … }
bool SimdShuffle::TryMatch64x2Shuffle(const uint8_t* shuffle,
uint8_t* shuffle64x2) { … }
bool SimdShuffle::TryMatch32x4Shuffle(const uint8_t* shuffle,
uint8_t* shuffle32x4) { … }
bool SimdShuffle::TryMatch32x8Shuffle(const uint8_t* shuffle,
uint8_t* shuffle32x8) { … }
bool SimdShuffle::TryMatch16x8Shuffle(const uint8_t* shuffle,
uint8_t* shuffle16x8) { … }
bool SimdShuffle::TryMatchConcat(const uint8_t* shuffle, uint8_t* offset) { … }
bool SimdShuffle::TryMatchBlend(const uint8_t* shuffle) { … }
bool SimdShuffle::TryMatchByteToDwordZeroExtend(const uint8_t* shuffle) { … }
namespace {
bool TryMatch32x4Pairwise(const uint8_t* shuffle) { … }
bool TryMatch32x2Pairwise(const uint8_t* shuffle) { … }
bool TryMatchUpperToLowerFirst(const uint8_t* shuffle) { … }
bool TryMatchUpperToLowerSecond(const uint8_t* shuffle) { … }
bool TryMatchUpperToLowerThird(const uint8_t* shuffle) { … }
bool TryMatchUpperToLowerFourth(const uint8_t* shuffle) { … }
}
bool SimdShuffle::TryMatch8x16UpperToLowerReduce(const uint8_t* shuffle1,
const uint8_t* shuffle2,
const uint8_t* shuffle3,
const uint8_t* shuffle4) { … }
bool SimdShuffle::TryMatch16x8UpperToLowerReduce(const uint8_t* shuffle1,
const uint8_t* shuffle2,
const uint8_t* shuffle3) { … }
bool SimdShuffle::TryMatch32x4UpperToLowerReduce(const uint8_t* shuffle1,
const uint8_t* shuffle2) { … }
bool SimdShuffle::TryMatch32x4PairwiseReduce(const uint8_t* shuffle1,
const uint8_t* shuffle2) { … }
bool SimdShuffle::TryMatch64x2Reduce(const uint8_t* shuffle64x2) { … }
uint8_t SimdShuffle::PackShuffle4(uint8_t* shuffle) { … }
uint8_t SimdShuffle::PackBlend8(const uint8_t* shuffle16x8) { … }
uint8_t SimdShuffle::PackBlend4(const uint8_t* shuffle32x4) { … }
int32_t SimdShuffle::Pack4Lanes(const uint8_t* shuffle) { … }
void SimdShuffle::Pack16Lanes(uint32_t* dst, const uint8_t* shuffle) { … }
#ifdef V8_TARGET_ARCH_X64
bool SimdShuffle::TryMatchVpshufd(const uint8_t* shuffle32x8,
uint8_t* control) { … }
bool SimdShuffle::TryMatchShufps256(const uint8_t* shuffle32x8,
uint8_t* control) { … }
#endif
bool SimdSwizzle::AllInRangeOrTopBitSet(
std::array<uint8_t, kSimd128Size> shuffle) { … }
}
}
}