【问题标题】:What is __attribute__ vector_size?什么是__attribute__ vector_size?
【发布时间】:2016-07-24 16:19:32
【问题描述】:

鉴于此代码:

using vec = uint32_t __attribute__ ((vector_size (16)));

如何为 MSVC 2015 重写?

【问题讨论】:

  • 可能是__m128,我们看不到你在使用它。

标签: c++ visual-c++ gcc-extensions


【解决方案1】:

这是一个 GCC 特定的扩展,用于创建大于 64 位的整数和浮点类型,据我所知,在 VC++ 中没有直接替换,但是您可以使用 __m128d 类型来代替。

【讨论】:

    【解决方案2】:

    这是gcc vector extensions 的一个示例,它是对 SIMD 指令的抽象。

    此特定行为总共 16 字节长的向量创建类型别名 vec,并由 32 位大小的无符号迭代器组成。

    MSVC 似乎没有等效的扩展名。通过alignment routines and inline assembly 支持使用 SIMD。因此,无法完全重写该行,仅重写这一行是不够的,还包括使用该类型的别名或对象的行。

    【讨论】:

    • MSVC 为 __m128i 数据类型提供了与 OP 正在寻找的等效布局。 __m128i 类型的变量也适当地在 16 字节边界上对齐。通过compiler intrinsics 支持SIMD 指令。 x64 编译器不支持内联汇编,内联汇编不是实现 SIMD 代码的推荐方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2012-07-31
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多