AI エンジン シャッフル組み込み関数は、開始パラメーターとオフセット パラメーターに従って、1 つの入力データ バッファーからデータを選択します。これにより、値を配置し直さなくても、入力ベクター値を柔軟に並べ替えることができます。xbuff
は入力データ バッファーで、xstart
は xbuff
データ バッファー内の各レーンの開始位置オフセットを示し、xoffset
はデータ バッファーに適用される位置オフセットを示します。シャッフル組み込み関数には、8、16、および 32 レーンのバリエーション (shuffle8
、shuffle16
、および shuffle32
) があります。データの主な並べ替え (xoffsets
) は 32 ビット粒度で、xsquare
は主な並べ替え後に 16 ビット粒度の並べ替えを実行します。つまり、8 ビットおよび 16 ビット ベクターの組み込み関数には、より複雑な並べ替え用に square パラメーターを追加で設定できます。
たとえば、shuffle16
組み込み関数には次の関数プロトタイプがあります。
v16int32 shuffle16 ( v16int32 xbuff,
int xstart,
unsigned int xoffsets,
unsigned int xoffsets_hi
)
データ並べ替えは 32 ビット粒度で実行されます。データ サイズが 32 ビットまたは 64 ビットの場合、開始およびオフセットはフル データ幅 (32 ビットまたは 64 ビット) を基準にします。レーン選択は、通常のレーン選択方式に従って実行されます。
f: result [lane number] = (xstart + xbuff [lane number]) Mod input_samples
次に、v16int32
ベクターのシャッフルの例を示します。xoffset
および xoffset_hi
の各レーンは 4 ビットです。この例では、バッファーの偶数要素と奇数要素をバッファーの下位部分と上位部分に移動します。
データ並べ替えが 16 ビット データで実行される場合、組み込み関数には別の xsquare
パラメーターが含まれるので、データの 4 x 16 ビット ブロックごとにデータを柔軟に選択できます。xoffset
は対になっています。最初の 16 進数値は絶対 32 ビット オフセットで、2 x 16 ビット値 (インデックス、インデックス + 1) を取得します。2 つ目の 16 進値は、最初の値 + 1 (32 ビット オフセット) からオフセットされ、2 x 16 ビット値を取得します。たとえば、0x00
はインデックス 0、1 およびインデックス 2、3 を選択します。0x24
はインデックス 8、9 およびインデックス 14、15 を選択します。次に、v32int16
ベクターのシャッフルの例を示します。