NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
SIMD

SIMD 操作封装 更多...

类型定义

using neforce::simd::vec128_t = ::__m128i
 128-bit 整型向量(16×i8 / 8×i16 / 4×i32 / 2×i64)
using neforce::simd::vec128f_t = ::__m128
 128-bit 单精度浮点向量(4×f32)
using neforce::simd::vec128d_t = ::__m128d
 128-bit 双精度浮点向量(2×f64)
using neforce::simd::vec256_t = ::__m256i
 256-bit 整型向量(32×i8 / 16×i16 / 8×i32 / 4×i64,需 AVX2)
using neforce::simd::vec256f_t = ::__m256
 256-bit 单精度浮点向量(8×f32)
using neforce::simd::vec256d_t = ::__m256d
 256-bit 双精度浮点向量(4×f64)
using neforce::simd::vec512_t = ::__m512i
 512-bit 整型向量(64×i8 / 32×i16 / 16×i32 / 8×i64)
using neforce::simd::vec512f_t = ::__m512
 512-bit 单精度浮点向量(16×f32)
using neforce::simd::vec512d_t = ::__m512d
 512-bit 双精度浮点向量(8×f64)

函数

vec128_t neforce::simd::add_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号整数加法
vec128_t neforce::simd::add_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号整数加法
vec128_t neforce::simd::add_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 有符号整数加法
vec128_t neforce::simd::add_i64 (vec128_t a, vec128_t b) noexcept
 2 路 64-bit 有符号整数加法
vec128_t neforce::simd::sub_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号整数减法
vec128_t neforce::simd::sub_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号整数减法
vec128_t neforce::simd::sub_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 有符号整数减法
vec128_t neforce::simd::sub_i64 (vec128_t a, vec128_t b) noexcept
 2 路 64-bit 有符号整数减法
vec128_t neforce::simd::mullo_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 整数乘法(取低半部分)
vec128_t neforce::simd::mullo_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 整数乘法(取低半部分)
vec128_t neforce::simd::mulhi_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号整数乘法(取高半部分)
vec128_t neforce::simd::madds_i8x16 (vec128_t a, vec128_t b) noexcept
 有符号 8-bit 相邻对乘加:将相邻 i8 相乘后累加为 i16
vec128_t neforce::simd::saturated_add_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号饱和加法
vec128_t neforce::simd::saturated_add_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号饱和加法
vec128_t neforce::simd::saturated_add_u8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 无符号饱和加法
vec128_t neforce::simd::saturated_add_u16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 无符号饱和加法
vec128_t neforce::simd::saturated_sub_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号饱和减法
vec128_t neforce::simd::saturated_sub_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号饱和减法
vec128_t neforce::simd::saturated_sub_u8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 无符号饱和减法
vec128_t neforce::simd::saturated_sub_u16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 无符号饱和减法
vec128_t neforce::simd::abs_i8 (vec128_t v) noexcept
 16 路 8-bit 有符号整数绝对值
vec128_t neforce::simd::abs_i16 (vec128_t v) noexcept
 8 路 16-bit 有符号整数绝对值
vec128_t neforce::simd::abs_i32 (vec128_t v) noexcept
 4 路 32-bit 有符号整数绝对值
vec128_t neforce::simd::min_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号整数最小值
vec128_t neforce::simd::min_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号整数最小值
vec128_t neforce::simd::min_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 有符号整数最小值
vec128_t neforce::simd::min_u8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 无符号整数最小值
vec128_t neforce::simd::min_u16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 无符号整数最小值
vec128_t neforce::simd::min_u32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 无符号整数最小值
vec128_t neforce::simd::max_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号整数最大值
vec128_t neforce::simd::max_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号整数最大值
vec128_t neforce::simd::max_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 有符号整数最大值
vec128_t neforce::simd::max_u8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 无符号整数最大值
vec128_t neforce::simd::max_u16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 无符号整数最大值
vec128_t neforce::simd::max_u32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 无符号整数最大值
vec128_t neforce::simd::avg_u8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 无符号整数平均值(向偶数舍入)
vec128_t neforce::simd::avg_u16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 无符号整数平均值(向偶数舍入)
vec128_t neforce::simd::bit_and (vec128_t a, vec128_t b) noexcept
 按位与
vec128_t neforce::simd::bit_or (vec128_t a, vec128_t b) noexcept
 按位或
vec128_t neforce::simd::bit_xor (vec128_t a, vec128_t b) noexcept
 按位异或
vec128_t neforce::simd::bit_not (vec128_t v) noexcept
 按位取反
vec128_t neforce::simd::bit_andnot (vec128_t a, vec128_t b) noexcept
 按位与非
vec256_t neforce::simd::bit_and (vec256_t a, vec256_t b) noexcept
 按位与(256-bit)
vec256_t neforce::simd::bit_or (vec256_t a, vec256_t b) noexcept
 按位或(256-bit)
vec256_t neforce::simd::bit_xor (vec256_t a, vec256_t b) noexcept
 按位异或(256-bit)
vec512_t neforce::simd::bit_and (vec512_t a, vec512_t b) noexcept
 按位与(512-bit)
vec512_t neforce::simd::bit_or (vec512_t a, vec512_t b) noexcept
 按位或(512-bit)
vec512_t neforce::simd::bit_xor (vec512_t a, vec512_t b) noexcept
 按位异或(512-bit)
template<int Bytes>
vec128_t neforce::simd::shift_left_bytes (vec128_t v) noexcept
 将 128-bit 向量按字节左移
template<int Bytes>
vec128_t neforce::simd::shift_right_bytes (vec128_t v) noexcept
 将 128-bit 向量按字节右移
int neforce::simd::popcount (vec128_t v) noexcept
 统计 128-bit 向量中置位比特总数
vec128_t neforce::simd::fill_byte (byte_t c) noexcept
 将单字节广播到 128-bit SIMD 向量的全部 16 个位置
vec128_t neforce::simd::load_unaligned (const void *ptr) noexcept
 非对齐加载 16 字节到 128-bit SIMD 向量
vec128_t neforce::simd::match_bytes (vec128_t a, vec128_t b) noexcept
 逐字节比较两个 128-bit SIMD 向量的相等性
