POWER9 内置函数

可使用许多内置函数来利用 POWER9 体系结构。

注: 仅当 -qarch 设置为利用 POWER9 技术时,以下 内置函数 才有效。

定点内置函数

基于 Clang 的前端开始__builtin_addex基于 Clang 的前端端
旧前端开始__addex旧前端端
使用溢出位添加扩展。
基于 Clang 的前端开始__builtin_cmpeqb基于 Clang 的前端端
旧前端开始__cmpeqb旧前端端
比较给定参数的相应字节并返回结果。
基于 Clang 的前端开始__builtin_cmprb基于 Clang 的前端端
旧前端开始__cmprb旧前端端
比较范围字节。
基于 Clang 的前端开始__builtin_setb基于 Clang 的前端端
旧前端开始__setb旧前端端
设置布尔扩展。
基于 Clang 的前端开始__builtin_maddhd基于 Clang 的前端端
旧前端开始__maddhd旧前端端
定点乘法-添加有符号的高双字。
基于 Clang 的前端开始__builtin_maddhdu基于 Clang 的前端端
旧前端开始__maddhdu旧前端端
定点乘法-添加高双字无符号。
基于 Clang 的前端开始__builtin_maddld基于 Clang 的前端端
旧前端开始__maddld旧前端端
定点乘法-添加低双字。
基于 Clang 的前端开始__builtin_darn, __builtin_darn_32, __builtin_darn_raw基于 Clang 的前端端
旧前端开始__darn, __darn_32, __darn_raw旧前端端
传递随机数。

二进制浮点内置函数

基于 Clang 的前端开始__builtin_compare_exp_uo, __builtin_compare_exp_lt, __builtin_compare_exp_eq, __builtin_compare_exp_gt基于 Clang 的前端端
旧前端开始__compare_exp_uo, __compare_exp_lt, __compare_exp_eq, __compare_exp_gt旧前端端
比较两个参数的指数。
基于 Clang 的前端开始__builtin_extract_exp基于 Clang 的前端端
旧前端开始__extract_exp旧前端端
返回给定参数的指数。
基于 Clang 的前端开始__builtin_extract_sig基于 Clang 的前端端
旧前端开始__extract_sig旧前端端
返回给定参数的有效值。
基于 Clang 的前端开始__builtin_insert_exp基于 Clang 的前端端
旧前端开始__insert_exp旧前端端
将第一个参数的指数替换为第二个参数并返回结果。
基于 Clang 的前端开始__builtin_test_data_class基于 Clang 的前端端
旧前端开始__test_data_class旧前端端
确定给定参数的数据类。

基于 Clang 的前端开始

二进制编码的十进制内置函数

注: 仅当满足以下两个条件时,此部分中的内置函数才有效:
  • -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
将分区十进制值转换为压缩十进制格式。
基于 Clang 的前端开始

向量内置函数

注: 仅当满足以下所有条件时,此部分中的内置函数才有效:
  • -qarch 设置为利用 POWER9 技术。
  • 指定了 -qaltivec
  • 基于 Clang 的前端开始 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
存储右对齐的字节字符串。