forked from mirrors/gecko-dev
Bug 1878695 - Add avx512vnni support to firefox translation engine r=marco,gcp
Differential Revision: https://phabricator.services.mozilla.com/D200682
This commit is contained in:
parent
aa6fed837d
commit
6e34389461
4 changed files with 42 additions and 1 deletions
|
|
@ -3277,3 +3277,14 @@ set_config(
|
|||
flags=["-mavx512bw", "-mavx512f", "-mavx512dq", "-mavx512cd"],
|
||||
),
|
||||
)
|
||||
|
||||
# AVX512VNNI can be based on either avx512bw or avx512vbmi. We choose the
|
||||
# former.
|
||||
set_config(
|
||||
"AVX512VNNI_FLAGS",
|
||||
["-mavx512vnni", "-mavx512bw", "-mavx512f", "-mavx512dq", "-mavx512cd"],
|
||||
try_compile(
|
||||
check_msg="for -mavx512vnni support",
|
||||
flags=["-mavx512vnni", "-mavx512bw", "-mavx512f", "-mavx512dq", "-mavx512cd"],
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,12 @@
|
|||
#include "wasm/WasmLog.h"
|
||||
|
||||
#if defined(USE_AVX512BW)
|
||||
# if defined(USE_AVXVNNI)
|
||||
# if defined(USE_AVX512VNNI)
|
||||
# define SUPPORTED_ARCHS \
|
||||
xsimd::arch_list<xsimd::avx512vnni<xsimd::avx512bw>, \
|
||||
xsimd::avx512bw, xsimd::avx2, \
|
||||
xsimd::ssse3, xsimd::sse2>
|
||||
# elif defined(USE_AVXVNNI)
|
||||
# define SUPPORTED_ARCHS \
|
||||
xsimd::arch_list<xsimd::avx512bw, xsimd::avxvnni, xsimd::avx2, \
|
||||
xsimd::ssse3, xsimd::sse2>
|
||||
|
|
|
|||
|
|
@ -49,6 +49,12 @@ if CONFIG["INTEL_ARCHITECTURE"]:
|
|||
SOURCES[
|
||||
"/third_party/gemmology/kernels/GemmologyEngineAVX512BW.cpp"
|
||||
].flags += CONFIG["AVX512BW_FLAGS"]
|
||||
if CONFIG["AVX512VNNI_FLAGS"]:
|
||||
DEFINES["USE_AVX512VNNI"] = True
|
||||
SOURCES += ["/third_party/gemmology/kernels/GemmologyEngineAVX512VNNI.cpp"]
|
||||
SOURCES[
|
||||
"/third_party/gemmology/kernels/GemmologyEngineAVX512VNNI.cpp"
|
||||
].flags += CONFIG["AVX512VNNI_FLAGS"]
|
||||
|
||||
|
||||
if CONFIG["TARGET_CPU"] == "aarch64":
|
||||
|
|
|
|||
19
third_party/gemmology/kernels/GemmologyEngineAVX512VNNI.cpp
vendored
Normal file
19
third_party/gemmology/kernels/GemmologyEngineAVX512VNNI.cpp
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* this source code form is subject to the terms of the mozilla public
|
||||
* license, v. 2.0. if a copy of the mpl was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <gemmology.h>
|
||||
|
||||
namespace gemmology {
|
||||
template struct Engine<xsimd::avx512vnni<xsimd::avx512bw>>;
|
||||
template void Engine<xsimd::avx512vnni<xsimd::avx512bw>>::SelectColumnsB(int8_t const*, int8_t*,
|
||||
size_t, uint32_t const*,
|
||||
uint32_t const*);
|
||||
template void Engine<xsimd::avx512vnni<xsimd::avx512bw>>::Shift::Multiply(
|
||||
uint8_t const*, int8_t const*, size_t, size_t, size_t,
|
||||
gemmology::callbacks::UnquantizeAndAddBiasAndWrite);
|
||||
template void Engine<xsimd::avx512vnni<xsimd::avx512bw>>::Shift::PrepareBias(
|
||||
int8_t const*, size_t, size_t,
|
||||
gemmology::callbacks::UnquantizeAndAddBiasAndWrite);
|
||||
} // namespace gemmology
|
||||
Loading…
Reference in a new issue