int neforce::simd::to_bitmask (vec128_t v) noexcept
 提取向量中每个字节的最高位,组成 16-bit 掩码
bool neforce::simd::contains_byte (vec128_t v, byte_t c) noexcept
 检测向量中是否包含指定字节
int neforce::simd::find_first_byte (vec128_t v, byte_t c) noexcept
 查找向量中指定字节首次出现的位置
int neforce::simd::find_last_byte (vec128_t v, byte_t c) noexcept
 查找向量中指定字节末次出现的位置
int neforce::simd::count_byte (vec128_t v, byte_t c) noexcept
 统计向量中指定字节出现的次数
bool neforce::simd::is_all_zero (vec128_t v) noexcept
 检测向量是否全为零
bool neforce::simd::has_any_zero (vec128_t v) noexcept
 检测向量中是否存在零字节
vec128_t neforce::simd::reverse_bytes (vec128_t v) noexcept
 反转向量中 16 字节的顺序
vec128_t neforce::simd::shuffle_bytes (vec128_t v, vec128_t indices) noexcept
 按索引表逐字节重排向量
vec128_t neforce::simd::blend_bytes (vec128_t a, vec128_t b, vec128_t mask) noexcept
 按掩码逐字节混合两个向量
void neforce::simd::store_bytes_n (void *ptr, vec128_t v, int n) noexcept
 存储向量的前 n 字节到内存,不写入越界数据
vec128_t neforce::simd::load_bytes_n (const void *ptr, int n) noexcept
 从内存加载 n 字节到向量,不足部分填零
vec128_t neforce::simd::cmpeq_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 相等比较
vec128_t neforce::simd::cmpeq_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 相等比较
vec128_t neforce::simd::cmpeq_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 相等比较
vec128_t neforce::simd::cmpeq_i64 (vec128_t a, vec128_t b) noexcept
 2 路 64-bit 相等比较
vec128_t neforce::simd::cmpgt_i8 (vec128_t a, vec128_t b) noexcept
 16 路 8-bit 有符号大于比较
vec128_t neforce::simd::cmpgt_i16 (vec128_t a, vec128_t b) noexcept
 8 路 16-bit 有符号大于比较
vec128_t neforce::simd::cmpgt_i32 (vec128_t a, vec128_t b) noexcept
 4 路 32-bit 有符号大于比较
vec128_t neforce::simd::cmpgt_i64 (vec128_t a, vec128_t b) noexcept
 2 路 64-bit 有符号大于比较
vec128f_t neforce::simd::cmpeq_f32 (vec128f_t a, vec128f_t b) noexcept
 4 路单精度浮点相等比较
vec128f_t neforce::simd::cmpgt_f32 (vec128f_t a, vec128f_t b) noexcept
 4 路单精度浮点大于比较
vec128f_t neforce::simd::cmpge_f32 (vec128f_t a, vec128f_t b) noexcept
 4 路单精度浮点大于等于比较
vec128f_t neforce::simd::cmplt_f32 (vec128f_t a, vec128f_t b) noexcept
 4 路单精度浮点小于比较
vec128f_t neforce::simd::cmple_f32 (vec128f_t a, vec128f_t b) noexcept
 4 路单精度浮点小于等于比较
vec128d_t neforce::simd::cmpeq_f64 (vec128d_t a, vec128d_t b) noexcept
 2 路双精度浮点相等比较
vec128d_t neforce::simd::cmpgt_f64 (vec128d_t a, vec128d_t b) noexcept
 2 路双精度浮点大于比较
vec128d_t neforce::simd::cmpge_f64 (vec128d_t a, vec128d_t b) noexcept
 2 路双精度浮点大于等于比较
vec128d_t neforce::simd::cmplt_f64 (vec128d_t a, vec128d_t b) noexcept
 2 路双精度浮点小于比较
vec128d_t neforce::simd::cmple_f64 (vec128d_t a, vec128d_t b) noexcept
 2 路双精度浮点小于等于比较
vec128_t neforce::simd::load_aligned (const void *ptr) noexcept
 对齐加载 128-bit 向量
vec128_t neforce::simd::loadu_si128 (const void *ptr) noexcept
 非对齐加载 128-bit 向量
vec256_t neforce::simd::loadu_si256 (const void *ptr) noexcept
 非对齐加载 256-bit 向量
vec512_t neforce::simd::loadu_si512 (const void *ptr) noexcept
 非对齐加载 512-bit 向量
vec128f_t neforce::simd::loadu_ps (const void *ptr) noexcept
 非对齐加载单精度浮点向量(128-bit)
vec128d_t neforce::simd::loadu_pd (const void *ptr) noexcept
 非对齐加载双精度浮点向量(128-bit)
void neforce::simd::store_aligned (void *ptr, vec128_t v) noexcept
 对齐存储 128-bit 向量
void neforce::simd::storeu_si128 (void *ptr, vec128_t v) noexcept
 非对齐存储 128-bit 向量
void neforce::simd::storeu_si256 (void *ptr, vec256_t v) noexcept
 非对齐存储 256-bit 向量
void neforce::simd::storeu_si512 (void *ptr, vec512_t v) noexcept
 非对齐存储 512-bit 向量
void neforce::simd::store_stream (void *ptr, vec128_t v) noexcept
 流式存储 128-bit 向量,绕过缓存
void neforce::simd::store_stream256 (void *ptr, vec256_t v) noexcept
 流式存储 256-bit 向量,绕过缓存
void neforce::simd::store_stream512 (void *ptr, vec512_t v) noexcept
 流式存储 512-bit 向量,绕过缓存
vec128_t neforce::simd::load_stream (const void *ptr) noexcept
 流式加载 128-bit 向量
void neforce::simd::prefetch_read (const void *ptr) noexcept
 预取数据到所有缓存层级以供读取
void neforce::simd::prefetch_write (const void *ptr) noexcept
 预取数据到所有缓存层级以供写入
void neforce::simd::prefetch_l1 (const void *ptr) noexcept
 预取数据到 L1 缓存以供读取
void neforce::simd::prefetch_l2 (const void *ptr) noexcept
 预取数据到 L2 缓存
