我正在使用内置的 C/C++ 工作。我需要将lvd2x
未对齐的数据加载到 VMX 寄存器中的指令。它看起来lvd2x
在 Power7 和 Power8 处理器上可用。
GCC 提供了vec_vsx_ld
内置的执行任务。根据IBM XL C/C++ for Linux, V13.1.5第 4 章,版本 13.1.4 中添加的增强功能:
新的内置功能
支持以下 GCC 矢量内置函数:
- vec_vsx_ld
- ...
代码是为 XL C 保护的,所以我不需要 GCC 的内置程序。问题是,我找不到 XL C 的内置功能lvd2x
:
#if defined(__xlc__) || defined(__xlC__)
uint8x16_p8 block = vec_vsx_ld(0, t);
#else
uint64x2_p8 block = (uint64x2_p8)vec_vsx_ld(0, t);
#endif
GCC 编译场为 AIX 提供 XL C v13.1.3(5725-C72、5765-J07)。13.1.4 之前的 LXVD2X 有内置的 XL C 吗?如果有内置的,那么它是什么?如果没有,那么我们如何访问指令?
(我试图避免 ASM 和内联 ASM。我对编写它的处理器了解不够。我也有过相当不愉快的经历,我不想通过尝试使用 asm 来扩大痛苦)。