highway.h File Reference
`#include "hwy/base.h"`
`#include "hwy/targets.h"`
`#include "hwy/ops/x86_128-inl.h"`
`#include "hwy/ops/generic_ops-inl.h"`

Go to the source code of this file.

## Classes

struct | hwy::FunctionCache< RetType, Args >

## Namespaces

namespace | hwy

## Macros

#define | HWY_MAJOR 1
#define | HWY_MINOR 0
#define | HWY_PATCH 2
#define | HWY_FULL1(T) hwy::HWY_NAMESPACE::ScalableTag<T>
#define | HWY_FULL2(T, LMUL) hwy::HWY_NAMESPACE::ScalableTag<T, hwy::CeilLog2(HWY_MAX(0, LMUL))>
#define | HWY_3TH_ARG(arg1, arg2, arg3, ...) arg3
#define | HWY_FULL_RECOMPOSER(args_with_paren) HWY_3TH_ARG args_with_paren
#define | HWY_CHOOSE_FULL(...) HWY_FULL_RECOMPOSER((__VA_ARGS__, HWY_FULL2, HWY_FULL1, ))
#define | HWY_FULL(...) HWY_CHOOSE_FULL(__VA_ARGS__())(__VA_ARGS__)
#define | HWY_CAPPED(T, MAX_N) hwy::HWY_NAMESPACE::CappedTag<T, MAX_N>
#define | HWY_ONCE 1
#define | HWY_STATIC_DISPATCH(FUNC_NAME) N_SCALAR::FUNC_NAME
#define | HWY_CHOOSE_FALLBACK(FUNC_NAME) &HWY_STATIC_DISPATCH(FUNC_NAME)
#define | HWY_CHOOSE_WASM_EMU256(FUNC_NAME) nullptr
#define | HWY_CHOOSE_WASM(FUNC_NAME) nullptr
#define | HWY_CHOOSE_RVV(FUNC_NAME) nullptr
#define | HWY_CHOOSE_NEON(FUNC_NAME) nullptr
#define | HWY_CHOOSE_SVE(FUNC_NAME) nullptr
#define | HWY_CHOOSE_SVE2(FUNC_NAME) nullptr
#define | HWY_CHOOSE_SVE_256(FUNC_NAME) nullptr
#define | HWY_CHOOSE_SVE2_128(FUNC_NAME) nullptr
#define | HWY_CHOOSE_PPC8(FUNC_NAME) nullptr
#define | HWY_CHOOSE_SSSE3(FUNC_NAME) nullptr
#define | HWY_CHOOSE_SSE4(FUNC_NAME) nullptr
#define | HWY_CHOOSE_AVX2(FUNC_NAME) nullptr
#define | HWY_CHOOSE_AVX3(FUNC_NAME) nullptr
#define | HWY_CHOOSE_AVX3_DL(FUNC_NAME) nullptr
#define | HWY_DISPATCH_WORKAROUND 0
#define | HWY_DISPATCH_TABLE(FUNC_NAME) HWY_CONCAT(FUNC_NAME, HighwayDispatchTable)
#define | HWY_EXPORT(FUNC_NAME)
#define | HWY_DYNAMIC_DISPATCH(FUNC_NAME) HWY_STATIC_DISPATCH(FUNC_NAME)
#define | HWY_CAP_INTEGER64 HWY_HAVE_INTEGER64
#define | HWY_CAP_FLOAT16 HWY_HAVE_FLOAT16
#define | HWY_CAP_FLOAT64 HWY_HAVE_FLOAT64
#define | HWY_HIGHWAY_PER_TARGET

## Functions

template<typename RetType , typename... Args>
FunctionCache< RetType, Args... > | hwy::DeduceFunctionCache (RetType(*)(Args...))

## Macro Definition Documentation

## HWY_3TH_ARG

#define HWY_3TH_ARG | ( |  | arg1,
|  |  | arg2,
|  |  | arg3,
|  |  | ...
| ) |  | arg3

## HWY_CAP_FLOAT16

#define HWY_CAP_FLOAT16 HWY_HAVE_FLOAT16

## HWY_CAP_FLOAT64

#define HWY_CAP_FLOAT64 HWY_HAVE_FLOAT64

## HWY_CAP_INTEGER64

#define HWY_CAP_INTEGER64 HWY_HAVE_INTEGER64

