Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
simd.hpp
Go to the documentation of this file.
1#pragma once
2
3// Compatibility spelling of the pulp::simd kernels.
4//
5// The kernels live in the pulp-simd library (<pulp/simd/simd.hpp>), which the
6// DSP layer can link without the rest of pulp-runtime. These inline wrappers
7// keep existing pulp::runtime::simd_* callers compiling unchanged; new code
8// should call pulp::simd directly.
9
10#include <pulp/simd/simd.hpp>
11
12#include <cstddef>
13
14namespace pulp::runtime {
15
16inline std::size_t simd_float_lanes() {
18}
19inline std::size_t simd_double_lanes() {
21}
22
23inline void simd_add(const float* a, const float* b, float* dst, std::size_t count) {
24 pulp::simd::add(a, b, dst, count);
25}
26inline void simd_add(const double* a, const double* b, double* dst, std::size_t count) {
27 pulp::simd::add(a, b, dst, count);
28}
29
30inline void simd_mul(const float* a, const float* b, float* dst, std::size_t count) {
31 pulp::simd::mul(a, b, dst, count);
32}
33inline void simd_mul(const double* a, const double* b, double* dst, std::size_t count) {
34 pulp::simd::mul(a, b, dst, count);
35}
36
37inline void simd_fma(const float* a, const float* b, const float* c, float* dst,
38 std::size_t count) {
39 pulp::simd::fma(a, b, c, dst, count);
40}
41inline void simd_fma(const double* a, const double* b, const double* c, double* dst,
42 std::size_t count) {
43 pulp::simd::fma(a, b, c, dst, count);
44}
45
46inline void simd_set(float value, float* dst, std::size_t count) {
47 pulp::simd::set(value, dst, count);
48}
49inline void simd_set(double value, double* dst, std::size_t count) {
50 pulp::simd::set(value, dst, count);
51}
52
53inline void simd_scale(const float* a, float scalar, float* dst, std::size_t count) {
54 pulp::simd::scale(a, scalar, dst, count);
55}
56inline void simd_scale(const double* a, double scalar, double* dst, std::size_t count) {
57 pulp::simd::scale(a, scalar, dst, count);
58}
59
60inline void simd_add_scaled(const float* a, float scalar, float* dst, std::size_t count) {
61 pulp::simd::add_scaled(a, scalar, dst, count);
62}
63inline void simd_add_scaled(const double* a, double scalar, double* dst, std::size_t count) {
64 pulp::simd::add_scaled(a, scalar, dst, count);
65}
66
67inline float simd_reduce_add(const float* data, std::size_t count) {
68 return pulp::simd::sum(data, count);
69}
70inline double simd_reduce_add(const double* data, std::size_t count) {
71 return pulp::simd::sum(data, count);
72}
73
74inline float simd_reduce_max(const float* data, std::size_t count) {
75 return pulp::simd::maximum(data, count);
76}
77inline double simd_reduce_max(const double* data, std::size_t count) {
78 return pulp::simd::maximum(data, count);
79}
80
81inline float simd_reduce_min(const float* data, std::size_t count) {
82 return pulp::simd::minimum(data, count);
83}
84inline double simd_reduce_min(const double* data, std::size_t count) {
85 return pulp::simd::minimum(data, count);
86}
87
88inline void simd_abs(const float* a, float* dst, std::size_t count) {
89 pulp::simd::abs(a, dst, count);
90}
91inline void simd_abs(const double* a, double* dst, std::size_t count) {
92 pulp::simd::abs(a, dst, count);
93}
94
95inline void simd_clamp(const float* a, float lo, float hi, float* dst, std::size_t count) {
96 pulp::simd::clamp(a, lo, hi, dst, count);
97}
98inline void simd_clamp(const double* a, double lo, double hi, double* dst, std::size_t count) {
99 pulp::simd::clamp(a, lo, hi, dst, count);
100}
101
102} // namespace pulp::runtime
Definition generated_event_source.hpp:33
void simd_clamp(const float *a, float lo, float hi, float *dst, std::size_t count)
Definition simd.hpp:95
void simd_set(float value, float *dst, std::size_t count)
Definition simd.hpp:46
void simd_fma(const float *a, const float *b, const float *c, float *dst, std::size_t count)
Definition simd.hpp:37
void simd_add_scaled(const float *a, float scalar, float *dst, std::size_t count)
Definition simd.hpp:60
void simd_abs(const float *a, float *dst, std::size_t count)
Definition simd.hpp:88
void simd_mul(const float *a, const float *b, float *dst, std::size_t count)
Definition simd.hpp:30
std::size_t simd_double_lanes()
Definition simd.hpp:19
void simd_add(const float *a, const float *b, float *dst, std::size_t count)
Definition simd.hpp:23
float simd_reduce_add(const float *data, std::size_t count)
Definition simd.hpp:67
float simd_reduce_max(const float *data, std::size_t count)
Definition simd.hpp:74
std::size_t simd_float_lanes()
Definition simd.hpp:16
void simd_scale(const float *a, float scalar, float *dst, std::size_t count)
Definition simd.hpp:53
float simd_reduce_min(const float *data, std::size_t count)
Definition simd.hpp:81
constexpr std::size_t float_lanes() noexcept
Definition simd.hpp:172
constexpr std::size_t double_lanes() noexcept
Definition simd.hpp:176