SIMD循环和C结构

时间:2017-01-29 16:48:09

标签: c simd

我正在研究在ADI公司SHARC处理器(ADSP-21371)上运行的算法,该处理器具有SIMD指令,但有一个限制:

从ALU 2的内存中获取的数据必须直接跟随ALU 1的数据。换句话说,同时执行foobar的SIMD添加必须声明foo和bar如下:

#define foo foo[0]
#define bar bar[1]
int foobar[2];  

void main()
{
    enable_simd();
    foobar[0] += 42; // Does foo += 42 and bar += 42
}

这迫使我宣布我的结构如下:

struct {
   int a[2];
   int b[2];
   int c[2]; 
} something;

而不是:

struct {
   int a;
   int b;
   int c;
} something[2];

是否有一些技巧允许使用后一种形式进行结构声明?

0 个答案:

没有答案