gpt4 book ai didi

gcc 矢量扩展不能像文档中所述那样工作

转载 作者:行者123 更新时间:2023-12-04 15:59:04 25 4
gpt4 key购买 nike

根据 Using vector instructions through built-in functions ,这个程序应该编译:

int main(){
double v_sse __attribute__ ((vector_size (16)));

/*
* Should work: "For the convenience in C it is allowed to use a binary vector operation where one operand is a scalar."
*/
v_sse=v_sse+3.4;

/*
* Should work: "Vectors can be subscripted as if the vector were an array with the same number of elements and base type."
*/
double result=v_sse[0];
}

相反,我在两个操作中都遇到了错误,提示无效的操作数/类型。

我在 x86-64 系统上编译,所以 -msse2 是隐式的,我的编译器是 4.6.3(也用 4.7.0 测试过,它不工作)。问题在哪里?

最佳答案

文档位于 http://gcc.gnu.org/onlinedocs/gcc/指的是当前的发展。

查看 http://gcc.gnu.org/onlinedocs/gcc-X.Y.Z/以找到您正在使用的版本的文档(请参阅 http://gcc.gnu.org/onlinedocs/ 处的索引以获得指向文档的最新点的链接每个系列的发布)。

在这种情况下:

  • 二元运算符功能未记录 4.6.3 - 因为它是在 4.7 中作为新功能引入的:请参阅 4.7 release notes ;
  • 下标功能出现在 4.6.3 中;和
  • 这两个功能都被专门记录为“在 C 中”工作

...这解释了您所看到的内容。

当编译为 C 时,这两者都适用于 4.7.0——但当编译为 C++ 时则不行。

关于gcc 矢量扩展不能像文档中所述那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608555/

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