void neforce::simd::prefetch_nta (const void *ptr) noexcept
 预取数据到缓存槽

详细描述

SIMD 操作封装

函数说明

◆ abs_i16()

vec128_t neforce::simd::abs_i16 ( vec128_t v)
inlinenoexcept

8 路 16-bit 有符号整数绝对值

参数
v输入向量(8×i16)
返回
abs(v)(8×i16)
注解
输入 INT16_MIN 时不饱和

在文件 arithmetic.hpp569 行定义.

引用了 abs_i16().

被这些函数引用 abs_i16().

◆ abs_i32()

vec128_t neforce::simd::abs_i32 ( vec128_t v)
inlinenoexcept

4 路 32-bit 有符号整数绝对值

参数
v输入向量(4×i32)
返回
abs(v)(4×i32)
注解
输入 INT32_MIN 时不饱和

在文件 arithmetic.hpp596 行定义.

引用了 abs_i32().

被这些函数引用 abs_i32().

◆ abs_i8()

vec128_t neforce::simd::abs_i8 ( vec128_t v)
inlinenoexcept

16 路 8-bit 有符号整数绝对值

参数
v输入向量(16×i8)
返回
abs(v)(16×i8)
注解
输入 INT8_MIN 时不饱和

在文件 arithmetic.hpp542 行定义.

引用了 abs_i8().

被这些函数引用 abs_i8().

◆ add_i16()

vec128_t neforce::simd::add_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号整数加法

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
a + b(8×i16,溢出回绕)

在文件 arithmetic.hpp47 行定义.

引用了 add_i16().

被这些函数引用 add_i16().

◆ add_i32()

vec128_t neforce::simd::add_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 有符号整数加法

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
a + b(4×i32,溢出回绕)

在文件 arithmetic.hpp70 行定义.

引用了 add_i32().

被这些函数引用 add_i32().

◆ add_i64()

vec128_t neforce::simd::add_i64 ( vec128_t a,
vec128_t b )
inlinenoexcept

2 路 64-bit 有符号整数加法

参数
a左操作数(2×i64)
b右操作数(2×i64)
返回
a + b(2×i64,溢出回绕)

在文件 arithmetic.hpp93 行定义.

引用了 add_i64().

被这些函数引用 add_i64().

◆ add_i8()

vec128_t neforce::simd::add_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号整数加法

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
a + b(16×i8,溢出回绕)

在文件 arithmetic.hpp27 行定义.

引用了 add_i8().

被这些函数引用 add_i8().

◆ avg_u16()

vec128_t neforce::simd::avg_u16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 无符号整数平均值(向偶数舍入)

参数
a左操作数(8×u16)
b右操作数(8×u16)
返回
(a + b + 1) / 2 逐元素

在文件 arithmetic.hpp942 行定义.

引用了 avg_u16().

被这些函数引用 avg_u16().

◆ avg_u8()

vec128_t neforce::simd::avg_u8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 无符号整数平均值(向偶数舍入)

参数
a左操作数(16×u8)
b右操作数(16×u8)
返回
(a + b + 1) / 2 逐元素

在文件 arithmetic.hpp922 行定义.

引用了 avg_u8().

被这些函数引用 avg_u8().

◆ bit_and() [1/3]

vec128_t neforce::simd::bit_and ( vec128_t a,
vec128_t b )
inlinenoexcept

按位与

参数
a左操作数
b右操作数
返回
a & b

在文件 bitwise.hpp26 行定义.

引用了 bit_and().

被这些函数引用 bit_and(), bit_and() , 以及 bit_and().

◆ bit_and() [2/3]

vec256_t neforce::simd::bit_and ( vec256_t a,
vec256_t b )
inlinenoexcept

按位与(256-bit)

参数
a左操作数
b右操作数
返回
a & b

在文件 bitwise.hpp125 行定义.

引用了 bit_and().

◆ bit_and() [3/3]

vec512_t neforce::simd::bit_and ( vec512_t a,
vec512_t b )
inlinenoexcept

按位与(512-bit)

参数
a左操作数
b右操作数
返回
a & b

在文件 bitwise.hpp179 行定义.

引用了 bit_and().

◆ bit_andnot()

vec128_t neforce::simd::bit_andnot ( vec128_t a,
vec128_t b )
inlinenoexcept

按位与非

参数
a左操作数
b右操作数
返回
a & ~b

在文件 bitwise.hpp105 行定义.

引用了 bit_andnot().

被这些函数引用 bit_andnot().

◆ bit_not()

vec128_t neforce::simd::bit_not ( vec128_t v)
inlinenoexcept

按位取反

参数
v输入向量
返回
~v

在文件 bitwise.hpp85 行定义.

引用了 bit_not().

被这些函数引用 bit_not().

◆ bit_or() [1/3]

vec128_t neforce::simd::bit_or ( vec128_t a,
vec128_t b )
inlinenoexcept

按位或

参数
a左操作数
b右操作数
返回
a | b

在文件 bitwise.hpp46 行定义.

引用了 bit_or().

被这些函数引用 bit_or(), bit_or() , 以及 bit_or().

◆ bit_or() [2/3]

vec256_t neforce::simd::bit_or ( vec256_t a,
vec256_t b )
inlinenoexcept

按位或(256-bit)

参数
a左操作数
b右操作数
返回
a | b

在文件 bitwise.hpp143 行定义.

引用了 bit_or().

◆ bit_or() [3/3]

vec512_t neforce::simd::bit_or ( vec512_t a,
vec512_t b )
inlinenoexcept

按位或(512-bit)

参数
a左操作数
b右操作数
返回
a | b

在文件 bitwise.hpp197 行定义.

引用了 bit_or().

◆ bit_xor() [1/3]

vec128_t neforce::simd::bit_xor ( vec128_t a,
vec128_t b )
inlinenoexcept

按位异或

参数
a左操作数
b右操作数
返回
a ^ b

在文件 bitwise.hpp66 行定义.

引用了 bit_xor().

被这些函数引用 bit_xor(), bit_xor() , 以及 bit_xor().

◆ bit_xor() [2/3]

