Module core::arch::wasm32 1.33.0[−][src]
Expand description
特定于平台的用于 wasm32
平台的内部函数。
该模块提供特定于 WebAssembly 体系结构的内部函数。
在这里,您会发现特定于 WebAssembly 的内部函数,它们不会在 std
的跨平台抽象中以其他方式出现,您还会发现利用 WebAssembly 提案 (如 原子性 和 simd) 的函数。
wasm32
模块中的内部函数是根据它们所代表的 WebAssembly 指令建模的。大多数函数都以它们想要对应的指令命名,arguments/results 对应指令本身的类型签名。
稳定的 WebAssembly 指令是 在线文档。
如果一个提案在 WebAssembly 本身中还不稳定,那么这个函数中的函数可能是不稳定的,需要使用 Rust 的夜间通道。由于提案本身具有稳定性,该模块中的内部函数也应该是稳定的。
有关 arch
模块和平台内部函数的一般信息,请参见 模块级文档。
Atomics
线程提案 for WebAssembly 添加了许多有关处理多线程程序的指令。atomics 提案中添加的大多数指令都通过 std::sync::atomic
模块在 Rust 中公开。
但是,某些指令在 Rust 中没有直接等效项,因此它们在此处公开。
请注意,在 原子性 提案中添加的指令可以在具有共享 wasm 内存和不具有共享 wasm 内存的上下文中工作。
这些内部函数始终在标准库中可用,但除非您使用 -Ctarget-feature=+atomics
重新编译标准库 (和所有代码),否则您可能无法高效地使用它们。
还值得指出的是,截至撰写本文时,多线程 WebAssembly 及其在 Rust 中的描述仍处于 “早期” 阶段。件基本上可以工作,但它通常需要大量的手动设置。
这个时候它不像 “只需调用 std::thread::spawn
” 那么简单,但希望有一天它能被实现!
SIMD
WebAssembly 的 simd 提案 添加了一个新的 v128
类型,用于
128 位 SIMD 寄存器。它还添加了大量指令以对 v128
类型进行操作以执行数据处理。例如,在 wasm 上使用 SIMD 与在 x86_64
上使用类似。
您将编写一个函数,例如:
#[cfg(target_arch = "wasm32")]
#[target_feature(enable = "simd128")]
unsafe fn uses_simd() {
use std::arch::wasm32::*;
// ...
}
Run然而,与 x86_64
不同的是,WebAssembly 目前没有在运行时动态检测是否支持 SIMD (这是 条件部分 和 特性检测 提案的动机之一,但这还处于早期阶段)。
这意味着您的二进制文件将具有 SIMD,并且只能在支持 SIMD 的引擎上运行,或者根本不具有 SIMD。 为了兼容,标准库本身内部未使用任何 SIMD。 确定如何最好地将 WebAssembly 二进制文件与 SIMD 一起交付,很大程度上取决于您的情况,具体取决于您的情况。
要在编译时启用 SIMD 支持,您需要执行以下两项操作之一:
-
首先,您可以使用
#[target_feature(enable = "simd128")]
注解函数。这将导致仅一个函数可以使用 SIMD 支持,并且在这种情况下,内部函数将像往常一样被内联。 -
其次,您可以使用
-Ctarget-feature=+simd128
编译程序。 该编译标志毯可为您的整个编译提供 SIMD 支持。请注意,除非您使用 重新编译标准库,否则这不包括标准库。
如果通过这两种途径之一启用 SIMD,那么您将拥有一个使用 SIMD 指令的 WebAssembly 二进制文件,并且需要相应地进行运送。 还要注意,如果您调用 SIMD 内部函数但未通过这两种机制之一启用 SIMD,则程序中仍将生成 SIMD。 这意味着要生成没有 SIMD 的二进制文件,您将需要避免上述两个选项以及调用此模块中的任何内部函数。
Structs
特定于 WASM 的 128 位宽 SIMD vector 类型。
Functions
对应 wasm 的 memory.atomic.notify
指令
对应 wasm 的 memory.atomic.wait32
指令
对应 wasm 的 memory.atomic.wait64
指令
simd128
从提供的操作数实现 SIMD 值。
simd128
计算一个 128 位 vector 的每个 lane 的绝对值,该绝对值解释为四个 32 位浮点数。
simd128
将两个 128 位 vectors 的成对 lanes 相加,将其解释为四个 32 位浮点数。
simd128
按 lane-wise 舍入到不小于输入的最近整数值。
simd128
将解释为四个 32 位有符号整数的 128 位 vector 转换为 四个 32 位浮点数的 128 位 vector。
simd128
将解释为四个 32 位无符号整数的 128 位 vector 转换为 四个 32 位浮点数的 128 位 vector。
simd128
将结果的两个双精度浮点 lanes 转换为两个较低的单精度 lanes。 结果的两个较高 lane 被初始化为零。 如果转换结果不能表示为单精度浮点数,则将其四舍五入为最接近的偶数可表示数。
simd128
将两个 128 位 vectors 的成对 lanes 划分为四个 32 位浮点数。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位浮点数的两个 vectors 一样。
simd128
从解释为 4 个包装的 f32 数字的 128 位 vector 中提取 lane。
simd128
按 lane-wise 舍入到不大于输入的最近整数值。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位浮点数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位浮点数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位浮点数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位浮点数的两个 vectors 一样。
simd128
计算两个解释为四个 32 位浮点数的 128 位 vectors 的成对 lanes 的最大值。
simd128
计算两个解释为四个 32 位浮点数的 128 位 vectors 的成对 lanes 的最小值。
simd128
将两个 128 位 vectors 的成对 lanes 相乘,将其解释为四个 32 位浮点数。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位浮点数的两个 vectors 一样。
simd128
按 lane-wise 舍入到最接近的整数值; 如果两个值相等,则舍入到偶数。
simd128
对解释为四个 32 位浮点数的 128 位向量的每个 lane 求反。
simd128
lane-wise 最大值,定义为 a < b ? b : a
simd128
lane-wise 最小值,定义为 b < a ? b : a
simd128
从解释为 4 个包装的 f32 编号的 128 位 vector 替换一个 lane。
simd128
创建具有相同 lanes 的 vector。
simd128
计算一个 128 位 vector 的每个 lane 的平方根,该 vector 解释为四个 32 位浮点数。
simd128
减去两个 128 位 vectors 的成对 lanes,它们被解释为四个 32 位浮点数。
simd128
按 lane-wise 舍入到最接近的整数值,幅度不大于输入。
simd128
从提供的操作数实现 SIMD 值。
simd128
计算被解释为两个 64 位浮点数的 128 位 vector 的每个 lane 的绝对值。
simd128
将两个 128 位 vectors 的成对 lanes 相加,将其解释为两个 64 位浮点数。
simd128
按 lane-wise 舍入到不小于输入的最近整数值。
simd128
从整数到浮点的按 lane-wise 转换。
simd128
从整数到浮点的按 lane-wise 转换。
simd128
将两个 128 位 vectors 的成对 lanes 划分为两个 64 位浮点数。
simd128
比较两个 128 位 vectors,就好像它们是 2 个 64 位浮点数的两个 vectors 一样。
simd128
从解释为 2 个包装的 f64 编号的 128 位 vector 中提取 lane。
simd128
按 lane-wise 舍入到不大于输入的最近整数值。
simd128
比较两个 128 位 vectors,就好像它们是 2 个 64 位浮点数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 2 个 64 位浮点数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 2 个 64 位浮点数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 2 个 64 位浮点数的两个 vectors 一样。
simd128
计算两个解释为两个 64 位浮点数的 128 位 vectors 的成 lanes 的最大值。
simd128
计算两个解释为两个 64 位浮点数的 128 位 vectors 的成对 lanes 的最小值。
simd128
将两个解释为两个 64 位浮点数的 128 位 vectors 的成对 lanes 相乘。
simd128
比较两个 128 位 vectors,就好像它们是 2 个 64 位浮点数的两个 vectors 一样。
simd128
按 lane-wise 舍入到最接近的整数值; 如果两个值相等,则舍入到偶数。
simd128
取反解释为两个 64 位浮点数的 128 位 vector 的每个 lane。
simd128
lane-wise 最大值,定义为 a < b ? b : a
simd128
lane-wise 最小值,定义为 b < a ? b : a
simd128
将两个较低的单精度浮点 lanes 转换为结果的两个双精度 lanes。
simd128
从一个解释为 2 包装的 f64 编号的 128 位 vector 替换一个 lane。
simd128
创建具有相同 lanes 的 vector。
simd128
计算一个 128 位 vector 的每个 lane 的平方根,该 vector 解释为两个 64 位浮点数。
simd128
减去两个 128 位 vectors 的成对 lanes,它们被解释为两个 64 位浮点数。
simd128
按 lane-wise 舍入到最接近的整数值,幅度不大于输入。
simd128
从提供的操作数实现 SIMD 值。
simd128
按 lane-wise 包装绝对值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的 16 个 8 位整数一样。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的 16 个 8 位有符号整数一样,在溢出到 i8::MAX
时会饱和。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位整数的两个 vectors 一样。
simd128
从解释为 16 个包装的 i8 数字的 128 位 vector 中提取 lane。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位有符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位有符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位有符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位有符号整数的两个 vectors 一样。
simd128
比较 lane-wise 有符号整数,并返回每对的最大值。
simd128
比较 lane-wise 有符号整数,并返回每对中的最小值。
simd128
通过使每个 lane 变窄,将两个输入 vectors 转换为较小的 lane vector。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位整数的两个 vectors 一样。
simd128
对 128 位 vectors 取反,解释为 16 个 8 位有符号整数
simd128
计算每个 lane 内设置为 1 的位数。
simd128
替换 128 位 vector 中的 lane,该 lane 被解释为 16 个包装的 i8 数字。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,并扩展符号。
simd128
返回一个新的 vector,其 lanes 从 16 个 immediate 操作数中指定的两个输入 vectors $a
和 $b
的 lanes 中选择。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的 16 个 8 位整数一样。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的 16 个 8 位有符号整数一样,在溢出到 i8::MIN
时会饱和。
simd128
返回带有从第二个输入 vector s
中指定的第一个输入 vector a
的 lanes 中选择的 lanes 的新 vector。
simd128
从提供的操作数实现 SIMD 值。
simd128
按 lane-wise 包装绝对值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的八个 16 位整数一样。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的八个 16 位有符号整数一样,在溢出到 i16::MAX
时会饱和。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位整数的两个 vectors 一样。
simd128
lane-wise 整数扩展成对加法产生扩展结果 (结果比输入宽两倍)。
simd128
lane-wise 整数扩展成对加法产生扩展结果 (结果比输入宽两倍)。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,并对其进行符号扩展。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,扩展为零。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,并扩展符号。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,扩展为零。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
从解释为 8 个包装的 i16 数字的 128 位 vector 中提取 lane。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位带符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位带符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位带符号整数的两个 vectors 一样。
加载 8 个 8 位整数,并将每个符号扩展到 16 位 lane
加载 8 个 8 位整数,零加载每个整数至 16 位 lane
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位带符号整数的两个 vectors 一样。
simd128
比较 lane-wise 有符号整数,并返回每对的最大值。
simd128
比较 lane-wise 有符号整数,并返回每对中的最小值。
simd128
将两个 128 位 vectors 相乘,就好像它们是两个包装的八个 16 位有符号整数一样。
simd128
通过使每个 lane 变窄,将两个输入 vectors 转换为较小的 lane vector。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位整数的两个 vectors 一样。
simd128
对 128 位 vectors 取反,解释为 8 个 16 位有符号整数
simd128
Q15 格式的 lane-wise 饱和舍入乘法。
simd128
从解释为 8 个包装的 i16 编号的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,并扩展符号。
simd128
与 i8x16_shuffle
相同,只是操作起来好像输入是八个
16 位整数,仅需 8 个索引即可重排。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的八个 16 位整数一样。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的八个 16 位有符号整数一样,在溢出到 i16::MIN
时会饱和。
simd128
从提供的操作数实现 SIMD 值。
simd128
按 lane-wise 包装绝对值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的四个 32 位整数一样。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
在两个输入 vectors 中按 lane-wise 乘以带符号的 16 位整数,并将完整的 32 位结果的相邻对相加。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位整数的两个 vectors 一样。
simd128
lane-wise 整数扩展成对加法产生扩展结果 (结果比输入宽两倍)。
simd128
lane-wise 整数扩展成对加法产生扩展结果 (结果比输入宽两倍)。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,并对其进行符号扩展。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,扩展为零。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,并扩展符号。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,扩展为零。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
从解释为 4 个包装的 i32 数字的 128 位 vector 中提取 lane。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位有符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位有符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位有符号整数的两个 vectors 一样。
加载四个 16 位整数,并将每个符号扩展到 32 位 lane
加载四个 16 位整数,零加载一个整数到 32 位 lane
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位有符号整数的两个 vectors 一样。
simd128
比较 lane-wise 有符号整数,并返回每对的最大值。
simd128
比较 lane-wise 有符号整数,并返回每对中的最小值。
simd128
将两个 128 位 vectors 相乘,就好像它们是两个包装的四个 32 位有符号整数一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位整数的两个 vectors 一样。
simd128
对 128 位 vectors 取反,解释为 4 个 32 位有符号整数
simd128
从解释为 4 个包装的 i32 编号的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,并扩展符号。
simd128
与 i8x16_shuffle
相同,但操作时如同输入为 4
32 位整数,仅需 4 个索引即可重排。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的四个 32 位整数一样。
simd128
将解释为四个 32 位浮点数的 128 位 vector 转换为包含四个 32 位带符号整数的 128 位 vector。
simd128
使用 IEEE convertToIntegerTowardZero
函数将两个双精度浮点 lanes 饱和转换为两个较低的整数 lanes。
simd128
从提供的操作数实现 SIMD 值。
simd128
按 lane-wise 包装绝对值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的两个 64 位整数一样。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位整数的两个 vectors。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,并对其进行符号扩展。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,扩展为零。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,并扩展符号。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,扩展为零。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
从解释为 2 个包装的 i64 编号的 128 位 vector 中提取 lane。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位有符号整数的两个 vectors。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位有符号整数的两个 vectors。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位有符号整数的两个 vectors。
加载两个 32 位整数并将每个符号扩展到 64 位 lane
加载两个 32 位整数,零加载每个整数到 64 位 lane
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位有符号整数的两个 vectors。
simd128
将两个 128 位 vectors 相乘,就好像它们是两个包装的两个 64 位整数一样。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位整数的两个 vectors。
simd128
对 128 位 vectors 取反,解释为 2 个 64 位有符号整数
simd128
从一个解释为 2 个包装的 i64 编号的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,并扩展符号。
simd128
与 i8x16_shuffle
相同,但操作时就像输入是两个
64 位整数,仅需 2 个索引即可重排。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的两个 64 位整数一样。
对应 wasm 的 memory.grow
指令
对应 wasm 的 memory.size
指令
simd128
从提供的操作数实现 SIMD 值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的 16 个 8 位整数一样。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的 16 个 8 位无符号整数一样,在溢出到 u8::MAX
时会饱和。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
lane-wise 舍入平均值。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位整数的两个 vectors 一样。
simd128
从解释为 16 个包装的 u8 数字的 128 位 vector 中提取一个 lane。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位无符号整数的两个 vectors 一样。
simd128
比较 lane-wise 无符号整数,并返回每对的最大值。
simd128
比较 lane-wise 无符号整数,并返回每对中的最小值。
simd128
通过使每个 lane 变窄,将两个输入 vectors 转换为较小的 lane vector。
simd128
比较两个 128 位 vectors,就好像它们是 16 个 8 位整数的两个 vectors 一样。
simd128
计算每个 lane 内设置为 1 的位数。
simd128
从解释为 16 个包装的 u8 数字的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,以零为单位。
simd128
返回一个新的 vector,其 lanes 从 16 个 immediate 操作数中指定的两个输入 vectors $a
和 $b
的 lanes 中选择。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的 16 个 8 位整数一样。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的 16 个 8 位无符号整数一样,溢出时饱和为 0。
simd128
返回带有从第二个输入 vector s
中指定的第一个输入 vector a
的 lanes 中选择的 lanes 的新 vector。
simd128
从提供的操作数实现 SIMD 值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的八个 16 位整数一样。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的八个 16 位无符号整数一样,在溢出到 u16::MAX
时会饱和。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
lane-wise 舍入平均值。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位整数的两个 vectors 一样。
simd128
lane-wise 整数扩展成对加法产生扩展结果 (结果比输入宽两倍)。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,扩展为零。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,扩展为零。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
从解释为 8 个包装的 u16 数字的 128 位 vector 中提取一个 lane。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位无符号整数的两个 vectors 一样。
加载 8 个 8 位整数,零加载每个整数至 16 位 lane
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位无符号整数的两个 vectors 一样。
simd128
比较 lane-wise 无符号整数,并返回每对的最大值。
simd128
比较 lane-wise 无符号整数,并返回每对中的最小值。
simd128
将两个 128 位 vectors 相乘,就好像它们是两个包装的八个 16 位有符号整数一样。
simd128
通过使每个 lane 变窄,将两个输入 vectors 转换为较小的 lane vector。
simd128
比较两个 128 位 vectors,就好像它们是 8 个 16 位整数的两个 vectors 一样。
simd128
从解释为 8 个包装的 u16 数字的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,以零为单位。
simd128
与 i8x16_shuffle
相同,只是操作起来好像输入是八个
16 位整数,仅需 8 个索引即可重排。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的八个 16 位整数一样。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的八个 16 位无符号整数一样,溢出时饱和为 0。
simd128
从提供的操作数实现 SIMD 值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的四个 32 位整数一样。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位整数的两个 vectors 一样。
simd128
lane-wise 整数扩展成对加法产生扩展结果 (结果比输入宽两倍)。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,扩展为零。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,扩展为零。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
从解释为 4 个包装的 u32 数字的 128 位 vector 中提取一个 lane。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位无符号整数的两个 vectors 一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位无符号整数的两个 vectors 一样。
加载四个 16 位整数,零加载一个整数到 32 位 lane
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位无符号整数的两个 vectors 一样。
simd128
比较 lane-wise 无符号整数,并返回每对的最大值。
simd128
比较 lane-wise 无符号整数,并返回每对中的最小值。
simd128
将两个 128 位 vectors 相乘,就好像它们是两个包装的四个 32 位有符号整数一样。
simd128
比较两个 128 位 vectors,就好像它们是 4 个 32 位整数的两个 vectors 一样。
simd128
从解释为 4 个包装的 u32 数字的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,以零为单位。
simd128
与 i8x16_shuffle
相同,但操作时如同输入为 4
32 位整数,仅需 4 个索引即可重排。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的四个 32 位整数一样。
simd128
将解释为四个 32 位浮点数的 128 位 vector 转换为四个 32 位无符号整数的 128 位 vector。
simd128
使用 IEEE convertToIntegerTowardZero
函数将两个双精度浮点 lanes 饱和转换为两个较低的整数 lanes。
simd128
从提供的操作数实现 SIMD 值。
simd128
将两个 128 位 vectors 相加,就好像它们是两个包装的两个 64 位整数一样。
simd128
如果所有 lanes 都不为零,则返回 true,否则返回 false。
simd128
提取 a
中每个 lane 的高位并生成一个所有位连接的标量掩码。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位整数的两个 vectors。
simd128
将较小 lane vector 的高一半转换为较大 lane vector,扩展为零。
simd128
将较小 lane vector 的下半部分转换为较大 lane vector,扩展为零。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
lane-wise 整数扩展乘法产生两倍于输入的结果。
simd128
从解释为 2 个包装的 u64 数字的 128 位 vector 中提取一个 lane。
加载两个 32 位整数,零加载每个整数到 64 位 lane
simd128
将两个 128 位 vectors 相乘,就好像它们是两个包装的两个 64 位整数一样。
simd128
比较两个 128 位 vectors,就好像它们是两个 64 位整数的两个 vectors。
simd128
从解释为 2 个包装的 u64 数字的 128 位 vector 替换一个 lane。
simd128
将每个 lane 向左移动指定的位数。
simd128
将每个 lane 向右移动指定的位数,以零为单位。
simd128
与 i8x16_shuffle
相同,但操作时就像输入是两个
64 位整数,仅需 2 个索引即可重排。
simd128
创建具有相同 lanes 的 vector。
simd128
将两个 128 位 vectors 相减,就好像它们是两个包装的两个 64 位整数一样。
生成 unreachable
指令,这会导致无条件的 trap。
simd128
对两个输入的 128 位 vectors 进行按位和运算,返回结果 vector。
simd128
a
的位按位与与 b
的位进行逻辑逆。
simd128
如果设置了 a
中的任何一位,则返回 true
,否则返回 false
。
simd128
使用 c
中的位掩码在 1 时从 v1
中选择位,在 0 时从 v2
中选择位。
从 m
加载一个 8 位值并将 v
的 lane L
设置为该值。
加载单个元素,然后将其放置到 v128 vector 的所有 lane 中。
从 m
加载 16 位值并将 v
的 lane L
设置为该值。
加载单个元素,然后将其放置到 v128 vector 的所有 lane 中。
从 m
加载 32 位值并将 v
的 lane L
设置为该值。
加载单个元素,然后将其放置到 v128 vector 的所有 lane 中。
将 32 位元素加载到 vector 的低位并将所有其他位设置为零。
从 m
加载 64 位值并将 v
的 lane L
设置为该值。
加载单个元素,然后将其放置到 v128 vector 的所有 lane 中。
将 64 位元素加载到 vector 的低位并将所有其他位设置为零。
simd128
翻转 128 位输入 vector 的每个位。
simd128
对两个输入的 128 位 vectors 进行按位或逻辑运算,返回结果 vector。
将 v128
vector 存储到给定的堆地址。
将来自 v
的 L
lane 的 8 位值存储到 m
将 v
的 lane L
的 16 位值存储到 m
将来自 v
的 L
lane 的 32 位值存储到 m
将来自 v
的 L
lane 的 64 位值存储到 m
simd128
对两个输入的 128 位 vectors 进行按位异或,返回结果 vector。