Blob Blame History Raw
commit ba73f8d2ebe4b5fe8163ee5ab806f0e50961ebdf
Author: Andreas Arnez <arnez@linux.ibm.com>
Date:   Tue Nov 3 18:17:30 2020 +0100

    Bug 428648 - s390x: Force 12-bit amode for vector loads in isel
    
    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.

diff --git a/VEX/priv/host_s390_isel.c b/VEX/priv/host_s390_isel.c
index 2f80dd850..134f3eb6f 100644
--- a/VEX/priv/host_s390_isel.c
+++ b/VEX/priv/host_s390_isel.c
@@ -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;