AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
AM_CFLAGS_ARM_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
$(AM_CFLAGS_BASE) -marm
-AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -g
+AM_CCASFLAGS_ARM_LINUX = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
AM_FLAG_M3264_PPC32_AIX5 = @FLAG_MAIX32@
AM_CFLAGS_PPC32_AIX5 = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
-Release 3.6.0 (18 October 2010)
+Release 3.6.0 (21 October 2010)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.6.0 is a feature release with many significant improvements and the
usual collection of bug fixes.
* A new experimental heap profiler, DHAT.
-* A huge number of bug fixes.
+* A huge number of bug fixes and small enhancements.
-------------------------
64-bit mode. In 32-bit mode, support is only available up to and
including SSSE3. Some exceptions: SSE4.2 AES instructions are not
supported in 64-bit mode, and 32-bit mode does in fact support the
- bare minimum SSE4 instructions to needed to run programs on MacOSX
+ bare minimum SSE4 instructions to needed to run programs on Mac OS X
10.6 on 32-bit targets.
* Support for IBM POWER6 cpus has been improved. The Power ISA up to
should not be considered authoritative. The results are still
useful for giving a general idea about a program's locality.
-- Massif has a new option, --pages-as-heap, which is disabled by
+* Massif has a new option, --pages-as-heap, which is disabled by
default. When enabled, instead of tracking allocations at the level
of heap blocks (as allocated with malloc/new/new[]), it instead
tracks memory allocations at the level of memory pages (as mapped by
pointer implementation.
* Helgrind's annotation set has also been drastically improved, so as
- to provide to users, a general set of annotations to describe locks,
+ to provide to users a general set of annotations to describe locks,
semaphores, barriers and condition variables. Annotations to
describe thread-safe reference counted heap objects have also been
added.
approximately a factor of 5 as compared with 3.5.0.
* Ability to show directory names for source files in error messages.
- This is combined with a flexible mechanism
- for specifying which parts of the paths should be shown.
- This is enabled by the new flag --fullpath-after.
+ This is combined with a flexible mechanism for specifying which
+ parts of the paths should be shown. This is enabled by the new flag
+ --fullpath-after.
* A new flag, --require-text-symbol, which will stop the run if a
specified symbol is not found it a given shared object when it is
- loaded into the process. This makes some advanced working with
- function intercepting and wrapping safer and more reliable.
+ loaded into the process. This makes advanced working with function
+ intercepting and wrapping safer and more reliable.
-* Improved support for the Valkyrie GUI, version 1.6.0. GUI output
- and control of Valgrind is now available for the tools Memcheck,
- Helgrind and Ptrcheck.
+* Improved support for the Valkyrie GUI, version 2.0.0. GUI output
+ and control of Valgrind is now available for the tools Memcheck and
+ Helgrind. XML output from Valgrind is available for Memcheck,
+ Helgrind and exp-Ptrcheck.
* More reliable stack unwinding on amd64-linux, particularly in the
presence of function wrappers, and with gcc-4.5 compiled code.
250101 huge "free" memory usage due to m_mallocfree.c
"superblocks fragmentation"
251569 vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP)
- 252600 [PATCH] Allow lhs to be a pointer for shl/shr
+ 252091 Callgrind on ARM does not detect function returns correctly
+ 252600 [PATCH] Allow lhs to be a pointer for shl/shr
+ 254420 memory pool tracking broken
n-i-bz support for adding symbols for JIT generated code
251362 valgrind: ARM: attach to debugger either fails or provokes
kernel oops
251674 Unhandled syscall 294
+251818 == 254550
-(3.6.0: 18 October 2010, vex rXXXX, valgrind rXXXXX).
+254257 Add support for debugfiles found by build-id
+254550 [PATCH] Implement DW_ATE_UTF (DWARF4)
+254646 Wrapped functions cause stack misalignment on OS X
+ (and possibly Linux)
+254556 ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0
+
+(3.6.0: 21 October 2010, vex rXXXX, valgrind rXXXXX).
}
+/* Compute a value 0 :: I32 or 1 :: I32, indicating whether signed
+ overflow occurred for 32-bit addition. Needs both args and the
+ result. HD p27. */
+static
+IRExpr* signed_overflow_after_Add32 ( IRExpr* resE,
+ IRTemp argL, IRTemp argR )
+{
+ IRTemp res = newTemp(Ity_I32);
+ assign(res, resE);
+ return
+ binop( Iop_Shr32,
+ binop( Iop_And32,
+ binop( Iop_Xor32, mkexpr(res), mkexpr(argL) ),
+ binop( Iop_Xor32, mkexpr(res), mkexpr(argR) )),
+ mkU8(31) );
+}
+
+
/*------------------------------------------------------------*/
/*--- Larger helpers ---*/
/*------------------------------------------------------------*/
}
/* --------------- smuad, smuadx<c><Rd>,<Rn>,<Rm> --------------- */
+ /* --------------- smsad, smsadx<c><Rd>,<Rn>,<Rm> --------------- */
{
UInt regD = 99, regN = 99, regM = 99, bitM = 99;
- Bool gate = False;
+ Bool gate = False, isAD = False;
if (isT) {
- if (INSNT0(15,4) == 0xFB2 && (INSNT1(15,0) & 0xF0E0) == 0xF000) {
+ if ((INSNT0(15,4) == 0xFB2 || INSNT0(15,4) == 0xFB4)
+ && (INSNT1(15,0) & 0xF0E0) == 0xF000) {
regN = INSNT0(3,0);
regD = INSNT1(11,8);
regM = INSNT1(3,0);
bitM = INSNT1(4,4);
+ isAD = INSNT0(15,4) == 0xFB2;
if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
gate = True;
}
} else {
if (INSNA(27,20) == BITS8(0,1,1,1,0,0,0,0) &&
INSNA(15,12) == BITS4(1,1,1,1) &&
- (INSNA(7,4) & BITS4(1,1,0,1)) == BITS4(0,0,0,1) ) {
+ (INSNA(7,4) & BITS4(1,0,0,1)) == BITS4(0,0,0,1) ) {
regD = INSNA(19,16);
regN = INSNA(3,0);
regM = INSNA(11,8);
bitM = INSNA(5,5);
+ isAD = INSNA(6,6) == 0;
if (regD != 15 && regN != 15 && regM != 15)
gate = True;
}
binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)),
binop(Iop_Sar32, mkexpr(irt_regM), mkU8(16))) );
IRExpr* ire_result
- = binop( Iop_Add32, mkexpr(irt_prod_lo), mkexpr(irt_prod_hi) );
+ = binop( isAD ? Iop_Add32 : Iop_Sub32,
+ mkexpr(irt_prod_lo), mkexpr(irt_prod_hi) );
if (isT)
putIRegT( regD, ire_result, condT );
else
putIRegA( regD, ire_result, condT, Ijk_Boring );
- or_into_QFLAG32( binop( Iop_Shr32,
- binop( Iop_And32,
- binop( Iop_Xor32, ire_result,
- mkexpr(irt_prod_hi) ),
- binop( Iop_Xor32, ire_result,
- mkexpr(irt_prod_lo) ) ),
- mkU8(31)), condT );
+ if (isAD) {
+ or_into_QFLAG32(
+ signed_overflow_after_Add32( ire_result,
+ irt_prod_lo, irt_prod_hi ),
+ condT
+ );
+ }
- DIP("smuad%s%s r%u, r%u, r%u\n",
+ DIP("smu%cd%s%s r%u, r%u, r%u\n",
+ isAD ? 'a' : 's',
bitM ? "x" : "", nCC(conq), regD, regN, regM);
return True;
}
}
/* --------------- smlad{X}<c> <Rd>,<Rn>,<Rm>,<Ra> -------------- */
+ /* --------------- smlsd{X}<c> <Rd>,<Rn>,<Rm>,<Ra> -------------- */
{
UInt regD = 99, regN = 99, regM = 99, regA = 99, bitM = 99;
- Bool gate = False;
+ Bool gate = False, isAD = False;
if (isT) {
- if (INSNT0(15,4) == 0xFB2 && INSNT1(7,5) == BITS3(0,0,0)) {
+ if ((INSNT0(15,4) == 0xFB2 || INSNT0(15,4) == 0xFB4)
+ && INSNT1(7,5) == BITS3(0,0,0)) {
regN = INSNT0(3,0);
regD = INSNT1(11,8);
regM = INSNT1(3,0);
regA = INSNT1(15,12);
bitM = INSNT1(4,4);
+ isAD = INSNT0(15,4) == 0xFB2;
if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM)
&& !isBadRegT(regA))
gate = True;
}
} else {
if (INSNA(27,20) == BITS8(0,1,1,1,0,0,0,0) &&
- (INSNA(7,4) & BITS4(1,1,0,1)) == BITS4(0,0,0,1)) {
+ (INSNA(7,4) & BITS4(1,0,0,1)) == BITS4(0,0,0,1)) {
regD = INSNA(19,16);
regA = INSNA(15,12);
regN = INSNA(3,0);
regM = INSNA(11,8);
bitM = INSNA(5,5);
+ isAD = INSNA(6,6) == 0;
if (regD != 15 && regN != 15 && regM != 15 && regA != 15)
gate = True;
}
binop( Iop_Mul32,
binop( Iop_Sar32, mkexpr(irt_regN), mkU8(16) ),
binop( Iop_Sar32, mkexpr(irt_regM), mkU8(16) ) ) );
- assign( irt_sum, binop( Iop_Add32,
+ assign( irt_sum, binop( isAD ? Iop_Add32 : Iop_Sub32,
mkexpr(irt_prod_lo), mkexpr(irt_prod_hi) ) );
IRExpr* ire_result = binop(Iop_Add32, mkexpr(irt_sum), mkexpr(irt_regA));
else
putIRegA( regD, ire_result, condT, Ijk_Boring );
- or_into_QFLAG32( binop( Iop_Shr32,
- binop( Iop_And32,
- binop( Iop_Xor32, mkexpr(irt_sum),
- mkexpr(irt_prod_lo) ),
- binop( Iop_Xor32, mkexpr(irt_sum),
- mkexpr(irt_prod_hi) ) ),
- mkU8(31)), condT );
- or_into_QFLAG32( binop( Iop_Shr32,
- binop( Iop_And32,
- binop( Iop_Xor32, ire_result,
- mkexpr(irt_sum) ),
- binop( Iop_Xor32, ire_result,
- mkexpr(irt_regA) ) ),
- mkU8(31)), condT );
-
- DIP("smlad%s%s r%u, r%u, r%u, r%u\n",
+ if (isAD) {
+ or_into_QFLAG32(
+ signed_overflow_after_Add32( mkexpr(irt_sum),
+ irt_prod_lo, irt_prod_hi ),
+ condT
+ );
+ }
+
+ or_into_QFLAG32(
+ signed_overflow_after_Add32( ire_result, irt_sum, irt_regA ),
+ condT
+ );
+
+ DIP("sml%cd%s%s r%u, r%u, r%u, r%u\n",
+ isAD ? 'a' : 's',
bitM ? "x" : "", nCC(conq), regD, regN, regM, regA);
return True;
}
else
putIRegA( regD, ire_result, condT, Ijk_Boring );
- or_into_QFLAG32( binop( Iop_Shr32,
- binop( Iop_And32,
- binop(Iop_Xor32,
- ire_result, mkexpr(irt_prod)),
- binop(Iop_Xor32,
- ire_result, mkexpr(irt_regA)) ),
- mkU8(31)),
- condT );
+ or_into_QFLAG32(
+ signed_overflow_after_Add32( ire_result, irt_prod, irt_regA ),
+ condT
+ );
DIP( "smla%c%c%s r%u, r%u, r%u, r%u\n",
bitN ? 't' : 'b', bitM ? 't' : 'b',
else
putIRegA( regD, ire_result, condT, Ijk_Boring );
- or_into_QFLAG32( binop( Iop_Shr32,
- binop( Iop_And32,
- binop(Iop_Xor32,
- ire_result, mkexpr(prod32)),
- binop(Iop_Xor32,
- ire_result, mkexpr(irt_regA)) ),
- mkU8(31)),
- condT );
+ or_into_QFLAG32(
+ signed_overflow_after_Add32( ire_result, prod32, irt_regA ),
+ condT
+ );
DIP( "smlaw%c%s r%u, r%u, r%u, r%u\n",
bitM ? 't' : 'b',
/* fall through */
}
+ /* --------------- usad8 Rd,Rn,Rm ---------------- */
+ /* --------------- usada8 Rd,Rn,Rm,Ra ---------------- */
+ {
+ UInt rD = 99, rN = 99, rM = 99, rA = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFB7 && INSNT1(7,4) == BITS4(0,0,0,0)) {
+ rN = INSNT0(3,0);
+ rA = INSNT1(15,12);
+ rD = INSNT1(11,8);
+ rM = INSNT1(3,0);
+ if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM) && rA != 13)
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,1,1,0,0,0) &&
+ INSNA(7,4) == BITS4(0,0,0,1) ) {
+ rD = INSNA(19,16);
+ rA = INSNA(15,12);
+ rM = INSNA(11,8);
+ rN = INSNA(3,0);
+ if (rD != 15 && rN != 15 && rM != 15 /* but rA can be 15 */)
+ gate = True;
+ }
+ }
+ /* We allow rA == 15, to denote the usad8 (no accumulator) case. */
+
+ if (gate) {
+ IRExpr* rNe = isT ? getIRegT(rN) : getIRegA(rN);
+ IRExpr* rMe = isT ? getIRegT(rM) : getIRegA(rM);
+ IRExpr* rAe = rA == 15 ? mkU32(0)
+ : (isT ? getIRegT(rA) : getIRegA(rA));
+ IRExpr* res = binop(Iop_Add32,
+ binop(Iop_Sad8Ux4, rNe, rMe),
+ rAe);
+ if (isT)
+ putIRegT( rD, res, condT );
+ else
+ putIRegA( rD, res, condT, Ijk_Boring );
+
+ if (rA == 15) {
+ DIP( "usad8%s r%u, r%u, r%u\n",
+ nCC(conq), rD, rN, rM );
+ } else {
+ DIP( "usada8%s r%u, r%u, r%u, r%u\n",
+ nCC(conq), rD, rN, rM, rA );
+ }
+ return True;
+ }
+ /* fall through */
+ }
+
/* ---------- Doesn't match anything. ---------- */
return False;
fn = &h_generic_calc_QSub8Sx4; break;
case Iop_QSub8Ux4:
fn = &h_generic_calc_QSub8Ux4; break;
+ case Iop_Sad8Ux4:
+ fn = &h_generic_calc_Sad8Ux4; break;
default:
break;
}
return (Char)r;
}
+static inline UInt absdiff8U ( UChar xx, UChar yy )
+{
+ UInt xxu = (UChar)xx;
+ UInt yyu = (UChar)yy;
+ return xxu >= yyu ? xxu - yyu : yyu - xxu;
+}
/* ----------------------------------------------------- */
/* Start of the externally visible functions. These simply
);
}
+UInt h_generic_calc_Sad8Ux4 ( UInt xx, UInt yy )
+{
+ return absdiff8U( sel8x4_3(xx), sel8x4_3(yy) )
+ + absdiff8U( sel8x4_2(xx), sel8x4_2(yy) )
+ + absdiff8U( sel8x4_1(xx), sel8x4_1(yy) )
+ + absdiff8U( sel8x4_0(xx), sel8x4_0(yy) );
+}
+
+
/*---------------------------------------------------------------*/
/*--- end host_generic_simd64.c ---*/
/*---------------------------------------------------------------*/
extern UInt h_generic_calc_QSub8Ux4 ( UInt, UInt );
extern UInt h_generic_calc_QSub8Sx4 ( UInt, UInt );
+extern UInt h_generic_calc_Sad8Ux4 ( UInt, UInt );
+
extern UInt h_generic_calc_CmpNEZ16x2 ( UInt );
extern UInt h_generic_calc_CmpNEZ8x4 ( UInt );
case Iop_HAdd8Sx4: vex_printf("HAdd8Sx4"); return;
case Iop_HSub8Ux4: vex_printf("HSub8Ux4"); return;
case Iop_HSub8Sx4: vex_printf("HSub8Sx4"); return;
+ case Iop_Sad8Ux4: vex_printf("Sad8Ux4"); return;
case Iop_CmpNEZ16x2: vex_printf("CmpNEZ16x2"); return;
case Iop_CmpNEZ8x4: vex_printf("CmpNEZ8x4"); return;
case Iop_QSub8Sx4: case Iop_QSub8Ux4:
case Iop_HAdd8Ux4: case Iop_HAdd8Sx4:
case Iop_HSub8Ux4: case Iop_HSub8Sx4:
+ case Iop_Sad8Ux4:
BINARY(Ity_I32,Ity_I32, Ity_I32);
case Iop_Add64: case Iop_Sub64: case Iop_Mul64:
Iop_HAdd8Ux4, Iop_HAdd8Sx4,
Iop_HSub8Ux4, Iop_HSub8Sx4,
+ /* 8x4 sum of absolute unsigned differences. */
+ Iop_Sad8Ux4,
+
/* MISC (vector integer cmp != 0) */
Iop_CmpNEZ16x2, Iop_CmpNEZ8x4,
#----------------------------------------------------------------------------
# Other library checks
#----------------------------------------------------------------------------
-# There now follow some tests for QtCore, Boost, and OpenMP. These
+# There now follow some tests for Boost, and OpenMP. These
# tests are present because Drd has some regression tests that use
# these packages. All regression test programs all compiled only
# for the primary target. And so it is important that the configure
# NEEDED BY THE REGRESSION TEST PROGRAMS.
-# The test below verifies whether the QtCore package been installed.
-# This test works as follows:
-# - If pkg-config was not installed at the time autogen.sh was run,
-# the definition of the PKG_CHECK_EXISTS() macro will not be found by
-# autogen.sh. Augogen.sh will generate a configure script that prints
-# a warning about pkg-config and proceeds as if Qt4 has not been installed.
-# - If pkg-config was installed at the time autogen.sh was run,
-# the generated configure script will try to detect the presence of the
-# Qt4 QtCore library by looking up compile and linker flags in the file
-# called QtCore.pc.
-# - pkg-config settings can be overridden via the configure variables
-# QTCORE_CFLAGS and QTCORE_LIBS (added by the pkg-config m4 macro's to the
-# configure script -- see also ./configure --help).
-# - The QTCORE_CFLAGS and QTCORE_LIBS configure variables can be used even if
-# the pkg-config executable is not present on the system on which the
-# configure script is run.
-
-ifdef(
- [PKG_CHECK_EXISTS],
- [PKG_CHECK_EXISTS(
- [QtCore],
- [
- PKG_CHECK_MODULES([QTCORE], [QtCore])
- # Paranoia: don't trust the result reported by pkg-config, but when
- # pkg-config reports that QtCore has been found, verify whether linking
- # programs with QtCore succeeds.
- AC_LANG(C++)
- safe_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="${QTCORE_CFLAGS} ${QTCORE_LIBS} $mflag_primary"
- AC_TRY_LINK(
- [#include <QMutex>],
- [QMutex Mutex;],
- [ac_have_qtcore=yes],
- [
- AC_MSG_WARN([Although pkg-config detected Qt4, linking Qt4 programs fails. Skipping Qt4.])
- ac_have_qtcore=no
- ]
- )
- CXXFLAGS="${safe_CXXFLAGS}"
- ],
- [
- ac_have_qtcore=no
- ]
- )
- ],
- AC_MSG_WARN([pkg-config has not been installed or is too old.])
- AC_MSG_WARN([Detection of Qt4 will be skipped.])
- [ac_have_qtcore=no]
-)
-
-AM_CONDITIONAL([HAVE_QTCORE], [test x$ac_have_qtcore = xyes])
-
-
-# Test for QMutex::tryLock(int), which has been introduced in Qt 4.3.
-# See also http://doc.trolltech.com/4.3/qmutex.html.
-if test x$ac_have_qtcore = xyes; then
- AC_MSG_CHECKING([for Qt4 QMutex::tryLock(int)])
- AC_LANG(C++)
- safe_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="${QTCORE_CFLAGS} $mflag_primary"
- AC_TRY_COMPILE([
- #include <QtCore/QMutex>
- ],
- [
- QMutex M;
- M.tryLock(1);
- M.unlock();
- return 0;
- ],
- [
- AC_MSG_RESULT([yes])
- AC_DEFINE([HAVE_QTCORE_QMUTEX_TRYLOCK_INT], [1], [Define to 1 if the installed version of Qt4 provides QMutex::tryLock(int).])
- ],
- [
- AC_MSG_RESULT([no])
- ])
- CXXFLAGS="${safe_CXXFLAGS}"
- AC_LANG(C)
-fi
-
-
-# Test for QAtomicInt, which has been introduced in Qt 4.4.
-# See also http://doc.trolltech.com/4.4/qatomicint.html.
-if test x$ac_have_qtcore = xyes; then
- AC_MSG_CHECKING([for Qt4 QAtomicInt])
- AC_LANG(C++)
- safe_CXXFLAGS="${CXXFLAGS}"
- CXXFLAGS="${QTCORE_CFLAGS} $mflag_primary"
- AC_TRY_COMPILE([
- #include <QtCore/QAtomicInt>
- ],
- [
- QAtomicInt I;
- I.testAndSetOrdered(0, 1);
- return 0;
- ],
- [
- ac_have_qtcore_qatomicint=yes
- AC_MSG_RESULT([yes])
- AC_DEFINE([HAVE_QTCORE_QATOMICINT], [1], [Define to 1 if the installed version of Qt4 provides QAtomicInt.])
- ],
- [
- ac_have_qtcore_qatomicint=no
- AC_MSG_RESULT([no])
- ])
- CXXFLAGS="${safe_CXXFLAGS}"
- AC_LANG(C)
-fi
-
-AM_CONDITIONAL([HAVE_QTCORE_QATOMICINT], [test x$ac_have_qtcore_qatomicint = xyes])
-
-
-
# Check whether the boost library 1.35 or later has been installed.
# The Boost.Threads library has undergone a major rewrite in version 1.35.0.
/* ----- Hacks to do with the "commpage" on arm-linux ----- */
/* Not that I have anything against the commpage per se. It's just
that it's not listed in /proc/self/maps, which is a royal PITA --
- we have to fake it up, in parse_procselfmaps. */
+ we have to fake it up, in parse_procselfmaps.
+
+ But note also bug 254556 comment #2: this is now fixed in newer
+ kernels -- it is listed as a "[vectors]" entry. Presumably the
+ fake entry made here duplicates the [vectors] entry, and so, if at
+ some point in the future, we can stop supporting buggy kernels,
+ then this kludge can be removed entirely, since the procmap parser
+ below will read that entry in the normal way. */
#if defined(VGP_arm_linux)
# define ARM_LINUX_FAKE_COMMPAGE_START 0xFFFF0000
-# define ARM_LINUX_FAKE_COMMPAGE_END1 0xFFFFF000
+# define ARM_LINUX_FAKE_COMMPAGE_END1 0xFFFF1000
#endif
DW_ATE_signed_fixed = 0xd,
DW_ATE_unsigned_fixed = 0xe,
DW_ATE_decimal_float = 0xf,
+ /* DWARF 4. */
+ DW_ATE_UTF = 0x10,
/* HP extensions. */
DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */
DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */
if (attr == DW_AT_encoding && ctsSzB > 0) {
switch (cts) {
case DW_ATE_unsigned: case DW_ATE_unsigned_char:
+ case DW_ATE_UTF: /* since DWARF4, e.g. char16_t from C++ */
case DW_ATE_boolean:/* FIXME - is this correct? */
typeE.Te.TyBase.enc = 'U'; break;
case DW_ATE_signed: case DW_ATE_signed_char:
# define ElfXX_Ehdr Elf32_Ehdr
# define ElfXX_Shdr Elf32_Shdr
# define ElfXX_Phdr Elf32_Phdr
+# define ElfXX_Nhdr Elf32_Nhdr
# define ElfXX_Sym Elf32_Sym
+# define ElfXX_Off Elf32_Off
# define ElfXX_Word Elf32_Word
# define ElfXX_Addr Elf32_Addr
# define ElfXX_Dyn Elf32_Dyn
# define ElfXX_Ehdr Elf64_Ehdr
# define ElfXX_Shdr Elf64_Shdr
# define ElfXX_Phdr Elf64_Phdr
+# define ElfXX_Nhdr Elf64_Nhdr
# define ElfXX_Sym Elf64_Sym
+# define ElfXX_Off Elf64_Off
# define ElfXX_Word Elf64_Word
# define ElfXX_Addr Elf64_Addr
# define ElfXX_Dyn Elf64_Dyn
/*
+ * Look for a build-id in an ELF image. The build-id specification
+ * can be found here:
+ *
+ * http://fedoraproject.org/wiki/RolandMcGrath/BuildID
+ */
+static
+Char *find_buildid(Addr image, UWord n_image)
+{
+ Char* buildid = NULL;
+ ElfXX_Ehdr* ehdr = (ElfXX_Ehdr*)image;
+
+#ifdef NT_GNU_BUILD_ID
+ if (n_image >= sizeof(ElfXX_Ehdr) &&
+ ML_(is_elf_object_file)(ehdr, n_image)) {
+ Word i;
+
+ for (i = 0; i < ehdr->e_phnum; i++) {
+ ElfXX_Phdr* phdr = (ElfXX_Phdr*)(image + ehdr->e_phoff + i * ehdr->e_phentsize);
+
+ if (phdr->p_type == PT_NOTE) {
+ ElfXX_Off offset = phdr->p_offset;
+
+ while (offset < phdr->p_offset + phdr->p_filesz) {
+ ElfXX_Nhdr* note = (ElfXX_Nhdr*)(image + offset);
+ Char* name = (Char *)note + sizeof(ElfXX_Nhdr);
+ UChar *desc = (UChar *)name + ((note->n_namesz + 3) & ~3);
+ Word j;
+
+ if (VG_(strcmp)(name, ELF_NOTE_GNU) == 0 &&
+ note->n_type == NT_GNU_BUILD_ID) {
+ buildid = ML_(dinfo_zalloc)("di.fbi.1", note->n_descsz * 2 + 1);
+
+ for (j = 0; j < note->n_descsz; j++) {
+ VG_(sprintf)(buildid + VG_(strlen)(buildid), "%02x", desc[j]);
+ }
+ }
+
+ offset = offset + sizeof(ElfXX_Nhdr)
+ + ((note->n_namesz + 3) & ~3)
+ + ((note->n_descsz + 3) & ~3);
+ }
+ }
+ }
+ }
+#endif
+
+ return buildid;
+}
+
+/*
* This routine for calculating the CRC for a separate debug file
* is GPLed code borrowed from GNU binutils.
*/
* not match the value from the main object file.
*/
static
-Addr open_debug_file( Char* name, UInt crc, /*OUT*/UWord* size )
+Addr open_debug_file( Char* name, Char* buildid, UInt crc, /*OUT*/UWord* size )
{
SysRes fd, sres;
struct vg_stat stat_buf;
if (VG_(clo_verbosity) > 1)
VG_(message)(Vg_DebugMsg, " Considering %s ..\n", name);
-
+
*size = stat_buf.size;
sres = VG_(am_mmap_file_float_valgrind)
if (sr_isError(sres))
return 0;
- calccrc = calc_gnu_debuglink_crc32(0, (UChar*)sr_Res(sres), *size);
- if (calccrc != crc) {
- SysRes res = VG_(am_munmap_valgrind)(sr_Res(sres), *size);
- vg_assert(!sr_isError(res));
+ if (buildid) {
+ Char* debug_buildid = find_buildid(sr_Res(sres), *size);
+ if (debug_buildid == NULL || VG_(strcmp)(buildid, debug_buildid) != 0) {
+ SysRes res = VG_(am_munmap_valgrind)(sr_Res(sres), *size);
+ vg_assert(!sr_isError(res));
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg,
+ " .. build-id mismatch (found %s wanted %s)\n", debug_buildid, buildid);
+ ML_(dinfo_free)(debug_buildid);
+ return 0;
+ }
+ ML_(dinfo_free)(debug_buildid);
+
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg,
- " .. CRC mismatch (computed %08x wanted %08x)\n", calccrc, crc);
- return 0;
- }
+ VG_(message)(Vg_DebugMsg, " .. build-id is valid\n");
+ } else {
+ calccrc = calc_gnu_debuglink_crc32(0, (UChar*)sr_Res(sres), *size);
+ if (calccrc != crc) {
+ SysRes res = VG_(am_munmap_valgrind)(sr_Res(sres), *size);
+ vg_assert(!sr_isError(res));
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg,
+ " .. CRC mismatch (computed %08x wanted %08x)\n", calccrc, crc);
+ return 0;
+ }
- if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, " .. CRC is valid\n");
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg, " .. CRC is valid\n");
+ }
return sr_Res(sres);
}
*/
static
Addr find_debug_file( struct _DebugInfo* di,
- Char* objpath, Char* debugname,
- UInt crc, /*OUT*/UWord* size )
+ Char* objpath, Char* buildid,
+ Char* debugname, UInt crc,
+ /*OUT*/UWord* size )
{
- Char *objdir = ML_(dinfo_strdup)("di.fdf.1", objpath);
- Char *objdirptr;
- Char *debugpath;
+ Char *debugpath = NULL;
Addr addr = 0;
-
- if ((objdirptr = VG_(strrchr)(objdir, '/')) != NULL)
- *objdirptr = '\0';
- debugpath = ML_(dinfo_zalloc)(
- "di.fdf.2",
- VG_(strlen)(objdir) + VG_(strlen)(debugname) + 32);
-
- VG_(sprintf)(debugpath, "%s/%s", objdir, debugname);
+ if (buildid != NULL) {
+ debugpath = ML_(dinfo_zalloc)(
+ "di.fdf.1",
+ VG_(strlen)(buildid) + 33);
+
+ VG_(sprintf)(debugpath, "/usr/lib/debug/.build-id/%c%c/%s.debug",
+ buildid[0], buildid[1], buildid + 2);
+
+ if ((addr = open_debug_file(debugpath, buildid, 0, size)) == 0) {
+ ML_(dinfo_free)(debugpath);
+ debugpath = NULL;
+ }
+ }
+
+ if (addr == 0 && debugname != NULL) {
+ Char *objdir = ML_(dinfo_strdup)("di.fdf.2", objpath);
+ Char *objdirptr;
+
+ if ((objdirptr = VG_(strrchr)(objdir, '/')) != NULL)
+ *objdirptr = '\0';
+
+ debugpath = ML_(dinfo_zalloc)(
+ "di.fdf.3",
+ VG_(strlen)(objdir) + VG_(strlen)(debugname) + 32);
- if ((addr = open_debug_file(debugpath, crc, size)) == 0) {
- VG_(sprintf)(debugpath, "%s/.debug/%s", objdir, debugname);
- if ((addr = open_debug_file(debugpath, crc, size)) == 0) {
- VG_(sprintf)(debugpath, "/usr/lib/debug%s/%s", objdir, debugname);
- addr = open_debug_file(debugpath, crc, size);
+ VG_(sprintf)(debugpath, "%s/%s", objdir, debugname);
+
+ if ((addr = open_debug_file(debugpath, NULL, crc, size)) == 0) {
+ VG_(sprintf)(debugpath, "%s/.debug/%s", objdir, debugname);
+ if ((addr = open_debug_file(debugpath, NULL, crc, size)) == 0) {
+ VG_(sprintf)(debugpath, "/usr/lib/debug%s/%s", objdir, debugname);
+ addr = open_debug_file(debugpath, NULL, crc, size);
+ }
}
+
+ ML_(dinfo_free)(objdir);
}
if (addr) {
}
ML_(dinfo_free)(debugpath);
- ML_(dinfo_free)(objdir);
-
+
return addr;
}
Addr rw_svma_limit = 0;
PtrdiffT rw_bias = 0;
+ /* Build ID */
+ Char* buildid = NULL;
+
vg_assert(di);
vg_assert(di->have_rx_map == True);
vg_assert(di->have_rw_map == True);
# undef FIND
}
-
- /* Did we find a debuglink section? */
- if (debuglink_img != NULL) {
- UInt crc_offset = VG_ROUNDUP(VG_(strlen)(debuglink_img)+1, 4);
- UInt crc;
- vg_assert(crc_offset + sizeof(UInt) <= debuglink_sz);
+ /* Look for a build-id */
+ buildid = find_buildid(oimage, n_oimage);
- /* Extract the CRC from the debuglink section */
- crc = *(UInt *)(debuglink_img + crc_offset);
+ /* Look for a debug image */
+ if (buildid != NULL || debuglink_img != NULL) {
+ /* Do have a debuglink section? */
+ if (debuglink_img != NULL) {
+ UInt crc_offset = VG_ROUNDUP(VG_(strlen)(debuglink_img)+1, 4);
+ UInt crc;
+
+ vg_assert(crc_offset + sizeof(UInt) <= debuglink_sz);
+
+ /* Extract the CRC from the debuglink section */
+ crc = *(UInt *)(debuglink_img + crc_offset);
+
+ /* See if we can find a matching debug file */
+ dimage = find_debug_file( di, di->filename, buildid,
+ debuglink_img, crc, &n_dimage );
+ } else {
+ /* See if we can find a matching debug file */
+ dimage = find_debug_file( di, di->filename, buildid, NULL, 0, &n_dimage );
+ }
- /* See if we can find a matching debug file */
- dimage = find_debug_file( di, di->filename, debuglink_img,
- crc, &n_dimage );
+ ML_(dinfo_free)(buildid);
if (dimage != 0
&& n_dimage >= sizeof(ElfXX_Ehdr)
<!-- valgrind release + version stuff -->
<!ENTITY rel-type "Release">
<!ENTITY rel-version "3.6.0">
-<!ENTITY rel-date "18 October 2010">
+<!ENTITY rel-date "21 October 2010">
<!-- where the docs are installed -->
<!ENTITY vg-docs-path "$INSTALL/share/doc/valgrind/html/index.html">
</sect2>
-<sect2 id="drd-manual.qt" xreflabel="Qt">
-<title>Debugging Qt Programs</title>
-
-<para>
-The Qt library is the GUI library used by the KDE project. Currently
-there are two versions of the Qt library in use: Qt3 by KDE 3 and Qt4
-by KDE 4. If possible, use Qt4 instead of Qt3. Qt3 is no longer
-supported, and there are known problems with multithreading support in
-Qt3. As an example, using QString objects in more than one thread will
-trigger race reports (this has been confirmed by Trolltech -- see also
-Trolltech task <ulink
-url="http://trolltech.com/developer/task-tracker/index_html">#206152</ulink>).
-</para>
-
-<para>
-Qt4 applications are supported by DRD, but only if the
-<literal>libqt4-debuginfo</literal> package has been installed. Some
-of the synchronization and threading primitives in Qt4 bypass the
-POSIX threads library, and DRD can only intercept these if symbol
-information for the Qt4 library is available. DRD won't tell you if it
-has not been able to load the Qt4 debug information, but a huge number
-of data races will be reported on data protected via
-<literal>QMutex</literal> objects.
-</para>
-
-</sect2>
-
-
<sect2 id="drd-manual.boost.thread" xreflabel="Boost.Thread">
<title>Debugging Boost.Thread Programs</title>
10
dir
-11447
+11471
svn://svn.valgrind.org/valgrind/trunk/drd/scripts/ppc-cross/kernel-config/2.6.22
svn://svn.valgrind.org/valgrind
check_PROGRAMS += pth_spinlock
endif
-if HAVE_QTCORE
-check_PROGRAMS += qt4_mutex qt4_rwlock qt4_semaphore
-endif
-
-if HAVE_QTCORE_QATOMICINT
-check_PROGRAMS += qt4_atomic
-endif
-
AM_CFLAGS += $(AM_FLAG_M3264_PRI) @FLAG_W_EXTRA@ -Wno-inline -Wno-unused-parameter
AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) @FLAG_W_EXTRA@ -Wno-inline -Wno-unused-parameter
if HAVE_PTHREAD_BARRIER
matinv_LDADD = $(LDADD) -lm
endif
-
-if HAVE_QTCORE
-qt4_mutex_SOURCES = qt4_mutex.cpp
-qt4_mutex_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_mutex_LDADD = $(LDADD) $(QTCORE_LIBS)
-
-qt4_rwlock_SOURCES = qt4_rwlock.cpp
-qt4_rwlock_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_rwlock_LDADD = $(LDADD) $(QTCORE_LIBS)
-
-qt4_semaphore_SOURCES = qt4_semaphore.cpp
-qt4_semaphore_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_semaphore_LDADD = $(LDADD) $(QTCORE_LIBS)
-endif
-
-if HAVE_QTCORE_QATOMICINT
-qt4_atomic_SOURCES = qt4_atomic.cpp
-qt4_atomic_CXXFLAGS = $(AM_CXXFLAGS) $(QTCORE_CFLAGS)
-qt4_atomic_LDADD = $(LDADD) $(QTCORE_LIBS)
-endif
10
dir
-11447
+11471
svn://svn.valgrind.org/valgrind/trunk/exp-dhat/docs
svn://svn.valgrind.org/valgrind
_argvec[0] = (unsigned long)_orig.nraddr; \
_argvec[1] = (unsigned long)(arg1); \
__asm__ volatile( \
+ "subl $12, %%esp\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $4, %%esp\n" \
+ "addl $16, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[1] = (unsigned long)(arg1); \
_argvec[2] = (unsigned long)(arg2); \
__asm__ volatile( \
+ "subl $8, %%esp\n\t" \
"pushl 8(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $8, %%esp\n" \
+ "addl $16, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[2] = (unsigned long)(arg2); \
_argvec[3] = (unsigned long)(arg3); \
__asm__ volatile( \
+ "subl $4, %%esp\n\t" \
"pushl 12(%%eax)\n\t" \
"pushl 8(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $12, %%esp\n" \
+ "addl $16, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[4] = (unsigned long)(arg4); \
_argvec[5] = (unsigned long)(arg5); \
__asm__ volatile( \
+ "subl $12, %%esp\n\t" \
"pushl 20(%%eax)\n\t" \
"pushl 16(%%eax)\n\t" \
"pushl 12(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $20, %%esp\n" \
+ "addl $32, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[5] = (unsigned long)(arg5); \
_argvec[6] = (unsigned long)(arg6); \
__asm__ volatile( \
+ "subl $8, %%esp\n\t" \
"pushl 24(%%eax)\n\t" \
"pushl 20(%%eax)\n\t" \
"pushl 16(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $24, %%esp\n" \
+ "addl $32, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[6] = (unsigned long)(arg6); \
_argvec[7] = (unsigned long)(arg7); \
__asm__ volatile( \
+ "subl $4, %%esp\n\t" \
"pushl 28(%%eax)\n\t" \
"pushl 24(%%eax)\n\t" \
"pushl 20(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $28, %%esp\n" \
+ "addl $32, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[8] = (unsigned long)(arg8); \
_argvec[9] = (unsigned long)(arg9); \
__asm__ volatile( \
+ "subl $12, %%esp\n\t" \
"pushl 36(%%eax)\n\t" \
"pushl 32(%%eax)\n\t" \
"pushl 28(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $36, %%esp\n" \
+ "addl $48, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[9] = (unsigned long)(arg9); \
_argvec[10] = (unsigned long)(arg10); \
__asm__ volatile( \
+ "subl $8, %%esp\n\t" \
"pushl 40(%%eax)\n\t" \
"pushl 36(%%eax)\n\t" \
"pushl 32(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $40, %%esp\n" \
+ "addl $48, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[10] = (unsigned long)(arg10); \
_argvec[11] = (unsigned long)(arg11); \
__asm__ volatile( \
+ "subl $4, %%esp\n\t" \
"pushl 44(%%eax)\n\t" \
"pushl 40(%%eax)\n\t" \
"pushl 36(%%eax)\n\t" \
"pushl 4(%%eax)\n\t" \
"movl (%%eax), %%eax\n\t" /* target->%eax */ \
VALGRIND_CALL_NOREDIR_EAX \
- "addl $44, %%esp\n" \
+ "addl $48, %%esp\n" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
_argvec[7] = (unsigned long)(arg7); \
__asm__ volatile( \
VALGRIND_CFI_PROLOGUE \
- "subq $128,%%rsp\n\t" \
+ "subq $136,%%rsp\n\t" \
"pushq 56(%%rax)\n\t" \
"movq 48(%%rax), %%r9\n\t" \
"movq 40(%%rax), %%r8\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $8, %%rsp\n" \
- "addq $128,%%rsp\n\t" \
+ "addq $136,%%rsp\n\t" \
VALGRIND_CFI_EPILOGUE \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
_argvec[9] = (unsigned long)(arg9); \
__asm__ volatile( \
VALGRIND_CFI_PROLOGUE \
- "subq $128,%%rsp\n\t" \
+ "subq $136,%%rsp\n\t" \
"pushq 72(%%rax)\n\t" \
"pushq 64(%%rax)\n\t" \
"pushq 56(%%rax)\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $24, %%rsp\n" \
- "addq $128,%%rsp\n\t" \
+ "addq $136,%%rsp\n\t" \
VALGRIND_CFI_EPILOGUE \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
_argvec[11] = (unsigned long)(arg11); \
__asm__ volatile( \
VALGRIND_CFI_PROLOGUE \
- "subq $128,%%rsp\n\t" \
+ "subq $136,%%rsp\n\t" \
"pushq 88(%%rax)\n\t" \
"pushq 80(%%rax)\n\t" \
"pushq 72(%%rax)\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $40, %%rsp\n" \
- "addq $128,%%rsp\n\t" \
+ "addq $136,%%rsp\n\t" \
VALGRIND_CFI_EPILOGUE \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
return assignNew('V', mce, Ity_I16, binop(Iop_8HLto16, vHi8, vLo8));
}
+ case Iop_Sad8Ux4: /* maybe we could do better? ftm, do mkLazy2. */
case Iop_DivS32:
case Iop_DivU32:
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
The metadata is not copied in cases 0, 2 or 3 so it should be
impossible to segfault your system by using this call.
*/
-#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) \
- VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
- VG_USERREQ__GET_VBITS, \
- (char*)(zza), (char*)(zzvbits), \
+#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) \
+ VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
+ VG_USERREQ__GET_VBITS, \
+ (const char*)(zza), \
+ (char*)(zzvbits), \
(zznbytes), 0, 0)
/* Set the validity data for addresses [zza..zza+zznbytes-1], copying it
The metadata is not copied in cases 0, 2 or 3 so it should be
impossible to segfault your system by using this call.
*/
-#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) \
- VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
- VG_USERREQ__SET_VBITS, \
- (char*)(zza), (char*)(zzvbits), \
+#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) \
+ VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
+ VG_USERREQ__SET_VBITS, \
+ (const char*)(zza), \
+ (const char*)(zzvbits), \
(zznbytes), 0, 0 )
#endif
/* How to compile:
- gcc -marm -O -g -Wall -mcpu=cortex-a8 -o test_arm_v6int v6int.c
+ gcc -g -Wall -mcpu=cortex-a8 -o v6mediaA -marm none/tests/arm/v6media.c
+ or
+ gcc -g -Wall -mcpu=cortex-a8 -o v6mediaT -mthumb none/tests/arm/v6media.c
*/
#include <stdio.h>
printf("----------------- SMLAD ----------------- \n");
TESTINST4("smlad r0, r1, r2, r3",
+ 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smlad r0, r1, r2, r3",
0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
TESTINST4("smlad r0, r1, r2, r3",
0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
TESTINST4("smlad r0, r1, r2, r3",
0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
+ printf("----------------- SMLADX ----------------- \n");
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
+ TESTINST4("smladx r0, r1, r2, r3",
+ 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
+TESTINST4("smladx r0, r1, r2, r3",
+ 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
+TESTINST4("smladx r0, r1, r2, r3",
+ 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
+TESTINST4("smladx r0, r1, r2, r3",
+ 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
+
printf("------------ SMLABB, SMLATT, SMLATB, SMLABT ------------\n");
/* smlabb rD, rN, rM, rA */
TESTINST4("smlabb r0, r1, r2, r3",
TESTINST4("smlawt r0, r1, r2, r3",
0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
+
+ printf("----------------- SMLSD ----------------- \n");
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
+ TESTINST4("smlsd r0, r1, r2, r3",
+ 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
+TESTINST4("smlsd r0, r1, r2, r3",
+ 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
+
+ printf("----------------- SMLSDX ----------------- \n");
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
+ TESTINST4("smlsdx r0, r1, r2, r3",
+ 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
+TESTINST4("smlsdx r0, r1, r2, r3",
+ 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
+TESTINST4("smlsdx r0, r1, r2, r3",
+ 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
+TESTINST4("smlsdx r0, r1, r2, r3",
+ 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
+
+
+ printf("----------------- SMUSD ----------------- \n");
+ TESTINST3("smusd r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
+ TESTINST3("smusd r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("smusd r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
+ TESTINST3("smusd r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
+ TESTINST3("smusd r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
+ TESTINST3("smusd r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
+ TESTINST3("smusd r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
+TESTINST3("smusd r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
+ printf("----------------- SMUSDX ---------------- \n");
+ TESTINST3("smusdx r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
+ TESTINST3("smusdx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("smusdx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
+ TESTINST3("smusdx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
+ TESTINST3("smusdx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
+ TESTINST3("smusdx r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
+ TESTINST3("smusdx r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
+TESTINST3("smusdx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
+
+ printf("----------------- USAD8 ---------------- \n");
+ TESTINST3("usad8 r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
+ TESTINST3("usad8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usad8 r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
+ TESTINST3("usad8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
+ TESTINST3("usad8 r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
+ TESTINST3("usad8 r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
+ TESTINST3("usad8 r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
+TESTINST3("usad8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
+
+ printf("----------------- USADA8 ----------------- \n");
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
+ TESTINST4("usada8 r0, r1, r2, r3",
+ 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
+TESTINST4("usada8 r0, r1, r2, r3",
+ 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
+
+
+
+
/*
TESTINST3("theinsn", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
TESTINST3("theinsn", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
smuadx r0, r1, r2 :: rd 0x04e080e7 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smuadx r0, r1, r2 :: rd 0xfe0168fc rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000
----------------- SMLAD -----------------
+smlad r0, r1, r2, r3 :: rd 0x80000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
smlad r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlad r0, r1, r2, r3 :: rd 0x0000ffff rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlad r0, r1, r2, r3 :: rd 0x0001001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlad r0, r1, r2, r3 :: rd 0x00b7b139 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlad r0, r1, r2, r3 :: rd 0xc79bbb47 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlad r0, r1, r2, r3 :: rd 0x0f5e5bec rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- SMLADX -----------------
+smladx r0, r1, r2, r3 :: rd 0x80000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x0000ffff rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x0001001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x00000278 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x00000102 rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x000030e2 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x5639ee73 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0xc5eafef5 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smladx r0, r1, r2, r3 :: rd 0x39ba1d8c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
------------ SMLABB, SMLATT, SMLATB, SMLABT ------------
smlabb r0, r1, r2, r3 :: rd 0x00000000 rm 0x00030000, rn 0x00040000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlabb r0, r1, r2, r3 :: rd 0x00008001 rm 0x00030001, rn 0x00040002 rs 0x00007fff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlawt r0, r1, r2, r3 :: rd 0xff440c7a rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlawt r0, r1, r2, r3 :: rd 0xec180db5 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
smlawt r0, r1, r2, r3 :: rd 0xfd3dfd7c rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- SMLSD -----------------
+smlsd r0, r1, r2, r3 :: rd 0x00000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x00000001 rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x0000001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x00000020 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x000000fa rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x00003118 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x46d0f283 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xb583dec1 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x1746e19c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x7f1b45a7 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xd61f013c rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x11c2a9f9 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xa8dcd3bd rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x69f4e270 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xddca6d45 rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x255d66d5 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x9751e12e rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x4883e0ce rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x9b2f1a97 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x00aca055 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x54ad18e6 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xc11e2ae7 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xa68e4e94 rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xcf06b4a9 rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x70734c96 rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x7924b596 rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x457e8494 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x9f7ce5ab rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x7e9142d7 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xc9c16b56 rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x343d44bb rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x829f63d9 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x7e0be811 rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xe8f8702a rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x276c3d40 rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x687bc74a rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x2ae3c38f rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x9844bab5 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xd5393721 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x74f6b265 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x63f13945 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xeb097592 rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xcc3b7535 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x266bc158 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x84bbcf7f rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x59a38672 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x86f70dbf rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x765b06dc rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xed67a008 rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x37540ed9 rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x1f9219fb rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x82e3c60f rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x94d58fbc rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x72cfe4b1 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0x45a3f12d rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xcab5d1f1 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsd r0, r1, r2, r3 :: rd 0xf901b934 rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- SMLSDX -----------------
+smlsdx r0, r1, r2, r3 :: rd 0x00000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x00000001 rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x0000001f rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x00000020 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x00000104 rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x00003118 rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x454ff2e5 rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x94ff55e5 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smlsdx r0, r1, r2, r3 :: rd 0x2d13277c rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- SMUSD -----------------
+smusd r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x00000000 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfffffffb rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x00003018 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xce34b55d rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfa4adabc rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xf6979877 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x15ee447f rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x1a9387ea rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x1fea1186 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x080346b8 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xdc040e5c rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x13e77b1e rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xffe387a7 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xca9b1438 rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x09d4b1fb rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x0845d8f1 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfd699dbf rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x32ee1760 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfa9f544c rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x06f20025 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfc2edfa6 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xeceafe3e rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xf7433540 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x3cf4b625 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x0e50389b rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x2f492fe5 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xffd5e3f0 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xcb341cd8 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x1da1e53a rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x054b896e rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x27561296 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xe20e04b5 rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x08ade092 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x16ffadf6 rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x23eeaf4d rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x14357393 rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x1202b054 rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfdac91b0 rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x18f241d6 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x19740601 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x19630603 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xf00000d8 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x25d80217 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xe3943e90 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x296fe090 rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfd3eacb0 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfbaee4f2 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xfcd34768 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x3271444a rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xee903517 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0x088d586c rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xe8c20fe7 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusd r0, r1, r2 :: rd 0xeca01324 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- SMUSDX ----------------
+smusdx r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x00000000 rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x00000000 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x00000005 rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x00003018 rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x2736f3c3 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xfa46a46c rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0bb05b66 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xf0fb306d rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x29972290 rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x08012346 rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xec029f58 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xe6acf7c4 rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x109d90fb rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xf029ea71 rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x4561697a rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xfd14d1e4 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xf737e18c rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xff9e13e5 rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x2ba97aa0 rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xf6196582 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x02be8154 rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x2100cda6 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x088cbebe rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xe7588d2e rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x3ae1bf67 rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xed670286 rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x30bd684d rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xffd04078 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xdcb13ca8 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x1ffb7935 rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xfa5db4ab rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xeead44e0 rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x1c43f3ff rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xd6a0cf18 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0f9c4c9e rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0fa6b378 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xe397d23a rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xfd2d124c rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x095a673f rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x103df305 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0162e6e8 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x185f9408 rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0a38b0dc rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xde986a0f rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x21143e00 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x2680955f rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0119caa0 rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x0240d6b2 rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x04d292e6 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x28492bf6 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x126e47f9 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xedf2199a rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0x017c667d rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+smusdx r0, r1, r2 :: rd 0xf989459c rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- USAD8 ----------------
+usad8 r0, r1, r2 :: rd 0x00000000 rm 0x80008000, rn 0x80008000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000002fc rm 0x7fff7fff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000002fa rm 0x7fff7fff, rn 0x00010001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000002fc rm 0x80008000, rn 0xffffffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000c2 rm 0x00640064, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000200 rm 0xffffffff, rn 0xfffc0001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000002fe rm 0xfff70fff, rn 0x00030003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000f5 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001eb rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001a4 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000159 rm 0xfaceab39, rn 0x2973c051, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000017d rm 0xa3e6f759, rn 0x557c7ba2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000020d rm 0x72f33509, rn 0x9b41bfb1, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001f2 rm 0xa5ec1aa8, rn 0x2b62ba5a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000010b rm 0x6ebd04d9, rn 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000165 rm 0x2eaea305, rn 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001dc rm 0x22b65db1, rn 0xcdb7ed11, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000019e rm 0x776c41c7, rn 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000148 rm 0xe50dd77c, rn 0xd6f9a698, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001e2 rm 0x0be36f70, rn 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000ce rm 0xebbff82b, rn 0xd759eb72, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000012e rm 0x50c28082, rn 0xd9c4b1f4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000187 rm 0x17962e8f, rn 0xa29eb320, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000008f rm 0xc57243b7, rn 0xcf1e4487, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000247 rm 0x7eb226ac, rn 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001db rm 0xbce0f026, rn 0xbb151055, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000c3 rm 0xa5757252, rn 0x957440d2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000eb rm 0xf4a477c1, rn 0x728b7771, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000019d rm 0x76723a21, rn 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000187 rm 0x74d01105, rn 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000270 rm 0xc1273e2c, rn 0x03d0fb78, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000094 rm 0xdd9b7653, rn 0xd0d49b7c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001ac rm 0xdde62fd1, rn 0x76354a58, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000b1 rm 0xc3fb4a96, rn 0x9fa45fb7, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000019f rm 0xa1a10f56, rn 0x7572bdec, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000014d rm 0x4b7d4fd9, rn 0xfea59eb6, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000169 rm 0x9d0ddffc, rn 0xf2669090, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000fd rm 0x4f82d17c, rn 0xbc1ff573, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000b9 rm 0x08215ca2, rn 0x345f67e6, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000014b rm 0xf23595d0, rn 0x3f39d77e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000002f rm 0xf244c158, rn 0xfb2db55b, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000009d rm 0x256bfdd6, rn 0x13aebedf, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000b7 rm 0xc02a0c05, rn 0x5b013000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000a4 rm 0xee2fa46e, rn 0xed95b542, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000018f rm 0x97a7da20, rn 0x60bb5ee8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001b5 rm 0xa231d5e6, rn 0xd9000a64, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000109 rm 0x10e1968a, rn 0x624f9467, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001c1 rm 0x0e089270, rn 0xa8c64d94, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000df rm 0x9e8e0185, rn 0x6b4f637a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000010c rm 0x3096f12e, rn 0x11f5f4b9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000033d rm 0xffc134df, rn 0x0b02eb0c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000d8 rm 0xe444dc25, rn 0xd5eef620, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000001c2 rm 0x06ea9b2a, rn 0xa2108661, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x000000e9 rm 0x448f3a5f, rn 0x17aecf57, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x0000019d rm 0x4b0c2337, rn 0xffa63d6c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000263 rm 0xf91d5f56, rn 0x088bc0f9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usad8 r0, r1, r2 :: rd 0x00000178 rm 0xf808434e, rn 0xefeab836, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- USADA8 -----------------
+usada8 r0, r1, r2, r3 :: rd 0x00000000 rm 0x80008000, rn 0x80008000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x000002fc rm 0x7fff7fff, rn 0x00000000 rs 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x000002fb rm 0x7fff7fff, rn 0x00010001 rs 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x0000031b rm 0x80008000, rn 0xffffffff rs 0x0000001f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x000000e2 rm 0x00640064, rn 0x00030003 rs 0x00000020, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x000002ff rm 0xffffffff, rn 0xfffc0001 rs 0x000000ff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x000003fe rm 0xfff70fff, rn 0x00030003 rs 0x00000100, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x5f986f9f rm 0xb8035b5b, rn 0xce0ce1ed rs 0x5f986e68, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xaae34485 rm 0x35232047, rn 0x146275d8 rs 0xaae3433f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x2c07a752 rm 0xe7aa57b4, rn 0x1584bd74 rs 0x2c07a5b4, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x89d2f028 rm 0x32fa0095, rn 0x36f26261 rs 0x89d2ef86, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xd4b64e72 rm 0x8ed8287c, rn 0x02c90120 rs 0xd4b64d54, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x0b02c745 rm 0xc53aaba9, rn 0x29300837 rs 0x0b02c58a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xb0d20909 rm 0x216158cb, rn 0x57a50a01 rs 0xb0d20777, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x7e376337 rm 0x3e2e1bd7, rn 0x3cd6cd94 rs 0x7e376198, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xd5dc54cd rm 0xd5fe2dc4, rn 0xdd914bf7 rs 0xd5dc5407, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xf2b649b5 rm 0xf87b961e, rn 0x1d66879f rs 0xf2b64835, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xae930b31 rm 0xd65db979, rn 0xc61b323b rs 0xae930a1a, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x2fb715ac rm 0x5ef1f1a8, rn 0xbf73f0a5 rs 0x2fb714c9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xa3268ca5 rm 0x1ffe53d9, rn 0x815bb75b rs 0xa3268abe, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xef9ea125 rm 0xed2cbf78, rn 0xc6ffabb6 rs 0xef9e9fd9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x3dba12a8 rm 0xeaa652c7, rn 0x137741f4 rs 0x3dba1164, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xdba5be64 rm 0x3ada0280, rn 0x71fbde8b rs 0xdba5bd25, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x884c0c0b rm 0xda4ba05b, rn 0x90f9833d rs 0x884c0ad8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x9a4ff36e rm 0xc00b821a, rn 0x7fa1d5a6 rs 0x9a4ff1b8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x81616ede rm 0xe1bb8606, rn 0x58293969 rs 0x81616d13, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x6077fcbf rm 0x51f31d95, rn 0xa3cfd624 rs 0x6077fb1f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x40b095c5 rm 0x0849a0c2, rn 0x0872f25a rs 0x40b094e2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x91edc3c5 rm 0x17913309, rn 0xf1e03d7e rs 0x91edc21d, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x60340920 rm 0x5388b5cd, rn 0x86582032 rs 0x6034078d, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xccfa1dcc rm 0x181c436b, rn 0x5de41558 rs 0xccfa1c7e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x48d06674 rm 0x23ba1b46, rn 0x4437983c rs 0x48d06549, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xb2aeae68 rm 0xa9085781, rn 0xc6b4ac58 rs 0xb2aead21, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x852e3acd rm 0xc2bdf597, rn 0xdde1e6a4 rs 0x852e3a72, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xe7b880b6 rm 0x157b0dea, rn 0xf0d5ff94 rs 0xe7b87e39, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x0557c7bf rm 0x3edad6b6, rn 0x82aceb7a rs 0x0557c6fc, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x81874b24 rm 0x6cc9bfa8, rn 0x7f808c15 rs 0x81874a02, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x3ccad57b rm 0x6b1422c7, rn 0x33921b00 rs 0x3ccad3f7, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x85fbf300 rm 0xd7ce1909, rn 0x3e435701 rs 0x85fbf196, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x89437103 rm 0xb4e16b6e, rn 0x6e13680a rs 0x89436f88, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x390d2df8 rm 0x44858efc, rn 0x9002bc30 rs 0x390d2c2f, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x80657de1 rm 0xbea121ab, rn 0x953ff6ec rs 0x80657c40, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x11bd091b rm 0x6ffed89f, rn 0x3e8c49b7 rs 0x11bd07d1, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xe4999ce3 rm 0x7795635d, rn 0x5e6e32dd rs 0xe4999bf2, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x23134a53 rm 0xec0c2f30, rn 0x5736ed46 rs 0x231348c0, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x5765b35d rm 0x4f9ddd1b, rn 0x95bca5d8 rs 0x5765b203, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x69ec0392 rm 0xc1553709, rn 0x0112b30a rs 0x69ec0212, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x899d936b rm 0x74bd0223, rn 0x03fa9bb5 rs 0x899d9192, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x7fcbe728 rm 0xf52e9fbf, rn 0xb4c510a7 rs 0x7fcbe5a9, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xf7b0b27d rm 0x64a365ef, rn 0x2dd01366 rs 0xf7b0b13e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x464a22cf rm 0x5e4b1cbf, rn 0x44de5ca9 rs 0x464a21cc, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xf5818eb6 rm 0x299da970, rn 0xe8108f1b rs 0xf5818cfb, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x8217b8b6 rm 0xcd90d604, rn 0xaa5e9444 rs 0x8217b7df, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x73c291ba rm 0xe60743c3, rn 0x7acb4de3 rs 0x73c29060, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x1d133df3 rm 0x868e7c7d, rn 0x5f77532e rs 0x1d133d3d, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0x21ba3032 rm 0x4e5e0760, rn 0x8f6d3264 rs 0x21ba2fb3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xeda512a7 rm 0xde99ac2f, rn 0x0be36f70 rs 0xeda5110c, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+usada8 r0, r1, r2, r3 :: rd 0xf20fb99e rm 0xc57243b7, rn 0xcf1e4487 rs 0xf20fb90f, carryin 0, cpsr 0x00000000 ge[3:0]=0000