次の図に、int8 の X
バッファーと int8 の Z
バッファーを使用する MAC を示します。1 つ目の図はデータがどのように並べ替えられるかを示し、2 つ目の図は係数がどのように並べ替えられるかを示します。X
バッファーと Z
バッファーの並べ替え粒度は、それぞれ 32 ビットと 16 ビットです。xoffsets
パラメーターは対になっています。最初の 16 進数値は絶対 32 ビット オフセットで、4 x 8 ビット値 (インデックス、インデックス + 1、インデックス + 2、インデックス + 3) を取得します。2 つ目の 16 進値は、最初の値 + 1 (32 ビット オフセット) からオフセットされ、4 x 8 ビット値を取得します。たとえば、0x00
はインデックス 0、1、2、3 と 4、5、6、7 を選択し、0x24
はインデックス 16、17、18、19 と 28、29、30、31 を選択します。
ほかに、xsquare
という主な並べ替え後に 8 ビット粒度の回転を実行するパラメーターもあります。この例での xsquare
パラメーターの役割は、次の図の中央に表示されています。
start
(xstart
、zstart
) および step
(xstep
、zstep
) パラメーターは常にデータ型の粒度に基づきます。つまり、16 ビットの場合は値 2 は 2 * 16 ビット先、8 ビット場合は値 2 は 2 * 8 先になります。step
パラメーターは、選択したデータの次のブロックに適用されます。このため、offset
パラメーターのペアで 2 * 2 ブロックを選択した場合、step は次の 2 * 2 ブロックに適用されます。インデックス値に追加する step は、並べ替え粒度 (データの場合は 32 ビット、係数の場合は 16 ビット) に揃える必要があります。たとえば、8 ビットのデータの場合、xstep
は 4 の倍数にする必要があります。8 ビットの係数の場合、zstep
は 2 の倍数にする必要があります。次の 2 つの図に、step
がデータと係数にどのように使用されるかを示します。
int8 * int8 型の係数では、2 * 2 インデックス ブロックが複製され、4 * 2 ブロックが作成されます。インデックス 0、1、2 、3 がどのように複製されるかは、図 2 を参照してください。