MACHI

上位16ビット積和演算

MACHI

Multiply-ACcumulate HIgh-order word


【構文】

(1)

MACHI src, src2

(2)

MACHI src, src2, Adest 【V2.01.00以降】

 

【オペレーション】

(1)

signed short tmp1, tmp2;

signed long long tmp3;

tmp1 = (signed short) (src >> 16);

tmp2 = (signed short) (src2 >> 16);

tmp3 = (signed long) tmp1 * (signed long) tmp2;

ACC = ACC + (tmp3 << 16);

(2)

signed short tmp1, tmp2;

signed 72bit tmp3;

tmp1 = (signed short) (src >> 16);

tmp2 = (signed short) (src2 >> 16);

tmp3 = (signed long) tmp1 * (signed long) tmp2;

Adest = Adest + (tmp3 << 16); 【V2.01.00以降】

 

【機能】

(1)

srcの上位16ビットとsrc2の上位16ビットの乗算を行い、乗算結果とアキュムレータ(ACC)の加算を行います。ただし、乗算結果の最下位ビットはアキュムレータのb16にあわせて加算します。加算結果はアキュムレータに格納されます。srcの上位16ビットとsrc2の上位16ビットは符号付き整数として扱われます。

(2)

srcの上位16ビットとsrc2の上位16ビットの乗算を行い、乗算結果とアキュムレータ(ACC0またはACC1)の加算を行います。ただし、乗算結果の最下位ビットはアキュムレータのb16にあわせて加算します。加算結果はアキュムレータに格納されます。srcの上位16ビットとsrc2の上位16ビットは符号付き整数として扱われます。アセンブルオプション-isaを用いてRXv2以降の命令セットを指定した場合にアセンブルできます。 【V2.01.00以降】

 

【命令フォーマット】

構文

対象

コードサイズ

(バイト)

src

src2

Adest

(1) MACHI src, src2

Rs

Rs2

3

(2) MACHI src, src2, Adest

【V2.01.00以降】

Rs

Rs2

A0, A1

3

Adestには、ACC0の場合A0、ACC1の場合A1を指定してください。

 

【フラグ変化】:

フラグ変化はありません。

 

【記述例】

MACHI   R1, R2
MACHI   R1, R2, A1