2017-09-08 30 views
0

我正在使用内置的C/C++工作。我需要指令lvd2x将未对齐的数据加载到VMX寄存器中。 Power7和Power8处理器上可以看到lvd2x在13.1.4之前是否有LXVD2X的XL C内置?

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)。

+0

问:我们如何获得指令(使用GCC)?答:内联汇编是一个明显的选择;)为什么不至少* TRY *它? PS:你的架构是Power PC,对吗? – paulsm4

+0

@ paulsm4 - GCC很好。我需要它用于IBM的XL C编译器。 – jww

回答

2

应该由GCC和XL实现的便携式函数是vec_xl。它是PPC64-LE ABI的一部分。

是XLC支持较老的功能vec_xld2(加载包含8个字节元素的向量)和vec_xlw4(用于装载包含4个字节的元素的向量。)

请注意,如果您需要大端矢量元素顺序,你应该使用vec_xl_be,或者用-qaltivec = be编译。

+0

非常感谢。 'vec_xl'和'vec_xl_be'应该是我需要的最后一件事。我们就快到了... – jww

相关问题