]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Valgrind, ppc: Fix test for 32-bit testsuite.
authorCarl Love <cel@us.ibm.com>
Mon, 29 Oct 2012 20:39:18 +0000 (20:39 +0000)
committerCarl Love <cel@us.ibm.com>
Mon, 29 Oct 2012 20:39:18 +0000 (20:39 +0000)
The 32-bit testsuite executes the 64-bit class instruction prtyd.  This
instruction should not be tested in 32-bit mode.  The change also updates
the expected output for the test.  Note, 32-bit HW will generate a SIGILL
when the prtyd instruction is executed.  However, the 64-bit HW executing
a 32-bit application does execute the instruction but only the lower 32-bits
of the result are valid.  In general, the 64-bit class instructions should
not be executed in 32-bit binaries.

This fix accompanies the VEX fix in revision 2558 to add the 64-bit mode test
to make sure the 64-bit class instructions are only executed in 64-bit mode.
The VEX bugzilla is:

Bug 308573 - Internal Valgrind error on 64-bit instruction executed in
32-bit mode

Carl Love cel@us.ibm.com

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13091

memcheck/tests/ppc32/power_ISA2_05.c
memcheck/tests/ppc32/power_ISA2_05.stdout.exp

index f85b547f5f17ca4a28f2f91a7206ed675053ed6e..0cc60f67dde01c4e78acb5768f86498dd7d7e3e1 100644 (file)
@@ -29,9 +29,11 @@ void test_parity_instrs()
 
    for (i = 0; i < 50; i++) {
       word = base256(i);
+#ifdef __powerpc64__
       long_word = word;
       __asm__ volatile ("prtyd %0, %1":"=r" (parity):"r"(long_word));
       printf("prtyd (%x) => parity=%x\n", i, parity);
+#endif
       __asm__ volatile ("prtyw %0, %1":"=r" (parity):"r"(word));
       printf("prtyw (%x) => parity=%x\n", i, parity);
    }
index 55139604182bf5479f72d52c08614e44df4a06e8..e4975fb4e1e373d6a5a26809b5f84bd85661c8f6 100644 (file)
@@ -20,103 +20,53 @@ stfdp (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400
 lfdpx (2.204800, -4.102400) => F_hi=2.204800, F_lo=-4.102400
 stfdpx (2.204800, 2.204800) => F_hi=2.204800, F_lo=2.204800
 lfiwax (-1024.000000) => FRT=(ffffffff, c0900000)
-prtyd (0) => parity=0
 prtyw (0) => parity=0
-prtyd (1) => parity=1
 prtyw (1) => parity=1
-prtyd (2) => parity=0
 prtyw (2) => parity=0
-prtyd (3) => parity=1
 prtyw (3) => parity=1
-prtyd (4) => parity=0
 prtyw (4) => parity=0
-prtyd (5) => parity=1
 prtyw (5) => parity=1
-prtyd (6) => parity=0
 prtyw (6) => parity=0
-prtyd (7) => parity=1
 prtyw (7) => parity=1
-prtyd (8) => parity=0
 prtyw (8) => parity=0
-prtyd (9) => parity=1
 prtyw (9) => parity=1
-prtyd (a) => parity=0
 prtyw (a) => parity=0
-prtyd (b) => parity=1
 prtyw (b) => parity=1
-prtyd (c) => parity=0
 prtyw (c) => parity=0
-prtyd (d) => parity=1
 prtyw (d) => parity=1
-prtyd (e) => parity=0
 prtyw (e) => parity=0
-prtyd (f) => parity=1
 prtyw (f) => parity=1
-prtyd (10) => parity=0
 prtyw (10) => parity=0
-prtyd (11) => parity=1
 prtyw (11) => parity=1
-prtyd (12) => parity=0
 prtyw (12) => parity=0
-prtyd (13) => parity=1
 prtyw (13) => parity=1
-prtyd (14) => parity=0
 prtyw (14) => parity=0
-prtyd (15) => parity=1
 prtyw (15) => parity=1
-prtyd (16) => parity=0
 prtyw (16) => parity=0
-prtyd (17) => parity=1
 prtyw (17) => parity=1
-prtyd (18) => parity=0
 prtyw (18) => parity=0
-prtyd (19) => parity=1
 prtyw (19) => parity=1
-prtyd (1a) => parity=0
 prtyw (1a) => parity=0
-prtyd (1b) => parity=1
 prtyw (1b) => parity=1
-prtyd (1c) => parity=0
 prtyw (1c) => parity=0
-prtyd (1d) => parity=1
 prtyw (1d) => parity=1
-prtyd (1e) => parity=0
 prtyw (1e) => parity=0
-prtyd (1f) => parity=1
 prtyw (1f) => parity=1
-prtyd (20) => parity=0
 prtyw (20) => parity=0
-prtyd (21) => parity=1
 prtyw (21) => parity=1
-prtyd (22) => parity=0
 prtyw (22) => parity=0
-prtyd (23) => parity=1
 prtyw (23) => parity=1
-prtyd (24) => parity=0
 prtyw (24) => parity=0
-prtyd (25) => parity=1
 prtyw (25) => parity=1
-prtyd (26) => parity=0
 prtyw (26) => parity=0
-prtyd (27) => parity=1
 prtyw (27) => parity=1
-prtyd (28) => parity=0
 prtyw (28) => parity=0
-prtyd (29) => parity=1
 prtyw (29) => parity=1
-prtyd (2a) => parity=0
 prtyw (2a) => parity=0
-prtyd (2b) => parity=1
 prtyw (2b) => parity=1
-prtyd (2c) => parity=0
 prtyw (2c) => parity=0
-prtyd (2d) => parity=1
 prtyw (2d) => parity=1
-prtyd (2e) => parity=0
 prtyw (2e) => parity=0
-prtyd (2f) => parity=1
 prtyw (2f) => parity=1
-prtyd (30) => parity=0
 prtyw (30) => parity=0
-prtyd (31) => parity=1
 prtyw (31) => parity=1