12.32 __smusdx コンパイラ組み込み関数

このコンパイラ組み込み関数を使用して、コンパイラによって生成される命令ストリームに SMUSDX 命令を挿入します。

2 つの 16 ビット符号付き乗算を実行し、一方の積からもう一方の積を減算することができます。この算術演算は、第 2 オペランドのハーフワードをあらかじめ交換した上で実行されます。これによって、上位×下位の乗算と下位×上位の乗算の結果を得ることができます。

構文

unsigned int __smusdx(unsigned int val1 , unsigned int val2 )
各項目には以下の意味があります。
val1
それぞれの乗算の第 1 オペランドとなるハーフワードを保持します。
val2
それぞれの乗算の第 2 オペランドとなるハーフワードを保持します。

戻り値

__smusdx コンパイラ組み込み関数は、2 つの 16 ビット符号付き乗算の積の差を返します。

unsigned int dual_multiply_prods(unsigned int val1, unsigned int val2)
{
    unsigned int res;
    res = __smuad(val1,val2); /* p1 = val1[15:0] × val2[31:16]
                                 p2 = val1[31:16] × val2[15:0]
                                 res[31:0] = p1 - p2
                               */
    return res;
}
関連する参考文書
10.153 ARMv6 SIMD コンパイラ組み込み関数
関連情報
SMUSDX
ARM 命令と Thumb 命令の概要
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.