|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
SIMD 操作封装 更多...
SIMD 操作封装
8 路 16-bit 有符号整数绝对值
| v | 输入向量(8×i16) |
在文件 arithmetic.hpp 第 569 行定义.
引用了 abs_i16().
被这些函数引用 abs_i16().
4 路 32-bit 有符号整数绝对值
| v | 输入向量(4×i32) |
在文件 arithmetic.hpp 第 596 行定义.
引用了 abs_i32().
被这些函数引用 abs_i32().
16 路 8-bit 有符号整数绝对值
| v | 输入向量(16×i8) |
在文件 arithmetic.hpp 第 542 行定义.
引用了 abs_i8().
被这些函数引用 abs_i8().
8 路 16-bit 有符号整数加法
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 47 行定义.
引用了 add_i16().
被这些函数引用 add_i16().
4 路 32-bit 有符号整数加法
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 arithmetic.hpp 第 70 行定义.
引用了 add_i32().
被这些函数引用 add_i32().
2 路 64-bit 有符号整数加法
| a | 左操作数(2×i64) |
| b | 右操作数(2×i64) |
在文件 arithmetic.hpp 第 93 行定义.
引用了 add_i64().
被这些函数引用 add_i64().
16 路 8-bit 有符号整数加法
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 27 行定义.
引用了 add_i8().
被这些函数引用 add_i8().
8 路 16-bit 无符号整数平均值(向偶数舍入)
| a | 左操作数(8×u16) |
| b | 右操作数(8×u16) |
在文件 arithmetic.hpp 第 942 行定义.
引用了 avg_u16().
被这些函数引用 avg_u16().
16 路 8-bit 无符号整数平均值(向偶数舍入)
| a | 左操作数(16×u8) |
| b | 右操作数(16×u8) |
在文件 arithmetic.hpp 第 922 行定义.
引用了 avg_u8().
被这些函数引用 avg_u8().
按掩码逐字节混合两个向量
| a | 掩码位为 0 时选取的向量 |
| b | 掩码位为 1 时选取的向量 |
| mask | 字节掩码,每字节最高位为 1 则选取 b,否则选取 a |
引用了 blend_bytes().
被这些函数引用 blend_bytes().
4 路单精度浮点相等比较
| a | 左操作数(4×f32) |
| b | 右操作数(4×f32) |
在文件 simd/compare.hpp 第 216 行定义.
引用了 cmpeq_f32().
被这些函数引用 cmpeq_f32().
2 路双精度浮点相等比较
| a | 左操作数(2×f64) |
| b | 右操作数(2×f64) |
在文件 simd/compare.hpp 第 316 行定义.
引用了 cmpeq_f64().
被这些函数引用 cmpeq_f64().
8 路 16-bit 相等比较
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 simd/compare.hpp 第 46 行定义.
引用了 cmpeq_i16().
被这些函数引用 cmpeq_i16().
4 路 32-bit 相等比较
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 simd/compare.hpp 第 69 行定义.
引用了 cmpeq_i32().
被这些函数引用 cmpeq_i32().
2 路 64-bit 相等比较
| a | 左操作数(2×i64) |
| b | 右操作数(2×i64) |
在文件 simd/compare.hpp 第 92 行定义.
引用了 cmpeq_i64().
被这些函数引用 cmpeq_i64().
16 路 8-bit 相等比较
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 simd/compare.hpp 第 26 行定义.
引用了 cmpeq_i8().
被这些函数引用 cmpeq_i8().
4 路单精度浮点大于等于比较
| a | 左操作数(4×f32) |
| b | 右操作数(4×f32) |
在文件 simd/compare.hpp 第 256 行定义.
引用了 cmpge_f32().
被这些函数引用 cmpge_f32().
2 路双精度浮点大于等于比较
| a | 左操作数(2×f64) |
| b | 右操作数(2×f64) |
在文件 simd/compare.hpp 第 356 行定义.
引用了 cmpge_f64().
被这些函数引用 cmpge_f64().
4 路单精度浮点大于比较
| a | 左操作数(4×f32) |
| b | 右操作数(4×f32) |
在文件 simd/compare.hpp 第 236 行定义.
引用了 cmpgt_f32().
被这些函数引用 cmpgt_f32().
2 路双精度浮点大于比较
| a | 左操作数(2×f64) |
| b | 右操作数(2×f64) |
在文件 simd/compare.hpp 第 336 行定义.
引用了 cmpgt_f64().
被这些函数引用 cmpgt_f64().
8 路 16-bit 有符号大于比较
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 simd/compare.hpp 第 140 行定义.
引用了 cmpgt_i16().
被这些函数引用 cmpgt_i16().
4 路 32-bit 有符号大于比较
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 simd/compare.hpp 第 163 行定义.
引用了 cmpgt_i32().
被这些函数引用 cmpgt_i32().
2 路 64-bit 有符号大于比较
| a | 左操作数(2×i64) |
| b | 右操作数(2×i64) |
在文件 simd/compare.hpp 第 186 行定义.
引用了 cmpgt_i64().
被这些函数引用 cmpgt_i64().
16 路 8-bit 有符号大于比较
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 simd/compare.hpp 第 120 行定义.
引用了 cmpgt_i8().
被这些函数引用 cmpgt_i8().
4 路单精度浮点小于等于比较
| a | 左操作数(4×f32) |
| b | 右操作数(4×f32) |
在文件 simd/compare.hpp 第 296 行定义.
引用了 cmple_f32().
被这些函数引用 cmple_f32().
2 路双精度浮点小于等于比较
| a | 左操作数(2×f64) |
| b | 右操作数(2×f64) |
在文件 simd/compare.hpp 第 396 行定义.
引用了 cmple_f64().
被这些函数引用 cmple_f64().
4 路单精度浮点小于比较
| a | 左操作数(4×f32) |
| b | 右操作数(4×f32) |
在文件 simd/compare.hpp 第 276 行定义.
引用了 cmplt_f32().
被这些函数引用 cmplt_f32().
2 路双精度浮点小于比较
| a | 左操作数(2×f64) |
| b | 右操作数(2×f64) |
在文件 simd/compare.hpp 第 376 行定义.
引用了 cmplt_f64().
被这些函数引用 cmplt_f64().
检测向量中是否包含指定字节
| v | 输入向量 |
| c | 待检测的字节值 |
引用了 contains_byte().
被这些函数引用 contains_byte().
统计向量中指定字节出现的次数
| v | 输入向量 |
| c | 待统计的字节值 |
引用了 neforce::count() , 以及 count_byte().
被这些函数引用 count_byte().
查找向量中指定字节首次出现的位置
| v | 输入向量 |
| c | 待查找的字节值 |
引用了 neforce::countr_zero() , 以及 find_first_byte().
被这些函数引用 find_first_byte().
查找向量中指定字节末次出现的位置
| v | 输入向量 |
| c | 待查找的字节值 |
引用了 find_last_byte() , 以及 neforce::highest_set_bit_pos().
被这些函数引用 find_last_byte().
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
对齐加载 128-bit 向量
| ptr | 16 字节对齐的内存地址 |
在文件 simd/memory.hpp 第 26 行定义.
引用了 load_aligned().
被这些函数引用 load_aligned().
|
inlinenoexcept |
从内存加载 n 字节到向量,不足部分填零
| ptr | 源内存地址 |
| n | 要读取的字节数(0-16) |
引用了 load_bytes_n().
被这些函数引用 load_bytes_n().
|
inlinenoexcept |
流式加载 128-bit 向量
| ptr | 源内存地址 |
在文件 simd/memory.hpp 第 266 行定义.
引用了 load_stream() , 以及 loadu_si128().
被这些函数引用 load_stream().
|
inlinenoexcept |
非对齐加载 16 字节到 128-bit SIMD 向量
| ptr | 源内存地址(无需 16 字节对齐) |
引用了 load_unaligned().
被这些函数引用 load_unaligned().
|
inlinenoexcept |
非对齐加载双精度浮点向量(128-bit)
| ptr | 源内存地址 |
在文件 simd/memory.hpp 第 122 行定义.
引用了 loadu_pd().
被这些函数引用 loadu_pd().
|
inlinenoexcept |
非对齐加载单精度浮点向量(128-bit)
| ptr | 源内存地址 |
在文件 simd/memory.hpp 第 102 行定义.
引用了 loadu_ps().
被这些函数引用 loadu_ps().
|
inlinenoexcept |
非对齐加载 128-bit 向量
| ptr | 源内存地址 |
在文件 simd/memory.hpp 第 46 行定义.
引用了 loadu_si128().
被这些函数引用 load_stream() , 以及 loadu_si128().
|
inlinenoexcept |
非对齐加载 256-bit 向量
| ptr | 源内存地址 |
在文件 simd/memory.hpp 第 66 行定义.
引用了 loadu_si256().
被这些函数引用 loadu_si256().
|
inlinenoexcept |
非对齐加载 512-bit 向量
| ptr | 源内存地址 |
在文件 simd/memory.hpp 第 84 行定义.
引用了 loadu_si512().
被这些函数引用 loadu_si512().
有符号 8-bit 相邻对乘加:将相邻 i8 相乘后累加为 i16
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 291 行定义.
引用了 madds_i8x16().
被这些函数引用 madds_i8x16().
逐字节比较两个 128-bit SIMD 向量的相等性
| a | 左操作数 |
| b | 右操作数 |
引用了 match_bytes().
被这些函数引用 match_bytes().
8 路 16-bit 有符号整数最大值
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 798 行定义.
引用了 max_i16().
被这些函数引用 max_i16().
4 路 32-bit 有符号整数最大值
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 arithmetic.hpp 第 821 行定义.
引用了 max_i32().
被这些函数引用 max_i32().
16 路 8-bit 有符号整数最大值
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 773 行定义.
引用了 max_i8() , 以及 neforce::sign().
被这些函数引用 max_i8().
8 路 16-bit 无符号整数最大值
| a | 左操作数(8×u16) |
| b | 右操作数(8×u16) |
在文件 arithmetic.hpp 第 867 行定义.
引用了 max_u16().
被这些函数引用 max_u16().
4 路 32-bit 无符号整数最大值
| a | 左操作数(4×u32) |
| b | 右操作数(4×u32) |
在文件 arithmetic.hpp 第 895 行定义.
引用了 max_u32() , 以及 neforce::sign().
被这些函数引用 max_u32().
16 路 8-bit 无符号整数最大值
| a | 左操作数(16×u8) |
| b | 右操作数(16×u8) |
在文件 arithmetic.hpp 第 847 行定义.
引用了 max_u8().
被这些函数引用 max_u8().
8 路 16-bit 有符号整数最小值
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 650 行定义.
引用了 min_i16().
被这些函数引用 min_i16().
4 路 32-bit 有符号整数最小值
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 arithmetic.hpp 第 673 行定义.
引用了 min_i32().
被这些函数引用 min_i32().
16 路 8-bit 有符号整数最小值
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 623 行定义.
引用了 min_i8() , 以及 neforce::sign().
被这些函数引用 min_i8().
8 路 16-bit 无符号整数最小值
| a | 左操作数(8×u16) |
| b | 右操作数(8×u16) |
在文件 arithmetic.hpp 第 719 行定义.
引用了 min_u16().
被这些函数引用 min_u16().
4 路 32-bit 无符号整数最小值
| a | 左操作数(4×u32) |
| b | 右操作数(4×u32) |
在文件 arithmetic.hpp 第 746 行定义.
引用了 min_u32() , 以及 neforce::sign().
被这些函数引用 min_u32().
16 路 8-bit 无符号整数最小值
| a | 左操作数(16×u8) |
| b | 右操作数(16×u8) |
在文件 arithmetic.hpp 第 699 行定义.
引用了 min_u8().
被这些函数引用 min_u8().
8 路 16-bit 有符号整数乘法(取高半部分)
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 257 行定义.
引用了 mulhi_i16().
被这些函数引用 mulhi_i16().
8 路 16-bit 整数乘法(取低半部分)
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 205 行定义.
引用了 mullo_i16().
被这些函数引用 mullo_i16().
4 路 32-bit 整数乘法(取低半部分)
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 arithmetic.hpp 第 228 行定义.
引用了 mullo_i32().
被这些函数引用 mullo_i32().
|
inlinenoexcept |
统计 128-bit 向量中置位比特总数
| v | 输入向量 |
在文件 bitwise.hpp 第 292 行定义.
引用了 popcount().
被这些函数引用 popcount().
|
inlinenoexcept |
预取数据到 L1 缓存以供读取
| ptr | 预取的内存地址 |
在文件 simd/memory.hpp 第 302 行定义.
引用了 prefetch_l1().
被这些函数引用 prefetch_l1().
|
inlinenoexcept |
|
inlinenoexcept |
预取数据到缓存槽
| ptr | 预取的内存地址 |
在文件 simd/memory.hpp 第 331 行定义.
引用了 prefetch_nta().
被这些函数引用 prefetch_nta().
|
inlinenoexcept |
预取数据到所有缓存层级以供读取
| ptr | 预取的内存地址 |
在文件 simd/memory.hpp 第 278 行定义.
引用了 prefetch_read().
被这些函数引用 prefetch_read().
|
inlinenoexcept |
预取数据到所有缓存层级以供写入
| ptr | 预取的内存地址 |
在文件 simd/memory.hpp 第 290 行定义.
引用了 prefetch_write().
被这些函数引用 prefetch_write().
8 路 16-bit 有符号饱和加法
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 359 行定义.
引用了 saturated_add_i16().
被这些函数引用 saturated_add_i16().
16 路 8-bit 有符号饱和加法
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 332 行定义.
引用了 saturated_add_i8().
被这些函数引用 saturated_add_i8().
8 路 16-bit 无符号饱和加法
| a | 左操作数(8×u16) |
| b | 右操作数(8×u16) |
在文件 arithmetic.hpp 第 410 行定义.
引用了 saturated_add_u16(), neforce::sign() , 以及 neforce::sum().
被这些函数引用 saturated_add_u16().
16 路 8-bit 无符号饱和加法
| a | 左操作数(16×u8) |
| b | 右操作数(16×u8) |
在文件 arithmetic.hpp 第 389 行定义.
引用了 saturated_add_u8().
被这些函数引用 saturated_add_u8().
8 路 16-bit 有符号饱和减法
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 464 行定义.
引用了 saturated_sub_i16().
被这些函数引用 saturated_sub_i16().
16 路 8-bit 有符号饱和减法
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 437 行定义.
引用了 saturated_sub_i8().
被这些函数引用 saturated_sub_i8().
8 路 16-bit 无符号饱和减法
| a | 左操作数(8×u16) |
| b | 右操作数(8×u16) |
在文件 arithmetic.hpp 第 515 行定义.
引用了 saturated_sub_u16() , 以及 neforce::sign().
被这些函数引用 saturated_sub_u16().
16 路 8-bit 无符号饱和减法
| a | 左操作数(16×u8) |
| b | 右操作数(16×u8) |
在文件 arithmetic.hpp 第 494 行定义.
引用了 saturated_sub_u8().
被这些函数引用 saturated_sub_u8().
将 128-bit 向量按字节左移
| Bytes | 左移字节数 |
| v | 输入向量 |
在文件 bitwise.hpp 第 234 行定义.
引用了 shift_left_bytes().
被这些函数引用 shift_left_bytes().
将 128-bit 向量按字节右移
| Bytes | 右移字节数 |
| v | 输入向量 |
在文件 bitwise.hpp 第 264 行定义.
引用了 shift_right_bytes().
被这些函数引用 shift_right_bytes().
按索引表逐字节重排向量
| v | 输入向量 |
| indices | 索引向量,每字节低 4 位为源字节索引(0-15) |
引用了 shuffle_bytes().
被这些函数引用 shuffle_bytes().
|
inlinenoexcept |
对齐存储 128-bit 向量
| ptr | 16 字节对齐的目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 143 行定义.
引用了 store_aligned().
被这些函数引用 store_aligned().
|
inlinenoexcept |
存储向量的前 n 字节到内存,不写入越界数据
| ptr | 目标内存地址 |
| v | 源向量 |
| n | 要写入的字节数(0-16) |
引用了 store_bytes_n().
被这些函数引用 store_bytes_n().
|
inlinenoexcept |
流式存储 128-bit 向量,绕过缓存
| ptr | 目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 213 行定义.
引用了 store_stream().
被这些函数引用 store_stream().
|
inlinenoexcept |
流式存储 256-bit 向量,绕过缓存
| ptr | 目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 232 行定义.
引用了 store_stream256().
被这些函数引用 store_stream256().
|
inlinenoexcept |
流式存储 512-bit 向量,绕过缓存
| ptr | 目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 249 行定义.
引用了 store_stream512().
被这些函数引用 store_stream512().
|
inlinenoexcept |
非对齐存储 128-bit 向量
| ptr | 目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 161 行定义.
引用了 storeu_si128().
被这些函数引用 storeu_si128().
|
inlinenoexcept |
非对齐存储 256-bit 向量
| ptr | 目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 179 行定义.
引用了 storeu_si256().
被这些函数引用 storeu_si256().
|
inlinenoexcept |
非对齐存储 512-bit 向量
| ptr | 目标内存地址 |
| v | 待存储的向量 |
在文件 simd/memory.hpp 第 195 行定义.
引用了 storeu_si512().
被这些函数引用 storeu_si512().
8 路 16-bit 有符号整数减法
| a | 左操作数(8×i16) |
| b | 右操作数(8×i16) |
在文件 arithmetic.hpp 第 136 行定义.
引用了 sub_i16().
被这些函数引用 sub_i16().
4 路 32-bit 有符号整数减法
| a | 左操作数(4×i32) |
| b | 右操作数(4×i32) |
在文件 arithmetic.hpp 第 159 行定义.
引用了 sub_i32().
被这些函数引用 sub_i32().
2 路 64-bit 有符号整数减法
| a | 左操作数(2×i64) |
| b | 右操作数(2×i64) |
在文件 arithmetic.hpp 第 182 行定义.
引用了 sub_i64().
被这些函数引用 sub_i64().
16 路 8-bit 有符号整数减法
| a | 左操作数(16×i8) |
| b | 右操作数(16×i8) |
在文件 arithmetic.hpp 第 116 行定义.
引用了 sub_i8().
被这些函数引用 sub_i8().
|
inlinenoexcept |
提取向量中每个字节的最高位,组成 16-bit 掩码
| v | 输入向量 |
引用了 to_bitmask().
被这些函数引用 to_bitmask().