From b8c5c508da101d2b5b7d59624457efa6068665ae Mon Sep 17 00:00:00 2001 From: Carl Love Date: Mon, 29 Oct 2012 20:39:18 +0000 Subject: [PATCH] Valgrind, ppc: Fix test for 32-bit testsuite. 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 | 2 + memcheck/tests/ppc32/power_ISA2_05.stdout.exp | 50 ------------------- 2 files changed, 2 insertions(+), 50 deletions(-) diff --git a/memcheck/tests/ppc32/power_ISA2_05.c b/memcheck/tests/ppc32/power_ISA2_05.c index f85b547f5..0cc60f67d 100644 --- a/memcheck/tests/ppc32/power_ISA2_05.c +++ b/memcheck/tests/ppc32/power_ISA2_05.c @@ -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); } diff --git a/memcheck/tests/ppc32/power_ISA2_05.stdout.exp b/memcheck/tests/ppc32/power_ISA2_05.stdout.exp index 551396041..e4975fb4e 100644 --- a/memcheck/tests/ppc32/power_ISA2_05.stdout.exp +++ b/memcheck/tests/ppc32/power_ISA2_05.stdout.exp @@ -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