#ifndef RUY_RUY_PACK_X86_H_
#define RUY_RUY_PACK_X86_H_
#include <algorithm>
#include <cstdint>
#include <cstring>
#include <type_traits>
#include "ruy/check_macros.h"
#include "ruy/mat.h"
#include "ruy/opt_set.h"
#include "ruy/pack_common.h"
#include "ruy/path.h"
#include "ruy/platform.h"
#include "ruy/profiler/instrumentation.h"
#include "ruy/tune.h"
ruy
#if ((RUY_PLATFORM_AVX || RUY_PLATFORM_AVX2_FMA) && RUY_OPT(ASM))
#include <immintrin.h>
namespace ruy {
namespace {
template <Path path>
inline __m256 Mm256UnpackloPsx2(const __m256 a, const __m256 b) { … }
template <Path path>
inline __m256 Mm256UnpackhiPsx2(const __m256 a, const __m256 b) { … }
template <Path path>
inline __m256i CompareGreaterThan(const __m256i&, const __m256i&) { … }
template <Path path>
inline __m256i MaskLoadu(int available_src_rows, std::int8_t zero_point,
const std::int8_t* addr) { … }
}
template <typename PackImpl, Path path>
inline void PackFloatColMajorForAvxCommonPacker(const float* src_ptr,
const float* zerobuf,
int src_stride,
int remaining_src_cols,
int src_rows, float* packed_ptr,
float* trailing_buf) { … }
}
#endif
#endif