vec256_t neforce::simd::bit_xor ( vec256_t a,
vec256_t b )
inlinenoexcept

按位异或(256-bit)

参数
a左操作数
b右操作数
返回
a ^ b

在文件 bitwise.hpp161 行定义.

引用了 bit_xor().

◆ bit_xor() [3/3]

vec512_t neforce::simd::bit_xor ( vec512_t a,
vec512_t b )
inlinenoexcept

按位异或(512-bit)

参数
a左操作数
b右操作数
返回
a ^ b

在文件 bitwise.hpp215 行定义.

引用了 bit_xor().

◆ blend_bytes()

vec128_t neforce::simd::blend_bytes ( vec128_t a,
vec128_t b,
vec128_t mask )
inlinenoexcept

按掩码逐字节混合两个向量

参数
a掩码位为 0 时选取的向量
b掩码位为 1 时选取的向量
mask字节掩码,每字节最高位为 1 则选取 b,否则选取 a
返回
混合后的向量

在文件 bytes.hpp348 行定义.

引用了 blend_bytes().

被这些函数引用 blend_bytes().

◆ cmpeq_f32()

vec128f_t neforce::simd::cmpeq_f32 ( vec128f_t a,
vec128f_t b )
inlinenoexcept

4 路单精度浮点相等比较

参数
a左操作数(4×f32)
b右操作数(4×f32)
返回
a == b 位置为全 1,否则全 0

在文件 simd/compare.hpp216 行定义.

引用了 cmpeq_f32().

被这些函数引用 cmpeq_f32().

◆ cmpeq_f64()

vec128d_t neforce::simd::cmpeq_f64 ( vec128d_t a,
vec128d_t b )
inlinenoexcept

2 路双精度浮点相等比较

参数
a左操作数(2×f64)
b右操作数(2×f64)
返回
a == b 位置为全 1,否则全 0

在文件 simd/compare.hpp316 行定义.

引用了 cmpeq_f64().

被这些函数引用 cmpeq_f64().

◆ cmpeq_i16()

vec128_t neforce::simd::cmpeq_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 相等比较

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
a == b 位置为全 1,否则全 0

在文件 simd/compare.hpp46 行定义.

引用了 cmpeq_i16().

被这些函数引用 cmpeq_i16().

◆ cmpeq_i32()

vec128_t neforce::simd::cmpeq_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 相等比较

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
a == b 位置为全 1,否则全 0

在文件 simd/compare.hpp69 行定义.

引用了 cmpeq_i32().

被这些函数引用 cmpeq_i32().

◆ cmpeq_i64()

vec128_t neforce::simd::cmpeq_i64 ( vec128_t a,
vec128_t b )
inlinenoexcept

2 路 64-bit 相等比较

参数
a左操作数(2×i64)
b右操作数(2×i64)
返回
a == b 位置为全 1,否则全 0

在文件 simd/compare.hpp92 行定义.

引用了 cmpeq_i64().

被这些函数引用 cmpeq_i64().

◆ cmpeq_i8()

vec128_t neforce::simd::cmpeq_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 相等比较

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
a == b 位置为全 1,否则全 0

在文件 simd/compare.hpp26 行定义.

引用了 cmpeq_i8().

被这些函数引用 cmpeq_i8().

◆ cmpge_f32()

vec128f_t neforce::simd::cmpge_f32 ( vec128f_t a,
vec128f_t b )
inlinenoexcept

4 路单精度浮点大于等于比较

参数
a左操作数(4×f32)
b右操作数(4×f32)
返回
a >= b 位置为全 1,否则全 0

在文件 simd/compare.hpp256 行定义.

引用了 cmpge_f32().

被这些函数引用 cmpge_f32().

◆ cmpge_f64()

vec128d_t neforce::simd::cmpge_f64 ( vec128d_t a,
vec128d_t b )
inlinenoexcept

2 路双精度浮点大于等于比较

参数
a左操作数(2×f64)
b右操作数(2×f64)
返回
a >= b 位置为全 1,否则全 0

在文件 simd/compare.hpp356 行定义.

引用了 cmpge_f64().

被这些函数引用 cmpge_f64().

◆ cmpgt_f32()

vec128f_t neforce::simd::cmpgt_f32 ( vec128f_t a,
vec128f_t b )
inlinenoexcept

4 路单精度浮点大于比较

参数
a左操作数(4×f32)
b右操作数(4×f32)
返回
a > b 位置为全 1,否则全 0

在文件 simd/compare.hpp236 行定义.

引用了 cmpgt_f32().

被这些函数引用 cmpgt_f32().

◆ cmpgt_f64()

vec128d_t neforce::simd::cmpgt_f64 ( vec128d_t a,
vec128d_t b )
inlinenoexcept

2 路双精度浮点大于比较

参数
a左操作数(2×f64)
b右操作数(2×f64)
返回
a > b 位置为全 1,否则全 0

在文件 simd/compare.hpp336 行定义.

引用了 cmpgt_f64().

被这些函数引用 cmpgt_f64().

◆ cmpgt_i16()

vec128_t neforce::simd::cmpgt_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号大于比较

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
a > b 位置为全 1,否则全 0

在文件 simd/compare.hpp140 行定义.

引用了 cmpgt_i16().

被这些函数引用 cmpgt_i16().

◆ cmpgt_i32()

vec128_t neforce::simd::cmpgt_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 有符号大于比较

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
a > b 位置为全 1,否则全 0

在文件 simd/compare.hpp163 行定义.

引用了 cmpgt_i32().

被这些函数引用 cmpgt_i32().

◆ cmpgt_i64()

vec128_t neforce::simd::cmpgt_i64 ( vec128_t a,
vec128_t b )
inlinenoexcept

2 路 64-bit 有符号大于比较

参数
a左操作数(2×i64)
b右操作数(2×i64)
返回
a > b 位置为全 1,否则全 0

在文件 simd/compare.hpp186 行定义.

引用了 cmpgt_i64().

被这些函数引用 cmpgt_i64().

◆ cmpgt_i8()

vec128_t neforce::simd::cmpgt_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号大于比较

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
a > b 位置为全 1,否则全 0

在文件 simd/compare.hpp120 行定义.