## HWY_CAPPED

#define HWY_CAPPED | ( |  | T,
|  |  | MAX_N
| ) |  | hwy::HWY_NAMESPACE::CappedTag<T, MAX_N>

## HWY_CHOOSE_AVX2

#define HWY_CHOOSE_AVX2 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_AVX3

#define HWY_CHOOSE_AVX3 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_AVX3_DL

#define HWY_CHOOSE_AVX3_DL | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_FALLBACK

#define HWY_CHOOSE_FALLBACK | ( |  | FUNC_NAME | ) | &HWY_STATIC_DISPATCH(FUNC_NAME)

## HWY_CHOOSE_FULL

#define HWY_CHOOSE_FULL | ( |  | ... | ) | HWY_FULL_RECOMPOSER((__VA_ARGS__, HWY_FULL2, HWY_FULL1, ))

## HWY_CHOOSE_NEON

#define HWY_CHOOSE_NEON | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_PPC8

#define HWY_CHOOSE_PPC8 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_RVV

#define HWY_CHOOSE_RVV | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_SSE4

#define HWY_CHOOSE_SSE4 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_SSSE3

#define HWY_CHOOSE_SSSE3 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_SVE

#define HWY_CHOOSE_SVE | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_SVE2

#define HWY_CHOOSE_SVE2 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_SVE2_128

#define HWY_CHOOSE_SVE2_128 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_SVE_256

#define HWY_CHOOSE_SVE_256 | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_WASM

#define HWY_CHOOSE_WASM | ( |  | FUNC_NAME | ) | nullptr

## HWY_CHOOSE_WASM_EMU256

#define HWY_CHOOSE_WASM_EMU256 | ( |  | FUNC_NAME | ) | nullptr

## HWY_DISPATCH_TABLE

#define HWY_DISPATCH_TABLE | ( |  | FUNC_NAME | ) | HWY_CONCAT(FUNC_NAME, HighwayDispatchTable)

## HWY_DISPATCH_WORKAROUND

#define HWY_DISPATCH_WORKAROUND 0

## HWY_DYNAMIC_DISPATCH

#define HWY_DYNAMIC_DISPATCH | ( |  | FUNC_NAME | ) | HWY_STATIC_DISPATCH(FUNC_NAME)

## HWY_EXPORT

#define HWY_EXPORT | ( |  | FUNC_NAME | ) |

Value:
HWY_MAYBE_UNUSED static decltype(&HWY_STATIC_DISPATCH(FUNC_NAME)) const \
HWY_DISPATCH_TABLE(FUNC_NAME)[1] = {&HWY_STATIC_DISPATCH(FUNC_NAME)}
HWY_MAYBE_UNUSED
#define HWY_MAYBE_UNUSED
Definition base.h:82
HWY_STATIC_DISPATCH
#define HWY_STATIC_DISPATCH(FUNC_NAME)
Definition highway.h:70
HWY_DISPATCH_TABLE
#define HWY_DISPATCH_TABLE(FUNC_NAME)
Definition highway.h:246

## HWY_FULL

#define HWY_FULL | ( |  | ... | ) | HWY_CHOOSE_FULL(__VA_ARGS__())(__VA_ARGS__)

## HWY_FULL1

#define HWY_FULL1 | ( |  | T | ) | hwy::HWY_NAMESPACE::ScalableTag<T>

## HWY_FULL2

#define HWY_FULL2 | ( |  | T,
|  |  | LMUL
| ) |  | hwy::HWY_NAMESPACE::ScalableTag<T, hwy::CeilLog2(HWY_MAX(0, LMUL))>

## HWY_FULL_RECOMPOSER

#define HWY_FULL_RECOMPOSER | ( |  | args_with_paren | ) | HWY_3TH_ARG args_with_paren

## HWY_HIGHWAY_PER_TARGET

#define HWY_HIGHWAY_PER_TARGET

## HWY_MAJOR

#define HWY_MAJOR 1

## HWY_MINOR

#define HWY_MINOR 0

## HWY_ONCE

#define HWY_ONCE 1

## HWY_PATCH

#define HWY_PATCH 2

## HWY_STATIC_DISPATCH

#define HWY_STATIC_DISPATCH | ( |  | FUNC_NAME | ) | N_SCALAR::FUNC_NAME