是C ++中的__m128,__ m128d,__ m256等内置类型?

时间:2012-11-01 11:47:36

标签: c++ operator-keyword sse avx

C ++标准区分内置类型和structclass类型。对于后者,当语言提供适当的运算符时,允许重载运算符,例如+*=&,但不允许内置类型。 AFAIK,标准中没有提到SSE / AVX类型(但请纠正我),因此应该能够声明这些运算符。海湾合作委员会不允许这样做,但ICC确实如此。哪一个是正确的?

我真的很想进行逐位操作(比如&=),但是,令人讨厌的是,GCC没有提供它们(对于__m128),也不允许我声明它们。 / p>

2 个答案:

答案 0 :(得分:8)

一切都是正确的。这些类型是C ++的扩展,没有内置(几乎没有内置于C ++中的内容以下划线开头)。由于它们是扩展,因此实现可以自由地对它们想要的任何限制。

答案 1 :(得分:6)

它们不是内置的。 C ++不依赖于特定的HW架构功能。