根据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测试,它不起作用)。捕获的地方在哪里?
答案 0 :(得分:5)
http://gcc.gnu.org/onlinedocs/gcc/处的文档是指当前的发展。
请查看http://gcc.gnu.org/onlinedocs/gcc-XYZ/以查找您正在使用的版本的文档(请参阅http://gcc.gnu.org/onlinedocs/处的索引,以获取最多文档的链接每个系列的最新点发布)。
在这种情况下:
...解释了你所看到的内容。
在编译为C时,这两个都适用于4.7.0,但在编译为C ++时则不行。