我有一些这样的代码
void op(uint32_t B0, uint32_t B1, uint32_t B2, uint32_t B3)
{
auto v = (__vector unsigned int){B0, B1, B2, B3};
...
}
当我编译它时,GCC 警告说“ISO C++ 禁止复合文字”。__vector
有没有其他方法可以在没有此构造的情况下从多个标量初始化 AltiVec ?或者我应该忽略警告。
我发现一些 IBM 文档表明(__vector unsigned int)(B[0], B[1], B[2], B[3])
(注意括号而不是括号)可以工作,但 GCC 拒绝了这一点。
我能想到的唯一另一件事是首先将四个标量放入一个数组中,然后从内存中加载它。但是,这似乎会比较慢。我基本上是在寻找 SSE2 的_mm_set_epi32
内在函数。