typedef float V __attribute__((vector_size(16)));的含义

来源:互联网 发布:青岛永诚网络 编辑:程序博客网 时间:2024/06/13 23:07

这里可以更改的是float以及16。
总体:这句话表示定义V是16字节的float变量,在32位机器中,就表示4个4字节(16)的向量,比如{1.0,1.0,1.0,1.0};
注意:vector_size只支持2的幂次方。该变量支持的运算GCC允许在以下类型上使用以下运算符:+, -, *, /, unary minus, ^, |, &, ~, %


举例:这里我们定义V a,b;
a=b+1;的意思是a=b+{1.0,1.0,1.0,1.0};
再来看一下
__builtin_shuffle的含义:(转自http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html)
v4si a = {1,2,3,4};v4si b = {5,6,7,8};v4si mask1 = {0,1,1,3};v4si mask2 = {0,4,2,5};v4si res;res = __builtin_shuffle(a,mask1); / * res是{1,2,2,4} * /res = __builtin_shuffle(a,b,mask2); / * res是{1,5,3,6} * 

原创粉丝点击