]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 428648 - s390x: Force 12-bit amode for vector loads in isel
authorAndreas Arnez <arnez@linux.ibm.com>
Tue, 3 Nov 2020 17:17:30 +0000 (18:17 +0100)
committerAndreas Arnez <arnez@linux.ibm.com>
Wed, 4 Nov 2020 18:58:23 +0000 (19:58 +0100)
Similar to Bug 417452, where the instruction selector sometimes attempted
to generate vector stores with a 20-bit displacement, the same problem has
now been reported with vector loads.

The problem is caused in s390_isel_vec_expr_wrk(), where the addressing
mode is generated with s390_isel_amode() instead of
s390_isel_amode_short().  This is fixed.

NEWS
VEX/priv/host_s390_isel.c

diff --git a/NEWS b/NEWS
index 6afb26406283982f6b27e839be2cc7ae8ef6f0e4..7b9142fc4a4b1c62a5fe63be539306680336ea56 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -54,6 +54,7 @@ n-i-bz  helgrind: If hg_cli__realloc fails, return NULL.
 426123  PPC ISA 3.1 support is missing, part 3
 427787  Support new faccessat2 linux syscall (439)
 428035  drd: Unbreak the musl build
+428648  s390_emit_load_mem panics due to 20-bit offset for vector load
 
 Release 3.16.1 (?? June 2020)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 2f80dd8504129a3e323e47d7a6d9fa0282deb5f0..134f3eb6fe188c4c6d80d185ce3e9e86fb1fe6c3 100644 (file)
@@ -3741,7 +3741,7 @@ s390_isel_vec_expr_wrk(ISelEnv *env, IRExpr *expr)
    /* --------- LOAD --------- */
    case Iex_Load: {
       HReg        dst = newVRegV(env);
-      s390_amode *am  = s390_isel_amode(env, expr->Iex.Load.addr);
+      s390_amode *am  = s390_isel_amode_short(env, expr->Iex.Load.addr);
 
       if (expr->Iex.Load.end != Iend_BE)
          goto irreducible;