Capabilities

From libsimdpp-docs

Different instruction sets provide support for different operations. Certain operations can not be efficiently implemented in software, when the SIMD or even regular instruction set lacks support for the operation.

The following macros are provided to indicate the presence of instructions that allow efficient implementation of certain operations using SIMD. This allows the user to query the supported operations and fallback to another algorithm or even non-vectorized implementation depending on the instruction set.

Types

indicates support of 8-bit integers in SIMD unit
(macro constant)
indicates support of 16-bit integers in SIMD unit
(macro constant)
indicates support of 32-bit integers in SIMD unit
(macro constant)
indicates support of 64-bit integers in SIMD unit
(macro constant)
indicates support of 32-bit floats in SIMD unit
(macro constant)
indicates support of 64-bit floats in SIMD unit
(macro constant)

Conversions

indicates support of int64 to float32 conversion
(macro constant)
indicates support of int64 to int64 conversion
(macro constant)
indicates support of uint64 to float32 conversion
(macro constant)
indicates support of uint64 to float64 conversion
(macro constant)
indicates support of float32 to int64 conversion
(macro constant)
indicates support of float32 to uint64 conversion
(macro constant)
indicates support of float64 to uint32 conversion
(macro constant)
indicates support of float64 to int64 conversion
(macro constant)
indicates support of float64 to uint64 conversion
(macro constant)

Integer vector shifts

indicates support of per-element right shift for uint8
(macro constant)
indicates support of per-element right shift for int8
(macro constant)
indicates support of per-element right shift for uint16
(macro constant)
indicates support of per-element right shift for int16
(macro constant)
indicates support of per-element right shift for uint32
(macro constant)
indicates support of per-element right shift for int32
(macro constant)
indicates support of per-element left shift for uint8
(macro constant)
indicates support of per-element left shift for int8
(macro constant)
indicates support of per-element left shift for uint16
(macro constant)
indicates support of per-element left shift for int16
(macro constant)
indicates support of per-element left shift for uint32
(macro constant)
indicates support of per-element left shift for int32
(macro constant)