代码之家  ›  专栏  ›  技术社区  ›  Vojtěch Melda Meluzín

OSX 32位上是否支持Clang中的AVX512指令集?

  •  0
  • Vojtěch Melda Meluzín  · 技术社区  · 7 年前

    在OSX下使用AVX512内部函数时,我会遇到数以百万计的错误,但只有在构建32位应用程序时,64位才可以。支持吗?我通过x86intrin.h和imimintrin.h把它包括进来。zmmintrin.h显然根本不在那里。。。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Peter Cordes    7 年前

    https://godbolt.org/z/d-mnAy ),但不是clang7.0。

    _mm512_maskz_set1_epi64 作为内在的 vpbroadcastq zmm {k}, r64 ,这显然只在64位模式下可用。

    当然这很傻,而且 vpbroadcastq 在32位模式下,仍然可以使用内存或xmm源。在32位模式下支持它的最新版本将此代码编译为向量常量的非广播加载,即使在64位模式下也是如此:

    #include <immintrin.h>
    
    __m512i foo() {
        return _mm512_maskz_set1_epi64(0xf0, 123);
    }
    

    foo:                                    # @foo
        mov     al, -16
        kmovd   k1, eax
        mov     eax, 123
        vpbroadcastq    zmm0 {k1} {z}, rax
        ret
    

    而Clang5.0-m32给出了一个内部编译器错误。


    _mm512\u maskz\u集合1\u epi64 _mm512_set1_epi64