代码之家  ›  专栏  ›  技术社区  ›  BadProgrammer99

Reinterpret_cast<>在SSE/AVX类型上是安全的还是未定义的?

  •  3
  • BadProgrammer99  · 技术社区  · 6 年前

    是不是有点像

    __m128 a = something;
    __m128i b = reinterpret_cast<__m128i>(a);
    

    安全还是未定义?如果它是未定义的,那么它至少会在所有主要编译器(gcc、clang、msvc、icc)上工作吗?我用GCC在我的电脑上测试过它,但我不确定它是否可以移植。我知道我可以用 _mm_castps_si128() 但是由于模板的存在,第一种方法更为方便。

    2 回复  |  直到 6 年前
        1
  •  4
  •   rustyx    6 年前

    __m128 float __m128i

    error C2440: 'reinterpret_cast': cannot convert from '__m128' to '__m128i'
    

    __m128 a = something;
    __m128i b = _mm_castps_si128(a);
    
        2
  •  0
  •   Drew Dormann    6 年前

    reinterpret_cast