引用了 cmpgt_i8().

被这些函数引用 cmpgt_i8().

◆ cmple_f32()

vec128f_t neforce::simd::cmple_f32 ( vec128f_t a,
vec128f_t b )
inlinenoexcept

4 路单精度浮点小于等于比较

参数
a左操作数(4×f32)
b右操作数(4×f32)
返回
a <= b 位置为全 1,否则全 0

在文件 simd/compare.hpp296 行定义.

引用了 cmple_f32().

被这些函数引用 cmple_f32().

◆ cmple_f64()

vec128d_t neforce::simd::cmple_f64 ( vec128d_t a,
vec128d_t b )
inlinenoexcept

2 路双精度浮点小于等于比较

参数
a左操作数(2×f64)
b右操作数(2×f64)
返回
a <= b 位置为全 1,否则全 0

在文件 simd/compare.hpp396 行定义.

引用了 cmple_f64().

被这些函数引用 cmple_f64().

◆ cmplt_f32()

vec128f_t neforce::simd::cmplt_f32 ( vec128f_t a,
vec128f_t b )
inlinenoexcept

4 路单精度浮点小于比较

参数
a左操作数(4×f32)
b右操作数(4×f32)
返回
a < b 位置为全 1,否则全 0

在文件 simd/compare.hpp276 行定义.

引用了 cmplt_f32().

被这些函数引用 cmplt_f32().

◆ cmplt_f64()

vec128d_t neforce::simd::cmplt_f64 ( vec128d_t a,
vec128d_t b )
inlinenoexcept

2 路双精度浮点小于比较

参数
a左操作数(2×f64)
b右操作数(2×f64)
返回
a < b 位置为全 1,否则全 0

在文件 simd/compare.hpp376 行定义.

引用了 cmplt_f64().

被这些函数引用 cmplt_f64().

◆ contains_byte()

bool neforce::simd::contains_byte ( vec128_t v,
byte_t c )
inlinenoexcept

检测向量中是否包含指定字节

参数
v输入向量
c待检测的字节值
返回
存在返回 true,否则返回 false

在文件 bytes.hpp114 行定义.

引用了 contains_byte().

被这些函数引用 contains_byte().

◆ count_byte()

int neforce::simd::count_byte ( vec128_t v,
byte_t c )
inlinenoexcept

统计向量中指定字节出现的次数

参数
v输入向量
c待统计的字节值
返回
出现次数(0-16)

在文件 bytes.hpp206 行定义.

引用了 neforce::count() , 以及 count_byte().

被这些函数引用 count_byte().

◆ fill_byte()

vec128_t neforce::simd::fill_byte ( byte_t c)
inlinenoexcept

将单字节广播到 128-bit SIMD 向量的全部 16 个位置

参数
c源字节值
返回
所有字节均为 c 的向量

在文件 bytes.hpp26 行定义.

引用了 fill_byte().

被这些函数引用 fill_byte().

◆ find_first_byte()

int neforce::simd::find_first_byte ( vec128_t v,
byte_t c )
inlinenoexcept

查找向量中指定字节首次出现的位置

参数
v输入向量
c待查找的字节值
返回
首次出现的索引(0-15),未找到返回 -1

在文件 bytes.hpp142 行定义.

引用了 neforce::countr_zero() , 以及 find_first_byte().

被这些函数引用 find_first_byte().

◆ find_last_byte()

int neforce::simd::find_last_byte ( vec128_t v,
byte_t c )
inlinenoexcept

查找向量中指定字节末次出现的位置

参数
v输入向量
c待查找的字节值
返回
末次出现的索引(0-15),未找到返回 -1

在文件 bytes.hpp174 行定义.

引用了 find_last_byte() , 以及 neforce::highest_set_bit_pos().

被这些函数引用 find_last_byte().

◆ has_any_zero()

bool neforce::simd::has_any_zero ( vec128_t v)
inlinenoexcept

检测向量中是否存在零字节

参数
v输入向量
返回
存在零字节返回 true,否则返回 false

在文件 bytes.hpp262 行定义.

引用了 has_any_zero().

被这些函数引用 has_any_zero().

◆ is_all_zero()

bool neforce::simd::is_all_zero ( vec128_t v)
inlinenoexcept

检测向量是否全为零

参数
v输入向量
返回
全零返回 true,否则返回 false

在文件 bytes.hpp241 行定义.

引用了 is_all_zero().

被这些函数引用 is_all_zero().

◆ load_aligned()

vec128_t neforce::simd::load_aligned ( const void * ptr)
inlinenoexcept

对齐加载 128-bit 向量

参数
ptr16 字节对齐的内存地址
返回
加载的向量
警告
ptr 必须 16 字节对齐,否则为未定义行为

在文件 simd/memory.hpp26 行定义.

引用了 load_aligned().

被这些函数引用 load_aligned().

◆ load_bytes_n()

vec128_t neforce::simd::load_bytes_n ( const void * ptr,
int n )
inlinenoexcept

从内存加载 n 字节到向量,不足部分填零

参数
ptr源内存地址
n要读取的字节数(0-16)
返回
前 n 字节为源数据、剩余字节为零的向量
注解
用于需要部分加载的头部/尾部处理场景

在文件 bytes.hpp400 行定义.

引用了 load_bytes_n().

被这些函数引用 load_bytes_n().

◆ load_stream()

vec128_t neforce::simd::load_stream ( const void * ptr)
inlinenoexcept

流式加载 128-bit 向量

参数
ptr源内存地址
返回
加载的向量
注解
适用于一次性读取后不会再次访问的数据流,ptr 建议 16 字节对齐以获得最佳性能

在文件 simd/memory.hpp266 行定义.

引用了 load_stream() , 以及 loadu_si128().

被这些函数引用 load_stream().

◆ load_unaligned()

vec128_t neforce::simd::load_unaligned ( const void * ptr)
inlinenoexcept

非对齐加载 16 字节到 128-bit SIMD 向量

参数
ptr源内存地址(无需 16 字节对齐)
返回
加载的向量

在文件 bytes.hpp45 行定义.

引用了 load_unaligned().

被这些函数引用 load_unaligned().

