From: Mark Wielaard Date: Sun, 9 Dec 2018 13:26:39 +0000 (+0100) Subject: memcheck: Allow unaligned loads of 128bit vectors on ppc64[le]. X-Git-Tag: VALGRIND_3_15_0~125 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d12697b157bb50ad98467b565b3a7a39097bf31;p=thirdparty%2Fvalgrind.git memcheck: Allow unaligned loads of 128bit vectors on ppc64[le]. On powerpc partial unaligned loads of vectors from partially invalid addresses are OK and could be generated by our translation of lxvd2x. Adjust partial_load memcheck tests to allow partial loads of 16 byte vectors on powerpc64. Part of resolving bug #386945. --- diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c index 737f79d76a..101916b5a3 100644 --- a/memcheck/mc_main.c +++ b/memcheck/mc_main.c @@ -1354,6 +1354,9 @@ void mc_LOADV_128_or_256_slow ( /*OUT*/ULong* res, tl_assert(szB == 16); // s390 doesn't have > 128 bit SIMD /* OK if all loaded bytes are from the same page. */ Bool alignedOK = ((a & 0xfff) <= 0x1000 - szB); +# elif defined(VGA_ppc64be) || defined(VGA_ppc64le) + /* lxvd2x might generate an unaligned 128 bit vector load. */ + Bool alignedOK = (szB == 16); # else /* OK if the address is aligned by the load size. */ Bool alignedOK = (0 == (a & (szB - 1)));