|
From: <sv...@va...> - 2005-12-24 12:55:58
|
Author: cerion
Date: 2005-12-24 12:55:48 +0000 (Sat, 24 Dec 2005)
New Revision: 5428
Log:
Tidy up ppc32 jm-insns test some more.
In particular, hide the function pointer setup stuff, for the test loops,=
in init_function()
Modified:
trunk/none/tests/ppc32/jm-insns.c
trunk/none/tests/ppc32/jm-int.stdout.exp
Modified: trunk/none/tests/ppc32/jm-insns.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/ppc32/jm-insns.c 2005-12-24 03:10:56 UTC (rev 5427)
+++ trunk/none/tests/ppc32/jm-insns.c 2005-12-24 12:55:48 UTC (rev 5428)
@@ -105,26 +105,26 @@
*
* Example:
* extern void test_addi (void);
- * asm(".text\n"
- * "test_addi:\n"
- * "\taddi 17, 14, 0\n"
- * "\tblr\n"
- * ".previous\n"
- * );
+ * asm(".section \".text\"\n"
+ * " .align 2\n"
+ * " .type test_addi,@function\n"
+ * "test_addi:\n"
+ * " addi\n"
+ * " blr\n"
+ * " .previous\n"
+ * );
*
* We are interested only in:
- * "\taddi 17, 14, 0\n"
- * "\tblr\n"
+ * " addi 17, 14, 0\n"
+ * " blr\n"
*
* In a loop test, we may see:
* uint32_t func_buf[2]; // our new stack based 'function'
- * uint32_t *p; // ptr to access insns by idx
* for imm... // loop over imm
- * p =3D (void *)func;
- * func_buf[1] =3D p[1]; // copy 'blr' to func_buf[1]
- * patch_op_imm16(func_buf, p, imm); // patched 'addi' -> func_buf[0]
- * func =3D (void *)func_buf; // ptr to stack based insns
- * (*func)(); // exec our rewritten code
+ * init_function( &func, func_buf ); // copy insns, set func ptr
+ * patch_op_imm16(&func_buf[0], imm); // patch 'addi' insn
+ * ...
+ * (*func)(); // exec our rewritten code
*
* patch_op_imm16() itself simply takes the uint32_t insn and overwrites
* the immediate field with the new value (which, for 'addi', is the
@@ -135,6 +135,9 @@
*
* after patch_op_imm16(), func_buf[0] becomes:
* 0x3A2E0009 =3D> addi 17, 14, 9
+ *
+ * Note: init_function() needs to be called on every iteration
+ * - don't ask me why!
*/
=20
=20
@@ -161,16 +164,22 @@
=20
#include <stdint.h>
=20
+
+/* Something of the same size as void*, so can be safely be coerced
+ to/from a pointer type. Also same size as the host's gp registers. */
+typedef uint32_t HWord_t;
+
+
register double f14 __asm__ ("f14");
register double f15 __asm__ ("f15");
register double f16 __asm__ ("f16");
register double f17 __asm__ ("f17");
register double f18 __asm__ ("f18");
-register uint32_t r14 __asm__ ("r14");
-register uint32_t r15 __asm__ ("r15");
-register uint32_t r16 __asm__ ("r16");
-register uint32_t r17 __asm__ ("r17");
-register uint32_t r18 __asm__ ("r18");
+register HWord_t r14 __asm__ ("r14");
+register HWord_t r15 __asm__ ("r15");
+register HWord_t r16 __asm__ ("r16");
+register HWord_t r17 __asm__ ("r17");
+register HWord_t r18 __asm__ ("r18");
=20
#if defined (HAS_ALTIVEC)
# include <altivec.h>
@@ -187,6 +196,7 @@
#include <malloc.h>
=20
=20
+
#define ASSEMBLY_FUNC(__fname, __insn) \
asm(".section \".text\"\n" \
"\t.align 2\n" \
@@ -3703,7 +3713,7 @@
static double *fargs;
static int nb_fargs;
static int nb_normal_fargs;
-static uint32_t *iargs;
+static HWord_t *iargs;
static int nb_iargs;
static uint16_t *ii16;
static int nb_ii16;
@@ -4101,7 +4111,8 @@
static void test_int_three_args (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int i, j, k;
=20
for (i=3D0; i<nb_iargs; i++) {
@@ -4141,11 +4152,12 @@
static void test_int_two_args (const char* name, test_func_t func,
uint32_t test_flags)
{
- volatile uint32_t res, flags, xer, xer_orig, tmpcr, tmpxer;
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, xer_orig, tmpcr, tmpxer;
int i, j, is_div;
=20
// catches div, divwu, divo, divwu, divwuo, and . variants
- is_div =3D NULL !=3D strstr(name, "divw");
+ is_div =3D strstr(name, "divw") !=3D NULL;
=20
xer_orig =3D 0x00000000;
redo:
@@ -4192,7 +4204,8 @@
static void test_int_one_arg (const char* name, test_func_t func,
uint32_t test_flags)
{
- volatile uint32_t res, flags, xer, xer_orig, tmpcr, tmpxer;
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, xer_orig, tmpcr, tmpxer;
int i;
=20
xer_orig =3D 0x00000000;
@@ -4231,10 +4244,10 @@
=20
static inline void invalidate_icache ( void *ptr, int nbytes )
{
- unsigned int startaddr =3D (unsigned int) ptr;
- unsigned int endaddr =3D startaddr + nbytes;
- unsigned int cls =3D 32; /*VG_(cache_line_size_ppc32);*/
- unsigned int addr;
+ HWord_t startaddr =3D (HWord_t) ptr;
+ HWord_t endaddr =3D startaddr + nbytes;
+ HWord_t cls =3D 32; /*VG_(cache_line_size_ppc32);*/
+ HWord_t addr;
=20
startaddr &=3D ~(cls - 1);
for (addr =3D startaddr; addr < endaddr; addr +=3D cls)
@@ -4247,53 +4260,53 @@
=20
/* for god knows what reason, if this isn't inlined, the
program segfaults. */
-static inline void _patch_op_imm (void *out, void *in,
- uint16_t imm, int sh, int len)
+static inline
+void _patch_op_imm (uint32_t *p_insn, uint16_t imm, int sh, int len)
{
- volatile uint32_t *p, *q;
- =20
- p =3D out;
- q =3D in;
- *p =3D (*q & ~(((1 << len) - 1) << sh)) | ((imm & ((1 << len) - 1)) <=
< sh);
+ uint32_t mask =3D ((1 << len) - 1) << sh;
+ *p_insn =3D (*p_insn & ~mask) | ((imm<<sh) & mask);
}
=20
-static inline void patch_op_imm (void *out, void *in,
- uint16_t imm, int sh, int len)
+static inline
+void patch_op_imm (uint32_t* p_insn, uint16_t imm, int sh, int len)
{
- volatile uint32_t *p;
- =20
- p =3D out;
- _patch_op_imm(out, in, imm, sh, len);
- invalidate_icache(out, 4);
+ _patch_op_imm(p_insn, imm, sh, len);
+ invalidate_icache(p_insn, 4);
}
=20
-static inline void patch_op_imm16 (void *out, void *in, uint16_t imm)
+static inline
+void patch_op_imm16 (uint32_t *p_insn, uint16_t imm)
{
- patch_op_imm(out, in, imm, 0, 16);
+ patch_op_imm(p_insn, imm, 0, 16);
}
=20
+
+static inline
+void init_function( test_func_t *p_func, uint32_t func_buf[] )
+{
+ uint32_t *p;
+ p =3D (uint32_t *)*p_func;
+ func_buf[0] =3D p[0];
+ func_buf[1] =3D p[1];
+ *p_func =3D (void *)func_buf;
+}
+
+
static void test_int_one_reg_imm16 (const char* name,
test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
+ uint32_t func_buf[2];
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int i, j;
- =20
+
for (i=3D0; i<nb_iargs; i++) {
for (j=3D0; j<nb_ii16; j++) {
- p =3D (void *)func;
-#if 0
- printf("copy func %s from %p to %p (%08x %08x)\n",
- name, func, func_buf, p[0], p[1]);
-#endif
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, ii16[j]);
- func =3D (void *)func_buf;
-#if 0
- printf(" =3D> func %s from %p to %p (%08x %08x)\n",
- name, func, func_buf, func_buf[0], func_buf[1]);
-#endif
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], ii16[j]);
+
r14 =3D iargs[i];
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
@@ -4340,28 +4353,31 @@
static void rlwi_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
- int i, j, k, l;
+ uint32_t func_buf[2];
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
+ int i, j, k, l, arg_step;
=20
- int arg_step =3D (arg_list_size =3D=3D 0) ? 31 : 3;
+ arg_step =3D (arg_list_size =3D=3D 0) ? 31 : 3;
=20
for (i=3D0; i<nb_iargs; i++) {
for (j=3D0; j<32; j+=3Darg_step) {
for (k=3D0; k<32; k+=3Darg_step) {
for (l=3D0; l<32; l+=3Darg_step) {
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- _patch_op_imm(func_buf, p, j, 11, 5);
- _patch_op_imm(func_buf, p, k, 6, 5);
- patch_op_imm(func_buf, p, l, 1, 5);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ _patch_op_imm(&func_buf[0], j, 11, 5);
+ _patch_op_imm(&func_buf[0], k, 6, 5);
+ patch_op_imm(&func_buf[0], l, 1, 5);
+
r14 =3D iargs[i];
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
__asm__ __volatile__ ("mfxer 18");
tmpxer =3D r18;
+
/* Set up flags for test */
r18 =3D 0;
__asm__ __volatile__ ("mtcr 18");
@@ -4372,12 +4388,13 @@
__asm__ __volatile__ ("mfxer 18");
xer =3D r18;
res =3D r17;
+
/* Restore flags */
r18 =3D tmpcr;
__asm__ __volatile__ ("mtcr 18");
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
- printf("%s %08x, %d, %d, %d =3D> %08x (%08x %08x)\n",
+ printf("%s %08x, %2d, %2d, %2d =3D> %08x (%08x %08x)\n",
name, iargs[i], j, k, l, res, flags, xer);
}
if (verbose) printf("\n");
@@ -4389,28 +4406,31 @@
static void rlwnm_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
- int i, j, k, l;
+ uint32_t func_buf[2];
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
+ int i, j, k, l, arg_step;
=20
- int arg_step =3D (arg_list_size =3D=3D 0) ? 31 : 3;
+ arg_step =3D (arg_list_size =3D=3D 0) ? 31 : 3;
=20
for (i=3D0; i<nb_iargs; i++) {
for (j=3D0; j<nb_iargs; j++) {
for (k=3D0; k<32; k+=3Darg_step) {
for (l=3D0; l<32; l+=3Darg_step) {
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- _patch_op_imm(func_buf, p, k, 6, 5);
- patch_op_imm(func_buf, p, l, 1, 5);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ _patch_op_imm(&func_buf[0], k, 6, 5);
+ patch_op_imm(&func_buf[0], l, 1, 5);
+
r14 =3D iargs[i];
r15 =3D iargs[j];
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
__asm__ __volatile__ ("mfxer 18");
tmpxer =3D r18;
+
/* Set up flags for test */
r18 =3D 0;
__asm__ __volatile__ ("mtcr 18");
@@ -4421,12 +4441,13 @@
__asm__ __volatile__ ("mfxer 18");
xer =3D r18;
res =3D r17;
+
/* Restore flags */
r18 =3D tmpcr;
__asm__ __volatile__ ("mtcr 18");
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
- printf("%s %08x, %08x, %d, %d =3D> %08x (%08x %08x)\n",
+ printf("%s %08x, %08x, %2d, %2d =3D> %08x (%08x %08x)\n",
name, iargs[i], iargs[j], k, l, res, flags, xer);
}
if (verbose) printf("\n");
@@ -4438,24 +4459,27 @@
static void srawi_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
- int i, j;
+ uint32_t func_buf[2];
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
+ int i, j, arg_step;
=20
- int arg_step =3D (arg_list_size =3D=3D 0) ? 31 : 1;
+ arg_step =3D (arg_list_size =3D=3D 0) ? 31 : 1;
=20
for (i=3D0; i<nb_iargs; i++) {
for (j=3D0; j<32; j+=3Darg_step) {
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, j, 11, 5);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm(&func_buf[0], j, 11, 5);
+
r14 =3D iargs[i];
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
__asm__ __volatile__ ("mfxer 18");
tmpxer =3D r18;
+
/* Set up flags for test */
r18 =3D 0;
__asm__ __volatile__ ("mtcr 18");
@@ -4466,12 +4490,13 @@
__asm__ __volatile__ ("mfxer 18");
xer =3D r18;
res =3D r17;
+
/* Restore flags */
r18 =3D tmpcr;
__asm__ __volatile__ ("mtcr 18");
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
- printf("%s %08x, %d =3D> %08x (%08x %08x)\n",
+ printf("%s %08x, %2d =3D> %08x (%08x %08x)\n",
name, iargs[i], j, res, flags, xer);
}
if (verbose) printf("\n");
@@ -4481,26 +4506,29 @@
static void mcrf_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
volatile uint32_t flags, xer, tmpcr, tmpxer;
- int i, j, k;
+ int i, j, k, arg_step;
=20
- int arg_step =3D (arg_list_size =3D=3D 0) ? 7 : 1;
+
+ arg_step =3D (arg_list_size =3D=3D 0) ? 7 : 1;
=20
for (i=3D0; i<nb_iargs; i++) {
for (j=3D0; j<8; j+=3Darg_step) {
for (k=3D0; k<8; k+=3Darg_step) {
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- _patch_op_imm(func_buf, p, j, 23, 3);
- patch_op_imm(func_buf, p, k, 18, 3);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ _patch_op_imm(&func_buf[0], j, 23, 3);
+ patch_op_imm(&func_buf[0], k, 18, 3);
+
r14 =3D iargs[i];
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
__asm__ __volatile__ ("mfxer 18");
tmpxer =3D r18;
+
/* Set up flags for test */
r18 =3D 0;
__asm__ __volatile__ ("mtcr 14");
@@ -4510,6 +4538,7 @@
flags =3D r18;
__asm__ __volatile__ ("mfxer 18");
xer =3D r18;
+
/* Restore flags */
r18 =3D tmpcr;
__asm__ __volatile__ ("mtcr 18");
@@ -4533,25 +4562,27 @@
static void mcrxr_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
volatile uint32_t flags, xer, tmpcr, tmpxer;
- int i, j, k;
+ int i, j, k, arg_step;
=20
- int arg_step =3D 1; //(arg_list_size =3D=3D 0) ? 7 : 1;
+ arg_step =3D 1; //(arg_list_size =3D=3D 0) ? 7 : 1;
=20
for (i=3D0; i<16; i+=3Darg_step) {
j =3D i << 28;
for (k=3D0; k<8; k+=3Darg_step) {
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, k, 23, 3);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm(&func_buf[0], k, 23, 3);
+
r14 =3D j;
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
__asm__ __volatile__ ("mfxer 18");
tmpxer =3D r18;
+
/* Set up flags for test */
r18 =3D 0;
__asm__ __volatile__ ("mtcr 18");
@@ -4561,6 +4592,7 @@
flags =3D r18;
__asm__ __volatile__ ("mfxer 18");
xer =3D r18;
+
/* Restore flags */
r18 =3D tmpcr;
__asm__ __volatile__ ("mtcr 18");
@@ -4576,7 +4608,8 @@
static void mfcr_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int i;
=20
for (i=3D0; i<nb_iargs; i++) {
@@ -4612,9 +4645,7 @@
{
//volatile uint32_t res, flags, xer, ctr, lr, tmpcr, tmpxer;
int j, k, res;
- =20
- // Call func, just to stop compiler complaining
- (*func)();
+ func =3D func; // just to stop compiler complaining
=20
// mtxer followed by mfxer
for (k=3D0; k<nb_iargs; k++) {
@@ -4625,7 +4656,7 @@
: /*out*/"=3Dr"(res) : /*in*/"r"(j) : /*trashed*/"xer"=20
);
res &=3D 0xE000007F; /* rest of the bits are undefined */
- printf("%s: %08x -> mtxer -> mfxer =3D> %08x\n",
+ printf("%s 1 (%08x) -> mtxer -> mfxer =3D> %08x\n",
name, j, res);
}
=20
@@ -4637,7 +4668,7 @@
"\tmflr %0"
: /*out*/"=3Dr"(res) : /*in*/"r"(j) : /*trashed*/"lr"=20
);
- printf("%s: %08x -> mtlr -> mflr =3D> %08x\n",
+ printf("%s 8 (%08x) -> mtlr -> mflr =3D> %08x\n",
name, j, res);
}
=20
@@ -4649,7 +4680,7 @@
"\tmfctr %0"
: /*out*/"=3Dr"(res) : /*in*/"r"(j) : /*trashed*/"ctr"=20
);
- printf("%s: %08x -> mtctr -> mfctr =3D> %08x\n",
+ printf("%s 9 (%08x) -> mtctr -> mfctr =3D> %08x\n",
name, j, res);
}
=20
@@ -4790,7 +4821,8 @@
// 1) TBU won't change for a while
// 2) TBL will have changed every loop iter
=20
- volatile uint32_t res, flags, xer, tmpcr, tmpxer;
+ volatile HWord_t res;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int i, j;
=20
i =3D 269;
@@ -4855,24 +4887,26 @@
static void mtcrf_cb (const char* name, test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
volatile uint32_t flags, xer, tmpcr, tmpxer;
- int i, j;
+ int i, j, arg_step;
=20
- int arg_step =3D (arg_list_size =3D=3D 0) ? 99 : 1;
+ arg_step =3D (arg_list_size =3D=3D 0) ? 99 : 1;
=20
for (i=3D0; i<nb_iargs; i++) {
for (j=3D0; j<256; j+=3Darg_step) {
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, j, 12, 8);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm(&func_buf[0], j, 12, 8);
+
r14 =3D iargs[i];
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
__asm__ __volatile__ ("mfxer 18");
tmpxer =3D r18;
+
/* Set up flags for test */
r18 =3D 0;
__asm__ __volatile__ ("mtcr 18");
@@ -4882,12 +4916,13 @@
flags =3D r18;
__asm__ __volatile__ ("mfxer 18");
xer =3D r18;
+
/* Restore flags */
r18 =3D tmpcr;
__asm__ __volatile__ ("mtcr 18");
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
- printf("%s %d, %08x =3D> (%08x %08x)\n",
+ printf("%s %3d, %08x =3D> (%08x %08x)\n",
name, j, iargs[i], flags, xer);
}
if (verbose) printf("\n");
@@ -4899,12 +4934,11 @@
unused uint32_t test_flags)
{
#if 0
- volatile uint32_t flags, xer, ctr, lr, tmpcr, tmpxer;
+ volatile HWord_t ctr, lr;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int j, k;
+ func =3D func; // just to stop compiler complaining
=20
- // Call func, just to stop compiler complaining
- (*func)();
- =20
// mtxer
j =3D 1;
for (k=3D0; k<nb_iargs; k++) {
@@ -5151,19 +5185,21 @@
test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
- volatile uint32_t res, rA, flags, xer, tmpcr, tmpxer;
+ uint32_t func_buf[2];
+ volatile HWord_t res, rA;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int i, j;
=20
// +ve d
for (i=3D0; i<nb_iargs; i++) {
- j =3D i * 4; // offset =3D i * sizeof(uint32_=
t)
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, j);
- func =3D (void *)func_buf;
- r14 =3D (uint32_t)&iargs[0]; // base reg =3D start of array
+ j =3D i * sizeof(HWord_t);
=20
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], j);
+
+ r14 =3D (HWord_t)&iargs[0]; // base reg =3D start of array
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
@@ -5188,20 +5224,21 @@
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
=20
- printf("%s %d, (%08x) =3D> %08x, (%08x %08x)\n",
+ printf("%s %2d, (%08x) =3D> %08x (%08x %08x)\n",
name, j, /*&iargs[0], */ iargs[i], res, /*rA, */ flags, xer=
);
}
if (verbose) printf("\n");
=20
// -ve d
for (i =3D -nb_iargs+1; i<=3D0; i++) {
- j =3D i * 4; // sizeof(uint32_t)
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, j);
- func =3D (void *)func_buf;
- r14 =3D (uint32_t)&iargs[nb_iargs-1];
+ j =3D i * sizeof(HWord_t);
=20
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], j);
+
+ r14 =3D (HWord_t)&iargs[nb_iargs-1];
+
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
tmpcr =3D r18;
@@ -5226,7 +5263,7 @@
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
=20
- printf("%s %d, (%08x) =3D> %08x (%08x %08x)\n",
+ printf("%s %2d, (%08x) =3D> %08x (%08x %08x)\n",
name, j, /*&iargs[nb_iargs-1], */ iargs[nb_iargs-1+i], res,=
/*rA, */ flags, xer);
}
}
@@ -5235,13 +5272,14 @@
test_func_t func,
unused uint32_t test_flags)
{
- volatile uint32_t res, rA, flags, xer, tmpcr, tmpxer;
+ volatile HWord_t res, rA;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
int i, j;
=20
// +ve d
for (i=3D0; i<nb_iargs; i++) {
- j =3D i * 4; // sizeof(uint32_t)
- r14 =3D (uint32_t)&iargs[0];
+ j =3D i * sizeof(HWord_t);
+ r14 =3D (HWord_t)&iargs[0];
r15 =3D j;
=20
/* Save flags */
@@ -5277,27 +5315,30 @@
test_func_t func,
unused uint32_t test_flags)
{
- uint32_t func_buf[2], *p;
- volatile uint32_t rA, flags, xer, tmpcr, tmpxer;
- int i, j;
- uint32_t *iargs_priv;
+ uint32_t func_buf[2];
+ volatile HWord_t rA;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
+ int i, j, k;
+ HWord_t *iargs_priv;
=20
// private iargs table to store to
- iargs_priv =3D malloc(nb_iargs * sizeof(uint32_t));
- for (i=3D0; i<nb_iargs; i++)
- iargs_priv[i] =3D 0;
+ iargs_priv =3D malloc(nb_iargs * sizeof(HWord_t));
=20
// __asm__ __volatile__ ("stwu 14,0(15)");
=20
// +ve d
for (i=3D0; i<nb_iargs; i++) {
- j =3D i * 4; // sizeof(uint32_t)
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, j);
- func =3D (void *)func_buf;
+ for (k=3D0; k<nb_iargs; k++) // clear array
+ iargs_priv[k] =3D 0;
+
+ j =3D i * sizeof(HWord_t);
+=20
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], j);
+
r14 =3D iargs[i]; // read from iargs
- r15 =3D (uint32_t)&iargs_priv[0]; // store to r15 + j
+ r15 =3D (HWord_t)&iargs_priv[0]; // store to r15 + j
=20
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
@@ -5322,20 +5363,24 @@
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
=20
- printf("%s %08x, %d =3D> %08x, (%08x %08x)\n",
+ printf("%s %08x, %2d =3D> %08x (%08x %08x)\n",
name, iargs[i], j, /*&iargs_priv[0], */ iargs_priv[i], /*rA=
, */ flags, xer);
}
if (verbose) printf("\n");
=20
// -ve d
for (i =3D -nb_iargs+1; i<=3D0; i++) {
- j =3D i * 4; // sizeof(uint32_t)
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, j);
- func =3D (void *)func_buf;
+ for (k=3D0; k<nb_iargs; k++) // clear array
+ iargs_priv[k] =3D 0;
+
+ j =3D i * sizeof(HWord_t);
+=20
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], j);
+
r14 =3D iargs[nb_iargs-1+i]; // read from iargs
- r15 =3D (uint32_t)&iargs_priv[nb_iargs-1]; // store to r15 + j
+ r15 =3D (HWord_t)&iargs_priv[nb_iargs-1]; // store to r15 + j
=20
/* Save flags */
__asm__ __volatile__ ("mfcr 18");
@@ -5360,7 +5405,7 @@
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
=20
- printf("%s %08x, %d =3D> %08x, (%08x %08x)\n",
+ printf("%s %08x, %2d =3D> %08x (%08x %08x)\n",
name, iargs[nb_iargs-1+i], j, /*&iargs_priv[nb_iargs-1], */=
iargs_priv[nb_iargs-1+i], /*rA, */ flags, xer);
}
free(iargs_priv);
@@ -5370,19 +5415,21 @@
test_func_t func,
unused uint32_t test_flags)
{
- volatile uint32_t rA, flags, xer, tmpcr, tmpxer;
- int i, j;
- uint32_t *iargs_priv;
+ volatile HWord_t rA;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
+ int i, j, k;
+ HWord_t *iargs_priv;
=20
// private iargs table to store to
- iargs_priv =3D malloc(nb_iargs * sizeof(uint32_t));
- for (i=3D0; i<nb_iargs; i++)
- iargs_priv[i] =3D 0;
+ iargs_priv =3D malloc(nb_iargs * sizeof(HWord_t));
=20
for (i=3D0; i<nb_iargs; i++) {
- j =3D i * 4; // sizeof(uint32_t)
+ for (k=3D0; k<nb_iargs; k++) // clear array
+ iargs_priv[k] =3D 0;
+
+ j =3D i * sizeof(HWord_t);
r14 =3D iargs[i]; // read from iargs
- r15 =3D (uint32_t)&iargs_priv[0]; // store to r15 + j
+ r15 =3D (HWord_t)&iargs_priv[0]; // store to r15 + j
r16 =3D j;
=20
/* Save flags */
@@ -5408,7 +5455,7 @@
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
=20
- printf("%s %08x, %d =3D> %08x, (%08x %08x)\n",
+ printf("%s %08x, %d =3D> %08x (%08x %08x)\n",
name, iargs[i], /*&iargs_priv[0], */ j, iargs_priv[i], /*rA=
, */ flags, xer);
}
free(iargs_priv);
@@ -5547,11 +5594,11 @@
double res;
uint64_t u0, ur;
volatile uint32_t flags, tmpcr, tmpxer;
- int i;
+ int i, zap_hi_32bits;
=20
/* if we're testing fctiw or fctiwz, zap the hi 32bits,
as they're undefined */
- unsigned char zap_hi_32bits =3D strstr(name,"fctiw") ? 1 : 0;
+ zap_hi_32bits =3D strstr(name,"fctiw") !=3D NULL;
=20
for (i=3D0; i<nb_fargs; i++) {
u0 =3D *(uint64_t *)(&fargs[i]);
@@ -5578,7 +5625,7 @@
r18 =3D tmpxer;
__asm__ __volatile__ ("mtxer 18");
=20
- if (zap_hi_32bits !=3D 0)
+ if (zap_hi_32bits)
ur &=3D 0xFFFFFFFFULL;
=20
#if defined TEST_FLOAT_FLAGS
@@ -5654,7 +5701,7 @@
test_func_t func,
unused uint32_t test_flags)
{
- uint32_t base, func_buf[2], *p;
+ uint32_t base, func_buf[2];
volatile uint32_t flags, xer, tmpcr, tmpxer;
volatile double src, res;
int i, offs;
@@ -5664,16 +5711,15 @@
offs =3D i * 8; // offset =3D i * sizeof(double)
if (i < 0) {
src =3D fargs[nb_fargs-1 + i];
- base =3D (uint32_t)&fargs[nb_fargs-1];
+ base =3D (HWord_t)&fargs[nb_fargs-1];
} else {
src =3D fargs[i];
- base =3D (uint32_t)&fargs[0];
+ base =3D (HWord_t)&fargs[0];
}
=20
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, offs);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], offs);
=20
// load from fargs[idx] =3D> r14 + offs
r14 =3D base;
@@ -5718,7 +5764,8 @@
test_func_t func,
unused uint32_t test_flags)
{
- volatile uint32_t base, flags, xer, tmpcr, tmpxer;
+ volatile HWord_t base;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
volatile double src, res;
int i;
=20
@@ -5727,10 +5774,10 @@
r15 =3D i * 8; // offset =3D i * sizeof(double)
if (i < 0) { // base reg =3D start of array
src =3D fargs[nb_fargs-1 + i];
- base =3D (uint32_t)&fargs[nb_fargs-1];
+ base =3D (HWord_t)&fargs[nb_fargs-1];
} else {
src =3D fargs[i];
- base =3D (uint32_t)&fargs[0];
+ base =3D (HWord_t)&fargs[0];
}
=20
r14 =3D base;
@@ -5774,20 +5821,22 @@
test_func_t func,
unused uint32_t test_flags)
{
- uint32_t base, func_buf[2], *p;
+ HWord_t base;
+ uint32_t func_buf[2];
volatile uint32_t flags, xer, tmpcr, tmpxer;
double src, *p_dst;
int i, offs;
double *fargs_priv;
int nb_tmp_fargs =3D nb_fargs;
=20
+
/* if we're storing an fp single-precision, don't want nans
- the vex implementation doesn't like them (yet)
Note: This is actually a bigger problem: the vex implementation
rounds these insns twice. This leads to many rounding errors.
For the small fargs set, however, this doesn't show up.
*/
- if (strstr(name, "stfs"))
+ if (strstr(name, "stfs") !=3D NULL)
nb_tmp_fargs =3D nb_normal_fargs;
=20
=20
@@ -5800,18 +5849,17 @@
if (i < 0) {
src =3D fargs [nb_tmp_fargs-1 + i];
p_dst =3D &fargs_priv[nb_tmp_fargs-1 + i];
- base =3D (uint32_t)&fargs_priv[nb_tmp_fargs-1];
+ base =3D (HWord_t)&fargs_priv[nb_tmp_fargs-1];
} else {
src =3D fargs [i];
p_dst =3D &fargs_priv[i];
- base =3D (uint32_t)&fargs_priv[0];
+ base =3D (HWord_t)&fargs_priv[0];
}
*p_dst =3D 0; // clear dst
=20
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm16(func_buf, p, offs);
- func =3D (void *)func_buf;
+ init_function( &func, func_buf );
+ /* Patch up the instruction */
+ patch_op_imm16(&func_buf[0], offs);
=20
// read from fargs[idx] =3D> f14
// store to fargs_priv[idx] =3D> r15 + offs
@@ -5857,7 +5905,8 @@
test_func_t func,
unused uint32_t test_flags)
{
- volatile uint32_t base, flags, xer, tmpcr, tmpxer;
+ volatile HWord_t base;
+ volatile uint32_t flags, xer, tmpcr, tmpxer;
double src, *p_dst;
int i, offs;
double *fargs_priv;
@@ -5869,7 +5918,7 @@
rounds these insns twice. This leads to many rounding errors.
For the small fargs set, however, this doesn't show up.
*/
- if (strstr(name, "stfs")) // stfs(u)(x)
+ if (strstr(name, "stfs") !=3D NULL) // stfs(u)(x)
nb_tmp_fargs =3D nb_normal_fargs;
=20
=20
@@ -5883,11 +5932,11 @@
if (i < 0) {
src =3D fargs [nb_tmp_fargs-1 + i];
p_dst =3D &fargs_priv[nb_tmp_fargs-1 + i];
- base =3D (uint32_t)&fargs_priv[nb_tmp_fargs-1];
+ base =3D (HWord_t)&fargs_priv[nb_tmp_fargs-1];
} else {
src =3D fargs [i];
p_dst =3D &fargs_priv[i];
- base =3D (uint32_t)&fargs_priv[0];
+ base =3D (HWord_t)&fargs_priv[0];
}
*p_dst =3D 0; // clear dst
=20
@@ -6252,7 +6301,7 @@
volatile uint32_t flags, tmpcr;
volatile vector unsigned int tmpvscr;
volatile vector unsigned int vec_in1, vec_out, vscr;
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
unsigned int *src1, *dst;
int i,j;
#if defined TEST_VSCR_SAT
@@ -6265,12 +6314,10 @@
for (j=3D0; j<16; j+=3D3) {
vec_out =3D (vector unsigned int){ 0,0,0,0 };
=20
+ init_function( &func, func_buf );
/* Patch up the instruction */
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, j, 16, 5);
- func =3D (void *)func_buf;
- =20
+ patch_op_imm(&func_buf[0], j, 16, 5);
+
/* Save flags */
__asm__ __volatile__ ("mfcr %0" : "=3Dr" (tmpcr));
__asm__ __volatile__ ("mfvscr %0" : "=3Dvr" (tmpvscr));
@@ -6322,7 +6369,7 @@
volatile uint32_t flags, tmpcr;
volatile vector unsigned int tmpvscr;
volatile vector unsigned int vec_out, vscr;
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
unsigned int *dst;
int i;
#if defined TEST_VSCR_SAT
@@ -6332,11 +6379,9 @@
for (i=3D0; i<32; i++) {
vec_out =3D (vector unsigned int){ 0,0,0,0 };
=20
+ init_function( &func, func_buf );
/* Patch up the instruction */
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, i, 16, 5);
- func =3D (void *)func_buf;
+ patch_op_imm(&func_buf[0], i, 16, 5);
=20
/* Save flags */
__asm__ __volatile__ ("mfcr %0" : "=3Dr" (tmpcr));
@@ -6381,7 +6426,7 @@
volatile uint32_t flags, tmpcr;
volatile vector unsigned int tmpvscr;
volatile vector unsigned int vec_in1, vec_in2, vec_out, vscr;
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
unsigned int *src1, *src2, *dst;
int i,j,k;
#if defined TEST_VSCR_SAT
@@ -6395,11 +6440,9 @@
for (k=3D0; k<16; k+=3D14) {
vec_out =3D (vector unsigned int){ 0,0,0,0 };
=20
+ init_function( &func, func_buf );
/* Patch up the instruction */
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, k, 6, 4);
- func =3D (void *)func_buf;
+ patch_op_imm(&func_buf[0], k, 6, 4);
=20
/* Save flags */
__asm__ __volatile__ ("mfcr %0" : "=3Dr" (tmpcr));
@@ -6468,7 +6511,7 @@
vec_out =3D (vector unsigned int){ 0,0,0,0 };
=20
// make sure start address is 16 aligned - use viargs[0]
- r15 =3D (uint32_t)&viargs[0];
+ r15 =3D (HWord_t)&viargs[0];
r14 =3D i;
=20
/* Save flags */
@@ -6571,16 +6614,16 @@
int i,j, k, do_mask;
=20
do_mask =3D 0;
- if (strstr(name, "lvebx")) do_mask =3D 1;
- if (strstr(name, "lvehx")) do_mask =3D 2;
- if (strstr(name, "lvewx")) do_mask =3D 4;
+ if (strstr(name, "lvebx") !=3D NULL) do_mask =3D 1;
+ if (strstr(name, "lvehx") !=3D NULL) do_mask =3D 2;
+ if (strstr(name, "lvewx") !=3D NULL) do_mask =3D 4;
=20
for (i=3D0; i<nb_viargs; i++) {
for (j=3D0; j<16; j+=3D7) {
vec_out =3D (vector unsigned int){ 0,0,0,0 };
=20
// load from viargs array + some dis-alignment
- r15 =3D (uint32_t)&viargs[0];
+ r15 =3D (HWord_t)&viargs[0];
r14 =3D i*16 + j;
=20
/* Save flags */
@@ -6666,7 +6709,7 @@
vec_in =3D (vector unsigned int)viargs[i];
=20
// store to viargs_priv[0] + some dis-alignment
- r16 =3D (uint32_t)&viargs_priv[0];
+ r16 =3D (HWord_t)&viargs_priv[0];
r15 =3D i*16 + j;
=20
/* Save flags */
@@ -6741,7 +6784,8 @@
bottom byte of the result as it's basically garbage, and differs
between cpus */
unsigned int mask
- =3D (strstr(name,"vrsqrtefp") || strstr(name,"vrefp"))
+ =3D (strstr(name,"vrsqrtefp") !=3D NULL ||
+ strstr(name, "vrefp") !=3D NULL)
? 0xFFFFFF00 : 0xFFFFFFFF;
=20
for (i=3D0; i<nb_vfargs; i++) {
@@ -6937,7 +6981,7 @@
volatile uint32_t flags, tmpcr;
volatile vector unsigned int tmpvscr;
volatile vector unsigned int vec_in, vec_out, vscr;
- uint32_t func_buf[2], *p;
+ uint32_t func_buf[2];
unsigned int *src, *dst;
int i,j;
#if defined TEST_VSCR_SAT
@@ -6950,11 +6994,9 @@
for (j=3D0; j<32; j+=3D9) {
vec_out =3D (vector unsigned int){ 0,0,0,0 };
=20
+ init_function( &func, func_buf );
/* Patch up the instruction */
- p =3D (void *)func;
- func_buf[1] =3D p[1];
- patch_op_imm(func_buf, p, j, 16, 5);
- func =3D (void *)func_buf;
+ patch_op_imm(&func_buf[0], j, 16, 5);
=20
/* Save flags */
__asm__ __volatile__ ("mfcr %0" : "=3Dr" (tmpcr));
Modified: trunk/none/tests/ppc32/jm-int.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/ppc32/jm-int.stdout.exp 2005-12-24 03:10:56 UTC (rev=
5427)
+++ trunk/none/tests/ppc32/jm-int.stdout.exp 2005-12-24 12:55:48 UTC (rev=
5428)
@@ -1080,208 +1080,208 @@
nego. ffffffff =3D> 00000001 (40000000 00000000)
=20
PPC logical insns with special forms:
- rlwimi 00000000, 0, 0, 0 =3D> 00000001 (00000000 00000000)
- rlwimi 00000000, 0, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwimi 00000000, 0, 31, 0 =3D> 00000000 (00000000 00000000)
- rlwimi 00000000, 0, 31, 31 =3D> 00000000 (00000000 00000000)
- rlwimi 00000000, 31, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwimi 00000000, 31, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwimi 00000000, 31, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwimi 00000000, 0, 0, 0 =3D> 00000001 (00000000 00000000)
+ rlwimi 00000000, 0, 0, 31 =3D> 00000000 (00000000 00000000)
+ rlwimi 00000000, 0, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwimi 00000000, 0, 31, 31 =3D> 00000000 (00000000 00000000)
+ rlwimi 00000000, 31, 0, 0 =3D> 00000000 (00000000 00000000)
+ rlwimi 00000000, 31, 0, 31 =3D> 00000000 (00000000 00000000)
+ rlwimi 00000000, 31, 31, 0 =3D> 00000000 (00000000 00000000)
rlwimi 00000000, 31, 31, 31 =3D> 00000000 (00000000 00000000)
- rlwimi 000f423f, 0, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwimi 000f423f, 0, 0, 31 =3D> 000f423f (00000000 00000000)
- rlwimi 000f423f, 0, 31, 0 =3D> 000f423f (00000000 00000000)
- rlwimi 000f423f, 0, 31, 31 =3D> 000f423f (00000000 00000000)
- rlwimi 000f423f, 31, 0, 0 =3D> 800f423f (00000000 00000000)
- rlwimi 000f423f, 31, 0, 31 =3D> 8007a11f (00000000 00000000)
- rlwimi 000f423f, 31, 31, 0 =3D> 8007a11f (00000000 00000000)
+ rlwimi 000f423f, 0, 0, 0 =3D> 00000000 (00000000 00000000)
+ rlwimi 000f423f, 0, 0, 31 =3D> 000f423f (00000000 00000000)
+ rlwimi 000f423f, 0, 31, 0 =3D> 000f423f (00000000 00000000)
+ rlwimi 000f423f, 0, 31, 31 =3D> 000f423f (00000000 00000000)
+ rlwimi 000f423f, 31, 0, 0 =3D> 800f423f (00000000 00000000)
+ rlwimi 000f423f, 31, 0, 31 =3D> 8007a11f (00000000 00000000)
+ rlwimi 000f423f, 31, 31, 0 =3D> 8007a11f (00000000 00000000)
rlwimi 000f423f, 31, 31, 31 =3D> 8007a11f (00000000 00000000)
- rlwimi ffffffff, 0, 0, 0 =3D> 8007a11f (00000000 00000000)
- rlwimi ffffffff, 0, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwimi ffffffff, 0, 31, 0 =3D> ffffffff (00000000 00000000)
- rlwimi ffffffff, 0, 31, 31 =3D> ffffffff (00000000 00000000)
- rlwimi ffffffff, 31, 0, 0 =3D> ffffffff (00000000 00000000)
- rlwimi ffffffff, 31, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwimi ffffffff, 31, 31, 0 =3D> ffffffff (00000000 00000000)
+ rlwimi ffffffff, 0, 0, 0 =3D> 8007a11f (00000000 00000000)
+ rlwimi ffffffff, 0, 0, 31 =3D> ffffffff (00000000 00000000)
+ rlwimi ffffffff, 0, 31, 0 =3D> ffffffff (00000000 00000000)
+ rlwimi ffffffff, 0, 31, 31 =3D> ffffffff (00000000 00000000)
+ rlwimi ffffffff, 31, 0, 0 =3D> ffffffff (00000000 00000000)
+ rlwimi ffffffff, 31, 0, 31 =3D> ffffffff (00000000 00000000)
+ rlwimi ffffffff, 31, 31, 0 =3D> ffffffff (00000000 00000000)
rlwimi ffffffff, 31, 31, 31 =3D> ffffffff (00000000 00000000)
=20
- rlwinm 00000000, 0, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwinm 00000000, 0, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwinm 00000000, 0, 31, 0 =3D> 00000000 (00000000 00000000)
- rlwinm 00000000, 0, 31, 31 =3D> 00000000 (00000000 00000000)
- rlwinm 00000000, 31, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwinm 00000000, 31, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwinm 00000000, 31, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 0, 0, 0 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 0, 0, 31 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 0, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 0, 31, 31 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 31, 0, 0 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 31, 0, 31 =3D> 00000000 (00000000 00000000)
+ rlwinm 00000000, 31, 31, 0 =3D> 00000000 (00000000 00000000)
rlwinm 00000000, 31, 31, 31 =3D> 00000000 (00000000 00000000)
- rlwinm 000f423f, 0, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwinm 000f423f, 0, 0, 31 =3D> 000f423f (00000000 00000000)
- rlwinm 000f423f, 0, 31, 0 =3D> 00000001 (00000000 00000000)
- rlwinm 000f423f, 0, 31, 31 =3D> 00000001 (00000000 00000000)
- rlwinm 000f423f, 31, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwinm 000f423f, 31, 0, 31 =3D> 8007a11f (00000000 00000000)
- rlwinm 000f423f, 31, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwinm 000f423f, 0, 0, 0 =3D> 00000000 (00000000 00000000)
+ rlwinm 000f423f, 0, 0, 31 =3D> 000f423f (00000000 00000000)
+ rlwinm 000f423f, 0, 31, 0 =3D> 00000001 (00000000 00000000)
+ rlwinm 000f423f, 0, 31, 31 =3D> 00000001 (00000000 00000000)
+ rlwinm 000f423f, 31, 0, 0 =3D> 80000000 (00000000 00000000)
+ rlwinm 000f423f, 31, 0, 31 =3D> 8007a11f (00000000 00000000)
+ rlwinm 000f423f, 31, 31, 0 =3D> 80000001 (00000000 00000000)
rlwinm 000f423f, 31, 31, 31 =3D> 00000001 (00000000 00000000)
- rlwinm ffffffff, 0, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwinm ffffffff, 0, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwinm ffffffff, 0, 31, 0 =3D> 80000001 (00000000 00000000)
- rlwinm ffffffff, 0, 31, 31 =3D> 00000001 (00000000 00000000)
- rlwinm ffffffff, 31, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwinm ffffffff, 31, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwinm ffffffff, 31, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwinm ffffffff, 0, 0, 0 =3D> 80000000 (00000000 00000000)
+ rlwinm ffffffff, 0, 0, 31 =3D> ffffffff (00000000 00000000)
+ rlwinm ffffffff, 0, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwinm ffffffff, 0, 31, 31 =3D> 00000001 (00000000 00000000)
+ rlwinm ffffffff, 31, 0, 0 =3D> 80000000 (00000000 00000000)
+ rlwinm ffffffff, 31, 0, 31 =3D> ffffffff (00000000 00000000)
+ rlwinm ffffffff, 31, 31, 0 =3D> 80000001 (00000000 00000000)
rlwinm ffffffff, 31, 31, 31 =3D> 00000001 (00000000 00000000)
=20
- rlwnm 00000000, 00000000, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwnm 00000000, 00000000, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwnm 00000000, 00000000, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwnm 00000000, 00000000, 0, 0 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 00000000, 00000000, 0, 31 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 00000000, 00000000, 31, 0 =3D> 00000000 (00000000 00000000=
)
rlwnm 00000000, 00000000, 31, 31 =3D> 00000000 (00000000 00000000=
)
- rlwnm 00000000, 000f423f, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwnm 00000000, 000f423f, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwnm 00000000, 000f423f, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwnm 00000000, 000f423f, 0, 0 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 00000000, 000f423f, 0, 31 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 00000000, 000f423f, 31, 0 =3D> 00000000 (00000000 00000000=
)
rlwnm 00000000, 000f423f, 31, 31 =3D> 00000000 (00000000 00000000=
)
- rlwnm 00000000, ffffffff, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwnm 00000000, ffffffff, 0, 31 =3D> 00000000 (00000000 00000000)
- rlwnm 00000000, ffffffff, 31, 0 =3D> 00000000 (00000000 00000000)
+ rlwnm 00000000, ffffffff, 0, 0 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 00000000, ffffffff, 0, 31 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 00000000, ffffffff, 31, 0 =3D> 00000000 (00000000 00000000=
)
rlwnm 00000000, ffffffff, 31, 31 =3D> 00000000 (00000000 00000000=
)
- rlwnm 000f423f, 00000000, 0, 0 =3D> 00000000 (00000000 00000000)
- rlwnm 000f423f, 00000000, 0, 31 =3D> 000f423f (00000000 00000000)
- rlwnm 000f423f, 00000000, 31, 0 =3D> 00000001 (00000000 00000000)
+ rlwnm 000f423f, 00000000, 0, 0 =3D> 00000000 (00000000 00000000=
)
+ rlwnm 000f423f, 00000000, 0, 31 =3D> 000f423f (00000000 00000000=
)
+ rlwnm 000f423f, 00000000, 31, 0 =3D> 00000001 (00000000 00000000=
)
rlwnm 000f423f, 00000000, 31, 31 =3D> 00000001 (00000000 00000000=
)
- rlwnm 000f423f, 000f423f, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwnm 000f423f, 000f423f, 0, 31 =3D> 8007a11f (00000000 00000000)
- rlwnm 000f423f, 000f423f, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwnm 000f423f, 000f423f, 0, 0 =3D> 80000000 (00000000 00000000=
)
+ rlwnm 000f423f, 000f423f, 0, 31 =3D> 8007a11f (00000000 00000000=
)
+ rlwnm 000f423f, 000f423f, 31, 0 =3D> 80000001 (00000000 00000000=
)
rlwnm 000f423f, 000f423f, 31, 31 =3D> 00000001 (00000000 00000000=
)
- rlwnm 000f423f, ffffffff, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwnm 000f423f, ffffffff, 0, 31 =3D> 8007a11f (00000000 00000000)
- rlwnm 000f423f, ffffffff, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwnm 000f423f, ffffffff, 0, 0 =3D> 80000000 (00000000 00000000=
)
+ rlwnm 000f423f, ffffffff, 0, 31 =3D> 8007a11f (00000000 00000000=
)
+ rlwnm 000f423f, ffffffff, 31, 0 =3D> 80000001 (00000000 00000000=
)
rlwnm 000f423f, ffffffff, 31, 31 =3D> 00000001 (00000000 00000000=
)
- rlwnm ffffffff, 00000000, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwnm ffffffff, 00000000, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwnm ffffffff, 00000000, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwnm ffffffff, 00000000, 0, 0 =3D> 80000000 (00000000 00000000=
)
+ rlwnm ffffffff, 00000000, 0, 31 =3D> ffffffff (00000000 00000000=
)
+ rlwnm ffffffff, 00000000, 31, 0 =3D> 80000001 (00000000 00000000=
)
rlwnm ffffffff, 00000000, 31, 31 =3D> 00000001 (00000000 00000000=
)
- rlwnm ffffffff, 000f423f, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwnm ffffffff, 000f423f, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwnm ffffffff, 000f423f, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwnm ffffffff, 000f423f, 0, 0 =3D> 80000000 (00000000 00000000=
)
+ rlwnm ffffffff, 000f423f, 0, 31 =3D> ffffffff (00000000 00000000=
)
+ rlwnm ffffffff, 000f423f, 31, 0 =3D> 80000001 (00000000 00000000=
)
rlwnm ffffffff, 000f423f, 31, 31 =3D> 00000001 (00000000 00000000=
)
- rlwnm ffffffff, ffffffff, 0, 0 =3D> 80000000 (00000000 00000000)
- rlwnm ffffffff, ffffffff, 0, 31 =3D> ffffffff (00000000 00000000)
- rlwnm ffffffff, ffffffff, 31, 0 =3D> 80000001 (00000000 00000000)
+ rlwnm ffffffff, ffffffff, 0, 0 =3D> 80000000 (00000000 00000000=
)
+ rlwnm ffffffff, ffffffff, 0, 31 =3D> ffffffff (00000000 00000000=
)
+ rlwnm ffffffff, ffffffff, 31, 0 =3D> 80000001 (00000000 00000000=
)
rlwnm ffffffff, ffffffff, 31, 31 =3D> 00000001 (00000000 00000000=
)
=20
- srawi 00000000, 0 =3D> 00000000 (00000000 00000000)
+ srawi 00000000, 0 =3D> 00000000 (00000000 00000000)
srawi 00000000, 31 =3D> 00000000 (00000000 00000000)
- srawi 000f423f, 0 =3D> 000f423f (00000000 00000000)
+ srawi 000f423f, 0 =3D> 000f423f (00000000 00000000)
srawi 000f423f, 31 =3D> 00000000 (00000000 00000000)
- srawi ffffffff, 0 =3D> ffffffff (00000000 00000000)
+ srawi ffffffff, 0 =3D> ffffffff (00000000 00000000)
srawi ffffffff, 31 =3D> ffffffff (00000000 20000000)
=20
mfcr (00000000) =3D> 00000000 (00000000 00000000)
mfcr (000f423f) =3D> 000f423f (000f423f 00000000)
mfcr (ffffffff) =3D> ffffffff (ffffffff 00000000)
=20
- mfspr: 00000000 -> mtxer -> mfxer =3D> 00000000
- mfspr: 000f423f -> mtxer -> mfxer =3D> 0000003f
- mfspr: ffffffff -> mtxer -> mfxer =3D> e000007f
- mfspr: 00000000 -> mtlr -> mflr =3D> 00000000
- mfspr: 000f423f -> mtlr -> mflr =3D> 000f423f
- mfspr: ffffffff -> mtlr -> mflr =3D> ffffffff
- mfspr: 00000000 -> mtctr -> mfctr =3D> 00000000
- mfspr: 000f423f -> mtctr -> mfctr =3D> 000f423f
- mfspr: ffffffff -> mtctr -> mfctr =3D> ffffffff
+ mfspr 1 (00000000) -> mtxer -> mfxer =3D> 00000000
+ mfspr 1 (000f423f) -> mtxer -> mfxer =3D> 0000003f
+ mfspr 1 (ffffffff) -> mtxer -> mfxer =3D> e000007f
+ mfspr 8 (00000000) -> mtlr -> mflr =3D> 00000000
+ mfspr 8 (000f423f) -> mtlr -> mflr =3D> 000f423f
+ mfspr 8 (ffffffff) -> mtlr -> mflr =3D> ffffffff
+ mfspr 9 (00000000) -> mtctr -> mfctr =3D> 00000000
+ mfspr 9 (000f423f) -> mtctr -> mfctr =3D> 000f423f
+ mfspr 9 (ffffffff) -> mtctr -> mfctr =3D> ffffffff
=20
=20
PPC logical insns with special forms with flags update:
- rlwimi. 00000000, 0, 0, 0 =3D> 20000000 (40000000 00000000)
- rlwimi. 00000000, 0, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwimi. 00000000, 0, 31, 0 =3D> 00000000 (20000000 00000000)
- rlwimi. 00000000, 0, 31, 31 =3D> 00000000 (20000000 00000000)
- rlwimi. 00000000, 31, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwimi. 00000000, 31, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwimi. 00000000, 31, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwimi. 00000000, 0, 0, 0 =3D> 7fffffff (40000000 00000000)
+ rlwimi. 00000000, 0, 0, 31 =3D> 00000000 (20000000 00000000)
+ rlwimi. 00000000, 0, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwimi. 00000000, 0, 31, 31 =3D> 00000000 (20000000 00000000)
+ rlwimi. 00000000, 31, 0, 0 =3D> 00000000 (20000000 00000000)
+ rlwimi. 00000000, 31, 0, 31 =3D> 00000000 (20000000 00000000)
+ rlwimi. 00000000, 31, 31, 0 =3D> 00000000 (20000000 00000000)
rlwimi. 00000000, 31, 31, 31 =3D> 00000000 (20000000 00000000)
- rlwimi. 000f423f, 0, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwimi. 000f423f, 0, 0, 31 =3D> 000f423f (40000000 00000000)
- rlwimi. 000f423f, 0, 31, 0 =3D> 000f423f (40000000 00000000)
- rlwimi. 000f423f, 0, 31, 31 =3D> 000f423f (40000000 00000000)
- rlwimi. 000f423f, 31, 0, 0 =3D> 800f423f (80000000 00000000)
- rlwimi. 000f423f, 31, 0, 31 =3D> 8007a11f (80000000 00000000)
- rlwimi. 000f423f, 31, 31, 0 =3D> 8007a11f (80000000 00000000)
+ rlwimi. 000f423f, 0, 0, 0 =3D> 00000000 (20000000 00000000)
+ rlwimi. 000f423f, 0, 0, 31 =3D> 000f423f (40000000 00000000)
+ rlwimi. 000f423f, 0, 31, 0 =3D> 000f423f (40000000 00000000)
+ rlwimi. 000f423f, 0, 31, 31 =3D> 000f423f (40000000 00000000)
+ rlwimi. 000f423f, 31, 0, 0 =3D> 800f423f (80000000 00000000)
+ rlwimi. 000f423f, 31, 0, 31 =3D> 8007a11f (80000000 00000000)
+ rlwimi. 000f423f, 31, 31, 0 =3D> 8007a11f (80000000 00000000)
rlwimi. 000f423f, 31, 31, 31 =3D> 8007a11f (80000000 00000000)
- rlwimi. ffffffff, 0, 0, 0 =3D> 8007a11f (80000000 00000000)
- rlwimi. ffffffff, 0, 0, 31 =3D> ffffffff (80000000 00000000)
- rlwimi. ffffffff, 0, 31, 0 =3D> ffffffff (80000000 00000000)
- rlwimi. ffffffff, 0, 31, 31 =3D> ffffffff (80000000 00000000)
- rlwimi. ffffffff, 31, 0, 0 =3D> ffffffff (80000000 00000000)
- rlwimi. ffffffff, 31, 0, 31 =3D> ffffffff (80000000 00000000)
- rlwimi. ffffffff, 31, 31, 0 =3D> ffffffff (80000000 00000000)
+ rlwimi. ffffffff, 0, 0, 0 =3D> 8007a11f (80000000 00000000)
+ rlwimi. ffffffff, 0, 0, 31 =3D> ffffffff (80000000 00000000)
+ rlwimi. ffffffff, 0, 31, 0 =3D> ffffffff (80000000 00000000)
+ rlwimi. ffffffff, 0, 31, 31 =3D> ffffffff (80000000 00000000)
+ rlwimi. ffffffff, 31, 0, 0 =3D> ffffffff (80000000 00000000)
+ rlwimi. ffffffff, 31, 0, 31 =3D> ffffffff (80000000 00000000)
+ rlwimi. ffffffff, 31, 31, 0 =3D> ffffffff (80000000 00000000)
rlwimi. ffffffff, 31, 31, 31 =3D> ffffffff (80000000 00000000)
=20
- rlwinm. 00000000, 0, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwinm. 00000000, 0, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwinm. 00000000, 0, 31, 0 =3D> 00000000 (20000000 00000000)
- rlwinm. 00000000, 0, 31, 31 =3D> 00000000 (20000000 00000000)
- rlwinm. 00000000, 31, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwinm. 00000000, 31, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwinm. 00000000, 31, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 0, 0, 0 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 0, 0, 31 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 0, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 0, 31, 31 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 31, 0, 0 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 31, 0, 31 =3D> 00000000 (20000000 00000000)
+ rlwinm. 00000000, 31, 31, 0 =3D> 00000000 (20000000 00000000)
rlwinm. 00000000, 31, 31, 31 =3D> 00000000 (20000000 00000000)
- rlwinm. 000f423f, 0, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwinm. 000f423f, 0, 0, 31 =3D> 000f423f (40000000 00000000)
- rlwinm. 000f423f, 0, 31, 0 =3D> 00000001 (40000000 00000000)
- rlwinm. 000f423f, 0, 31, 31 =3D> 00000001 (40000000 00000000)
- rlwinm. 000f423f, 31, 0, 0 =3D> 80000000 (80000000 00000000)
- rlwinm. 000f423f, 31, 0, 31 =3D> 8007a11f (80000000 00000000)
- rlwinm. 000f423f, 31, 31, 0 =3D> 80000001 (80000000 00000000)
+ rlwinm. 000f423f, 0, 0, 0 =3D> 00000000 (20000000 00000000)
+ rlwinm. 000f423f, 0, 0, 31 =3D> 000f423f (40000000 00000000)
+ rlwinm. 000f423f, 0, 31, 0 =3D> 00000001 (40000000 00000000)
+ rlwinm. 000f423f, 0, 31, 31 =3D> 00000001 (40000000 00000000)
+ rlwinm. 000f423f, 31, 0, 0 =3D> 80000000 (80000000 00000000)
+ rlwinm. 000f423f, 31, 0, 31 =3D> 8007a11f (80000000 00000000)
+ rlwinm. 000f423f, 31, 31, 0 =3D> 80000001 (80000000 00000000)
rlwinm. 000f423f, 31, 31, 31 =3D> 00000001 (40000000 00000000)
- rlwinm. ffffffff, 0, 0, 0 =3D> 80000000 (80000000 00000000)
- rlwinm. ffffffff, 0, 0, 31 =3D> ffffffff (80000000 00000000)
- rlwinm. ffffffff, 0, 31, 0 =3D> 80000001 (80000000 00000000)
- rlwinm. ffffffff, 0, 31, 31 =3D> 00000001 (40000000 00000000)
- rlwinm. ffffffff, 31, 0, 0 =3D> 80000000 (80000000 00000000)
- rlwinm. ffffffff, 31, 0, 31 =3D> ffffffff (80000000 00000000)
- rlwinm. ffffffff, 31, 31, 0 =3D> 80000001 (80000000 00000000)
+ rlwinm. ffffffff, 0, 0, 0 =3D> 80000000 (80000000 00000000)
+ rlwinm. ffffffff, 0, 0, 31 =3D> ffffffff (80000000 00000000)
+ rlwinm. ffffffff, 0, 31, 0 =3D> 80000001 (80000000 00000000)
+ rlwinm. ffffffff, 0, 31, 31 =3D> 00000001 (40000000 00000000)
+ rlwinm. ffffffff, 31, 0, 0 =3D> 80000000 (80000000 00000000)
+ rlwinm. ffffffff, 31, 0, 31 =3D> ffffffff (80000000 00000000)
+ rlwinm. ffffffff, 31, 31, 0 =3D> 80000001 (80000000 00000000)
rlwinm. ffffffff, 31, 31, 31 =3D> 00000001 (40000000 00000000)
=20
- rlwnm. 00000000, 00000000, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwnm. 00000000, 00000000, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwnm. 00000000, 00000000, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwnm. 00000000, 00000000, 0, 0 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 00000000, 00000000, 0, 31 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 00000000, 00000000, 31, 0 =3D> 00000000 (20000000 00000000=
)
rlwnm. 00000000, 00000000, 31, 31 =3D> 00000000 (20000000 00000000=
)
- rlwnm. 00000000, 000f423f, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwnm. 00000000, 000f423f, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwnm. 00000000, 000f423f, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwnm. 00000000, 000f423f, 0, 0 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 00000000, 000f423f, 0, 31 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 00000000, 000f423f, 31, 0 =3D> 00000000 (20000000 00000000=
)
rlwnm. 00000000, 000f423f, 31, 31 =3D> 00000000 (20000000 00000000=
)
- rlwnm. 00000000, ffffffff, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwnm. 00000000, ffffffff, 0, 31 =3D> 00000000 (20000000 00000000)
- rlwnm. 00000000, ffffffff, 31, 0 =3D> 00000000 (20000000 00000000)
+ rlwnm. 00000000, ffffffff, 0, 0 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 00000000, ffffffff, 0, 31 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 00000000, ffffffff, 31, 0 =3D> 00000000 (20000000 00000000=
)
rlwnm. 00000000, ffffffff, 31, 31 =3D> 00000000 (20000000 00000000=
)
- rlwnm. 000f423f, 00000000, 0, 0 =3D> 00000000 (20000000 00000000)
- rlwnm. 000f423f, 00000000, 0, 31 =3D> 000f423f (40000000 00000000)
- rlwnm. 000f423f, 00000000, 31, 0 =3D> 00000001 (40000000 00000000)
+ rlwnm. 000f423f, 00000000, 0, 0 =3D> 00000000 (20000000 00000000=
)
+ rlwnm. 000f423f, 00000000, 0, 31 =3D> 000f423f (40000000 00000000=
)
+ rlwnm. 000f423f, 00000000, 31, 0 =3D> 00000001 (40000000 00000000=
)
rlwnm. 000f423f, 00000000, 31, 31 =3D> 00000001 (40000000 00000000=
)
- rlwnm. 000f423f, 000f423f, 0, 0 =3D> 80000000 (80000000 00000000)
- rlwnm. 000f423f, 000f423f, 0, 31 =3D> 8007a11f (80000000 00000000)
- rlwnm. 000f423f, 000f423f, 31, 0 =3D> 80000001 (80000000 00000000)
+ rlwnm. 000f423f, 000f423f, 0, 0 =3D> 80000000 (80000000 00000000=
)
+ rlwnm. 000f423f, 000f423f, 0, 31 =3D> 8007a11f (80000000 00000000=
)
+ rlwnm. 000f423f, 000f423f, 31, 0 =3D> 80000001 (80000000 00000000=
)
rlwnm. 000f423f, 000f423f, 31, 31 =3D> 00000001 (40000000 00000000=
)
- rlwnm. 000f423f, ffffffff, 0, 0 =3D> 80000000 (80000000 00000000)
- rlwnm. 000f423f, ffffffff, 0, 31 =3D> 8007a11f (80000000 00000000)
- rlwnm. 000f423f, ffffffff, 31, 0 =3D> 80000001 (80000000 00000000)
+ rlwnm. 000f423f, ffffffff, 0, 0 =3D> 80000000 (80000000 00000000=
)
+ rlwnm. 000f423f, ffffffff, 0, 31 =3D> 8007a11f (80000000 00000000=
)
+ rlwnm. 000f423f, ffffffff, 31, 0 =3D> 80000001 (80000000 00000000=
)
rlwnm. 000f423f, ffffffff, 31, 31 =3D> 00000001 (40000000 00000000=
)
- rlwnm. ffffffff, 00000000, 0, 0 =3D> 80000000 (80000000 00000000)
- rlwnm. ffffffff, 00000000, 0, 31 =3D> ffffffff (80000000 00000000)
- rlwnm. ffffffff, 00000000, 31, 0 =3D> 80000001 (80000000 00000000)
+ rlwnm. ffffffff, 00000000, 0, 0 =3D> 80000000 (80000000 00000000=
)
+ rlwnm. ffffffff, 00000000, 0, 31 =3D> ffffffff (80000000 00000000=
)
+ rlwnm. ffffffff, 00000000, 31, 0 =3D> 80000001 (80000000 00000000=
)
rlwnm. ffffffff, 00000000, 31, 31 =3D> 00000001 (40000000 00000000=
)
- ...
[truncated message content] |