我有一些代码,我想使用 Neon 指令来更改它,但我真的不知道如何完成它......有人可以帮助我吗?
void add(int n,float *a,float *b,float t) {
int i, size = (n+2) * (n+2);
for(i = 0; i < size; i++)
a[i] += t * b[i];
}
我有一些代码,我想使用 Neon 指令来更改它,但我真的不知道如何完成它......有人可以帮助我吗?
void add(int n,float *a,float *b,float t) {
int i, size = (n+2) * (n+2);
for(i = 0; i < size; i++)
a[i] += t * b[i];
}
通过使用 NEON 内在函数.. 像这样:
void add(int n,float *a,float *b,float t) {
int i, size = (n+2) * (n+2);
float32x4_t temptt = vdupq_n_f32(t);
for(i = 0; i < size; i+=4) {
float32x4_t temp1 = vld1q_f32(a+i);
float32x4_t temp2 = vld1q_f32(b+i);
temp1 = vmlaq_f32(temp2, tempt, temp1);
vst1q_f32(a + i, temp1);
}
}
这一次进行 4 次迭代,并且仅在 size 是 4 的倍数时才有效。