◆ loadu_pd()

vec128d_t neforce::simd::loadu_pd ( const void * ptr)
inlinenoexcept

非对齐加载双精度浮点向量(128-bit)

参数
ptr源内存地址
返回
加载的向量

在文件 simd/memory.hpp122 行定义.

引用了 loadu_pd().

被这些函数引用 loadu_pd().

◆ loadu_ps()

vec128f_t neforce::simd::loadu_ps ( const void * ptr)
inlinenoexcept

非对齐加载单精度浮点向量(128-bit)

参数
ptr源内存地址
返回
加载的向量

在文件 simd/memory.hpp102 行定义.

引用了 loadu_ps().

被这些函数引用 loadu_ps().

◆ loadu_si128()

vec128_t neforce::simd::loadu_si128 ( const void * ptr)
inlinenoexcept

非对齐加载 128-bit 向量

参数
ptr源内存地址
返回
加载的向量

在文件 simd/memory.hpp46 行定义.

引用了 loadu_si128().

被这些函数引用 load_stream() , 以及 loadu_si128().

◆ loadu_si256()

vec256_t neforce::simd::loadu_si256 ( const void * ptr)
inlinenoexcept

非对齐加载 256-bit 向量

参数
ptr源内存地址
返回
加载的向量

在文件 simd/memory.hpp66 行定义.

引用了 loadu_si256().

被这些函数引用 loadu_si256().

◆ loadu_si512()

vec512_t neforce::simd::loadu_si512 ( const void * ptr)
inlinenoexcept

非对齐加载 512-bit 向量

参数
ptr源内存地址
返回
加载的向量

在文件 simd/memory.hpp84 行定义.

引用了 loadu_si512().

被这些函数引用 loadu_si512().

◆ madds_i8x16()

vec128_t neforce::simd::madds_i8x16 ( vec128_t a,
vec128_t b )
inlinenoexcept

有符号 8-bit 相邻对乘加:将相邻 i8 相乘后累加为 i16

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
[a[0]*b[0]+a[1]*b[1], a[2]*b[2]+a[3]*b[3], ...](8×i16)
注解
功能等价于 SSE 的 pmaddwd 概念但作用于 8→16 位

在文件 arithmetic.hpp291 行定义.

引用了 madds_i8x16().

被这些函数引用 madds_i8x16().

◆ match_bytes()

vec128_t neforce::simd::match_bytes ( vec128_t a,
vec128_t b )
inlinenoexcept

逐字节比较两个 128-bit SIMD 向量的相等性

参数
a左操作数
b右操作数
返回
相等位置为 0xFF,不等位置为 0x00 的向量

在文件 bytes.hpp66 行定义.

引用了 match_bytes().

被这些函数引用 match_bytes().

◆ max_i16()

vec128_t neforce::simd::max_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号整数最大值

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
max(a, b) 逐元素

在文件 arithmetic.hpp798 行定义.

引用了 max_i16().

被这些函数引用 max_i16().

◆ max_i32()

vec128_t neforce::simd::max_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 有符号整数最大值

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
max(a, b) 逐元素

在文件 arithmetic.hpp821 行定义.

引用了 max_i32().

被这些函数引用 max_i32().

◆ max_i8()

vec128_t neforce::simd::max_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号整数最大值

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
max(a, b) 逐元素

在文件 arithmetic.hpp773 行定义.

引用了 max_i8() , 以及 neforce::sign().

被这些函数引用 max_i8().

◆ max_u16()

vec128_t neforce::simd::max_u16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 无符号整数最大值

参数
a左操作数(8×u16)
b右操作数(8×u16)
返回
max(a, b) 逐元素

在文件 arithmetic.hpp867 行定义.

引用了 max_u16().

被这些函数引用 max_u16().

◆ max_u32()

vec128_t neforce::simd::max_u32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 无符号整数最大值

参数
a左操作数(4×u32)
b右操作数(4×u32)
返回
max(a, b) 逐元素

在文件 arithmetic.hpp895 行定义.

引用了 max_u32() , 以及 neforce::sign().

被这些函数引用 max_u32().

◆ max_u8()

vec128_t neforce::simd::max_u8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 无符号整数最大值

参数
a左操作数(16×u8)
b右操作数(16×u8)
返回
max(a, b) 逐元素

在文件 arithmetic.hpp847 行定义.

引用了 max_u8().

被这些函数引用 max_u8().

◆ min_i16()

vec128_t neforce::simd::min_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号整数最小值

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
min(a, b) 逐元素

在文件 arithmetic.hpp650 行定义.

引用了 min_i16().

被这些函数引用 min_i16().

◆ min_i32()

vec128_t neforce::simd::min_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 有符号整数最小值

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
min(a, b) 逐元素

在文件 arithmetic.hpp673 行定义.

引用了 min_i32().

被这些函数引用 min_i32().

◆ min_i8()

vec128_t neforce::simd::min_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号整数最小值

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
min(a, b) 逐元素

在文件 arithmetic.hpp623 行定义.

引用了 min_i8() , 以及 neforce::sign().

被这些函数引用 min_i8().

◆ min_u16()

vec128_t neforce::simd::min_u16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 无符号整数最小值

参数
a左操作数(8×u16)
b右操作数(8×u16)
返回
min(a, b) 逐元素

在文件 arithmetic.hpp719 行定义.

引用了 min_u16().

被这些函数引用 min_u16().

◆ min_u32()

vec128_t neforce::simd::min_u32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 无符号整数最小值

参数
a左操作数(4×u32)
b右操作数(4×u32)
返回
min(a, b) 逐元素

在文件 arithmetic.hpp746 行定义.

引用了 min_u32() , 以及 neforce::sign().

被这些函数引用 min_u32().

◆ min_u8()

vec128_t neforce::simd::min_u8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 无符号整数最小值

参数
a左操作数(16×u8)
b右操作数(16×u8)
返回
min(a, b) 逐元素

在文件 arithmetic.hpp699 行定义.

引用了 min_u8().

被这些函数引用 min_u8().

◆ mulhi_i16()

vec128_t neforce::simd::mulhi_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号整数乘法(取高半部分)

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
(a * b) >> 16(8×i16,高 16-bit 算术结果)

