我正在研究在ADI公司SHARC处理器(ADSP-21371)上运行的算法,该处理器具有SIMD指令,但有一个限制:
从ALU 2的内存中获取的数据必须直接跟随ALU 1的数据。换句话说,同时执行foo
和bar
的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];
是否有一些技巧允许使用后一种形式进行结构声明?