【发布时间】:2016-07-24 16:19:32
【问题描述】:
鉴于此代码:
using vec = uint32_t __attribute__ ((vector_size (16)));
如何为 MSVC 2015 重写?
【问题讨论】:
-
可能是
__m128,我们看不到你在使用它。
标签: c++ visual-c++ gcc-extensions
鉴于此代码:
using vec = uint32_t __attribute__ ((vector_size (16)));
如何为 MSVC 2015 重写?
【问题讨论】:
__m128,我们看不到你在使用它。
标签: c++ visual-c++ gcc-extensions
这是一个 GCC 特定的扩展,用于创建大于 64 位的整数和浮点类型,据我所知,在 VC++ 中没有直接替换,但是您可以使用 __m128d 类型来代替。
【讨论】:
这是gcc vector extensions 的一个示例,它是对 SIMD 指令的抽象。
此特定行为总共 16 字节长的向量创建类型别名 vec,并由 32 位大小的无符号迭代器组成。
MSVC 似乎没有等效的扩展名。通过alignment routines and inline assembly 支持使用 SIMD。因此,无法完全重写该行,仅重写这一行是不够的,还包括使用该类型的别名或对象的行。
【讨论】:
__m128i 类型的变量也适当地在 16 字节边界上对齐。通过compiler intrinsics 支持SIMD 指令。 x64 编译器不支持内联汇编,内联汇编不是实现 SIMD 代码的推荐方式。