在文件 arithmetic.hpp257 行定义.

引用了 mulhi_i16().

被这些函数引用 mulhi_i16().

◆ mullo_i16()

vec128_t neforce::simd::mullo_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 整数乘法(取低半部分)

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
(a * b) & 0xFFFF(8×i16,低 16-bit)

在文件 arithmetic.hpp205 行定义.

引用了 mullo_i16().

被这些函数引用 mullo_i16().

◆ mullo_i32()

vec128_t neforce::simd::mullo_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 整数乘法(取低半部分)

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
(a * b) & 0xFFFFFFFF(4×i32,低 32-bit)

在文件 arithmetic.hpp228 行定义.

引用了 mullo_i32().

被这些函数引用 mullo_i32().

◆ popcount()

int neforce::simd::popcount ( vec128_t v)
inlinenoexcept

统计 128-bit 向量中置位比特总数

参数
v输入向量
返回
置位比特数(0-128)

在文件 bitwise.hpp292 行定义.

引用了 popcount().

被这些函数引用 popcount().

◆ prefetch_l1()

void neforce::simd::prefetch_l1 ( const void * ptr)
inlinenoexcept

预取数据到 L1 缓存以供读取

参数
ptr预取的内存地址

在文件 simd/memory.hpp302 行定义.

引用了 prefetch_l1().

被这些函数引用 prefetch_l1().

◆ prefetch_l2()

void neforce::simd::prefetch_l2 ( const void * ptr)
inlinenoexcept

预取数据到 L2 缓存

参数
ptr预取的内存地址

在文件 simd/memory.hpp316 行定义.

引用了 prefetch_l2().

被这些函数引用 prefetch_l2().

◆ prefetch_nta()

void neforce::simd::prefetch_nta ( const void * ptr)
inlinenoexcept

预取数据到缓存槽

参数
ptr预取的内存地址
注解
适用于仅访问一次的大块数据流式读取

在文件 simd/memory.hpp331 行定义.

引用了 prefetch_nta().

被这些函数引用 prefetch_nta().

◆ prefetch_read()

void neforce::simd::prefetch_read ( const void * ptr)
inlinenoexcept

预取数据到所有缓存层级以供读取

参数
ptr预取的内存地址

在文件 simd/memory.hpp278 行定义.

引用了 prefetch_read().

被这些函数引用 prefetch_read().

◆ prefetch_write()

void neforce::simd::prefetch_write ( const void * ptr)
inlinenoexcept

预取数据到所有缓存层级以供写入

参数
ptr预取的内存地址

在文件 simd/memory.hpp290 行定义.

引用了 prefetch_write().

被这些函数引用 prefetch_write().

◆ reverse_bytes()

vec128_t neforce::simd::reverse_bytes ( vec128_t v)
inlinenoexcept

反转向量中 16 字节的顺序

参数
v输入向量
返回
字节逆序排列的向量

在文件 bytes.hpp284 行定义.

引用了 reverse_bytes().

被这些函数引用 reverse_bytes().

◆ saturated_add_i16()

vec128_t neforce::simd::saturated_add_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号饱和加法

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
饱和到 [-32768, 32767] 的加法结果

在文件 arithmetic.hpp359 行定义.

引用了 saturated_add_i16().

被这些函数引用 saturated_add_i16().

◆ saturated_add_i8()

vec128_t neforce::simd::saturated_add_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号饱和加法

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
饱和到 [-128, 127] 的加法结果

在文件 arithmetic.hpp332 行定义.

引用了 saturated_add_i8().

被这些函数引用 saturated_add_i8().

◆ saturated_add_u16()

vec128_t neforce::simd::saturated_add_u16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 无符号饱和加法

参数
a左操作数(8×u16)
b右操作数(8×u16)
返回
饱和到 [0, 65535] 的加法结果

在文件 arithmetic.hpp410 行定义.

引用了 saturated_add_u16(), neforce::sign() , 以及 neforce::sum().

被这些函数引用 saturated_add_u16().

◆ saturated_add_u8()

vec128_t neforce::simd::saturated_add_u8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 无符号饱和加法

参数
a左操作数(16×u8)
b右操作数(16×u8)
返回
饱和到 [0, 255] 的加法结果

在文件 arithmetic.hpp389 行定义.

引用了 saturated_add_u8().

被这些函数引用 saturated_add_u8().

◆ saturated_sub_i16()

vec128_t neforce::simd::saturated_sub_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号饱和减法

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
饱和到 [-32768, 32767] 的减法结果

在文件 arithmetic.hpp464 行定义.

引用了 saturated_sub_i16().

被这些函数引用 saturated_sub_i16().

◆ saturated_sub_i8()

vec128_t neforce::simd::saturated_sub_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号饱和减法

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
饱和到 [-128, 127] 的减法结果

在文件 arithmetic.hpp437 行定义.

引用了 saturated_sub_i8().

被这些函数引用 saturated_sub_i8().

◆ saturated_sub_u16()

vec128_t neforce::simd::saturated_sub_u16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 无符号饱和减法

参数
a左操作数(8×u16)
b右操作数(8×u16)
返回
饱和到 [0, 65535] 的减法结果

在文件 arithmetic.hpp515 行定义.

引用了 saturated_sub_u16() , 以及 neforce::sign().

被这些函数引用 saturated_sub_u16().

◆ saturated_sub_u8()

vec128_t neforce::simd::saturated_sub_u8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 无符号饱和减法

参数
a左操作数(16×u8)
b右操作数(16×u8)
返回
饱和到 [0, 255] 的减法结果

在文件 arithmetic.hpp494 行定义.

引用了 saturated_sub_u8().

被这些函数引用 saturated_sub_u8().

◆ shift_left_bytes()

template<int Bytes>
vec128_t neforce::simd::shift_left_bytes ( vec128_t v)
inlinenoexcept

将 128-bit 向量按字节左移

模板参数
Bytes左移字节数
参数
v输入向量
返回
左移后右端补零的向量

在文件 bitwise.hpp234 行定义.

引用了 shift_left_bytes().

被这些函数引用 shift_left_bytes().

