diff --git a/libc/src/__support/CPP/simd.h b/libc/src/__support/CPP/simd.h index 972f156419d4d..449455c5c0390 100644 --- a/libc/src/__support/CPP/simd.h +++ b/libc/src/__support/CPP/simd.h @@ -15,8 +15,8 @@ #include "hdr/stdint_proxy.h" #include "src/__support/CPP/algorithm.h" -#include "src/__support/CPP/bit.h" -#include "src/__support/CPP/type_traits/integral_constant.h" +#include "src/__support/CPP/limits.h" +#include "src/__support/CPP/type_traits.h" #include "src/__support/macros/attributes.h" #include "src/__support/macros/config.h" @@ -128,6 +128,55 @@ LIBC_INLINE constexpr simd max(simd x, simd y) { return __builtin_elementwise_max(x, y); } +template +LIBC_INLINE constexpr simd abs(simd x) { + return __builtin_elementwise_abs(x); +} +template +LIBC_INLINE constexpr simd fma(simd x, simd y, simd z) { + return __builtin_elementwise_fma(x, y, z); +} +template +LIBC_INLINE constexpr simd ceil(simd x) { + return __builtin_elementwise_ceil(x); +} +template +LIBC_INLINE constexpr simd floor(simd x) { + return __builtin_elementwise_floor(x); +} +template +LIBC_INLINE constexpr simd roundeven(simd x) { + return __builtin_elementwise_roundeven(x); +} +template +LIBC_INLINE constexpr simd round(simd x) { + return __builtin_elementwise_round(x); +} +template +LIBC_INLINE constexpr simd trunc(simd x) { + return __builtin_elementwise_trunc(x); +} +template +LIBC_INLINE constexpr simd nearbyint(simd x) { + return __builtin_elementwise_nearbyint(x); +} +template +LIBC_INLINE constexpr simd rint(simd x) { + return __builtin_elementwise_rint(x); +} +template +LIBC_INLINE constexpr simd canonicalize(simd x) { + return __builtin_elementwise_canonicalize(x); +} +template +LIBC_INLINE constexpr simd copysign(simd x, simd y) { + return __builtin_elementwise_copysign(x, y); +} +template +LIBC_INLINE constexpr simd fmod(simd x, simd y) { + return __builtin_elementwise_fmod(x, y); +} + // Reduction operations. template > LIBC_INLINE constexpr T reduce(simd v, Op op = {}) { diff --git a/libc/src/string/memory_utils/generic/inline_strlen.h b/libc/src/string/memory_utils/generic/inline_strlen.h index 111da35b85eeb..68fba2afb3a5c 100644 --- a/libc/src/string/memory_utils/generic/inline_strlen.h +++ b/libc/src/string/memory_utils/generic/inline_strlen.h @@ -9,6 +9,7 @@ #ifndef LLVM_LIBC_SRC_STRING_MEMORY_UTILS_GENERIC_INLINE_STRLEN_H #define LLVM_LIBC_SRC_STRING_MEMORY_UTILS_GENERIC_INLINE_STRLEN_H +#include "src/__support/CPP/bit.h" #include "src/__support/CPP/simd.h" #include "src/__support/common.h"