POWER9 内置函数
可使用许多内置函数来利用 POWER9 体系结构。
注: 仅当 -qarch 设置为利用 POWER9 技术时,以下 内置函数 才有效。
定点内置函数

__builtin_addex
-

__addex
- 使用溢出位添加扩展。

__builtin_cmpeqb
-

__cmpeqb
- 比较给定参数的相应字节并返回结果。

__builtin_cmprb
-

__cmprb
- 比较范围字节。

__builtin_setb
-

__setb
- 设置布尔扩展。

__builtin_maddhd
-

__maddhd
- 定点乘法-添加有符号的高双字。

__builtin_maddhdu
-

__maddhdu
- 定点乘法-添加高双字无符号。

__builtin_maddld
-

__maddld
- 定点乘法-添加低双字。

__builtin_darn, __builtin_darn_32, __builtin_darn_raw
-

__darn, __darn_32, __darn_raw
- 传递随机数。
二进制浮点内置函数

__builtin_compare_exp_uo, __builtin_compare_exp_lt, __builtin_compare_exp_eq, __builtin_compare_exp_gt
-

__compare_exp_uo, __compare_exp_lt, __compare_exp_eq, __compare_exp_gt
- 比较两个参数的指数。

__builtin_extract_exp
-

__extract_exp
- 返回给定参数的指数。

__builtin_extract_sig
-

__extract_sig
- 返回给定参数的有效值。

__builtin_insert_exp
-

__insert_exp
- 将第一个参数的指数替换为第二个参数并返回结果。

__builtin_test_data_class
-

__test_data_class
- 确定给定参数的数据类。

二进制编码的十进制内置函数
注: 仅当满足以下两个条件时,此部分中的内置函数才有效:
- -qarch 设置为利用 POWER9 技术。
- 包含 bcd.h 文件。
__builtin_bcdcopysign- 返回与第二个参数的符号代码组合的第一个参数的十进制值。
__builtin_bcdsetsign- 以压缩十进制格式设置输入参数的符号代码。
__builtin_bcdshift- 十进制移位。
__builtin_bcdshiftround- 十进制移位和四舍五入。
__builtin_bcdtruncate- 十进制截断。
__builtin_bcdunsignedshift- 十进制无符号移位。
__builtin_bcdunsignedtruncate- 十进制无符号截断。
__builtin_national2packed- 将本地十进制值转换为压缩十进制格式。
__builtin_packed2national- 将压缩十进制值转换为本地十进制格式。
__builtin_packed2zoned- 将压缩十进制值转换为分区十进制格式。
__builtin_zoned2packed- 将分区十进制值转换为压缩十进制格式。

向量内置函数
注: 仅当满足以下所有条件时,此部分中的内置函数才有效:
- -qarch 设置为利用 POWER9 技术。
- 指定了 -qaltivec。
altivec.h 文件包含在内。
vec_absd- 返回一个向量,该向量包含给定向量的对应元素的绝对差异。
vec_cmpne- 返回一个向量,该向量包含比较给定向量的各组对应元素而获得的不等式结果。
vec_cmpnez- 返回一个向量,该向量包含比较给定向量的各组对应元素而获取的不等式结果,或者包含测试给定向量的对应元素而获取的零值结果。
vec_cntlz_lsbb- 计算具有最低有效位 0 的给定向量的前导字节元素。
vec_cnttz- 计算给定向量的每个元素的最低有效零位。
vec_cnttz_lsbb- 计算具有最低有效位 0 的给定向量的尾部字节元素。
vec_extract_exp- 返回一个向量,该向量包含给定向量的指数。
vec_extract_sig- 返回一个向量,该向量包含给定向量的有效位数。
vec_extsbd- Sign-扩展给定向量的每个双字元素的最右边字节。
vec_extsbw- Sign-扩展给定向量的每个词元素的最右边字节。
vec_extshd- Sign-扩展给定向量的每个双字元素的最右边半字。
vec_extshw- Sign-扩展给定向量的每个词元素的最右边的半字。
vec_extswd- Sign-扩展给定向量的每个双字元素的最右边的词。
vec_first_match_index- 比较给定向量的各组对应元素,并返回等式的第一个位置。
vec_first_match_or_eos_index- 比较给定向量的每个对应元素集,并返回相等的第一个位置或字符串结束符的位置
vec_first_mismatch_index- 比较给定向量的各组对应元素,并返回不等式的第一个位置。
vec_first_mismatch_or_eos_index- 比较给定向量的每个对应元素集,并返回不等式的第一个位置或字符串结束符的位置
vec_insert_exp- 返回一个向量,该向量将来自一个向量的元素的指数与来自另一个向量的元素的符号和有效位数结合。
vec_load_splats- 从位移指定的内存地址装入 4 字节元素
vec_parity_lsbb- 返回一个向量,该向量计算给定向量的每个元素的每个字节的最低有效位的奇偶性。
vec_rlmi- 返回一个向量,该向量包含给定向量循环左移并使用掩码插入另一个向量中的各个元素。
vec_rlnm- 返回一个向量,该向量包含给定向量循环左移并且使用掩码交叉的各个元素。
vec_slv- 向左移动给定向量的元素的给定位数。
vec_srv- 将给定向量的元素右移给定位数。
vec_test_data_class- 确定给定向量的元素的数据类。
vec_xl_len- 返回一个向量,该向量将从给定地址装入给定位数。
vec_xl_len_r- 将一串字节装入到向右对齐的向量寄存器中。 将最左边的元素 (16-cnt) 设置为 0。
vec_xst_len- 将向量的给定字节长度存储到给定地址。
vec_xst_len_r- 存储右对齐的字节字符串。