◆ shift_right_bytes()

template<int Bytes>
vec128_t neforce::simd::shift_right_bytes ( vec128_t v)
inlinenoexcept

将 128-bit 向量按字节右移

模板参数
Bytes右移字节数
参数
v输入向量
返回
右移后左端补零的向量

在文件 bitwise.hpp264 行定义.

引用了 shift_right_bytes().

被这些函数引用 shift_right_bytes().

◆ shuffle_bytes()

vec128_t neforce::simd::shuffle_bytes ( vec128_t v,
vec128_t indices )
inlinenoexcept

按索引表逐字节重排向量

参数
v输入向量
indices索引向量,每字节低 4 位为源字节索引(0-15)
返回
重排后的向量
注解
当某索引字节高 4 位非零(SSE)或 >= 16(NEON)时,对应结果字节置零

在文件 bytes.hpp315 行定义.

引用了 shuffle_bytes().

被这些函数引用 shuffle_bytes().

◆ store_aligned()

void neforce::simd::store_aligned ( void * ptr,
vec128_t v )
inlinenoexcept

对齐存储 128-bit 向量

参数
ptr16 字节对齐的目标内存地址
v待存储的向量
警告
ptr 必须 16 字节对齐,否则为未定义行为

在文件 simd/memory.hpp143 行定义.

引用了 store_aligned().

被这些函数引用 store_aligned().

◆ store_bytes_n()

void neforce::simd::store_bytes_n ( void * ptr,
vec128_t v,
int n )
inlinenoexcept

存储向量的前 n 字节到内存,不写入越界数据

参数
ptr目标内存地址
v源向量
n要写入的字节数(0-16)
注解
用于需要部分写入的尾部处理场景

在文件 bytes.hpp373 行定义.

引用了 store_bytes_n().

被这些函数引用 store_bytes_n().

◆ store_stream()

void neforce::simd::store_stream ( void * ptr,
vec128_t v )
inlinenoexcept

流式存储 128-bit 向量,绕过缓存

参数
ptr目标内存地址
v待存储的向量
注解
适用于一次性写入后不会立即读取的大块数据,ptr 建议 16 字节对齐以获得最佳性能

在文件 simd/memory.hpp213 行定义.

引用了 store_stream().

被这些函数引用 store_stream().

◆ store_stream256()

void neforce::simd::store_stream256 ( void * ptr,
vec256_t v )
inlinenoexcept

流式存储 256-bit 向量,绕过缓存

参数
ptr目标内存地址
v待存储的向量
注解
ptr 建议 32 字节对齐以获得最佳性能

在文件 simd/memory.hpp232 行定义.

引用了 store_stream256().

被这些函数引用 store_stream256().

◆ store_stream512()

void neforce::simd::store_stream512 ( void * ptr,
vec512_t v )
inlinenoexcept

流式存储 512-bit 向量,绕过缓存

参数
ptr目标内存地址
v待存储的向量
注解
ptr 建议 64 字节对齐以获得最佳性能

在文件 simd/memory.hpp249 行定义.

引用了 store_stream512().

被这些函数引用 store_stream512().

◆ storeu_si128()

void neforce::simd::storeu_si128 ( void * ptr,
vec128_t v )
inlinenoexcept

非对齐存储 128-bit 向量

参数
ptr目标内存地址
v待存储的向量

在文件 simd/memory.hpp161 行定义.

引用了 storeu_si128().

被这些函数引用 storeu_si128().

◆ storeu_si256()

void neforce::simd::storeu_si256 ( void * ptr,
vec256_t v )
inlinenoexcept

非对齐存储 256-bit 向量

参数
ptr目标内存地址
v待存储的向量

在文件 simd/memory.hpp179 行定义.

引用了 storeu_si256().

被这些函数引用 storeu_si256().

◆ storeu_si512()

void neforce::simd::storeu_si512 ( void * ptr,
vec512_t v )
inlinenoexcept

非对齐存储 512-bit 向量

参数
ptr目标内存地址
v待存储的向量

在文件 simd/memory.hpp195 行定义.

引用了 storeu_si512().

被这些函数引用 storeu_si512().

◆ sub_i16()

vec128_t neforce::simd::sub_i16 ( vec128_t a,
vec128_t b )
inlinenoexcept

8 路 16-bit 有符号整数减法

参数
a左操作数(8×i16)
b右操作数(8×i16)
返回
a - b(8×i16,溢出回绕)

在文件 arithmetic.hpp136 行定义.

引用了 sub_i16().

被这些函数引用 sub_i16().

◆ sub_i32()

vec128_t neforce::simd::sub_i32 ( vec128_t a,
vec128_t b )
inlinenoexcept

4 路 32-bit 有符号整数减法

参数
a左操作数(4×i32)
b右操作数(4×i32)
返回
a - b(4×i32,溢出回绕)

在文件 arithmetic.hpp159 行定义.

引用了 sub_i32().

被这些函数引用 sub_i32().

◆ sub_i64()

vec128_t neforce::simd::sub_i64 ( vec128_t a,
vec128_t b )
inlinenoexcept

2 路 64-bit 有符号整数减法

参数
a左操作数(2×i64)
b右操作数(2×i64)
返回
a - b(2×i64,溢出回绕)

在文件 arithmetic.hpp182 行定义.

引用了 sub_i64().

被这些函数引用 sub_i64().

◆ sub_i8()

vec128_t neforce::simd::sub_i8 ( vec128_t a,
vec128_t b )
inlinenoexcept

16 路 8-bit 有符号整数减法

参数
a左操作数(16×i8)
b右操作数(16×i8)
返回
a - b(16×i8,溢出回绕)

在文件 arithmetic.hpp116 行定义.

引用了 sub_i8().

被这些函数引用 sub_i8().

◆ to_bitmask()

int neforce::simd::to_bitmask ( vec128_t v)
inlinenoexcept

提取向量中每个字节的最高位,组成 16-bit 掩码

参数
v输入向量
返回
16-bit 掩码,bit i 对应字节 i 的最高位

在文件 bytes.hpp85 行定义.

引用了 to_bitmask().

被这些函数引用 to_bitmask().