From: Carl Love Date: Thu, 9 Sep 2021 23:10:07 +0000 (+0000) Subject: fix sraw, srawi, srad, sradi instructions X-Git-Tag: VALGRIND_3_18_0~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9f41e0c0b18763a18a1a2abad7981bbd299b235;p=thirdparty%2Fvalgrind.git fix sraw, srawi, srad, sradi instructions For ISA 3.0 and beyond, the instructions also write the XER register. Split the instructions out to a new command line option so we can create an ISA 2.07 expect file, ISA 3.0 LE and ISA 3.0 BE expect file. The new command line option is "-s" to just run just these four instructions. --- diff --git a/NEWS b/NEWS index ef1fce7baf..73edd71920 100644 --- a/NEWS +++ b/NEWS @@ -59,6 +59,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 442061 very slow execution under Fedora 34 (readdwarf3) 443031 Gcc -many change requires explicit .machine directives 443033 Add support for the ISA 3.0 mcrxrx instruction +443034 Sraw, srawi, srad, sradi, mfs To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c index 3dab201476..5d9f6b84a2 100644 --- a/VEX/priv/guest_ppc_toIR.c +++ b/VEX/priv/guest_ppc_toIR.c @@ -11499,7 +11499,7 @@ static Bool dis_memsync ( UInt prefix, UInt theInstr ) /* Integer Shift Instructions */ -static Bool dis_int_shift ( UInt prefix, UInt theInstr ) +static Bool dis_int_shift ( UInt prefix, UInt theInstr, UInt allow_isa_3_0 ) { /* X-Form, XS-Form */ UChar opc1 = ifieldOPC(theInstr); @@ -11575,11 +11575,16 @@ static Bool dis_int_shift ( UInt prefix, UInt theInstr ) mkexpr(sh_amt)) ) ); assign( rA, mkWidenFrom32(ty, e_tmp, /* Signed */True) ); + /* Set CA bit */ set_XER_CA_CA32( ty, PPCG_FLAG_OP_SRAW, mkexpr(rA), mkWidenFrom32(ty, mkexpr(rS_lo32), True), mkWidenFrom32(ty, mkexpr(sh_amt), True ), mkWidenFrom32(ty, getXER_CA_32(), True) ); + + if (allow_isa_3_0) + /* copy CA to CA32 */ + putXER_CA32( unop(Iop_32to8, getXER_CA_32())); break; } @@ -11597,11 +11602,16 @@ static Bool dis_int_shift ( UInt prefix, UInt theInstr ) mkU8(sh_imm)) ); } + /* Set CA bit */ set_XER_CA_CA32( ty, PPCG_FLAG_OP_SRAWI, mkexpr(rA), mkWidenFrom32(ty, mkexpr(rS_lo32), /* Syned */True), mkSzImm(ty, sh_imm), mkWidenFrom32(ty, getXER_CA_32(), /* Syned */False) ); + + if (allow_isa_3_0) + /* copy CA to CA32 */ + putXER_CA32( unop(Iop_32to8, getXER_CA_32())); break; case 0x218: // srw (Shift Right Word, PPC32 p508) @@ -11672,9 +11682,14 @@ static Bool dis_int_shift ( UInt prefix, UInt theInstr ) mkU64(63), mkexpr(sh_amt)) )) ); + /* Set CA bit */ set_XER_CA_CA32( ty, PPCG_FLAG_OP_SRAD, mkexpr(rA), mkexpr(rS), mkexpr(sh_amt), mkWidenFrom32(ty, getXER_CA_32(), /* Syned */False) ); + + if (allow_isa_3_0) + /* copy CA to CA32 */ + putXER_CA32( unop(Iop_32to8, getXER_CA_32())); break; } @@ -11685,11 +11700,16 @@ static Bool dis_int_shift ( UInt prefix, UInt theInstr ) flag_rC ? ".":"", rA_addr, rS_addr, sh_imm); assign( rA, binop(Iop_Sar64, getIReg(rS_addr), mkU8(sh_imm)) ); + /* Set CA bit */ set_XER_CA_CA32( ty, PPCG_FLAG_OP_SRADI, mkexpr(rA), getIReg(rS_addr), mkU64(sh_imm), mkWidenFrom32(ty, getXER_CA_32(), /* Syned */False) ); + + if (allow_isa_3_0) + /* copy CA to CA32 */ + putXER_CA32( unop(Iop_32to8, getXER_CA_32())); break; case 0x21B: // srd (Shift Right DWord, PPC64 p574) @@ -37453,7 +37473,8 @@ DisResult disInstr_PPC_WRK ( /* Integer Shift Instructions */ case 0x018: case 0x318: case 0x338: // slw, sraw, srawi case 0x218: // srw - if (dis_int_shift( prefix, theInstr )) goto decode_success; + if (dis_int_shift( prefix, theInstr, allow_isa_3_0 )) + goto decode_success; goto decode_failure; /* 64bit Integer Shift Instructions */ @@ -37461,7 +37482,8 @@ DisResult disInstr_PPC_WRK ( case 0x33A: case 0x33B: // sradi case 0x21B: // srd if (!mode64) goto decode_failure; - if (dis_int_shift( prefix, theInstr )) goto decode_success; + if (dis_int_shift( prefix, theInstr, allow_isa_3_0 )) + goto decode_success; goto decode_failure; /* Integer Load Instructions */ diff --git a/none/tests/ppc32/Makefile.am b/none/tests/ppc32/Makefile.am index 11697c99a4..2ca067d486 100644 --- a/none/tests/ppc32/Makefile.am +++ b/none/tests/ppc32/Makefile.am @@ -9,6 +9,8 @@ EXTRA_DIST = \ bug139050-ppc32.stdout.exp bug139050-ppc32.stderr.exp \ bug139050-ppc32.vgtest \ ldstrev.stderr.exp ldstrev.stdout.exp ldstrev.vgtest \ + jm-int-sh_algebraic.stderr.exp jm-int-sh_algebraic.stdout.exp \ + jm-int-sh_algebraic.vgtest \ jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest \ jm-int_other.stderr.exp jm-int_other.stdout.exp jm-int_other.vgtest \ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest jm-fp.stdout.exp-BE2 \ diff --git a/none/tests/ppc32/jm-insns.c b/none/tests/ppc32/jm-insns.c index 3a169933f8..e452fe0f31 100644 --- a/none/tests/ppc32/jm-insns.c +++ b/none/tests/ppc32/jm-insns.c @@ -381,6 +381,7 @@ enum test_flags { PPC_ALTIVEC = 0x00040000, PPC_FALTIVEC = 0x00050000, PPC_MISC = 0x00060000, + PPC_SH_ALGEBRAIC = 0x00070000, PPC_FAMILY = 0x000F0000, /* Flags: these may be combined, so use separate bitfields. */ PPC_CR = 0x01000000, @@ -886,6 +887,14 @@ static void test_srd (void) } #endif // #ifdef __powerpc64__ +static test_t tests_il_ops_two_sh[] = { + { &test_sraw , " sraw", }, +#ifdef __powerpc64__ + { &test_srad , " srad", }, +#endif // #ifdef __powerpc64__ + { NULL, NULL, }, +}; + static test_t tests_il_ops_two[] = { { &test_and , " and", }, { &test_andc , " andc", }, @@ -896,11 +905,9 @@ static test_t tests_il_ops_two[] = { { &test_orc , " orc", }, { &test_xor , " xor", }, { &test_slw , " slw", }, - { &test_sraw , " sraw", }, { &test_srw , " srw", }, #ifdef __powerpc64__ { &test_sld , " sld", }, - { &test_srad , " srad", }, { &test_srd , " srd", }, #endif // #ifdef __powerpc64__ { NULL, NULL, }, @@ -978,6 +985,14 @@ static void test_srd_ (void) } #endif // #ifdef __powerpc64__ +static test_t tests_ilr_ops_two_sh[] = { + { &test_sraw_ , " sraw.", }, +#ifdef __powerpc64__ + { &test_srad_ , " srad.", }, +#endif // #ifdef __powerpc64__ + { NULL, NULL, }, +}; + static test_t tests_ilr_ops_two[] = { { &test_and_ , " and.", }, { &test_andc_ , " andc.", }, @@ -988,11 +1003,9 @@ static test_t tests_ilr_ops_two[] = { { &test_orc_ , " orc.", }, { &test_xor_ , " xor.", }, { &test_slw_ , " slw.", }, - { &test_sraw_ , " sraw.", }, { &test_srw_ , " srw.", }, #ifdef __powerpc64__ { &test_sld_ , " sld.", }, - { &test_srad_ , " srad.", }, { &test_srd_ , " srd.", }, #endif // #ifdef __powerpc64__ { NULL, NULL, }, @@ -1424,11 +1437,17 @@ extern void test_sradi (void); ASSEMBLY_FUNC("test_sradi", "sradi 17, 14, 0"); #endif // #ifdef __powerpc64__ +static test_t tests_il_ops_spe_sh[] = { + { &test_srawi , " srawi", }, +#ifdef __powerpc64__ + { &test_sradi , " sradi", }, +#endif // #ifdef __powerpc64__ + { NULL, NULL, }, +}; static test_t tests_il_ops_spe[] = { { &test_rlwimi , " rlwimi", }, { &test_rlwinm , " rlwinm", }, { &test_rlwnm , " rlwnm", }, - { &test_srawi , " srawi", }, { &test_mfcr , " mfcr", }, { &test_mfspr , " mfspr", }, { &test_mtspr , " mtspr", }, @@ -1439,7 +1458,6 @@ static test_t tests_il_ops_spe[] = { { &test_rldicl , " rldicl", }, { &test_rldicr , " rldicr", }, { &test_rldimi , " rldimi", }, - { &test_sradi , " sradi", }, #endif // #ifdef __powerpc64__ { NULL, NULL, }, }; @@ -1489,11 +1507,17 @@ extern void test_sradi_ (void); ASSEMBLY_FUNC("test_sradi_", "sradi. 17, 14, 0"); #endif // #ifdef __powerpc64__ +static test_t tests_ilr_ops_spe_sh[] = { + { &test_srawi_ , " srawi.", }, +#ifdef __powerpc64__ + { &test_sradi_ , " sradi.", }, +#endif // #ifdef __powerpc64__ + { NULL, NULL, }, +}; static test_t tests_ilr_ops_spe[] = { { &test_rlwimi_ , " rlwimi.", }, { &test_rlwinm_ , " rlwinm.", }, { &test_rlwnm_ , " rlwnm.", }, - { &test_srawi_ , " srawi.", }, { &test_mcrf , " mcrf", }, { &test_mcrxr , " mcrxr", }, { &test_mtcrf , " mtcrf", }, @@ -1504,7 +1528,6 @@ static test_t tests_ilr_ops_spe[] = { { &test_rldicl_ , " rldicl.", }, { &test_rldicr_ , " rldicr.", }, { &test_rldimi_ , " rldimi.", }, - { &test_sradi_ , " sradi.", }, #endif // #ifdef __powerpc64__ { NULL, NULL, }, }; @@ -3944,11 +3967,21 @@ static test_table_t all_tests[] = { "PPC integer logical insns with two args", 0x00010202, }, + { + tests_il_ops_two_sh , + "PPC integer shift algebraic two args", + 0x00070202, + }, { tests_ilr_ops_two , "PPC integer logical insns with two args with flags update", 0x01010202, }, + { + tests_ilr_ops_two_sh , + "PPC integer shift algebraic two args with flags update", + 0x01070202, + }, { tests_icr_ops_two , "PPC integer compare insns (two args)", @@ -4009,11 +4042,21 @@ static test_table_t all_tests[] = { "PPC logical insns with special forms", 0x00010207, }, + { + tests_il_ops_spe_sh , + "PPC shift algebraic with special forms", + 0x00070207, + }, { tests_ilr_ops_spe , "PPC logical insns with special forms with flags update", 0x01010207, }, + { + tests_ilr_ops_spe_sh , + "PPC shift algebraic with special forms with flags update", + 0x01070207, + }, { tests_ild_ops_two_i16 , "PPC integer load insns\n with one register + one 16 bits immediate args with flags update", @@ -5728,6 +5771,11 @@ static void test_int_st_three_regs (const char* name, /* Used in do_tests, indexed by flags->nb_args Elements correspond to enum test_flags::num args */ +static test_loop_t int_sh_algebraic[] = { + &test_int_two_args, + &test_int_special, +}; + static test_loop_t int_loops[] = { &test_int_one_arg, &test_int_two_args, @@ -7465,7 +7513,7 @@ static int check_name (const char* name, const char *filter, typedef struct insn_sel_flags_t_struct { int one_arg, two_args, three_args; int arith, logical, compare, ldst; - int integer, floats, p405, altivec, faltivec, misc; + int integer, floats, p405, altivec, faltivec, misc, sh_algebraic; int cr; } insn_sel_flags_t; @@ -7505,6 +7553,7 @@ static void do_tests ( insn_sel_flags_t seln_flags, (family == PPC_405 && !seln_flags.p405) || (family == PPC_ALTIVEC && !seln_flags.altivec) || (family == PPC_MISC && !seln_flags.misc) || + (family == PPC_SH_ALGEBRAIC && !seln_flags.sh_algebraic) || (family == PPC_FALTIVEC && !seln_flags.faltivec)) continue; /* Check flags update */ @@ -7518,6 +7567,9 @@ static void do_tests ( insn_sel_flags_t seln_flags, case PPC_INTEGER: loop = &int_loops[nb_args - 1]; break; + case PPC_SH_ALGEBRAIC: + loop = &int_sh_algebraic[0]; + break; case PPC_MISC: loop = &misc_loops[0]; break; @@ -7625,6 +7677,7 @@ static void usage (void) "\t-f: test floating point instructions\n" "\t-a: test altivec instructions\n" "\t-m: test miscellaneous instructions\n" + "\t-s: test shift algebraic (sraw, srawi, srad, sradi) instructions\n" "\t-A: test all (int, fp, altivec) instructions\n" "\t-v: be verbose\n" "\t-h: display this help and exit\n" @@ -7658,6 +7711,7 @@ int main (int argc, char **argv) flags.altivec = 0; flags.faltivec = 0; flags.cr = -1; + flags.sh_algebraic = 0; while ((c = getopt(argc, argv, "123t:f:n:r:uvh")) != -1) { switch (c) { @@ -7760,6 +7814,7 @@ int main (int argc, char **argv) flags.p405 = 1; flags.altivec = 1; flags.faltivec = 1; + flags.algebraic = 1; } // Default cr update if (flags.cr == -1) @@ -7795,15 +7850,20 @@ int main (int argc, char **argv) flags.p405 = 0; flags.altivec = 0; flags.faltivec = 0; + flags.sh_algebraic = 0; // Flags flags.cr = 2; - while ((c = getopt(argc, argv, "ilcLfmahvA")) != -1) { + while ((c = getopt(argc, argv, "ilcLfmsahvA")) != -1) { switch (c) { case 'i': flags.arith = 1; flags.integer = 1; break; + case 's': + flags.logical = 1; + flags.sh_algebraic = 1; + break; case 'l': flags.logical = 1; flags.integer = 1; @@ -7895,6 +7955,7 @@ int main (int argc, char **argv) printf(" p405 = %d\n", flags.p405); printf(" altivec = %d\n", flags.altivec); printf(" faltivec = %d\n", flags.faltivec); + printf(" sh_algebraic = %d\n", flags.sh_algebraic); printf(" cr update: \n"); printf(" cr = %d\n", flags.cr); printf("\n"); diff --git a/none/tests/ppc32/jm-int-sh_algebraic.stderr.exp b/none/tests/ppc32/jm-int-sh_algebraic.stderr.exp new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/none/tests/ppc32/jm-int-sh_algebraic.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/none/tests/ppc32/jm-int-sh_algebraic.stdout.exp b/none/tests/ppc32/jm-int-sh_algebraic.stdout.exp new file mode 100644 index 0000000000..796d39a3f4 --- /dev/null +++ b/none/tests/ppc32/jm-int-sh_algebraic.stdout.exp @@ -0,0 +1,45 @@ +PPC integer shift algebraic two args: + sraw 00000000, 00000000 => 00000000 (00000000 00000000) + sraw 00000000, 000f423f => 00000000 (00000000 00000000) + sraw 00000000, ffffffff => 00000000 (00000000 00000000) + sraw 000f423f, 00000000 => 000f423f (00000000 00000000) + sraw 000f423f, 000f423f => 00000000 (00000000 00000000) + sraw 000f423f, ffffffff => 00000000 (00000000 00000000) + sraw ffffffff, 00000000 => ffffffff (00000000 00000000) + sraw ffffffff, 000f423f => ffffffff (00000000 20000000) + sraw ffffffff, ffffffff => ffffffff (00000000 20000000) + +PPC integer shift algebraic two args with flags update: + sraw. 00000000, 00000000 => 00000000 (20000000 00000000) + sraw. 00000000, 000f423f => 00000000 (20000000 00000000) + sraw. 00000000, ffffffff => 00000000 (20000000 00000000) + sraw. 000f423f, 00000000 => 000f423f (40000000 00000000) + sraw. 000f423f, 000f423f => 00000000 (20000000 00000000) + sraw. 000f423f, ffffffff => 00000000 (20000000 00000000) + sraw. ffffffff, 00000000 => ffffffff (80000000 00000000) + sraw. ffffffff, 000f423f => ffffffff (80000000 20000000) + sraw. ffffffff, ffffffff => ffffffff (80000000 20000000) + +PPC shift algebraic with special forms: + srawi 00000000, 00000000 => 00000000 (00000000 00000000) + srawi 00000000, 000f423f => 00000000 (00000000 00000000) + srawi 00000000, ffffffff => 00000000 (00000000 00000000) + srawi 000f423f, 00000000 => 000f423f (00000000 00000000) + srawi 000f423f, 000f423f => 000f423f (00000000 00000000) + srawi 000f423f, ffffffff => 000f423f (00000000 00000000) + srawi ffffffff, 00000000 => ffffffff (00000000 00000000) + srawi ffffffff, 000f423f => ffffffff (00000000 00000000) + srawi ffffffff, ffffffff => ffffffff (00000000 00000000) + +PPC shift algebraic with special forms with flags update: + srawi. 00000000, 00000000 => 00000000 (20000000 00000000) + srawi. 00000000, 000f423f => 00000000 (20000000 00000000) + srawi. 00000000, ffffffff => 00000000 (20000000 00000000) + srawi. 000f423f, 00000000 => 000f423f (40000000 00000000) + srawi. 000f423f, 000f423f => 000f423f (40000000 00000000) + srawi. 000f423f, ffffffff => 000f423f (40000000 00000000) + srawi. ffffffff, 00000000 => ffffffff (80000000 00000000) + srawi. ffffffff, 000f423f => ffffffff (80000000 00000000) + srawi. ffffffff, ffffffff => ffffffff (80000000 00000000) + +All done. Tested 4 different instructions diff --git a/none/tests/ppc32/jm-int-sh_algebraic.vgtest b/none/tests/ppc32/jm-int-sh_algebraic.vgtest new file mode 100644 index 0000000000..cc660fcbfb --- /dev/null +++ b/none/tests/ppc32/jm-int-sh_algebraic.vgtest @@ -0,0 +1 @@ +prog: jm-insns -s diff --git a/none/tests/ppc32/jm-int_other.stdout.exp b/none/tests/ppc32/jm-int_other.stdout.exp index 577ddd12ca..989647f7c5 100644 --- a/none/tests/ppc32/jm-int_other.stdout.exp +++ b/none/tests/ppc32/jm-int_other.stdout.exp @@ -89,16 +89,6 @@ PPC integer logical insns with two args: slw ffffffff, 000f423f => 00000000 (00000000 00000000) slw ffffffff, ffffffff => 00000000 (00000000 00000000) - sraw 00000000, 00000000 => 00000000 (00000000 00000000) - sraw 00000000, 000f423f => 00000000 (00000000 00000000) - sraw 00000000, ffffffff => 00000000 (00000000 00000000) - sraw 000f423f, 00000000 => 000f423f (00000000 00000000) - sraw 000f423f, 000f423f => 00000000 (00000000 00000000) - sraw 000f423f, ffffffff => 00000000 (00000000 00000000) - sraw ffffffff, 00000000 => ffffffff (00000000 00000000) - sraw ffffffff, 000f423f => ffffffff (00000000 20000000) - sraw ffffffff, ffffffff => ffffffff (00000000 20000000) - srw 00000000, 00000000 => 00000000 (00000000 00000000) srw 00000000, 000f423f => 00000000 (00000000 00000000) srw 00000000, ffffffff => 00000000 (00000000 00000000) @@ -200,16 +190,6 @@ PPC integer logical insns with two args with flags update: slw. ffffffff, 000f423f => 00000000 (20000000 00000000) slw. ffffffff, ffffffff => 00000000 (20000000 00000000) - sraw. 00000000, 00000000 => 00000000 (20000000 00000000) - sraw. 00000000, 000f423f => 00000000 (20000000 00000000) - sraw. 00000000, ffffffff => 00000000 (20000000 00000000) - sraw. 000f423f, 00000000 => 000f423f (40000000 00000000) - sraw. 000f423f, 000f423f => 00000000 (20000000 00000000) - sraw. 000f423f, ffffffff => 00000000 (20000000 00000000) - sraw. ffffffff, 00000000 => ffffffff (80000000 00000000) - sraw. ffffffff, 000f423f => ffffffff (80000000 20000000) - sraw. ffffffff, ffffffff => ffffffff (80000000 20000000) - srw. 00000000, 00000000 => 00000000 (20000000 00000000) srw. 00000000, 000f423f => 00000000 (20000000 00000000) srw. 00000000, ffffffff => 00000000 (20000000 00000000) @@ -537,28 +517,10 @@ PPC logical insns with special forms: rlwnm ffffffff, ffffffff, 31, 0 => 80000001 (00000000 00000000) rlwnm ffffffff, ffffffff, 31, 31 => 00000001 (00000000 00000000) - srawi 00000000, 0 => 00000000 (00000000 00000000) - srawi 00000000, 31 => 00000000 (00000000 00000000) - srawi 000f423f, 0 => 000f423f (00000000 00000000) - srawi 000f423f, 31 => 00000000 (00000000 00000000) - srawi ffffffff, 0 => ffffffff (00000000 00000000) - srawi ffffffff, 31 => ffffffff (00000000 20000000) - mfcr (00000000) => 00000000 (00000000 00000000) mfcr (000f423f) => 000f423f (000f423f 00000000) mfcr (ffffffff) => ffffffff (ffffffff 00000000) - mfspr 1 (00000000) -> mtxer -> mfxer => 00000000 - mfspr 1 (000f423f) -> mtxer -> mfxer => 0000003f - mfspr 1 (ffffffff) -> mtxer -> mfxer => e000007f - mfspr 8 (00000000) -> mtlr -> mflr => 00000000 - mfspr 8 (000f423f) -> mtlr -> mflr => 000f423f - mfspr 8 (ffffffff) -> mtlr -> mflr => ffffffff - mfspr 9 (00000000) -> mtctr -> mfctr => 00000000 - mfspr 9 (000f423f) -> mtctr -> mfctr => 000f423f - mfspr 9 (ffffffff) -> mtctr -> mfctr => ffffffff - - PPC logical insns with special forms with flags update: rlwimi. 00000000, 0, 0, 0 => 00000000 (20000000 00000000) rlwimi. 00000000, 0, 0, 31 => 00000000 (20000000 00000000) @@ -647,13 +609,6 @@ PPC logical insns with special forms with flags update: rlwnm. ffffffff, ffffffff, 31, 0 => 80000001 (80000000 00000000) rlwnm. ffffffff, ffffffff, 31, 31 => 00000001 (40000000 00000000) - srawi. 00000000, 0 => 00000000 (20000000 00000000) - srawi. 00000000, 31 => 00000000 (20000000 00000000) - srawi. 000f423f, 0 => 000f423f (40000000 00000000) - srawi. 000f423f, 31 => 00000000 (20000000 00000000) - srawi. ffffffff, 0 => ffffffff (80000000 00000000) - srawi. ffffffff, 31 => ffffffff (80000000 20000000) - mcrf 0, 0 (00000000) => (00000000 00000000) mcrf 0, 7 (00000000) => (00000000 00000000) mcrf 7, 0 (00000000) => (00000000 00000000) @@ -966,4 +921,4 @@ PPC integer store insns with three register args: stwux 000f423f, 4 => 000f423f, 4 (00000000 00000000) stwux ffffffff, 8 => ffffffff, 8 (00000000 00000000) -All done. Tested 92 different instructions +All done. Tested 86 different instructions diff --git a/none/tests/ppc64/Makefile.am b/none/tests/ppc64/Makefile.am index bf95bfe418..1f40d94ca3 100644 --- a/none/tests/ppc64/Makefile.am +++ b/none/tests/ppc64/Makefile.am @@ -8,6 +8,10 @@ noinst_HEADERS = ppc64_helpers.h isa_3_1_helpers.h isa_3_1_register_defines.h EXTRA_DIST = \ jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest jm-int.stdout.exp-LE \ jm-int.stdout.exp-LE-ISA3_0 \ + jm-int-sh_algebraic.stderr.exp jm-int-sh_algebraic.stdout.exp \ + jm-int-sh_algebraic.stdout.exp-LE \ + jm-int-sh_algebraic.stdout.exp-LE-ISA3_0 \ + jm-int-sh_algebraic.vgtest \ jm-int_other.stderr.exp jm-int_other.stdout.exp jm-int_other.vgtest \ jm-int_other.stdout.exp-LE \ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest jm-fp.stdout.exp-LE jm-fp.stdout.exp-LE2 jm-fp.stdout.exp-BE2 \ diff --git a/none/tests/ppc64/jm-int-sh_algebraic.stderr.exp b/none/tests/ppc64/jm-int-sh_algebraic.stderr.exp new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/none/tests/ppc64/jm-int-sh_algebraic.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp b/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp new file mode 100644 index 0000000000..68345a843c --- /dev/null +++ b/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp @@ -0,0 +1,85 @@ +PPC integer shift algebraic two args: + sraw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + sraw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + sraw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + sraw 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) + sraw 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (00000000 20000000) + sraw 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (00000000 20000000) + sraw ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + sraw ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) + sraw ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) + + srad 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + srad 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srad 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srad 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) + srad 0000001cbe991def, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srad 0000001cbe991def, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srad ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + srad ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) + srad ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) + +PPC integer shift algebraic two args with flags update: + sraw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + sraw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + sraw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + sraw. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) + sraw. 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (80000000 20000000) + sraw. 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (80000000 20000000) + sraw. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + sraw. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) + sraw. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) + + srad. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + srad. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srad. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srad. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) + srad. 0000001cbe991def, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srad. 0000001cbe991def, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srad. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + srad. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) + srad. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) + +PPC shift algebraic with special forms: + srawi 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + srawi 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srawi 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srawi 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) + srawi 0000001cbe991def, 0000001cbe991def => ffffffffbe991def (00000000 00000000) + srawi 0000001cbe991def, ffffffffffffffff => ffffffffbe991def (00000000 00000000) + srawi ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + srawi ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 00000000) + srawi ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 00000000) + + sradi 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + sradi 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + sradi 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + sradi 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) + sradi 0000001cbe991def, 0000001cbe991def => 0000001cbe991def (00000000 00000000) + sradi 0000001cbe991def, ffffffffffffffff => 0000001cbe991def (00000000 00000000) + sradi ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + sradi ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 00000000) + sradi ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 00000000) + +PPC shift algebraic with special forms with flags update: + srawi. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + srawi. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srawi. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srawi. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) + srawi. 0000001cbe991def, 0000001cbe991def => ffffffffbe991def (80000000 00000000) + srawi. 0000001cbe991def, ffffffffffffffff => ffffffffbe991def (80000000 00000000) + srawi. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + srawi. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 00000000) + srawi. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 00000000) + + sradi. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + sradi. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + sradi. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + sradi. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) + sradi. 0000001cbe991def, 0000001cbe991def => 0000001cbe991def (40000000 00000000) + sradi. 0000001cbe991def, ffffffffffffffff => 0000001cbe991def (40000000 00000000) + sradi. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + sradi. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 00000000) + sradi. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 00000000) + +All done. Tested 8 different instructions diff --git a/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp-LE b/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp-LE new file mode 100644 index 0000000000..68345a843c --- /dev/null +++ b/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp-LE @@ -0,0 +1,85 @@ +PPC integer shift algebraic two args: + sraw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + sraw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + sraw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + sraw 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) + sraw 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (00000000 20000000) + sraw 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (00000000 20000000) + sraw ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + sraw ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) + sraw ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) + + srad 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + srad 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srad 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srad 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) + srad 0000001cbe991def, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srad 0000001cbe991def, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srad ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + srad ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) + srad ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) + +PPC integer shift algebraic two args with flags update: + sraw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + sraw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + sraw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + sraw. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) + sraw. 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (80000000 20000000) + sraw. 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (80000000 20000000) + sraw. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + sraw. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) + sraw. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) + + srad. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + srad. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srad. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srad. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) + srad. 0000001cbe991def, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srad. 0000001cbe991def, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srad. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + srad. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) + srad. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) + +PPC shift algebraic with special forms: + srawi 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + srawi 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srawi 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srawi 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) + srawi 0000001cbe991def, 0000001cbe991def => ffffffffbe991def (00000000 00000000) + srawi 0000001cbe991def, ffffffffffffffff => ffffffffbe991def (00000000 00000000) + srawi ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + srawi ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 00000000) + srawi ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 00000000) + + sradi 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + sradi 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + sradi 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + sradi 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) + sradi 0000001cbe991def, 0000001cbe991def => 0000001cbe991def (00000000 00000000) + sradi 0000001cbe991def, ffffffffffffffff => 0000001cbe991def (00000000 00000000) + sradi ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + sradi ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 00000000) + sradi ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 00000000) + +PPC shift algebraic with special forms with flags update: + srawi. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + srawi. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srawi. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srawi. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) + srawi. 0000001cbe991def, 0000001cbe991def => ffffffffbe991def (80000000 00000000) + srawi. 0000001cbe991def, ffffffffffffffff => ffffffffbe991def (80000000 00000000) + srawi. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + srawi. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 00000000) + srawi. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 00000000) + + sradi. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + sradi. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + sradi. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + sradi. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) + sradi. 0000001cbe991def, 0000001cbe991def => 0000001cbe991def (40000000 00000000) + sradi. 0000001cbe991def, ffffffffffffffff => 0000001cbe991def (40000000 00000000) + sradi. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + sradi. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 00000000) + sradi. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 00000000) + +All done. Tested 8 different instructions diff --git a/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp-LE-ISA3_0 b/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp-LE-ISA3_0 new file mode 100644 index 0000000000..fedbb5ead1 --- /dev/null +++ b/none/tests/ppc64/jm-int-sh_algebraic.stdout.exp-LE-ISA3_0 @@ -0,0 +1,85 @@ +PPC integer shift algebraic two args: + sraw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + sraw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + sraw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + sraw 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) + sraw 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (00000000 20040000) + sraw 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (00000000 20040000) + sraw ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + sraw ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20040000) + sraw ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20040000) + + srad 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + srad 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srad 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srad 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) + srad 0000001cbe991def, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srad 0000001cbe991def, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srad ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + srad ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20040000) + srad ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20040000) + +PPC integer shift algebraic two args with flags update: + sraw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + sraw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + sraw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + sraw. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) + sraw. 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (80000000 20040000) + sraw. 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (80000000 20040000) + sraw. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + sraw. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20040000) + sraw. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20040000) + + srad. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + srad. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srad. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srad. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) + srad. 0000001cbe991def, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srad. 0000001cbe991def, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srad. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + srad. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20040000) + srad. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20040000) + +PPC shift algebraic with special forms: + srawi 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + srawi 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + srawi 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + srawi 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) + srawi 0000001cbe991def, 0000001cbe991def => ffffffffbe991def (00000000 00000000) + srawi 0000001cbe991def, ffffffffffffffff => ffffffffbe991def (00000000 00000000) + srawi ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + srawi ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 00000000) + srawi ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 00000000) + + sradi 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) + sradi 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) + sradi 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) + sradi 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) + sradi 0000001cbe991def, 0000001cbe991def => 0000001cbe991def (00000000 00000000) + sradi 0000001cbe991def, ffffffffffffffff => 0000001cbe991def (00000000 00000000) + sradi ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) + sradi ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 00000000) + sradi ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 00000000) + +PPC shift algebraic with special forms with flags update: + srawi. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + srawi. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + srawi. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + srawi. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) + srawi. 0000001cbe991def, 0000001cbe991def => ffffffffbe991def (80000000 00000000) + srawi. 0000001cbe991def, ffffffffffffffff => ffffffffbe991def (80000000 00000000) + srawi. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + srawi. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 00000000) + srawi. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 00000000) + + sradi. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) + sradi. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) + sradi. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) + sradi. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) + sradi. 0000001cbe991def, 0000001cbe991def => 0000001cbe991def (40000000 00000000) + sradi. 0000001cbe991def, ffffffffffffffff => 0000001cbe991def (40000000 00000000) + sradi. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) + sradi. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 00000000) + sradi. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 00000000) + +All done. Tested 8 different instructions diff --git a/none/tests/ppc64/jm-int-sh_algebraic.vgtest b/none/tests/ppc64/jm-int-sh_algebraic.vgtest new file mode 100644 index 0000000000..cc660fcbfb --- /dev/null +++ b/none/tests/ppc64/jm-int-sh_algebraic.vgtest @@ -0,0 +1 @@ +prog: jm-insns -s diff --git a/none/tests/ppc64/jm-int_other.stdout.exp b/none/tests/ppc64/jm-int_other.stdout.exp index 6deb0d0ddd..72760c299d 100644 --- a/none/tests/ppc64/jm-int_other.stdout.exp +++ b/none/tests/ppc64/jm-int_other.stdout.exp @@ -89,16 +89,6 @@ PPC integer logical insns with two args: slw ffffffffffffffff, 0000001cbe991def => 0000000000000000 (00000000 00000000) slw ffffffffffffffff, ffffffffffffffff => 0000000000000000 (00000000 00000000) - sraw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) - sraw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) - sraw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) - sraw 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) - sraw 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (00000000 20000000) - sraw 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (00000000 20000000) - sraw ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) - sraw ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) - sraw ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) - srw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) srw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) srw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) @@ -119,16 +109,6 @@ PPC integer logical insns with two args: sld ffffffffffffffff, 0000001cbe991def => 0000000000000000 (00000000 00000000) sld ffffffffffffffff, ffffffffffffffff => 0000000000000000 (00000000 00000000) - srad 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) - srad 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) - srad 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) - srad 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) - srad 0000001cbe991def, 0000001cbe991def => 0000000000000000 (00000000 00000000) - srad 0000001cbe991def, ffffffffffffffff => 0000000000000000 (00000000 00000000) - srad ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) - srad ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) - srad ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) - srd 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) srd 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) srd 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) @@ -230,16 +210,6 @@ PPC integer logical insns with two args with flags update: slw. ffffffffffffffff, 0000001cbe991def => 0000000000000000 (20000000 00000000) slw. ffffffffffffffff, ffffffffffffffff => 0000000000000000 (20000000 00000000) - sraw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) - sraw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) - sraw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) - sraw. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) - sraw. 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (80000000 20000000) - sraw. 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (80000000 20000000) - sraw. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) - sraw. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) - sraw. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) - srw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) srw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) srw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) @@ -260,16 +230,6 @@ PPC integer logical insns with two args with flags update: sld. ffffffffffffffff, 0000001cbe991def => 0000000000000000 (20000000 00000000) sld. ffffffffffffffff, ffffffffffffffff => 0000000000000000 (20000000 00000000) - srad. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) - srad. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) - srad. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) - srad. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) - srad. 0000001cbe991def, 0000001cbe991def => 0000000000000000 (20000000 00000000) - srad. 0000001cbe991def, ffffffffffffffff => 0000000000000000 (20000000 00000000) - srad. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) - srad. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) - srad. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) - srd. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) srd. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) srd. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) @@ -653,28 +613,10 @@ PPC logical insns with special forms: rlwnm ffffffffffffffff, ffffffffffffffff, 31, 0 => ffffffff80000001 (00000000 00000000) rlwnm ffffffffffffffff, ffffffffffffffff, 31, 31 => 0000000000000001 (00000000 00000000) - srawi 0000000000000000, 0 => 0000000000000000 (00000000 00000000) - srawi 0000000000000000, 31 => 0000000000000000 (00000000 00000000) - srawi 0000001cbe991def, 0 => ffffffffbe991def (00000000 00000000) - srawi 0000001cbe991def, 31 => ffffffffffffffff (00000000 20000000) - srawi ffffffffffffffff, 0 => ffffffffffffffff (00000000 00000000) - srawi ffffffffffffffff, 31 => ffffffffffffffff (00000000 20000000) - mfcr (0000000000000000) => 0000000000000000 (00000000 00000000) mfcr (0000001cbe991def) => 00000000be991def (be991def 00000000) mfcr (ffffffffffffffff) => 00000000ffffffff (ffffffff 00000000) - mfspr 1 (00000000) -> mtxer -> mfxer => 0000000000000000 - mfspr 1 (be991def) -> mtxer -> mfxer => 00000000a000006f - mfspr 1 (ffffffff) -> mtxer -> mfxer => 00000000e000007f - mfspr 8 (00000000) -> mtlr -> mflr => 0000000000000000 - mfspr 8 (be991def) -> mtlr -> mflr => ffffffffbe991def - mfspr 8 (ffffffff) -> mtlr -> mflr => ffffffffffffffff - mfspr 9 (00000000) -> mtctr -> mfctr => 0000000000000000 - mfspr 9 (be991def) -> mtctr -> mfctr => ffffffffbe991def - mfspr 9 (ffffffff) -> mtctr -> mfctr => ffffffffffffffff - - rldcl 0000000000000000, 0000000000000000, 0 => 0000000000000000 (00000000 00000000) rldcl 0000000000000000, 0000000000000000, 7 => 0000000000000000 (00000000 00000000) rldcl 0000000000000000, 0000000000000000, 14 => 0000000000000000 (00000000 00000000) @@ -2061,37 +2003,6 @@ PPC logical insns with special forms: rldimi ffffffffffffffff, 63, 56 => ffffffffffffffff (00000000 00000000) rldimi ffffffffffffffff, 63, 63 => ffffffffffffffff (00000000 00000000) - sradi 0000000000000000, 0 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 7 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 14 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 21 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 28 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 35 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 42 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 49 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 56 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 63 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 0 => 0000001cbe991def (00000000 00000000) - sradi 0000001cbe991def, 7 => 00000000397d323b (00000000 00000000) - sradi 0000001cbe991def, 14 => 000000000072fa64 (00000000 00000000) - sradi 0000001cbe991def, 21 => 000000000000e5f4 (00000000 00000000) - sradi 0000001cbe991def, 28 => 00000000000001cb (00000000 00000000) - sradi 0000001cbe991def, 35 => 0000000000000003 (00000000 00000000) - sradi 0000001cbe991def, 42 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 49 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 56 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 63 => 0000000000000000 (00000000 00000000) - sradi ffffffffffffffff, 0 => ffffffffffffffff (00000000 00000000) - sradi ffffffffffffffff, 7 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 14 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 21 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 28 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 35 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 42 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 49 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 56 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 63 => ffffffffffffffff (00000000 20000000) - PPC logical insns with special forms with flags update: rlwimi. 0000000000000000, 0, 0, 0 => 0000000000000000 (20000000 00000000) rlwimi. 0000000000000000, 0, 0, 31 => 0000000000000000 (20000000 00000000) @@ -2180,13 +2091,6 @@ PPC logical insns with special forms with flags update: rlwnm. ffffffffffffffff, ffffffffffffffff, 31, 0 => ffffffff80000001 (80000000 00000000) rlwnm. ffffffffffffffff, ffffffffffffffff, 31, 31 => 0000000000000001 (40000000 00000000) - srawi. 0000000000000000, 0 => 0000000000000000 (20000000 00000000) - srawi. 0000000000000000, 31 => 0000000000000000 (20000000 00000000) - srawi. 0000001cbe991def, 0 => ffffffffbe991def (80000000 00000000) - srawi. 0000001cbe991def, 31 => ffffffffffffffff (80000000 20000000) - srawi. ffffffffffffffff, 0 => ffffffffffffffff (80000000 00000000) - srawi. ffffffffffffffff, 31 => ffffffffffffffff (80000000 20000000) - mcrf 0, 0 (0000000000000000) => (00000000 00000000) mcrf 0, 7 (0000000000000000) => (00000000 00000000) mcrf 7, 0 (0000000000000000) => (00000000 00000000) @@ -3725,37 +3629,6 @@ PPC logical insns with special forms with flags update: rldimi. ffffffffffffffff, 63, 56 => ffffffffffffffff (80000000 00000000) rldimi. ffffffffffffffff, 63, 63 => ffffffffffffffff (80000000 00000000) - sradi. 0000000000000000, 0 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 7 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 14 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 21 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 28 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 35 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 42 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 49 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 56 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 63 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 0 => 0000001cbe991def (40000000 00000000) - sradi. 0000001cbe991def, 7 => 00000000397d323b (40000000 00000000) - sradi. 0000001cbe991def, 14 => 000000000072fa64 (40000000 00000000) - sradi. 0000001cbe991def, 21 => 000000000000e5f4 (40000000 00000000) - sradi. 0000001cbe991def, 28 => 00000000000001cb (40000000 00000000) - sradi. 0000001cbe991def, 35 => 0000000000000003 (40000000 00000000) - sradi. 0000001cbe991def, 42 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 49 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 56 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 63 => 0000000000000000 (20000000 00000000) - sradi. ffffffffffffffff, 0 => ffffffffffffffff (80000000 00000000) - sradi. ffffffffffffffff, 7 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 14 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 21 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 28 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 35 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 42 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 49 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 56 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 63 => ffffffffffffffff (80000000 20000000) - PPC integer load insns with one register + one 16 bits immediate args with flags update: lbz 0, (0000000000000000) => 0000000000000000, 0 (00000000 00000000) @@ -3975,4 +3848,4 @@ PPC integer store insns with three register args: stdux 0000001cbe991def, 8 => 0000001cbe991def, 8 (00000000 00000000) stdux ffffffffffffffff, 16 => ffffffffffffffff, 16 (00000000 00000000) -All done. Tested 131 different instructions +All done. Tested 121 different instructions diff --git a/none/tests/ppc64/jm-int_other.stdout.exp-LE b/none/tests/ppc64/jm-int_other.stdout.exp-LE index 5cc903dffd..08fac66165 100644 --- a/none/tests/ppc64/jm-int_other.stdout.exp-LE +++ b/none/tests/ppc64/jm-int_other.stdout.exp-LE @@ -89,16 +89,6 @@ PPC integer logical insns with two args: slw ffffffffffffffff, 0000001cbe991def => 0000000000000000 (00000000 00000000) slw ffffffffffffffff, ffffffffffffffff => 0000000000000000 (00000000 00000000) - sraw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) - sraw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) - sraw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) - sraw 0000001cbe991def, 0000000000000000 => ffffffffbe991def (00000000 00000000) - sraw 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (00000000 20000000) - sraw 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (00000000 20000000) - sraw ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) - sraw ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) - sraw ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) - srw 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) srw 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) srw 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) @@ -119,16 +109,6 @@ PPC integer logical insns with two args: sld ffffffffffffffff, 0000001cbe991def => 0000000000000000 (00000000 00000000) sld ffffffffffffffff, ffffffffffffffff => 0000000000000000 (00000000 00000000) - srad 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) - srad 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) - srad 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) - srad 0000001cbe991def, 0000000000000000 => 0000001cbe991def (00000000 00000000) - srad 0000001cbe991def, 0000001cbe991def => 0000000000000000 (00000000 00000000) - srad 0000001cbe991def, ffffffffffffffff => 0000000000000000 (00000000 00000000) - srad ffffffffffffffff, 0000000000000000 => ffffffffffffffff (00000000 00000000) - srad ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (00000000 20000000) - srad ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (00000000 20000000) - srd 0000000000000000, 0000000000000000 => 0000000000000000 (00000000 00000000) srd 0000000000000000, 0000001cbe991def => 0000000000000000 (00000000 00000000) srd 0000000000000000, ffffffffffffffff => 0000000000000000 (00000000 00000000) @@ -230,16 +210,6 @@ PPC integer logical insns with two args with flags update: slw. ffffffffffffffff, 0000001cbe991def => 0000000000000000 (20000000 00000000) slw. ffffffffffffffff, ffffffffffffffff => 0000000000000000 (20000000 00000000) - sraw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) - sraw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) - sraw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) - sraw. 0000001cbe991def, 0000000000000000 => ffffffffbe991def (80000000 00000000) - sraw. 0000001cbe991def, 0000001cbe991def => ffffffffffffffff (80000000 20000000) - sraw. 0000001cbe991def, ffffffffffffffff => ffffffffffffffff (80000000 20000000) - sraw. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) - sraw. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) - sraw. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) - srw. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) srw. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) srw. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) @@ -260,16 +230,6 @@ PPC integer logical insns with two args with flags update: sld. ffffffffffffffff, 0000001cbe991def => 0000000000000000 (20000000 00000000) sld. ffffffffffffffff, ffffffffffffffff => 0000000000000000 (20000000 00000000) - srad. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) - srad. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) - srad. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) - srad. 0000001cbe991def, 0000000000000000 => 0000001cbe991def (40000000 00000000) - srad. 0000001cbe991def, 0000001cbe991def => 0000000000000000 (20000000 00000000) - srad. 0000001cbe991def, ffffffffffffffff => 0000000000000000 (20000000 00000000) - srad. ffffffffffffffff, 0000000000000000 => ffffffffffffffff (80000000 00000000) - srad. ffffffffffffffff, 0000001cbe991def => ffffffffffffffff (80000000 20000000) - srad. ffffffffffffffff, ffffffffffffffff => ffffffffffffffff (80000000 20000000) - srd. 0000000000000000, 0000000000000000 => 0000000000000000 (20000000 00000000) srd. 0000000000000000, 0000001cbe991def => 0000000000000000 (20000000 00000000) srd. 0000000000000000, ffffffffffffffff => 0000000000000000 (20000000 00000000) @@ -653,13 +613,6 @@ PPC logical insns with special forms: rlwnm ffffffffffffffff, ffffffffffffffff, 31, 0 => ffffffff80000001 (00000000 00000000) rlwnm ffffffffffffffff, ffffffffffffffff, 31, 31 => 0000000000000001 (00000000 00000000) - srawi 0000000000000000, 0 => 0000000000000000 (00000000 00000000) - srawi 0000000000000000, 31 => 0000000000000000 (00000000 00000000) - srawi 0000001cbe991def, 0 => ffffffffbe991def (00000000 00000000) - srawi 0000001cbe991def, 31 => ffffffffffffffff (00000000 20000000) - srawi ffffffffffffffff, 0 => ffffffffffffffff (00000000 00000000) - srawi ffffffffffffffff, 31 => ffffffffffffffff (00000000 20000000) - mfcr (0000000000000000) => 0000000000000000 (00000000 00000000) mfcr (0000001cbe991def) => 00000000be991def (be991def 00000000) mfcr (ffffffffffffffff) => 00000000ffffffff (ffffffff 00000000) @@ -2061,37 +2014,6 @@ PPC logical insns with special forms: rldimi ffffffffffffffff, 63, 56 => ffffffffffffffff (00000000 00000000) rldimi ffffffffffffffff, 63, 63 => ffffffffffffffff (00000000 00000000) - sradi 0000000000000000, 0 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 7 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 14 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 21 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 28 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 35 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 42 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 49 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 56 => 0000000000000000 (00000000 00000000) - sradi 0000000000000000, 63 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 0 => 0000001cbe991def (00000000 00000000) - sradi 0000001cbe991def, 7 => 00000000397d323b (00000000 00000000) - sradi 0000001cbe991def, 14 => 000000000072fa64 (00000000 00000000) - sradi 0000001cbe991def, 21 => 000000000000e5f4 (00000000 00000000) - sradi 0000001cbe991def, 28 => 00000000000001cb (00000000 00000000) - sradi 0000001cbe991def, 35 => 0000000000000003 (00000000 00000000) - sradi 0000001cbe991def, 42 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 49 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 56 => 0000000000000000 (00000000 00000000) - sradi 0000001cbe991def, 63 => 0000000000000000 (00000000 00000000) - sradi ffffffffffffffff, 0 => ffffffffffffffff (00000000 00000000) - sradi ffffffffffffffff, 7 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 14 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 21 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 28 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 35 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 42 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 49 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 56 => ffffffffffffffff (00000000 20000000) - sradi ffffffffffffffff, 63 => ffffffffffffffff (00000000 20000000) - PPC logical insns with special forms with flags update: rlwimi. 0000000000000000, 0, 0, 0 => 0000000000000000 (20000000 00000000) rlwimi. 0000000000000000, 0, 0, 31 => 0000000000000000 (20000000 00000000) @@ -2180,13 +2102,6 @@ PPC logical insns with special forms with flags update: rlwnm. ffffffffffffffff, ffffffffffffffff, 31, 0 => ffffffff80000001 (80000000 00000000) rlwnm. ffffffffffffffff, ffffffffffffffff, 31, 31 => 0000000000000001 (40000000 00000000) - srawi. 0000000000000000, 0 => 0000000000000000 (20000000 00000000) - srawi. 0000000000000000, 31 => 0000000000000000 (20000000 00000000) - srawi. 0000001cbe991def, 0 => ffffffffbe991def (80000000 00000000) - srawi. 0000001cbe991def, 31 => ffffffffffffffff (80000000 20000000) - srawi. ffffffffffffffff, 0 => ffffffffffffffff (80000000 00000000) - srawi. ffffffffffffffff, 31 => ffffffffffffffff (80000000 20000000) - mcrf 0, 0 (0000000000000000) => (00000000 00000000) mcrf 0, 7 (0000000000000000) => (00000000 00000000) mcrf 7, 0 (0000000000000000) => (00000000 00000000) @@ -3725,37 +3640,6 @@ PPC logical insns with special forms with flags update: rldimi. ffffffffffffffff, 63, 56 => ffffffffffffffff (80000000 00000000) rldimi. ffffffffffffffff, 63, 63 => ffffffffffffffff (80000000 00000000) - sradi. 0000000000000000, 0 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 7 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 14 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 21 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 28 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 35 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 42 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 49 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 56 => 0000000000000000 (20000000 00000000) - sradi. 0000000000000000, 63 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 0 => 0000001cbe991def (40000000 00000000) - sradi. 0000001cbe991def, 7 => 00000000397d323b (40000000 00000000) - sradi. 0000001cbe991def, 14 => 000000000072fa64 (40000000 00000000) - sradi. 0000001cbe991def, 21 => 000000000000e5f4 (40000000 00000000) - sradi. 0000001cbe991def, 28 => 00000000000001cb (40000000 00000000) - sradi. 0000001cbe991def, 35 => 0000000000000003 (40000000 00000000) - sradi. 0000001cbe991def, 42 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 49 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 56 => 0000000000000000 (20000000 00000000) - sradi. 0000001cbe991def, 63 => 0000000000000000 (20000000 00000000) - sradi. ffffffffffffffff, 0 => ffffffffffffffff (80000000 00000000) - sradi. ffffffffffffffff, 7 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 14 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 21 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 28 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 35 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 42 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 49 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 56 => ffffffffffffffff (80000000 20000000) - sradi. ffffffffffffffff, 63 => ffffffffffffffff (80000000 20000000) - PPC integer load insns with one register + one 16 bits immediate args with flags update: lbz 0, (0000000000000000) => 0000000000000000, 0 (00000000 00000000) @@ -3975,4 +3859,4 @@ PPC integer store insns with three register args: stdux 0000001cbe991def, 8 => 0000001cbe991def, 8 (00000000 00000000) stdux ffffffffffffffff, 16 => ffffffffffffffff, 16 (00000000 00000000) -All done. Tested 131 different instructions +All done. Tested 123 different instructions