次に、int16 の X
バッファーおよび int16 の Z
バッファーを使用した MAC の例を示します。X
バッファーの並べ替え粒度は 32 ビットです。start
および step
パラメーターは、常にデータ型の粒度になります。16 ビットのインデックスを得るには、それらを 2 倍する必要があります。
xoffsets
パラメーターは対になっています。最初の 16 進数値は絶対 32 ビット オフセットで、偶数行で 2 x 16 ビット値 (インデックス、インデックス +1) を取得します。2 番目の 16 進数値は、最初の値 +1 (32 ビット オフセット) からオフセットされ、奇数行で 2 x 16 ビット値を取得します。つまり、xoffsets
の 16 進数値 0x24
は、xbuff
から偶数行のインデックス 8、9 と奇数行のインデックス 14、15 を選択します。
even: 2 * 4 -> get indices [8, 9]
odd: 2 * ( 2 + 4 + 1 ) -> get indices [14, 15]
同様に、xoffsets
の 16 進数値 0x00
は、xbuff
から偶数行のインデックス 0、1 と奇数行のインデックス 2、3 を選択します。
ほかに、xsquare
という主な並べ替え後に 16 ビット粒度の回転を実行するパラメーターもあります。これは、int16 x int16 モードでの MUL8 による 8x4 の行列計算で繰り返される 2 x 2 行列のインデックスにさらに影響します。
たとえば、xsquare
の値 0x2103
(小さい 16 進値から大きい 16 進値の順) は、偶数行にインデックス 3、0、奇数行にインデックス 1、2 を入力します。xsquare
パラメーターの役割は、次の図の中央に表示されています。
次の図に、int16 x int16 に対する mac16
組み込み関数の例を示します。