-1

いくつかのコードがあり、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];
}
4

1 に答える 1

0

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 回の反復を行い、サイズが 4 の倍数の場合にのみ機能します。

于 2013-03-19T07:59:04.213 に答える