gpt4 book ai didi

c++ - reinterpret_cast<> 在 sse/avx 类型上是安全的还是未定义的?

转载 作者:太空狗 更新时间:2023-10-29 20:51:12 25 4
gpt4 key购买 nike

有点像

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

安全还是未定义?如果未定义,它是否至少适用于所有主要编译器(gcc、clang、msvc、icc)?我在我的电脑上用 gcc 测试了它,它可以工作,但我不确定它是否便携。我知道我可以使用 _mm_castps_si128(),但是因为有模板,第一种方式恰好更方便。

最佳答案

不,它不可移植且行为未定义; __m128 用于float__m128i 用于整数类型,这些类型不兼容。

事实上,它甚至不能在 MSVC 2017 中编译:

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

使用内部转换:

__m128 a = something;
__m128i b = _mm_castps_si128(a);

关于c++ - reinterpret_cast<> 在 sse/avx 类型上是安全的还是未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51216973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com