Neon - 使用 vld1q_s32 从数组中加载一个元素

Neon - load one element from array using vld1q_s32

我只想使用 vld1q_s32 从数组中加载一个元素,使用 Neon。

具体来说,如果arr1 = [1, 2, 3, 4],我想把每个元素加载到int32x4_t A0, 顺序不一样。

我想将 A0 设为 [1, 1, 3, 3]。 所以我用了

int32x4_t A0;
A0 = vld1q_s32(arr1[0]);
A0+1 = vld1q_s32(arr1[0]);
A0+2 = vld1q_s32(arr1[2]);
A0+3 = vld1q_s32(arr1[2]);

但是没有用。 我该如何解决? 不使用 vld1q_s32 是 O.K.

您可以按原样加载数据,然后将向量自身转置:

A0 = vld1q_s32(arr1);
A0 = vtrn1q_s32(A0, A0);