From patchwork Sun Dec 11 15:27:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633079 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993001pvb; Sun, 11 Dec 2022 07:33:11 -0800 (PST) X-Google-Smtp-Source: AA0mqf7boaz1xwQ/qcVLgZNQlt4mt9ltqGPTYzk3OQC2KQNaICpqzPW1LHF1l9iN24KiHCDrH3QM X-Received: by 2002:a05:622a:4d87:b0:3a5:c775:59e9 with SMTP id ff7-20020a05622a4d8700b003a5c77559e9mr20544903qtb.29.1670772791235; Sun, 11 Dec 2022 07:33:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772791; cv=none; d=google.com; s=arc-20160816; b=0cQORgV1Jj6keI3JD1ga6fRy4lKXa7jx2Azx/jcxB/XUgmZebOeGN5xFx1/SJFcTpN GYcaAFxNtoDyLu9XpGCQf2BFnhwfkW7MmQKFHpINtQhMhnEIDySp+StsbfTXHDXvQQIl vXaMNk1zd/EH3CzQf/KvT9kDiKR64LKNeR7te9M3Oopd1oO0gPBL2CLID01Cg6XpPyE+ g5tAaKbHTywIfrWIhq/yoovc8eOAfpvXwja9QBeDV1H7ztwGZmGSd8YoEKRgYJ/sjoU/ ckYYMQNsiWGerKfku6yccJOswSPK0rsLrtvrNf7qulLXL07+E/p5Pj3KKXt8ltZu5X2W Phhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qxVibr8Xmoa/OfOYOrbXUzkoow4XEeP7mSUP4s1uJTM=; b=e7bK3TfNEytSFb/MK6IHfFIllDWZGU+1L5xeUBfW3PS5VfrNJgwgyIgdQkYmtQQksH QF4niUVBXhJQb0uj1fajomsJqyb0HmRGVx83NnDpRWOKxUim2+hD8SmbtK+5DEfjOtcR TkWx8LrrBUDkl3iVS3mPS9SxVL+VUmM5yU3IM806Qys/xNz4fe6OzSOxw285KJe3cYAH OvFk038bMvYIpGOi6kx5fqMGHRpiQNf91eRB+NNqgEuh7q5wN623cyT6jshSxapUKAJt pcm3XYYuVzyCO/Pf+zJDGYRWxw3L1BSHMkdB0d/OS7oPTwEGNSBZFL9fZq+2N6NH4V7o SogQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NHnCczeC; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i15-20020a05622a08cf00b003a81677bc36si51607qte.123.2022.12.11.07.33.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:11 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NHnCczeC; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFh-0006Ga-Eq; Sun, 11 Dec 2022 10:28:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFP-00066i-CX for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:14 -0500 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFL-0007BV-7O for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:11 -0500 Received: by mail-oi1-x229.google.com with SMTP id n205so9089974oib.1 for ; Sun, 11 Dec 2022 07:28:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qxVibr8Xmoa/OfOYOrbXUzkoow4XEeP7mSUP4s1uJTM=; b=NHnCczeCPl5upYmmEwxiwkaMFOJ+CY4QTk7fp9esoGdq0BVbVWlCkgRRb8jdA4ltc+ 1UUYM9Qf1gLs31VRErGS7edq8C2HQVFKOb57eC7jqzT+m0j6lS9hdDNerNUK7qW6RU8R /NEimzmKXjzUSIY8Nz6vdcSsPDzjWaoGeitXEVb6nCt/enAdP6Y39WOb8MLXq3a0DklM gJrS0snazcSrIuaI3MBt3N4j6c080sBrN3aV1D/1QU3D4GJ6NC6qKBSoShUrUL5E3tyU 6ux9B6jyFQ2kFhVYrAaz0k81TqzBJ+TOxu/q+0dD37E+uUs7+DSvhEy6fb3aFmLgrZJA /Mlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qxVibr8Xmoa/OfOYOrbXUzkoow4XEeP7mSUP4s1uJTM=; b=7R2APYIPqYJ+A1GM9f/37zEYSlhfaO5RzdEvqaY1DbttdalsYrGPJSwK+K6CY83PEO Ly3r2KQDCAk84ZJqJa0ii/ID0unNLG+p9gv36cc3xwxR1q/HmCpzcg4EtYAp9kT1lVH9 +9+VOFfrO4Ayuj3dngg7VR3+5uO1bnjdbfSY7S1cj6DX4+UbRW5m6At9A39Kh3MSy3UN rYBL8ex1DDzhEVAqRrFQMoatjia4P2thTYVhD188YQqLTT+U/f/FXD/asbYRVB9Ij/r+ KqOLGRpnmM48Jz1LZ1IGgM92ZyKs+MCrzaTKLwqsn1rQ/D0wUYDLEs88VRGWRexY2DoJ yIKA== X-Gm-Message-State: ANoB5pkl1LRLGaQTiI+Yj0JF+Zx/iq7mvbVdBvm+Ripp9qDP5m8+a/TR 9hfY9om8uy1VtlDUOpCaqMOclf2CFyckI2LQClI= X-Received: by 2002:a05:6808:1992:b0:35e:6c01:4e82 with SMTP id bj18-20020a056808199200b0035e6c014e82mr3627185oib.58.1670772485868; Sun, 11 Dec 2022 07:28:05 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:05 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich , =?utf-8?q?P?= =?utf-8?q?hilippe_Mathieu-Daud=C3=A9?= Subject: [PATCH v2 01/27] target/s390x: Use tcg_constant_* in local contexts Date: Sun, 11 Dec 2022 09:27:36 -0600 Message-Id: <20221211152802.923900-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::229; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x229.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Replace tcg_const_* with tcg_constant_* in contexts where the free to remove is nearby. Reviewed-by: Ilya Leoshkevich Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 416 +++++++++++++---------------------- 1 file changed, 149 insertions(+), 267 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 1e599ac259..4fb396b557 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -171,8 +171,6 @@ static uint64_t inline_branch_miss[CC_OP_MAX]; static void pc_to_link_info(TCGv_i64 out, DisasContext *s, uint64_t pc) { - TCGv_i64 tmp; - if (s->base.tb->flags & FLAG_MASK_32) { if (s->base.tb->flags & FLAG_MASK_64) { tcg_gen_movi_i64(out, pc); @@ -181,9 +179,7 @@ static void pc_to_link_info(TCGv_i64 out, DisasContext *s, uint64_t pc) pc |= 0x80000000; } assert(!(s->base.tb->flags & FLAG_MASK_64)); - tmp = tcg_const_i64(pc); - tcg_gen_deposit_i64(out, out, tmp, 0, 32); - tcg_temp_free_i64(tmp); + tcg_gen_deposit_i64(out, out, tcg_constant_i64(pc), 0, 32); } static TCGv_i64 psw_addr; @@ -348,11 +344,8 @@ static void per_branch(DisasContext *s, bool to_next) tcg_gen_movi_i64(gbea, s->base.pc_next); if (s->base.tb->flags & FLAG_MASK_PER) { - TCGv_i64 next_pc = to_next ? tcg_const_i64(s->pc_tmp) : psw_addr; + TCGv_i64 next_pc = to_next ? tcg_constant_i64(s->pc_tmp) : psw_addr; gen_helper_per_branch(cpu_env, gbea, next_pc); - if (to_next) { - tcg_temp_free_i64(next_pc); - } } #endif } @@ -370,9 +363,8 @@ static void per_branch_cond(DisasContext *s, TCGCond cond, gen_set_label(lab); } else { - TCGv_i64 pc = tcg_const_i64(s->base.pc_next); + TCGv_i64 pc = tcg_constant_i64(s->base.pc_next); tcg_gen_movcond_i64(cond, gbea, arg1, arg2, gbea, pc); - tcg_temp_free_i64(pc); } #endif } @@ -426,23 +418,17 @@ static int get_mem_index(DisasContext *s) static void gen_exception(int excp) { - TCGv_i32 tmp = tcg_const_i32(excp); - gen_helper_exception(cpu_env, tmp); - tcg_temp_free_i32(tmp); + gen_helper_exception(cpu_env, tcg_constant_i32(excp)); } static void gen_program_exception(DisasContext *s, int code) { - TCGv_i32 tmp; + /* Remember what pgm exeption this was. */ + tcg_gen_st_i32(tcg_constant_i32(code), cpu_env, + offsetof(CPUS390XState, int_pgm_code)); - /* Remember what pgm exception this was. */ - tmp = tcg_const_i32(code); - tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUS390XState, int_pgm_code)); - tcg_temp_free_i32(tmp); - - tmp = tcg_const_i32(s->ilen); - tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUS390XState, int_pgm_ilen)); - tcg_temp_free_i32(tmp); + tcg_gen_st_i32(tcg_constant_i32(s->ilen), cpu_env, + offsetof(CPUS390XState, int_pgm_ilen)); /* update the psw */ update_psw_addr(s); @@ -461,9 +447,7 @@ static inline void gen_illegal_opcode(DisasContext *s) static inline void gen_data_exception(uint8_t dxc) { - TCGv_i32 tmp = tcg_const_i32(dxc); - gen_helper_data_exception(cpu_env, tmp); - tcg_temp_free_i32(tmp); + gen_helper_data_exception(cpu_env, tcg_constant_i32(dxc)); } static inline void gen_trap(DisasContext *s) @@ -584,13 +568,13 @@ static void gen_op_calc_cc(DisasContext *s) switch (s->cc_op) { default: - dummy = tcg_const_i64(0); + dummy = tcg_constant_i64(0); /* FALLTHRU */ case CC_OP_ADD_64: case CC_OP_SUB_64: case CC_OP_ADD_32: case CC_OP_SUB_32: - local_cc_op = tcg_const_i32(s->cc_op); + local_cc_op = tcg_constant_i32(s->cc_op); break; case CC_OP_CONST0: case CC_OP_CONST1: @@ -660,13 +644,6 @@ static void gen_op_calc_cc(DisasContext *s) tcg_abort(); } - if (local_cc_op) { - tcg_temp_free_i32(local_cc_op); - } - if (dummy) { - tcg_temp_free_i64(dummy); - } - /* We now have cc in cc_op as constant */ set_cc_static(s); } @@ -1284,9 +1261,9 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, Most commonly we're single-stepping or some other condition that disables all use of goto_tb. Just update the PC and exit. */ - TCGv_i64 next = tcg_const_i64(s->pc_tmp); + TCGv_i64 next = tcg_constant_i64(s->pc_tmp); if (is_imm) { - cdest = tcg_const_i64(dest); + cdest = tcg_constant_i64(dest); } if (c->is_64) { @@ -1296,21 +1273,15 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, } else { TCGv_i32 t0 = tcg_temp_new_i32(); TCGv_i64 t1 = tcg_temp_new_i64(); - TCGv_i64 z = tcg_const_i64(0); + TCGv_i64 z = tcg_constant_i64(0); tcg_gen_setcond_i32(c->cond, t0, c->u.s32.a, c->u.s32.b); tcg_gen_extu_i32_i64(t1, t0); tcg_temp_free_i32(t0); tcg_gen_movcond_i64(TCG_COND_NE, psw_addr, t1, z, cdest, next); per_branch_cond(s, TCG_COND_NE, t1, z); tcg_temp_free_i64(t1); - tcg_temp_free_i64(z); } - if (is_imm) { - tcg_temp_free_i64(cdest); - } - tcg_temp_free_i64(next); - ret = DISAS_PC_UPDATED; } @@ -1394,10 +1365,9 @@ static DisasJumpType op_addc64(DisasContext *s, DisasOps *o) { compute_carry(s); - TCGv_i64 zero = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); tcg_gen_add2_i64(o->out, cc_src, o->in1, zero, cc_src, zero); tcg_gen_add2_i64(o->out, cc_src, o->out, cc_src, o->in2, zero); - tcg_temp_free_i64(zero); return DISAS_NEXT; } @@ -2077,9 +2047,8 @@ static DisasJumpType op_clc(DisasContext *s, DisasOps *o) tcg_gen_qemu_ld64(cc_dst, o->in2, get_mem_index(s)); break; default: - vl = tcg_const_i32(l); + vl = tcg_constant_i32(l); gen_helper_clc(cc_op, cpu_env, vl, o->addr1, o->in2); - tcg_temp_free_i32(vl); set_cc_static(s); return DISAS_NEXT; } @@ -2099,11 +2068,9 @@ static DisasJumpType op_clcl(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - t1 = tcg_const_i32(r1); - t2 = tcg_const_i32(r2); + t1 = tcg_constant_i32(r1); + t2 = tcg_constant_i32(r2); gen_helper_clcl(cc_op, cpu_env, t1, t2); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); set_cc_static(s); return DISAS_NEXT; } @@ -2120,11 +2087,9 @@ static DisasJumpType op_clcle(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - t1 = tcg_const_i32(r1); - t3 = tcg_const_i32(r3); + t1 = tcg_constant_i32(r1); + t3 = tcg_constant_i32(r3); gen_helper_clcle(cc_op, cpu_env, t1, o->in2, t3); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t3); set_cc_static(s); return DISAS_NEXT; } @@ -2141,24 +2106,22 @@ static DisasJumpType op_clclu(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - t1 = tcg_const_i32(r1); - t3 = tcg_const_i32(r3); + t1 = tcg_constant_i32(r1); + t3 = tcg_constant_i32(r3); gen_helper_clclu(cc_op, cpu_env, t1, o->in2, t3); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t3); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_clm(DisasContext *s, DisasOps *o) { - TCGv_i32 m3 = tcg_const_i32(get_field(s, m3)); + TCGv_i32 m3 = tcg_constant_i32(get_field(s, m3)); TCGv_i32 t1 = tcg_temp_new_i32(); + tcg_gen_extrl_i64_i32(t1, o->in1); gen_helper_clm(cc_op, cpu_env, t1, m3, o->in2); set_cc_static(s); tcg_temp_free_i32(t1); - tcg_temp_free_i32(m3); return DISAS_NEXT; } @@ -2217,8 +2180,8 @@ static DisasJumpType op_cdsg(DisasContext *s, DisasOps *o) /* Note that R1:R1+1 = expected value and R3:R3+1 = new value. */ addr = get_address(s, 0, b2, d2); - t_r1 = tcg_const_i32(r1); - t_r3 = tcg_const_i32(r3); + t_r1 = tcg_constant_i32(r1); + t_r3 = tcg_constant_i32(r3); if (!(tb_cflags(s->base.tb) & CF_PARALLEL)) { gen_helper_cdsg(cpu_env, addr, t_r1, t_r3); } else if (HAVE_CMPXCHG128) { @@ -2228,8 +2191,6 @@ static DisasJumpType op_cdsg(DisasContext *s, DisasOps *o) ret = DISAS_NORETURN; } tcg_temp_free_i64(addr); - tcg_temp_free_i32(t_r1); - tcg_temp_free_i32(t_r3); set_cc_static(s); return ret; @@ -2238,14 +2199,13 @@ static DisasJumpType op_cdsg(DisasContext *s, DisasOps *o) static DisasJumpType op_csst(DisasContext *s, DisasOps *o) { int r3 = get_field(s, r3); - TCGv_i32 t_r3 = tcg_const_i32(r3); + TCGv_i32 t_r3 = tcg_constant_i32(r3); if (tb_cflags(s->base.tb) & CF_PARALLEL) { gen_helper_csst_parallel(cc_op, cpu_env, t_r3, o->addr1, o->in2); } else { gen_helper_csst(cc_op, cpu_env, t_r3, o->addr1, o->in2); } - tcg_temp_free_i32(t_r3); set_cc_static(s); return DISAS_NEXT; @@ -2343,9 +2303,9 @@ static DisasJumpType op_cuXX(DisasContext *s, DisasOps *o) m3 = 0; } - tr1 = tcg_const_i32(r1); - tr2 = tcg_const_i32(r2); - chk = tcg_const_i32(m3); + tr1 = tcg_constant_i32(r1); + tr2 = tcg_constant_i32(r2); + chk = tcg_constant_i32(m3); switch (s->insn->data) { case 12: @@ -2370,9 +2330,6 @@ static DisasJumpType op_cuXX(DisasContext *s, DisasOps *o) g_assert_not_reached(); } - tcg_temp_free_i32(tr1); - tcg_temp_free_i32(tr2); - tcg_temp_free_i32(chk); set_cc_static(s); return DISAS_NEXT; } @@ -2380,15 +2337,11 @@ static DisasJumpType op_cuXX(DisasContext *s, DisasOps *o) #ifndef CONFIG_USER_ONLY static DisasJumpType op_diag(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); - TCGv_i32 func_code = tcg_const_i32(get_field(s, i2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + TCGv_i32 func_code = tcg_constant_i32(get_field(s, i2)); gen_helper_diag(cpu_env, r1, r3, func_code); - - tcg_temp_free_i32(func_code); - tcg_temp_free_i32(r3); - tcg_temp_free_i32(r1); return DISAS_NEXT; } #endif @@ -2494,18 +2447,13 @@ static DisasJumpType op_ex(DisasContext *s, DisasOps *o) update_cc_op(s); if (r1 == 0) { - v1 = tcg_const_i64(0); + v1 = tcg_constant_i64(0); } else { v1 = regs[r1]; } - ilen = tcg_const_i32(s->ilen); + ilen = tcg_constant_i32(s->ilen); gen_helper_ex(cpu_env, ilen, v1, o->in2); - tcg_temp_free_i32(ilen); - - if (r1 == 0) { - tcg_temp_free_i64(v1); - } return DISAS_PC_CC_UPDATED; } @@ -2657,12 +2605,11 @@ static DisasJumpType op_idte(DisasContext *s, DisasOps *o) TCGv_i32 m4; if (s390_has_feat(S390_FEAT_LOCAL_TLB_CLEARING)) { - m4 = tcg_const_i32(get_field(s, m4)); + m4 = tcg_constant_i32(get_field(s, m4)); } else { - m4 = tcg_const_i32(0); + m4 = tcg_constant_i32(0); } gen_helper_idte(cpu_env, o->in1, o->in2, m4); - tcg_temp_free_i32(m4); return DISAS_NEXT; } @@ -2671,12 +2618,11 @@ static DisasJumpType op_ipte(DisasContext *s, DisasOps *o) TCGv_i32 m4; if (s390_has_feat(S390_FEAT_LOCAL_TLB_CLEARING)) { - m4 = tcg_const_i32(get_field(s, m4)); + m4 = tcg_constant_i32(get_field(s, m4)); } else { - m4 = tcg_const_i32(0); + m4 = tcg_constant_i32(0); } gen_helper_ipte(cpu_env, o->in1, o->in2, m4); - tcg_temp_free_i32(m4); return DISAS_NEXT; } @@ -2732,16 +2678,12 @@ static DisasJumpType op_msa(DisasContext *s, DisasOps *o) g_assert_not_reached(); }; - t_r1 = tcg_const_i32(r1); - t_r2 = tcg_const_i32(r2); - t_r3 = tcg_const_i32(r3); - type = tcg_const_i32(s->insn->data); + t_r1 = tcg_constant_i32(r1); + t_r2 = tcg_constant_i32(r2); + t_r3 = tcg_constant_i32(r3); + type = tcg_constant_i32(s->insn->data); gen_helper_msa(cc_op, cpu_env, t_r1, t_r2, t_r3, type); set_cc_static(s); - tcg_temp_free_i32(t_r1); - tcg_temp_free_i32(t_r2); - tcg_temp_free_i32(t_r3); - tcg_temp_free_i32(type); return DISAS_NEXT; } @@ -3002,10 +2944,9 @@ static DisasJumpType op_loc(DisasContext *s, DisasOps *o) tcg_gen_extu_i32_i64(t, t32); tcg_temp_free_i32(t32); - z = tcg_const_i64(0); + z = tcg_constant_i64(0); tcg_gen_movcond_i64(TCG_COND_NE, o->out, t, z, o->in2, o->in1); tcg_temp_free_i64(t); - tcg_temp_free_i64(z); } return DISAS_NEXT; @@ -3014,11 +2955,10 @@ static DisasJumpType op_loc(DisasContext *s, DisasOps *o) #ifndef CONFIG_USER_ONLY static DisasJumpType op_lctl(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_lctl(cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); /* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */ s->exit_to_mainloop = true; return DISAS_TOO_MANY; @@ -3026,11 +2966,10 @@ static DisasJumpType op_lctl(DisasContext *s, DisasOps *o) static DisasJumpType op_lctlg(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_lctlg(cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); /* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */ s->exit_to_mainloop = true; return DISAS_TOO_MANY; @@ -3090,11 +3029,10 @@ static DisasJumpType op_lpswe(DisasContext *s, DisasOps *o) static DisasJumpType op_lam(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_lam(cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); return DISAS_NEXT; } @@ -3304,9 +3242,6 @@ static DisasJumpType op_lcbb(DisasContext *s, DisasOps *o) static DisasJumpType op_mc(DisasContext *s, DisasOps *o) { -#if !defined(CONFIG_USER_ONLY) - TCGv_i32 i2; -#endif const uint16_t monitor_class = get_field(s, i2); if (monitor_class & 0xff00) { @@ -3315,9 +3250,8 @@ static DisasJumpType op_mc(DisasContext *s, DisasOps *o) } #if !defined(CONFIG_USER_ONLY) - i2 = tcg_const_i32(monitor_class); - gen_helper_monitor_call(cpu_env, o->addr1, i2); - tcg_temp_free_i32(i2); + gen_helper_monitor_call(cpu_env, o->addr1, + tcg_constant_i32(monitor_class)); #endif /* Defaults to a NOP. */ return DISAS_NEXT; @@ -3381,9 +3315,9 @@ static DisasJumpType op_movx(DisasContext *s, DisasOps *o) static DisasJumpType op_mvc(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_mvc(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -3395,9 +3329,9 @@ static DisasJumpType op_mvcrl(DisasContext *s, DisasOps *o) static DisasJumpType op_mvcin(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_mvcin(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -3413,11 +3347,9 @@ static DisasJumpType op_mvcl(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - t1 = tcg_const_i32(r1); - t2 = tcg_const_i32(r2); + t1 = tcg_constant_i32(r1); + t2 = tcg_constant_i32(r2); gen_helper_mvcl(cc_op, cpu_env, t1, t2); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); set_cc_static(s); return DISAS_NEXT; } @@ -3434,11 +3366,9 @@ static DisasJumpType op_mvcle(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - t1 = tcg_const_i32(r1); - t3 = tcg_const_i32(r3); + t1 = tcg_constant_i32(r1); + t3 = tcg_constant_i32(r3); gen_helper_mvcle(cc_op, cpu_env, t1, o->in2, t3); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t3); set_cc_static(s); return DISAS_NEXT; } @@ -3455,11 +3385,9 @@ static DisasJumpType op_mvclu(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - t1 = tcg_const_i32(r1); - t3 = tcg_const_i32(r3); + t1 = tcg_constant_i32(r1); + t3 = tcg_constant_i32(r3); gen_helper_mvclu(cc_op, cpu_env, t1, o->in2, t3); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t3); set_cc_static(s); return DISAS_NEXT; } @@ -3492,49 +3420,45 @@ static DisasJumpType op_mvcs(DisasContext *s, DisasOps *o) static DisasJumpType op_mvn(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_mvn(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } static DisasJumpType op_mvo(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_mvo(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } static DisasJumpType op_mvpg(DisasContext *s, DisasOps *o) { - TCGv_i32 t1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 t2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 t1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 t2 = tcg_constant_i32(get_field(s, r2)); gen_helper_mvpg(cc_op, cpu_env, regs[0], t1, t2); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_mvst(DisasContext *s, DisasOps *o) { - TCGv_i32 t1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 t2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 t1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 t2 = tcg_constant_i32(get_field(s, r2)); gen_helper_mvst(cc_op, cpu_env, t1, t2); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_mvz(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_mvz(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -3622,13 +3546,12 @@ static DisasJumpType op_msdb(DisasContext *s, DisasOps *o) static DisasJumpType op_nabs(DisasContext *s, DisasOps *o) { - TCGv_i64 z, n; - z = tcg_const_i64(0); - n = tcg_temp_new_i64(); + TCGv_i64 z = tcg_constant_i64(0); + TCGv_i64 n = tcg_temp_new_i64(); + tcg_gen_neg_i64(n, o->in2); tcg_gen_movcond_i64(TCG_COND_GE, o->out, o->in2, z, n, o->in2); tcg_temp_free_i64(n); - tcg_temp_free_i64(z); return DISAS_NEXT; } @@ -3653,9 +3576,9 @@ static DisasJumpType op_nabsf128(DisasContext *s, DisasOps *o) static DisasJumpType op_nc(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_nc(cc_op, cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } @@ -3687,9 +3610,9 @@ static DisasJumpType op_negf128(DisasContext *s, DisasOps *o) static DisasJumpType op_oc(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_oc(cc_op, cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } @@ -3739,9 +3662,9 @@ static DisasJumpType op_oi(DisasContext *s, DisasOps *o) static DisasJumpType op_pack(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_pack(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -3755,9 +3678,8 @@ static DisasJumpType op_pka(DisasContext *s, DisasOps *o) gen_program_exception(s, PGM_SPECIFICATION); return DISAS_NORETURN; } - l = tcg_const_i32(l2); + l = tcg_constant_i32(l2); gen_helper_pka(cpu_env, o->addr1, o->in2, l); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -3771,9 +3693,8 @@ static DisasJumpType op_pku(DisasContext *s, DisasOps *o) gen_program_exception(s, PGM_SPECIFICATION); return DISAS_NORETURN; } - l = tcg_const_i32(l2); + l = tcg_constant_i32(l2); gen_helper_pku(cpu_env, o->addr1, o->in2, l); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -4020,9 +3941,8 @@ static DisasJumpType op_sam(DisasContext *s, DisasOps *o) } s->pc_tmp &= mask; - tsam = tcg_const_i64(sam); + tsam = tcg_constant_i64(sam); tcg_gen_deposit_i64(psw_mask, psw_mask, tsam, 31, 2); - tcg_temp_free_i64(tsam); /* Always exit the TB, since we (may have) changed execution mode. */ return DISAS_TOO_MANY; @@ -4083,12 +4003,11 @@ static DisasJumpType op_servc(DisasContext *s, DisasOps *o) static DisasJumpType op_sigp(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_sigp(cc_op, cpu_env, o->in2, r1, r3); set_cc_static(s); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); return DISAS_NEXT; } #endif @@ -4357,21 +4276,19 @@ static DisasJumpType op_stckc(DisasContext *s, DisasOps *o) static DisasJumpType op_stctg(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_stctg(cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); return DISAS_NEXT; } static DisasJumpType op_stctl(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_stctl(cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); return DISAS_NEXT; } @@ -4598,11 +4515,10 @@ static DisasJumpType op_st64(DisasContext *s, DisasOps *o) static DisasJumpType op_stam(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + gen_helper_stam(cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); return DISAS_NEXT; } @@ -4660,7 +4576,7 @@ static DisasJumpType op_stm(DisasContext *s, DisasOps *o) int r1 = get_field(s, r1); int r3 = get_field(s, r3); int size = s->insn->data; - TCGv_i64 tsize = tcg_const_i64(size); + TCGv_i64 tsize = tcg_constant_i64(size); while (1) { if (size == 8) { @@ -4675,7 +4591,6 @@ static DisasJumpType op_stm(DisasContext *s, DisasOps *o) r1 = (r1 + 1) & 15; } - tcg_temp_free_i64(tsize); return DISAS_NEXT; } @@ -4684,8 +4599,8 @@ static DisasJumpType op_stmh(DisasContext *s, DisasOps *o) int r1 = get_field(s, r1); int r3 = get_field(s, r3); TCGv_i64 t = tcg_temp_new_i64(); - TCGv_i64 t4 = tcg_const_i64(4); - TCGv_i64 t32 = tcg_const_i64(32); + TCGv_i64 t4 = tcg_constant_i64(4); + TCGv_i64 t32 = tcg_constant_i64(32); while (1) { tcg_gen_shl_i64(t, regs[r1], t32); @@ -4698,8 +4613,6 @@ static DisasJumpType op_stmh(DisasContext *s, DisasOps *o) } tcg_temp_free_i64(t); - tcg_temp_free_i64(t4); - tcg_temp_free_i64(t32); return DISAS_NEXT; } @@ -4718,26 +4631,20 @@ static DisasJumpType op_stpq(DisasContext *s, DisasOps *o) static DisasJumpType op_srst(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); gen_helper_srst(cpu_env, r1, r2); - - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_srstu(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); gen_helper_srstu(cpu_env, r1, r2); - - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); set_cc_static(s); return DISAS_NEXT; } @@ -4795,10 +4702,9 @@ static DisasJumpType op_subb64(DisasContext *s, DisasOps *o) * Borrow is {0, -1}, so add to subtract; replicate the * borrow input to produce 128-bit -1 for the addition. */ - TCGv_i64 zero = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); tcg_gen_add2_i64(o->out, cc_src, o->in1, zero, cc_src, cc_src); tcg_gen_sub2_i64(o->out, cc_src, o->out, cc_src, o->in2, zero); - tcg_temp_free_i64(zero); return DISAS_NEXT; } @@ -4810,13 +4716,11 @@ static DisasJumpType op_svc(DisasContext *s, DisasOps *o) update_psw_addr(s); update_cc_op(s); - t = tcg_const_i32(get_field(s, i1) & 0xff); + t = tcg_constant_i32(get_field(s, i1) & 0xff); tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_code)); - tcg_temp_free_i32(t); - t = tcg_const_i32(s->ilen); + t = tcg_constant_i32(s->ilen); tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_ilen)); - tcg_temp_free_i32(t); gen_exception(EXCP_SVC); return DISAS_NORETURN; @@ -4873,18 +4777,18 @@ static DisasJumpType op_tprot(DisasContext *s, DisasOps *o) static DisasJumpType op_tp(DisasContext *s, DisasOps *o) { - TCGv_i32 l1 = tcg_const_i32(get_field(s, l1) + 1); + TCGv_i32 l1 = tcg_constant_i32(get_field(s, l1) + 1); + gen_helper_tp(cc_op, cpu_env, o->addr1, l1); - tcg_temp_free_i32(l1); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_tr(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_tr(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } @@ -4899,27 +4803,27 @@ static DisasJumpType op_tre(DisasContext *s, DisasOps *o) static DisasJumpType op_trt(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_trt(cc_op, cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_trtr(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_trtr(cc_op, cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_trXX(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); - TCGv_i32 sizes = tcg_const_i32(s->insn->opc & 3); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); + TCGv_i32 sizes = tcg_constant_i32(s->insn->opc & 3); TCGv_i32 tst = tcg_temp_new_i32(); int m3 = get_field(s, m3); @@ -4938,9 +4842,6 @@ static DisasJumpType op_trXX(DisasContext *s, DisasOps *o) } gen_helper_trXX(cc_op, cpu_env, r1, r2, tst, sizes); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); - tcg_temp_free_i32(sizes); tcg_temp_free_i32(tst); set_cc_static(s); return DISAS_NEXT; @@ -4948,19 +4849,19 @@ static DisasJumpType op_trXX(DisasContext *s, DisasOps *o) static DisasJumpType op_ts(DisasContext *s, DisasOps *o) { - TCGv_i32 t1 = tcg_const_i32(0xff); + TCGv_i32 t1 = tcg_constant_i32(0xff); + tcg_gen_atomic_xchg_i32(t1, o->in2, t1, get_mem_index(s), MO_UB); tcg_gen_extract_i32(cc_op, t1, 7, 1); - tcg_temp_free_i32(t1); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_unpk(DisasContext *s, DisasOps *o) { - TCGv_i32 l = tcg_const_i32(get_field(s, l1)); + TCGv_i32 l = tcg_constant_i32(get_field(s, l1)); + gen_helper_unpk(cpu_env, l, o->addr1, o->in2); - tcg_temp_free_i32(l); return DISAS_NEXT; } @@ -4974,9 +4875,8 @@ static DisasJumpType op_unpka(DisasContext *s, DisasOps *o) gen_program_exception(s, PGM_SPECIFICATION); return DISAS_NORETURN; } - l = tcg_const_i32(l1); + l = tcg_constant_i32(l1); gen_helper_unpka(cc_op, cpu_env, o->addr1, l, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } @@ -4991,9 +4891,8 @@ static DisasJumpType op_unpku(DisasContext *s, DisasOps *o) gen_program_exception(s, PGM_SPECIFICATION); return DISAS_NORETURN; } - l = tcg_const_i32(l1); + l = tcg_constant_i32(l1); gen_helper_unpku(cc_op, cpu_env, o->addr1, l, o->in2); - tcg_temp_free_i32(l); set_cc_static(s); return DISAS_NEXT; } @@ -5012,7 +4911,7 @@ static DisasJumpType op_xc(DisasContext *s, DisasOps *o) /* If the addresses are identical, this is a store/memset of zero. */ if (b1 == b2 && d1 == d2 && (l + 1) <= 32) { - o->in2 = tcg_const_i64(0); + o->in2 = tcg_constant_i64(0); l++; while (l >= 8) { @@ -5045,9 +4944,8 @@ static DisasJumpType op_xc(DisasContext *s, DisasOps *o) /* But in general we'll defer to a helper. */ o->in2 = get_address(s, 0, b2, d2); - t32 = tcg_const_i32(l); + t32 = tcg_constant_i32(l); gen_helper_xc(cc_op, cpu_env, t32, o->addr1, o->in2); - tcg_temp_free_i32(t32); set_cc_static(s); return DISAS_NEXT; } @@ -5112,46 +5010,39 @@ static DisasJumpType op_zero2(DisasContext *s, DisasOps *o) #ifndef CONFIG_USER_ONLY static DisasJumpType op_clp(DisasContext *s, DisasOps *o) { - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); gen_helper_clp(cpu_env, r2); - tcg_temp_free_i32(r2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_pcilg(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); gen_helper_pcilg(cpu_env, r1, r2); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_pcistg(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); gen_helper_pcistg(cpu_env, r1, r2); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_stpcifc(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 ar = tcg_const_i32(get_field(s, b2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 ar = tcg_constant_i32(get_field(s, b2)); gen_helper_stpcifc(cpu_env, r1, o->addr1, ar); - tcg_temp_free_i32(ar); - tcg_temp_free_i32(r1); set_cc_static(s); return DISAS_NEXT; } @@ -5164,38 +5055,31 @@ static DisasJumpType op_sic(DisasContext *s, DisasOps *o) static DisasJumpType op_rpcit(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r2 = tcg_const_i32(get_field(s, r2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2)); gen_helper_rpcit(cpu_env, r1, r2); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_pcistb(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 r3 = tcg_const_i32(get_field(s, r3)); - TCGv_i32 ar = tcg_const_i32(get_field(s, b2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3)); + TCGv_i32 ar = tcg_constant_i32(get_field(s, b2)); gen_helper_pcistb(cpu_env, r1, r3, o->addr1, ar); - tcg_temp_free_i32(ar); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); set_cc_static(s); return DISAS_NEXT; } static DisasJumpType op_mpcifc(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 = tcg_const_i32(get_field(s, r1)); - TCGv_i32 ar = tcg_const_i32(get_field(s, b2)); + TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1)); + TCGv_i32 ar = tcg_constant_i32(get_field(s, b2)); gen_helper_mpcifc(cpu_env, r1, o->addr1, ar); - tcg_temp_free_i32(ar); - tcg_temp_free_i32(r1); set_cc_static(s); return DISAS_NEXT; } @@ -6316,16 +6200,15 @@ static const DisasInsn *extract_insn(CPUS390XState *env, DisasContext *s) if (unlikely(s->ex_value)) { /* Drop the EX data now, so that it's clear on exception paths. */ - TCGv_i64 zero = tcg_const_i64(0); - int i; - tcg_gen_st_i64(zero, cpu_env, offsetof(CPUS390XState, ex_value)); - tcg_temp_free_i64(zero); + tcg_gen_st_i64(tcg_constant_i64(0), cpu_env, + offsetof(CPUS390XState, ex_value)); /* Extract the values saved by EXECUTE. */ insn = s->ex_value & 0xffffffffffff0000ull; ilen = s->ex_value & 0xf; - /* register insn bytes with translator so plugins work */ - for (i = 0; i < ilen; i++) { + + /* Register insn bytes with translator so plugins work. */ + for (int i = 0; i < ilen; i++) { uint8_t byte = extract64(insn, 56 - (i * 8), 8); translator_fake_ldb(byte, pc + i); } @@ -6450,9 +6333,8 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) #ifndef CONFIG_USER_ONLY if (s->base.tb->flags & FLAG_MASK_PER) { - TCGv_i64 addr = tcg_const_i64(s->base.pc_next); + TCGv_i64 addr = tcg_constant_i64(s->base.pc_next); gen_helper_per_ifetch(cpu_env, addr); - tcg_temp_free_i64(addr); } #endif From patchwork Sun Dec 11 15:27:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633073 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991519pvb; Sun, 11 Dec 2022 07:29:55 -0800 (PST) X-Google-Smtp-Source: AA0mqf7TyWJMugQrmrhC2QbTuGHKkKkHxNelpC3Z3LYM4329ALkASTMD+iN4yPBTqtxRY3UmIwnv X-Received: by 2002:ad4:4ee1:0:b0:4d0:ab34:6667 with SMTP id dv1-20020ad44ee1000000b004d0ab346667mr20887833qvb.12.1670772595661; Sun, 11 Dec 2022 07:29:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772595; cv=none; d=google.com; s=arc-20160816; b=MmjHzaJ2zsrqnKhT2JIS7kE/BTN7tels0xdv2yHy1z8hM9DbX8jQGzko9D95H4LTRl i5IX0IJmA+M6KbSVYgzoU2HJ0UvZU4eQ8J5p+k6KazleQbCi/l/1r/pYqA4TiwenFdW2 7/49XOqweI2pEAGAaFbapN/uKiqOh7wZTZ1z9bCF+1/U4greUP7d61dlWsT1Is2AqNmf lfb9pkvRRHR88ljbPm63DjDa/XC2t1WHsls0HeGoDZlqWAXHapjn8UVPB/k66IzTk0uh F0y6U6xE/qFRLaVeY3Iia3WiV176uXqT9nTn7OcIC1HJu0XhByuMDoiM8eT6sA1CflP8 xx9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qCozwaU6tDOWmzdSXymSiQAl14+NiGjcB+W8aIT9X7E=; b=0OslTRXpRCH8iHZ46ZliFXXSe+huPLS4cbaHSul1MDIOv3yPn3Rh8dFZAhjn2yiy2k c93yKJntnlKdF1gvd1N0But+Hnv484WHw3WPJq2DA0tjO/E9LNJ5267T2UMBDmpIJ5uy 45tdZKhXlqvpG/QPelR84rgEibqV8VqB3k875apMKC2U/eEWLc/BDx6liS+zjfnLLVpT FfmtD8d55NLWI7psncoPkwqMkZrlWtc9/pIaYT/tIBuB07MvZ0qEkpMkQRKG/5kmHv8W fAgVfLqqq9JgbfwBV72990nAkUjIJaYY7jfquvXzFem6d6QbKGvg3K0qIAoOHD0NF2F+ dy/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=y0mAmGvR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f12-20020a0562141d2c00b004e0646c7156si2669qvd.115.2022.12.11.07.29.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:29:55 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=y0mAmGvR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFh-0006H4-R5; Sun, 11 Dec 2022 10:28:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFO-00066V-6g for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:14 -0500 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFM-0007FD-8S for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:09 -0500 Received: by mail-oi1-x22e.google.com with SMTP id k189so9060399oif.7 for ; Sun, 11 Dec 2022 07:28:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qCozwaU6tDOWmzdSXymSiQAl14+NiGjcB+W8aIT9X7E=; b=y0mAmGvRTyYnJhY/c3oJzZ3EZt1BDYnTvvJl8pJQF0GMey0hlK5vjlMbpFYbI1V6RY 4FiXKvVrAV0OCgI4r5oGK80VKhUjn87nrNINPos7ZZPr5y+MzFv2eQg1Rwn5kzRGbaH1 nCtsM653t089bNww7ePXhNjTlFfKmG4BKkMHu975L7TRefbo4fZMFi8fdkKdsOucTyRw ZZCt7USqUIev6WrlzXRFE6Mg5Ht8ZXNoYe9bqaNEMn+GUyVxGd/SfK58Hqg1RSUE8QTI fC4zqkLmpkUoYxIu4parP9RJEYWOJLXjZdWfFivpnPkyKEqIje859yN3/z8QrtQckUat B1Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qCozwaU6tDOWmzdSXymSiQAl14+NiGjcB+W8aIT9X7E=; b=WrsNqhwhaQBFrMvn+h1fqNEFMn2jW5uDSu3GJ2BvD52o2qJzexrhJPcOorOtkmZ52W sZaa4GyKgnMAFBAz5djo43LatnhwTv9+jDUOaHZmoWveNFAKojmhPR7o7HItAFzn947M E7KwOZ1NwoJJ3qbeq9Eqj213R8EG3JASQOB91GsTvSE5ip3HPjXdE2ALFOYE8JeZtnTK iuUVn/7mU40eXwOmUW28M0w5TerKBiGWq/vdk9pEW9Ys3XTlVhgUn7W2XEaDWBFbSPAn DSFgALIBGwP0Zo+9+AJ7eVfa/MzLLLchVYDGoVRW0WWOzV4oLOpQkr5FyQPIXnKSJNDx bAxA== X-Gm-Message-State: ANoB5pmfkyxvJ6XhNcyh/HwM0oqcrsNC4Xav76HRjCMYLYZMdVZ+MWFV Kfoh+MgTvjxoCGvra1yCf1egvPuSwN6Dw8pUj7E= X-Received: by 2002:a05:6808:21a2:b0:35e:3c62:489d with SMTP id be34-20020a05680821a200b0035e3c62489dmr9525822oib.36.1670772487062; Sun, 11 Dec 2022 07:28:07 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:06 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 02/27] target/s390x: Use tcg_constant_* for DisasCompare Date: Sun, 11 Dec 2022 09:27:37 -0600 Message-Id: <20221211152802.923900-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org The a and b fields are not modified by the consumer, and while we need not free a constant, tcg will quietly ignore such frees, so free_compare need not be changed. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/s390x/tcg/translate.c | 44 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 4fb396b557..77919295d3 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -830,7 +830,7 @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask) c->is_64 = false; c->u.s32.a = tcg_temp_new_i32(); tcg_gen_extrl_i64_i32(c->u.s32.a, cc_dst); - c->u.s32.b = tcg_const_i32(0); + c->u.s32.b = tcg_constant_i32(0); break; case CC_OP_LTGT_32: case CC_OP_LTUGTU_32: @@ -845,7 +845,7 @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask) case CC_OP_NZ: case CC_OP_FLOGR: c->u.s64.a = cc_dst; - c->u.s64.b = tcg_const_i64(0); + c->u.s64.b = tcg_constant_i64(0); c->g1 = true; break; case CC_OP_LTGT_64: @@ -859,14 +859,14 @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask) case CC_OP_TM_64: case CC_OP_ICM: c->u.s64.a = tcg_temp_new_i64(); - c->u.s64.b = tcg_const_i64(0); + c->u.s64.b = tcg_constant_i64(0); tcg_gen_and_i64(c->u.s64.a, cc_src, cc_dst); break; case CC_OP_ADDU: case CC_OP_SUBU: c->is_64 = true; - c->u.s64.b = tcg_const_i64(0); + c->u.s64.b = tcg_constant_i64(0); c->g1 = true; switch (mask) { case 8 | 2: @@ -889,65 +889,65 @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask) switch (mask) { case 0x8 | 0x4 | 0x2: /* cc != 3 */ cond = TCG_COND_NE; - c->u.s32.b = tcg_const_i32(3); + c->u.s32.b = tcg_constant_i32(3); break; case 0x8 | 0x4 | 0x1: /* cc != 2 */ cond = TCG_COND_NE; - c->u.s32.b = tcg_const_i32(2); + c->u.s32.b = tcg_constant_i32(2); break; case 0x8 | 0x2 | 0x1: /* cc != 1 */ cond = TCG_COND_NE; - c->u.s32.b = tcg_const_i32(1); + c->u.s32.b = tcg_constant_i32(1); break; case 0x8 | 0x2: /* cc == 0 || cc == 2 => (cc & 1) == 0 */ cond = TCG_COND_EQ; c->g1 = false; c->u.s32.a = tcg_temp_new_i32(); - c->u.s32.b = tcg_const_i32(0); + c->u.s32.b = tcg_constant_i32(0); tcg_gen_andi_i32(c->u.s32.a, cc_op, 1); break; case 0x8 | 0x4: /* cc < 2 */ cond = TCG_COND_LTU; - c->u.s32.b = tcg_const_i32(2); + c->u.s32.b = tcg_constant_i32(2); break; case 0x8: /* cc == 0 */ cond = TCG_COND_EQ; - c->u.s32.b = tcg_const_i32(0); + c->u.s32.b = tcg_constant_i32(0); break; case 0x4 | 0x2 | 0x1: /* cc != 0 */ cond = TCG_COND_NE; - c->u.s32.b = tcg_const_i32(0); + c->u.s32.b = tcg_constant_i32(0); break; case 0x4 | 0x1: /* cc == 1 || cc == 3 => (cc & 1) != 0 */ cond = TCG_COND_NE; c->g1 = false; c->u.s32.a = tcg_temp_new_i32(); - c->u.s32.b = tcg_const_i32(0); + c->u.s32.b = tcg_constant_i32(0); tcg_gen_andi_i32(c->u.s32.a, cc_op, 1); break; case 0x4: /* cc == 1 */ cond = TCG_COND_EQ; - c->u.s32.b = tcg_const_i32(1); + c->u.s32.b = tcg_constant_i32(1); break; case 0x2 | 0x1: /* cc > 1 */ cond = TCG_COND_GTU; - c->u.s32.b = tcg_const_i32(1); + c->u.s32.b = tcg_constant_i32(1); break; case 0x2: /* cc == 2 */ cond = TCG_COND_EQ; - c->u.s32.b = tcg_const_i32(2); + c->u.s32.b = tcg_constant_i32(2); break; case 0x1: /* cc == 3 */ cond = TCG_COND_EQ; - c->u.s32.b = tcg_const_i32(3); + c->u.s32.b = tcg_constant_i32(3); break; default: /* CC is masked by something else: (8 >> cc) & mask. */ cond = TCG_COND_NE; c->g1 = false; - c->u.s32.a = tcg_const_i32(8); - c->u.s32.b = tcg_const_i32(0); - tcg_gen_shr_i32(c->u.s32.a, c->u.s32.a, cc_op); + c->u.s32.a = tcg_temp_new_i32(); + c->u.s32.b = tcg_constant_i32(0); + tcg_gen_shr_i32(c->u.s32.a, tcg_constant_i32(8), cc_op); tcg_gen_andi_i32(c->u.s32.a, c->u.s32.a, mask); break; } @@ -1604,7 +1604,7 @@ static DisasJumpType op_bct32(DisasContext *s, DisasOps *o) tcg_gen_subi_i64(t, regs[r1], 1); store_reg32_i64(r1, t); c.u.s32.a = tcg_temp_new_i32(); - c.u.s32.b = tcg_const_i32(0); + c.u.s32.b = tcg_constant_i32(0); tcg_gen_extrl_i64_i32(c.u.s32.a, t); tcg_temp_free_i64(t); @@ -1628,7 +1628,7 @@ static DisasJumpType op_bcth(DisasContext *s, DisasOps *o) tcg_gen_subi_i64(t, t, 1); store_reg32h_i64(r1, t); c.u.s32.a = tcg_temp_new_i32(); - c.u.s32.b = tcg_const_i32(0); + c.u.s32.b = tcg_constant_i32(0); tcg_gen_extrl_i64_i32(c.u.s32.a, t); tcg_temp_free_i64(t); @@ -1649,7 +1649,7 @@ static DisasJumpType op_bct64(DisasContext *s, DisasOps *o) tcg_gen_subi_i64(regs[r1], regs[r1], 1); c.u.s64.a = regs[r1]; - c.u.s64.b = tcg_const_i64(0); + c.u.s64.b = tcg_constant_i64(0); return help_branch(s, &c, is_imm, imm, o->in2); } From patchwork Sun Dec 11 15:27:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633069 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991465pvb; Sun, 11 Dec 2022 07:29:44 -0800 (PST) X-Google-Smtp-Source: AA0mqf4Eq1KW7JK4FJmIQRaNRt1hjK7f/eOO37elblauSfRdOAXRGbs843kSbeE3/WRV+eAWCCG5 X-Received: by 2002:a05:622a:6112:b0:3a6:9c36:e3b1 with SMTP id hg18-20020a05622a611200b003a69c36e3b1mr16394544qtb.42.1670772583987; Sun, 11 Dec 2022 07:29:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772583; cv=none; d=google.com; s=arc-20160816; b=EUSEgqRwxZ46g0XQKYKn6SVXJ6trP39lFIglgCYUaRryaQjDpaq0vGyldf8AnbXrSB sTHHpL5ZQxV7HCwtrD0Dh6tPxD8QXsTnJ+jGkbwiqU8nl72ghOhZ6XArgxnczUy3d/hq F74Z2bBH8vfKC7rwbnNzk5T/zC2j3vCTQ6Uy1ZQoqgMUi1mEuZF88Wcdapu3qtOVq7p3 y7w8r5WUFbIXX5F4OwQf1QJ1L6R+eQlvC0A7JZQIXIChdmxaIPZa9323iHBgeVQwQjtV 3q7T4WZdW3yU7KRnRh8MKNeTIjNeOgwPluBgZE2tsrTN2Y0fV+ocOHjRlHg/hJx1FA32 pAkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=EvXOPryTYTQoEhITn1zJTin8WUQNVBjSj3qnL4xASac=; b=iPKdzBk45QjxA+GzYvZhyx2NkmlKnLu/qYvWTgbYTVWgrzkDnjCdBWgDLsvb1vr0k9 /maPBG3axNbp5m6DNbFsoUDYs/IKtkfHziHppYlu6dxh8S+vSgEOwkPRwIBjCMtUnrLx bKN+7o51ErTw3Q6I2w4nJpfuspL3Zxp9P4BNlCV/U9NjbP7cJso/Q0XXfEoF8PniGOi8 keAEjSE2+MQ4z5gRobzblI2yk9tZacLkMBFMAtALJNrDKEAIcpsC4y9D9F2SKqpYZCi2 QApw0Unqa4TvmMqSM857db4yTvy7dM0WtbzDwe8eUp/DsWNEOh5V7ED9ELfhOTNMSYwQ d/qQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="VVSV/rMR"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w2-20020ac843c2000000b003a58279c54bsi3674658qtn.53.2022.12.11.07.29.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:29:43 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="VVSV/rMR"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFf-0006BQ-OX; Sun, 11 Dec 2022 10:28:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFP-00066k-Mz for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:14 -0500 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFN-0007L6-9v for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:11 -0500 Received: by mail-ot1-x332.google.com with SMTP id z14-20020a9d65ce000000b0067059c25facso5840312oth.6 for ; Sun, 11 Dec 2022 07:28:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EvXOPryTYTQoEhITn1zJTin8WUQNVBjSj3qnL4xASac=; b=VVSV/rMRhW3ww++viU2o7ukCWtyL3okdo7I89gMG0monAoeYiGiRiMdaebdQ0nFu2L 46BrwlpqEF8dC6/UWfTbu4N+6DQVDjNVpdAHkKBtR7Lso++AvBei1iJ8heNNKAqJ+Xh+ twXQtJvnzLKjtnYh38L9uLAdJGEPJb0XDnYwZtyWwiDCtur4uZajJ+HzVUxvKbcN3UWN icI2kxIN236OcpEGBMCXke3pUo7pD1a03HmmS/AJwxYY+oEeOWX6rHr/8Y14mRKMMAQp xG++E6+Ke4LvvLIExYsqVLB0BmaA8lrWHahZX6tIjOIEi6HpJ1/GMrEM2PYtBEdNnvkG ni8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EvXOPryTYTQoEhITn1zJTin8WUQNVBjSj3qnL4xASac=; b=H7aev5CKl6K5kw4EPaZWDhXs3CJKLuRsNcNtZg1R/1KEG7fqZslEJsEc6RL2qiKzU2 ZsKMGSLK0db9erALhuUqsfpBQ0vThAOKSUrsZ6b9UdkryZBiA43Uq8izC9Qsanmx5/Fp onQQT/gSICERWEm97jcDlLUN4rYMUdamvKEjiCxB5azMECHlALqnlxCV+Pl8gWtfVtKE tujrcvcSBdBnMzVeKCnwQKrgKjyhKe0jDal44B0a/gdTSOueZb+dfYPPRNo+mfQ2U8sM KsDjXg/70BL0Z4iO9MhXJRPA/Ms0gUh6Skf+AnOG9SzvfnNF8uyE3vfpcseFInHyCxV1 7+xg== X-Gm-Message-State: ANoB5pnsZo+BB3cZ4TDajnPkbPjDSrMlLvqpDiBRRJD/i3qiriGs0zes WTp3C0a05dsmO7zRlnZrfMM0d6V87ILU3AlB1zo= X-Received: by 2002:a05:6830:4185:b0:66b:d5c3:2eb4 with SMTP id r5-20020a056830418500b0066bd5c32eb4mr9452133otu.14.1670772488196; Sun, 11 Dec 2022 07:28:08 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:07 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 03/27] target/s390x: Use tcg_constant_i32 for fpinst_extract_m34 Date: Sun, 11 Dec 2022 09:27:38 -0600 Message-Id: <20221211152802.923900-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::332; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Return a constant or NULL, which means the free may be removed from all callers of fpinst_extract_m34. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/s390x/tcg/translate.c | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 77919295d3..1f9dca671d 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1775,7 +1775,7 @@ static TCGv_i32 fpinst_extract_m34(DisasContext *s, bool m3_with_fpe, return NULL; } - return tcg_const_i32(deposit32(m3, 4, 4, m4)); + return tcg_constant_i32(deposit32(m3, 4, 4, m4)); } static DisasJumpType op_cfeb(DisasContext *s, DisasOps *o) @@ -1786,7 +1786,6 @@ static DisasJumpType op_cfeb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cfeb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1799,7 +1798,6 @@ static DisasJumpType op_cfdb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cfdb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1812,7 +1810,6 @@ static DisasJumpType op_cfxb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cfxb(o->out, cpu_env, o->in1, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1825,7 +1822,6 @@ static DisasJumpType op_cgeb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cgeb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1838,7 +1834,6 @@ static DisasJumpType op_cgdb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cgdb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1851,7 +1846,6 @@ static DisasJumpType op_cgxb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cgxb(o->out, cpu_env, o->in1, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1864,7 +1858,6 @@ static DisasJumpType op_clfeb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_clfeb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1877,7 +1870,6 @@ static DisasJumpType op_clfdb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_clfdb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1890,7 +1882,6 @@ static DisasJumpType op_clfxb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_clfxb(o->out, cpu_env, o->in1, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1903,7 +1894,6 @@ static DisasJumpType op_clgeb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_clgeb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1916,7 +1906,6 @@ static DisasJumpType op_clgdb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_clgdb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1929,7 +1918,6 @@ static DisasJumpType op_clgxb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_clgxb(o->out, cpu_env, o->in1, o->in2, m34); - tcg_temp_free_i32(m34); set_cc_static(s); return DISAS_NEXT; } @@ -1942,7 +1930,6 @@ static DisasJumpType op_cegb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cegb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -1954,7 +1941,6 @@ static DisasJumpType op_cdgb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cdgb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -1966,7 +1952,6 @@ static DisasJumpType op_cxgb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cxgb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return_low128(o->out2); return DISAS_NEXT; } @@ -1979,7 +1964,6 @@ static DisasJumpType op_celgb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_celgb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -1991,7 +1975,6 @@ static DisasJumpType op_cdlgb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cdlgb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -2003,7 +1986,6 @@ static DisasJumpType op_cxlgb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_cxlgb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return_low128(o->out2); return DISAS_NEXT; } @@ -2466,7 +2448,6 @@ static DisasJumpType op_fieb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_fieb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -2478,7 +2459,6 @@ static DisasJumpType op_fidb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_fidb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -2491,7 +2471,6 @@ static DisasJumpType op_fixb(DisasContext *s, DisasOps *o) } gen_helper_fixb(o->out, cpu_env, o->in1, o->in2, m34); return_low128(o->out2); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -2766,7 +2745,6 @@ static DisasJumpType op_ledb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_ledb(o->out, cpu_env, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -2778,7 +2756,6 @@ static DisasJumpType op_ldxb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_ldxb(o->out, cpu_env, o->in1, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } @@ -2790,7 +2767,6 @@ static DisasJumpType op_lexb(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } gen_helper_lexb(o->out, cpu_env, o->in1, o->in2, m34); - tcg_temp_free_i32(m34); return DISAS_NEXT; } From patchwork Sun Dec 11 15:27:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633086 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993304pvb; Sun, 11 Dec 2022 07:33:53 -0800 (PST) X-Google-Smtp-Source: AA0mqf5vvmGL7NAxTs1PlbxRp6ahdioOEx6vbiPkPbDEjzpLYJtpthgryapUK1eKnLqPxoxm4yMw X-Received: by 2002:a05:6214:c5:b0:4c7:2e3d:2068 with SMTP id f5-20020a05621400c500b004c72e3d2068mr17330305qvs.28.1670772833750; Sun, 11 Dec 2022 07:33:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772833; cv=none; d=google.com; s=arc-20160816; b=1AxBz8U5juDduFi5oN1yqjr8wZTsMmJdViBF2EXKVxj3i/cz83Cb9taNjgB8HMLNp8 aRQE3H1ilfRuZVQYhR3bAqRvDkDkUWB8jvzSgrLRdPvJGwOyeyeJ+BodC2C2F9Qqzny2 MCqJXWKbQnjyjcmcyjy1fUglIYDd+POhfkqyBUM0PUgyp6Li2JSTXXW7M3xg+y54pryf Ea9p/i2dJVnXUjokj8aNXgexh6JrViuAX5J5U27EbZgaFvg3DXdNOoD1GifmoqeK25UB GzlI/rb76dtCTFzJFvarYzPvdKp/MUmzPRcBoMoA7aszZ4gVEw5zOFt1WBEHAPQFZmpd qaTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=IGLX0Cs15IlKWTTXtOO+M8h3aNhN01p2E9gXW34hDOU=; b=h1sTjYBSIX6REQa2nUp5znheEZNWlUY2LqeOPZ0ALc/AlypRCnI+mIQbewBFyaCm7i cRMkZs6qbOe+QlAmTx3Yu21Ab5eg0vitR8uEnzFEL6fCD8oJ/f/xIsfy2utgbQyCYdgJ XEwOHHdJhAtRBtYM/8aymyXghPHVwcCAcDPOzLe3uNEhsOkfTmfKhwRbmlSyf4xgiLr0 6rw86VZmW1M5MMFFcytxkV2de6gAPkNSnzQTGSqkRIFQsU2SXDW2g7xc09S9ppTgUSCv AGh0q0fGAk5oqbM4cbsi5D3dZmdJrva4mKfuHySMhV6Bs2vOsteU4ETPOYCVMMj11Zt0 Sjsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NQUbg+1k; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e5-20020a0562140d8500b004c751151a10si3771259qve.532.2022.12.11.07.33.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:53 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NQUbg+1k; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFg-0006DC-2U; Sun, 11 Dec 2022 10:28:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFS-00067g-8E for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:14 -0500 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFO-0007OJ-SM for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:12 -0500 Received: by mail-ot1-x334.google.com with SMTP id x25-20020a056830115900b00670932eff32so425376otq.3 for ; Sun, 11 Dec 2022 07:28:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IGLX0Cs15IlKWTTXtOO+M8h3aNhN01p2E9gXW34hDOU=; b=NQUbg+1kFKvm7/Nk2AE+cFaIZ9O1FvlXnnb1KIVN3Yei7AS8oe8Ta0LTd3xE6Amp01 CUull64ko7Nfh4d82T8V+5LjPsSFUNBKWxjHhca0g6OceRvjocPyoaOuievBCmId/+E/ +DPg5XO32mb3y4TKl9/d3GKqBNFmSVgnkJg4YQxQ6FDIpVAUhsSu6GZO1dDqDiNF2fSr alV37BvaBxpdGcO4V/YXDHqjK8KKLOQyzusTHUFOWf5HU/fnJVfIs7iTaIs4KQNnSzlR JdDSnsT7UMvNgWjne2HvyPBlMNLE/laxXscXVO8bfjoCR2QTTdegMWmEWEKsLcJHtEJD AgVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IGLX0Cs15IlKWTTXtOO+M8h3aNhN01p2E9gXW34hDOU=; b=VwnQuDDH4QOJB0CkVnrHDmiAlSaDDazo31wMei1VZZjrXSTUJVmV5NU/GIYds7q+HE qOJiZXSIoXOTYclWTx21IpYx3jEJbI/fC26FHzCAeXm2QgajFVE0058IJ2xAWQ0DtSGy 7w+SnsWc1kcJLtSasnVwUnezfDjiuXwd493U+pbk5oQZ2f1KfCt+OFHBBgxTiOmFUG7b /gFGjoCn6VTYi+Ue6J3ugs+g/WCLeGY1NODlJIsPJA5HdynzBb/OYrJq0yviQFzMDuj/ BoTgz/Usw6WIr8LXuNYzarJwMfP7ZYHxL80T3CejMzfPLWB858Irv8J8er9LJz8dFU4S nq4Q== X-Gm-Message-State: ANoB5pkyl+CfcxbonEMc3vPbojBp7AeJe9KTJ0s4GSNjTREicW2OkewI BZUgEEn/uXpeTuQyl6YOExMl1hq+4TyyUa+nw8Y= X-Received: by 2002:a9d:84e:0:b0:670:5549:9b63 with SMTP id 72-20020a9d084e000000b0067055499b63mr7135886oty.6.1670772489334; Sun, 11 Dec 2022 07:28:09 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:08 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 04/27] target/s390x: Use tcg_constant_* in translate_vx.c.inc Date: Sun, 11 Dec 2022 09:27:39 -0600 Message-Id: <20221211152802.923900-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org In most cases, this is a simple local allocate and free replaced by tcg_constant_*. In three cases, a variable temp was initialized with a constant value -- reorg to localize the constant. In gen_acc, this fixes a leak. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/s390x/tcg/translate_vx.c.inc | 45 +++++++++++++---------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/target/s390x/tcg/translate_vx.c.inc b/target/s390x/tcg/translate_vx.c.inc index d39ee81cd6..3fadc82e5c 100644 --- a/target/s390x/tcg/translate_vx.c.inc +++ b/target/s390x/tcg/translate_vx.c.inc @@ -319,12 +319,10 @@ static void gen_gvec128_4_i64(gen_gvec128_4_i64_fn fn, uint8_t d, uint8_t a, static void gen_addi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah, uint64_t b) { - TCGv_i64 bl = tcg_const_i64(b); - TCGv_i64 bh = tcg_const_i64(0); + TCGv_i64 bl = tcg_constant_i64(b); + TCGv_i64 bh = tcg_constant_i64(0); tcg_gen_add2_i64(dl, dh, al, ah, bl, bh); - tcg_temp_free_i64(bl); - tcg_temp_free_i64(bh); } static DisasJumpType op_vbperm(DisasContext *s, DisasOps *o) @@ -609,9 +607,8 @@ static DisasJumpType op_vlei(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - tmp = tcg_const_i64((int16_t)get_field(s, i2)); + tmp = tcg_constant_i64((int16_t)get_field(s, i2)); write_vec_element_i64(tmp, get_field(s, v1), enr, es); - tcg_temp_free_i64(tmp); return DISAS_NEXT; } @@ -1107,11 +1104,13 @@ static DisasJumpType op_vseg(DisasContext *s, DisasOps *o) static DisasJumpType op_vst(DisasContext *s, DisasOps *o) { - TCGv_i64 tmp = tcg_const_i64(16); + TCGv_i64 tmp; /* Probe write access before actually modifying memory */ - gen_helper_probe_write_access(cpu_env, o->addr1, tmp); + gen_helper_probe_write_access(cpu_env, o->addr1, + tcg_constant_i64(16)); + tmp = tcg_temp_new_i64(); read_vec_element_i64(tmp, get_field(s, v1), 0, ES_64); tcg_gen_qemu_st_i64(tmp, o->addr1, get_mem_index(s), MO_TEUQ); gen_addi_and_wrap_i64(s, o->addr1, o->addr1, 8); @@ -1270,9 +1269,10 @@ static DisasJumpType op_vstm(DisasContext *s, DisasOps *o) } /* Probe write access before actually modifying memory */ - tmp = tcg_const_i64((v3 - v1 + 1) * 16); - gen_helper_probe_write_access(cpu_env, o->addr1, tmp); + gen_helper_probe_write_access(cpu_env, o->addr1, + tcg_constant_i64((v3 - v1 + 1) * 16)); + tmp = tcg_temp_new_i64(); for (;; v1++) { read_vec_element_i64(tmp, v1, 0, ES_64); tcg_gen_qemu_st_i64(tmp, o->addr1, get_mem_index(s), MO_TEUQ); @@ -1359,7 +1359,7 @@ static DisasJumpType op_va(DisasContext *s, DisasOps *o) static void gen_acc(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b, uint8_t es) { const uint8_t msb_bit_nr = NUM_VEC_ELEMENT_BITS(es) - 1; - TCGv_i64 msb_mask = tcg_const_i64(dup_const(es, 1ull << msb_bit_nr)); + TCGv_i64 msb_mask = tcg_constant_i64(dup_const(es, 1ull << msb_bit_nr)); TCGv_i64 t1 = tcg_temp_new_i64(); TCGv_i64 t2 = tcg_temp_new_i64(); TCGv_i64 t3 = tcg_temp_new_i64(); @@ -1416,7 +1416,7 @@ static void gen_acc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, { TCGv_i64 th = tcg_temp_new_i64(); TCGv_i64 tl = tcg_temp_new_i64(); - TCGv_i64 zero = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); tcg_gen_add2_i64(tl, th, al, zero, bl, zero); tcg_gen_add2_i64(tl, th, th, zero, ah, zero); @@ -1425,7 +1425,6 @@ static void gen_acc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, tcg_temp_free_i64(th); tcg_temp_free_i64(tl); - tcg_temp_free_i64(zero); } static DisasJumpType op_vacc(DisasContext *s, DisasOps *o) @@ -1455,15 +1454,14 @@ static void gen_ac2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh, TCGv_i64 cl, TCGv_i64 ch) { TCGv_i64 tl = tcg_temp_new_i64(); - TCGv_i64 th = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); /* extract the carry only */ tcg_gen_extract_i64(tl, cl, 0, 1); tcg_gen_add2_i64(dl, dh, al, ah, bl, bh); - tcg_gen_add2_i64(dl, dh, dl, dh, tl, th); + tcg_gen_add2_i64(dl, dh, dl, dh, tl, zero); tcg_temp_free_i64(tl); - tcg_temp_free_i64(th); } static DisasJumpType op_vac(DisasContext *s, DisasOps *o) @@ -1484,7 +1482,7 @@ static void gen_accc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah, { TCGv_i64 tl = tcg_temp_new_i64(); TCGv_i64 th = tcg_temp_new_i64(); - TCGv_i64 zero = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); tcg_gen_andi_i64(tl, cl, 1); tcg_gen_add2_i64(tl, th, tl, zero, al, zero); @@ -1495,7 +1493,6 @@ static void gen_accc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah, tcg_temp_free_i64(tl); tcg_temp_free_i64(th); - tcg_temp_free_i64(zero); } static DisasJumpType op_vaccc(DisasContext *s, DisasOps *o) @@ -1597,14 +1594,13 @@ static void gen_avgl_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b) static void gen_avgl_i64(TCGv_i64 dl, TCGv_i64 al, TCGv_i64 bl) { TCGv_i64 dh = tcg_temp_new_i64(); - TCGv_i64 zero = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); tcg_gen_add2_i64(dl, dh, al, zero, bl, zero); gen_addi2_i64(dl, dh, dl, dh, 1); tcg_gen_extract2_i64(dl, dl, dh, 1); tcg_temp_free_i64(dh); - tcg_temp_free_i64(zero); } static DisasJumpType op_vavgl(DisasContext *s, DisasOps *o) @@ -2440,7 +2436,7 @@ static void gen_scbi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, { TCGv_i64 th = tcg_temp_new_i64(); TCGv_i64 tl = tcg_temp_new_i64(); - TCGv_i64 zero = tcg_const_i64(0); + TCGv_i64 zero = tcg_constant_i64(0); tcg_gen_sub2_i64(tl, th, al, zero, bl, zero); tcg_gen_andi_i64(th, th, 1); @@ -2452,7 +2448,6 @@ static void gen_scbi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, tcg_temp_free_i64(th); tcg_temp_free_i64(tl); - tcg_temp_free_i64(zero); } static DisasJumpType op_vscbi(DisasContext *s, DisasOps *o) @@ -2572,11 +2567,12 @@ static DisasJumpType op_vsumq(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - sumh = tcg_const_i64(0); + sumh = tcg_temp_new_i64(); suml = tcg_temp_new_i64(); - zero = tcg_const_i64(0); + zero = tcg_constant_i64(0); tmpl = tcg_temp_new_i64(); + tcg_gen_mov_i64(sumh, zero); read_vec_element_i64(suml, get_field(s, v3), max_idx, es); for (idx = 0; idx <= max_idx; idx++) { read_vec_element_i64(tmpl, get_field(s, v2), idx, es); @@ -2587,7 +2583,6 @@ static DisasJumpType op_vsumq(DisasContext *s, DisasOps *o) tcg_temp_free_i64(sumh); tcg_temp_free_i64(suml); - tcg_temp_free_i64(zero); tcg_temp_free_i64(tmpl); return DISAS_NEXT; } From patchwork Sun Dec 11 15:27:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633087 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993592pvb; Sun, 11 Dec 2022 07:34:37 -0800 (PST) X-Google-Smtp-Source: AA0mqf56B1D1P6wJyzhgohOD4jawoLuYSc7j1tknJGvDnjB6J2PyRrPsfT4iHhRf4SoLfpKpx4dT X-Received: by 2002:ac8:4e51:0:b0:3a5:2704:d4bd with SMTP id e17-20020ac84e51000000b003a52704d4bdmr24772067qtw.16.1670772877798; Sun, 11 Dec 2022 07:34:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772877; cv=none; d=google.com; s=arc-20160816; b=EF0Lzjevyr5PRdcCiGIfuF083q1n5vgfxgMvIsf9RlcGd5TXTGYXtIt3ZmivcyPVro iOfNXI0ZYDUie/xfVt5F9qjq0kG054u8pm4z2tFesLJ6P5bjEmnBM8YFW4L5kX3yGVLS +W8NbUhg8u/KppudvTgg1UvHg1/YFcckHEBtN5Ug6EqgwCQAehFIchdUDHSzI38s7vW5 Fh0Qtjrql5tmDJ9/wqO82CCMrmLZiRB2eS3jK+q0XeNzRIYGPAazS0pPKw6Ld8BTGy7A P3p8IH/lL2oPSI7NriSESITfEwRT5LxMs5QDw1x1VHUcm2i+P6KKkXktM0jNd6PMmZni QyfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=r88aN3ONQOrYoR5TjuSp7kfzVMmJ7L52pXjl2Gd7WK4=; b=AiAxz/wTjJsGh3c69SHVgcNSXCEwhmq73f7PzHRCUvbhkPQpQHbCvahvWos5S62tNU hx8pcjVXrVuJzCtsv8r0+xr9VhfEYFB/eAGh2FRlH46FpGMZRlvdLO5KLNp4oZkbKSZ4 PXVm0u3wVgZ7+fuCmoIil0q1JUVG0iC2V+jYFJ3v/w9u7DAGchEqT+JmeKoIP/VI3Nfz 6K+VdwLLOIoENQBHZQ5eoQfXEK0RXEk/3Y+LlHTrxU/lxRHkZA5m6dPyXEQ5f+MQH/cR 6AxnbMEojJKJXSykbSCw86QVmtaKm+Zltwf6Cwf0h0oG38GOgYFAdxxEgzLpJMWtrWHq Yscg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="uK/dKTWO"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id k5-20020a05620a414500b006fcab4da043si2980815qko.681.2022.12.11.07.34.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:34:37 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="uK/dKTWO"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFg-0006FN-IX; Sun, 11 Dec 2022 10:28:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFS-00067f-6o for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:14 -0500 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFP-0007Sy-N5 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:13 -0500 Received: by mail-oi1-x22f.google.com with SMTP id e205so9048135oif.11 for ; Sun, 11 Dec 2022 07:28:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r88aN3ONQOrYoR5TjuSp7kfzVMmJ7L52pXjl2Gd7WK4=; b=uK/dKTWOHnTcP03XcZTPj69DyaOBaJbRklf7sJKLe2TLOnHOA3s9xA64k5ECI7WFbq 4o66oRFt/VDHJSzo6aeqqytrPd1f31QcLXkkVjOsIntmVApa57j2Nvuyd9WJZ/d28nIM 290HU7LqhlwWD/4OdhghNsxt7GNgtmqJ/39PG1XSPY3iYUq8GG9Au5GNuJIqiIZcpuys Z8Q0znyn1MnGcsa2YyA/i534jJCeppIRT5ZukfLC+knbW86f7F40YwQAvYvZtEMeksZo Wag+1LMORqn+b2NSOaMrVdKPlKiQh4EeBtoaHkOaJwQeJyOmev9J/APGPl5qOscul8Es 3jtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r88aN3ONQOrYoR5TjuSp7kfzVMmJ7L52pXjl2Gd7WK4=; b=obmcXVXjYTQf9Nzn3lMMHbAN/Q9wVXG9C5rXrUhrAfgJ/J1zrNKiH08Bv5WxKfQhs0 avg4a3OCCi2f8ViJs3QeqjdE8uDQhLR42vTUVDOXikcOWsX2NP+Dn3FoiBtPnBrHXKld m7ndabo1ehGwsz2R1GVw9b3jtqBEM9jLxS+8Q03x8fZtSWpfaNPZ6abgxbc6/0ETQ/HB maCPHxlSGJ53k62aW72k+UAuDqoQUA14CAQGQRtkVdFUAtv7oQckVI3jZVZ5Pzce30gd jKMFn1XC15AVHc0uFgdAkav++VrsBk9CXlalbQofgLCcvxStpMV5JNywsOBKyXegNvFo KLeA== X-Gm-Message-State: ANoB5pn1AFUhjeDJ1WcYIaN7j8aA1hRn5J/wShj3/2JFje8pufVJaE4b zBly0l5slF09SvPs68v8lBnmUDpMxz1obxX2ZUU= X-Received: by 2002:a05:6808:210d:b0:359:e30c:d86a with SMTP id r13-20020a056808210d00b00359e30cd86amr8783183oiw.8.1670772490528; Sun, 11 Dec 2022 07:28:10 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:10 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 05/27] tests/tcg/s390x: Add bal.S Date: Sun, 11 Dec 2022 09:27:40 -0600 Message-Id: <20221211152802.923900-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::22f; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Ilya Leoshkevich Add a small test to prevent regressions. Signed-off-by: Ilya Leoshkevich Message-Id: <20221103130011.2670186-1-iii@linux.ibm.com> Signed-off-by: Richard Henderson --- tests/tcg/s390x/Makefile.softmmu-target | 1 + tests/tcg/s390x/bal.S | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/tcg/s390x/bal.S diff --git a/tests/tcg/s390x/Makefile.softmmu-target b/tests/tcg/s390x/Makefile.softmmu-target index a34fa68473..295df08491 100644 --- a/tests/tcg/s390x/Makefile.softmmu-target +++ b/tests/tcg/s390x/Makefile.softmmu-target @@ -7,3 +7,4 @@ QEMU_OPTS=-action panic=exit-failure -kernel -Wl,--build-id=none $< -o $@ TESTS += unaligned-lowcore +TESTS += bal diff --git a/tests/tcg/s390x/bal.S b/tests/tcg/s390x/bal.S new file mode 100644 index 0000000000..e54d8874ff --- /dev/null +++ b/tests/tcg/s390x/bal.S @@ -0,0 +1,24 @@ + .org 0x200 /* lowcore padding */ + .globl _start +_start: + lpswe start24_psw +_start24: + lgrl %r0,initial_r0 + lgrl %r1,expected_r0 + bal %r0,0f +0: + cgrjne %r0,%r1,1f + lpswe success_psw +1: + lpswe failure_psw + .align 8 +start24_psw: + .quad 0x160000000000,_start24 /* 24-bit mode, cc = 1, pm = 6 */ +initial_r0: + .quad 0x1234567887654321 +expected_r0: + .quad 0x1234567896000000 + 0b /* ilc = 2, cc = 1, pm = 6 */ +success_psw: + .quad 0x2000000000000,0xfff /* see is_special_wait_psw() */ +failure_psw: + .quad 0x2000000000000,0 /* disabled wait */ From patchwork Sun Dec 11 15:27:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633088 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993731pvb; Sun, 11 Dec 2022 07:35:01 -0800 (PST) X-Google-Smtp-Source: AA0mqf5VFIe2y7twZIMOpBLIB1j+p33KmAcSCFEaJoUrBS5v3TyB2jPBf3Y9NQgcThsafSLepxDf X-Received: by 2002:a05:622a:1cc5:b0:3a4:bc76:969c with SMTP id bc5-20020a05622a1cc500b003a4bc76969cmr16556293qtb.55.1670772901278; Sun, 11 Dec 2022 07:35:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772901; cv=none; d=google.com; s=arc-20160816; b=vwv8gBTydI2MB+OsMYHbeIUj1/kxjvleU6DYNgqerdnLW3g5/PxbLQ0IOhRWsvTmAS PO/6evjCM/yA55PIU2IITa8IIe6T9T1+7SOFhq0lXVk3yN4nKK8tAFR3a5fn4EVOxjce cAdWk83wswotoV4yx2KrzcpVCBbwcc9XZPhLA6W4zpNS0NtWEgXGLy9wmF7mYyzHO9tZ nCi+eNm65Fvok59OH3ki3l31tr3n9OWuLK94P5Kv+g4iT1sWAerj8Wmn/9+E8gBivI9Q 9hIEmLqkIR00oBIZMn7dMUUPFT63fIUnAWuWDcYy/96m7n6JcfZeud9XF0KXpFuZAWUR XMEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7Jm8IvT8OnM6ntzNw++ITlfcs7TcV+gT1sswHnCP9Os=; b=ZC/E2DGq9aI+1rw7fXjhJKoVSiTtyO3HFSHD411lvIu2YfCsMlxbRf+SY25Od6jSLV sAO/JdeTz+J/u7TWmnJvU94N26NYR/rep3At9vwkKgBqwdyB1hS/1H9LhIuWoXDiD3F+ Rvc9c2ppAOiy9dGj8VGZ3GiLVJe5icXPgYD2rCKAjcFdY5G77llaxARUsIi+ft7mHmLS XnD3zeLRoYjKKI+l8mAxxJhImNaGnN+k8nEEmlvmfS0QJkpWPdoEN0tmcESQqShibHP5 B5IPNu0pkbUsm9rV8+pmY7w3eaSbPcXsyThwPnstTiFwvp6S3bdfLCUppN1BE9uZFUnt Q0yA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=u0ZvssAh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ey25-20020a05622a4c1900b003a6955a6213si3993180qtb.427.2022.12.11.07.35.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:35:01 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=u0ZvssAh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFj-0006Jf-3B; Sun, 11 Dec 2022 10:28:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFh-0006Gl-HO for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:29 -0500 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFR-0007Vx-Lu for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:29 -0500 Received: by mail-ot1-x330.google.com with SMTP id m6-20020a9d7e86000000b0066ec505ae93so5830652otp.9 for ; Sun, 11 Dec 2022 07:28:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7Jm8IvT8OnM6ntzNw++ITlfcs7TcV+gT1sswHnCP9Os=; b=u0ZvssAhiAAk9OWwbe8eJL5SCmZz7ZW61x+6ocrg/H+hbTLn+/qtM44m2YM7B0vzYe iKjpnVMd9XtwNdeo9jOUgFTUnergEd9tkd5CflQyEnlDiXjXtXWYkQXPopSxsCLjxsWp w+IZR9c/eFaDq640uTTl52h3s02KN+kezPOhYwiFPsjUMvjUuKxqI3q+vSpFBTXDAtN3 KU1CBDN2+YL+q2uChS9giFS7ADF4CrBDCZCpGt4gUD4DIV2FRaZmNmSboUJkFMRC670B Qw9rkjIA7C//Nfa+QueThaN1R9fNOQXREDE0EKs2zAUDo5HjPwS1nKWyLqE6z33kAreJ Gs1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7Jm8IvT8OnM6ntzNw++ITlfcs7TcV+gT1sswHnCP9Os=; b=KtwEocKhWAjMQcQcO/WVoeW7AWU5MpDhESt8rsQIKMorijwK0gUKz6kHfiv6gCvPdI TahOvf0F64ssY1bDVao9xcx1UOqYHtgZY/BzLzfswT6PR/auHvm2nQheDDb47N7oLur5 KD1G78vhQNBmwwsi3lbfmmtYCnwrwR+MoruxB1zIWngerl/OnpKefaHGu0ZfTVT+K9t4 pqDWyAMNCxL7e0xRYh0Xr++8X1HrgROl7z207/qocwjNtpzjfs7kTcQCSIGWLh65TzHk NDQppnk8Yqc8Duy44P8tas+mR28QrZpAqW3mro+lDLd2m4H4e9dSnHsQdcNgXFOvqOdJ kGvA== X-Gm-Message-State: ANoB5pnuXhWhI7aAxYRJL4M5ZuhOlHIHz637BMPjcv2fR0/Y3tOxdUSd ZrAGdgENnA+smC6aFucFi8jWz0vN9U45OeH/Ilg= X-Received: by 2002:a9d:6d82:0:b0:66e:b9f0:b662 with SMTP id x2-20020a9d6d82000000b0066eb9f0b662mr5926429otp.25.1670772491708; Sun, 11 Dec 2022 07:28:11 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:11 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 06/27] tests/tcg/s390x: Add sam.S Date: Sun, 11 Dec 2022 09:27:41 -0600 Message-Id: <20221211152802.923900-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::330; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Ilya Leoshkevich Add a small test to prevent regressions. Signed-off-by: Ilya Leoshkevich Message-Id: <20221129015328.55439-1-iii@linux.ibm.com> Signed-off-by: Richard Henderson --- tests/tcg/s390x/Makefile.softmmu-target | 1 + tests/tcg/s390x/sam.S | 67 +++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 tests/tcg/s390x/sam.S diff --git a/tests/tcg/s390x/Makefile.softmmu-target b/tests/tcg/s390x/Makefile.softmmu-target index 295df08491..d6ca8d7342 100644 --- a/tests/tcg/s390x/Makefile.softmmu-target +++ b/tests/tcg/s390x/Makefile.softmmu-target @@ -8,3 +8,4 @@ QEMU_OPTS=-action panic=exit-failure -kernel TESTS += unaligned-lowcore TESTS += bal +TESTS += sam diff --git a/tests/tcg/s390x/sam.S b/tests/tcg/s390x/sam.S new file mode 100644 index 0000000000..4cab2dd200 --- /dev/null +++ b/tests/tcg/s390x/sam.S @@ -0,0 +1,67 @@ +/* DAT on, home-space mode, 64-bit mode */ +#define DAT_PSWM 0x400c00180000000 +#define VIRTUAL_BASE 0x123456789abcd000 + + .org 0x8e +program_interruption_code: + .org 0x150 +program_old_psw: + .org 0x1d0 /* program new PSW */ + .quad 0,pgm_handler + .org 0x200 /* lowcore padding */ + + .globl _start +_start: + lctlg %c13,%c13,hasce + lpswe dat_psw +start_dat: + sam24 +sam24_suppressed: + /* sam24 should fail */ +fail: + basr %r12,%r0 + lpswe failure_psw-.(%r12) +pgm_handler: + chhsi program_interruption_code,6 /* specification exception? */ + jne fail + clc suppressed_psw(16),program_old_psw /* correct location? */ + jne fail + lpswe success_psw + + .align 8 +dat_psw: + .quad DAT_PSWM,VIRTUAL_BASE+start_dat +suppressed_psw: + .quad DAT_PSWM,VIRTUAL_BASE+sam24_suppressed +success_psw: + .quad 0x2000000000000,0xfff /* see is_special_wait_psw() */ +failure_psw: + .quad 0x2000000000000,0 /* disabled wait */ +hasce: + /* DT = 0b11 (region-first-table), TL = 3 (2k entries) */ + .quad region_first_table + (3 << 2) + 3 + .align 0x1000 +region_first_table: + .org region_first_table + ((VIRTUAL_BASE >> 53) & 0x7ff) * 8 + /* TT = 0b11 (region-first-table), TL = 3 (2k entries) */ + .quad region_second_table + (3 << 2) + 3 + .org region_first_table + 0x800 * 8 +region_second_table: + .org region_second_table + ((VIRTUAL_BASE >> 42) & 0x7ff) * 8 + /* TT = 0b10 (region-second-table), TL = 3 (2k entries) */ + .quad region_third_table + (2 << 2) + 3 + .org region_second_table + 0x800 * 8 +region_third_table: + .org region_third_table + ((VIRTUAL_BASE >> 31) & 0x7ff) * 8 + /* TT = 0b01 (region-third-table), TL = 3 (2k entries) */ + .quad segment_table + (1 << 2) + 3 + .org region_third_table + 0x800 * 8 +segment_table: + .org segment_table + ((VIRTUAL_BASE >> 20) & 0x7ff) * 8 + /* TT = 0b00 (segment-table) */ + .quad page_table + .org segment_table + 0x800 * 8 +page_table: + .org page_table + ((VIRTUAL_BASE >> 12) & 0xff) * 8 + .quad 0 + .org page_table + 0x100 * 8 From patchwork Sun Dec 11 15:27:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633085 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993252pvb; Sun, 11 Dec 2022 07:33:44 -0800 (PST) X-Google-Smtp-Source: AA0mqf5ndQdytGEh7682XZx1W3qHH17iY0pL/DMffKeQrrl9aFOcjwd5CmtwYG8EoB+KY8wSNSUt X-Received: by 2002:ac8:5495:0:b0:3a7:eb36:5cb2 with SMTP id h21-20020ac85495000000b003a7eb365cb2mr19878889qtq.29.1670772824201; Sun, 11 Dec 2022 07:33:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772824; cv=none; d=google.com; s=arc-20160816; b=UDtKJxXfVYXKarlSGXWYqEbk3d7Ase2lpPuTaeSwnF01hhP2lrvr1MRvrTTAsrJIko 3dHhiHw5kzeNZXOpHv2J3zeRhBtKBW54asG5AKlgcDTFINxeiA5+wy9NfRttby52JjCQ ACJePq7aEQvD/D7YZTwVZ5Ie+d/ud+PS6p5Y0DHihbzU7MJbljKNtxYP5eVmtU/Lngsl MUobbtYwRmN7/uxW1hRD2Jn5469JdrBdLJQ25H3qyITXT7zBI0UW4dVjJ2LvOvJVgFt+ iBjV3Tsm/Grp/JUgwcIRCeuNd7Wq3vU+5kX7fGXCIT7cbTP7rPexCqlYFEwF1kD8o96W 4G/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Oqz5leAJw9u6Pyeo/01GA+MzzGo02lOxdG/HYsszSs4=; b=X+xOyqL6t70B3Mq6iRdQyGjxgRJzjtybfYWTnHQNvBf0ncYTOLA2v5sS1d6I6pSVL5 Jqm3DxfIbaDDCAaaMPu0U1k3yJ396ktlQfdEJ5OVdoa++QPZCniIwEuQA5txO2tfy3lS MOW8QjluH7OfX06W4yUGBSsoTtd25Fz4ec0wuhI4YIUqKOopa5i3l2Cpa+o1t40WTahs pZa43asV3nBp5aj43K1jzlTV2abl709px1R7LzxKc8oSi9QZCI8XP18wpIGQDOm6ovkg MSGt9IDS9jIYYP+k03J4XN8xi1lnmx51X0T2i2qIOdyc4Xb1XX4ndrdMqqALXOUdlyh9 EqnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=m3LRO9Qu; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l12-20020a37f90c000000b006fc2b68a376si2820061qkj.432.2022.12.11.07.33.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:44 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=m3LRO9Qu; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG5-0006ZY-4A; Sun, 11 Dec 2022 10:28:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFn-0006Qi-Ag for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:35 -0500 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007WJ-Uk for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:34 -0500 Received: by mail-ot1-x336.google.com with SMTP id l8-20020a056830054800b006705fd35eceso5835720otb.12 for ; Sun, 11 Dec 2022 07:28:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Oqz5leAJw9u6Pyeo/01GA+MzzGo02lOxdG/HYsszSs4=; b=m3LRO9QuPFT3YvRefJCeEPNzFHFlQ4z4Kz42wYyjziGZjY4QMUI2khFa+d75o9i/KH TK3keZXarVC23UsjHs84uuISXqMOP4oI1aG+G0eHuvbrkr5mvGk3r+nu0OvmrcCjjW7R MINq6JkKFVV0ZRNWYBUeoaXgbE1rhS60DBIDo6DXPmutHvpr9grI2jUMtFz6De1WguCW a3E9CPQwG7ZmwyquSwXYNUms9QSpEJo5FHeuvuG5dgy5y2+a+7bqik6z+pPPtpbMhCRr s9jRB6RlwEdvVk6v/qDX9Pk8LVOqu5iG5KJ0GHkHBGfg7HD6VbgAm8R3nR8OM/2NgMJ7 LRPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Oqz5leAJw9u6Pyeo/01GA+MzzGo02lOxdG/HYsszSs4=; b=3QIVUPOtvmopbrB6z9whkaoa9a/sUrHSBUJVqRltoIjlk5P7wMq5YklrLHVnlz+00S pmMSC759wNtk0DtsPw0c2Mj2wEcISS3EuBMLptZB/2LdrsDd+D5XOCj3rx/rhhKD+SQN A08966N0NU8FLjsKAAeWds0Kgs/g6pNYTKxclBA12Usp04npjTnTkOSN8ePHOYfjuXvV 45ARxYfRrt1N5mLs/NElT1QXm8H5DCU3hkjIWk0jCrcMhfogQ2mZoD76CKpKPh527Zym Aq5J4D9fvUoN3Jl9kxdx/6ZW5DJKux46uZfxeSSS+Jseo88u0hJJAmmqdB9peUYaRfAQ O2pw== X-Gm-Message-State: ANoB5pmPoySSk7SXKLwSxUGRTPwi5n7l/SU3nJwOa4mZB5NdlLYLp1QV P2pbLNNY8sLCYms5iKyZJL6GVqAPGGJFEs8efBg= X-Received: by 2002:a9d:17e8:0:b0:661:dfeb:f88d with SMTP id j95-20020a9d17e8000000b00661dfebf88dmr5858069otj.20.1670772493030; Sun, 11 Dec 2022 07:28:13 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:12 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 07/27] target/s390x: Change help_goto_direct to work on displacements Date: Sun, 11 Dec 2022 09:27:42 -0600 Message-Id: <20221211152802.923900-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::336; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x336.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org In preparation for TARGET_TB_PCREL, reduce reliance on absolute values. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/s390x/tcg/translate.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 1f9dca671d..f755909aeb 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1145,8 +1145,10 @@ struct DisasInsn { /* ====================================================================== */ /* Miscellaneous helpers, used by several operations. */ -static DisasJumpType help_goto_direct(DisasContext *s, uint64_t dest) +static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) { + uint64_t dest = s->base.pc_next + disp; + if (dest == s->pc_tmp) { per_branch(s, true); return DISAS_NEXT; @@ -1169,7 +1171,8 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, bool is_imm, int imm, TCGv_i64 cdest) { DisasJumpType ret; - uint64_t dest = s->base.pc_next + (int64_t)imm * 2; + int64_t disp = (int64_t)imm * 2; + uint64_t dest = s->base.pc_next + disp; TCGLabel *lab; /* Take care of the special cases first. */ @@ -1185,7 +1188,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, goto egress; } if (c->cond == TCG_COND_ALWAYS) { - ret = help_goto_direct(s, dest); + ret = help_goto_direct(s, disp); goto egress; } } else { @@ -1558,7 +1561,7 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o) static DisasJumpType op_basi(DisasContext *s, DisasOps *o) { pc_to_link_info(o->out, s, s->pc_tmp); - return help_goto_direct(s, s->base.pc_next + (int64_t)get_field(s, i2) * 2); + return help_goto_direct(s, (int64_t)get_field(s, i2) * 2); } static DisasJumpType op_bc(DisasContext *s, DisasOps *o) From patchwork Sun Dec 11 15:27:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633083 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993120pvb; Sun, 11 Dec 2022 07:33:24 -0800 (PST) X-Google-Smtp-Source: AA0mqf4DP+F0izPb91NbjLgZfKfCziY11xuptM/3ssJe1A7oNpDW3PDcPItCpUsn4N376fZObRsH X-Received: by 2002:a1f:4f45:0:b0:3b7:afc6:20c7 with SMTP id d66-20020a1f4f45000000b003b7afc620c7mr6855977vkb.10.1670772804698; Sun, 11 Dec 2022 07:33:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772804; cv=none; d=google.com; s=arc-20160816; b=CJvsKML3S5JPKLF4ENVtFBaMfHmePyDCKT5kmsTj5A2QWAuIhQ0J/hcorUq5L3qwx0 5fftDOTXfckCqiGRAi0CzXgeZI+rbvZd4TT9LNO2iSCCvLLs/fqXQAu5+AVxrD/VQHNu S3iLF/IEj8M1+3Aou3zJkgr8zG/TuLbKDSh/XrqevSssXS9jIe+0Iy2sjDBmVJgZBPHY tSjuKgBxU7h9/lWFG3FHcMuNfm2vWKtWbCr/jre7SCdUQduG1eFz34IWna5wktm8vIJz fLmIZehnrIOlBOHjluM62dTSyfcYC2yO6yrSw7y5TbzgEzxT+iNm+hPWskHi3p2Sj1vL 5rDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=BkhpLPYibgi28bZ0AVemBX1UWP5NYhHvrup30BVm2VQ=; b=fAoz+uWQZyMheiCosxeWWFrSCbtOk5JImx47uIR14zvkTrJFLhbY8TJnhAcgzm+SCB HdkMt6T5m91YfP7ZQx0xzysXSJd4OjuwAyT4JY3rsbBMjTmD7WJCdkop29C689feQmJn +jF1hxPlWtIFl1rMQouyEhYdkNjG5SpgIrcogmUV5SNSTgP1tLQNvLx+kCXIQKXNU4dF B3V4pRCJuHe/E+72051v5CMkRIXHLgsFPoOtdM1aqWsplcQbVCN2JAVBjGDnoFYtyRti pvjjtjnIOmNvYyLNuSTzGyRVxy2MjktcA71SARiQo+f11cXvg1xN7omdt46WEfjpxak3 Xn7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="rU/4Qznz"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w22-20020a05620a445600b006ea3c5337efsi3318233qkp.434.2022.12.11.07.33.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:24 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="rU/4Qznz"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFx-0006Vd-TV; Sun, 11 Dec 2022 10:28:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFm-0006PH-1q for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:34 -0500 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007L5-Sb for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:33 -0500 Received: by mail-ot1-x32c.google.com with SMTP id p24-20020a0568301d5800b0066e6dc09be5so5836491oth.8 for ; Sun, 11 Dec 2022 07:28:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BkhpLPYibgi28bZ0AVemBX1UWP5NYhHvrup30BVm2VQ=; b=rU/4QznzMjpjL3X7CgcpyppWiM8/Uj574eQ9qs/dCpejy37i052Dk7VgET4LyGUW3F nYKoM/+bUDG2yKX2YQdVarUlfN+fxpnpJnIdrnK/9jJtMvaYBpWxrkG/rYePtR4ogUkA ailwhWqDHfsWa8jZUNHaNvnxVa4lAEEYi2XAbCE9Pg3jh1K/eHLB8+nRA4uszAyRUZFF Iaps4uZEvUggTkTzOWU2ikfzvwAbXl+snSHTSwwZfV26bOI2B9Wd0qrqEj1exN7IZ5Bj Pj9Rps/8xevnk9GwXgMVaQHbWMbIjx+GeOrmr6wQU7WvZm+R8N79RmCEwtOYvyYHV1+w 8lrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BkhpLPYibgi28bZ0AVemBX1UWP5NYhHvrup30BVm2VQ=; b=TNdGTWmzwGFICkznbvFPl3VFMROg++GEO2sh0frL34/yq9+fGGqKeOSvvTOD/jXWQO WVMX3hDsFwGxW/O4YbEs9lGxJYBAOIBhR2c+Inj6Rm4MWgVnwfkd+IhXl2AcDPmw3P7A 02kxrLiVFwUAldZbagHgd1zntiP+qC1i2+By/BEEkM3jGkI1enHtg4IKSlTqE+9+R/G2 fxe/cBgrT3TFCSsAgkVRUQOy9NtXoTw6Y1o9Rn8bT9bNvooOZqeSY35M4pfEFu/6w9h9 8DIgVRp80fO2DKOfkBP5fK8N3qnOSctpnVtdEMj5epfqa9AVOdPoCVeLAgAeNjHuowTu PU3w== X-Gm-Message-State: ANoB5pmA4Mc3LXNqMZEpAfcgo76OjOEUb1plwflrAE1sZPGXDDzK/h98 tg9A41uUCJOZDB+wjoZ62mNfiU+zBxyTlJW0IXg= X-Received: by 2002:a05:6830:6286:b0:661:dfeb:ee89 with SMTP id ce6-20020a056830628600b00661dfebee89mr8601432otb.3.1670772494213; Sun, 11 Dec 2022 07:28:14 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:13 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 08/27] target/s390x: Introduce gen_psw_addr_disp Date: Sun, 11 Dec 2022 09:27:43 -0600 Message-Id: <20221211152802.923900-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org In preparation for TARGET_TB_PCREL, reduce reliance on absolute values. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 69 ++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 23 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index f755909aeb..a6a6dfd7fe 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -169,6 +169,11 @@ static uint64_t inline_branch_hit[CC_OP_MAX]; static uint64_t inline_branch_miss[CC_OP_MAX]; #endif +static void gen_psw_addr_disp(DisasContext *s, TCGv_i64 dest, int64_t disp) +{ + tcg_gen_movi_i64(dest, s->base.pc_next + disp); +} + static void pc_to_link_info(TCGv_i64 out, DisasContext *s, uint64_t pc) { if (s->base.tb->flags & FLAG_MASK_32) { @@ -334,18 +339,24 @@ static void return_low128(TCGv_i64 dest) static void update_psw_addr(DisasContext *s) { - /* psw.addr */ - tcg_gen_movi_i64(psw_addr, s->base.pc_next); + gen_psw_addr_disp(s, psw_addr, 0); } static void per_branch(DisasContext *s, bool to_next) { #ifndef CONFIG_USER_ONLY - tcg_gen_movi_i64(gbea, s->base.pc_next); + gen_psw_addr_disp(s, gbea, 0); if (s->base.tb->flags & FLAG_MASK_PER) { - TCGv_i64 next_pc = to_next ? tcg_constant_i64(s->pc_tmp) : psw_addr; - gen_helper_per_branch(cpu_env, gbea, next_pc); + if (to_next) { + TCGv_i64 next_pc = tcg_temp_new_i64(); + + gen_psw_addr_disp(s, next_pc, s->ilen); + gen_helper_per_branch(cpu_env, gbea, next_pc); + tcg_temp_free_i64(next_pc); + } else { + gen_helper_per_branch(cpu_env, gbea, psw_addr); + } } #endif } @@ -358,20 +369,23 @@ static void per_branch_cond(DisasContext *s, TCGCond cond, TCGLabel *lab = gen_new_label(); tcg_gen_brcond_i64(tcg_invert_cond(cond), arg1, arg2, lab); - tcg_gen_movi_i64(gbea, s->base.pc_next); + gen_psw_addr_disp(s, gbea, 0); gen_helper_per_branch(cpu_env, gbea, psw_addr); gen_set_label(lab); } else { - TCGv_i64 pc = tcg_constant_i64(s->base.pc_next); + TCGv_i64 pc = tcg_temp_new_i64(); + + gen_psw_addr_disp(s, pc, 0); tcg_gen_movcond_i64(cond, gbea, arg1, arg2, gbea, pc); + tcg_temp_free_i64(pc); } #endif } static void per_breaking_event(DisasContext *s) { - tcg_gen_movi_i64(gbea, s->base.pc_next); + gen_psw_addr_disp(s, gbea, 0); } static void update_cc_op(DisasContext *s) @@ -1147,21 +1161,19 @@ struct DisasInsn { static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) { - uint64_t dest = s->base.pc_next + disp; - - if (dest == s->pc_tmp) { + if (disp == s->ilen) { per_branch(s, true); return DISAS_NEXT; } - if (use_goto_tb(s, dest)) { + if (use_goto_tb(s, s->base.pc_next + disp)) { update_cc_op(s); per_breaking_event(s); tcg_gen_goto_tb(0); - tcg_gen_movi_i64(psw_addr, dest); + gen_psw_addr_disp(s, psw_addr, disp); tcg_gen_exit_tb(s->base.tb, 0); return DISAS_NORETURN; } else { - tcg_gen_movi_i64(psw_addr, dest); + gen_psw_addr_disp(s, psw_addr, disp); per_branch(s, false); return DISAS_PC_UPDATED; } @@ -1219,14 +1231,14 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, /* Branch not taken. */ tcg_gen_goto_tb(0); - tcg_gen_movi_i64(psw_addr, s->pc_tmp); + gen_psw_addr_disp(s, psw_addr, s->ilen); tcg_gen_exit_tb(s->base.tb, 0); /* Branch taken. */ gen_set_label(lab); per_breaking_event(s); tcg_gen_goto_tb(1); - tcg_gen_movi_i64(psw_addr, dest); + gen_psw_addr_disp(s, psw_addr, disp); tcg_gen_exit_tb(s->base.tb, 1); ret = DISAS_NORETURN; @@ -1249,12 +1261,12 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, /* Branch not taken. */ update_cc_op(s); tcg_gen_goto_tb(0); - tcg_gen_movi_i64(psw_addr, s->pc_tmp); + gen_psw_addr_disp(s, psw_addr, s->ilen); tcg_gen_exit_tb(s->base.tb, 0); gen_set_label(lab); if (is_imm) { - tcg_gen_movi_i64(psw_addr, dest); + gen_psw_addr_disp(s, psw_addr, disp); } per_breaking_event(s); ret = DISAS_PC_UPDATED; @@ -1264,9 +1276,12 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, Most commonly we're single-stepping or some other condition that disables all use of goto_tb. Just update the PC and exit. */ - TCGv_i64 next = tcg_constant_i64(s->pc_tmp); + TCGv_i64 next = tcg_temp_new_i64(); + + gen_psw_addr_disp(s, next, s->ilen); if (is_imm) { - cdest = tcg_constant_i64(dest); + cdest = tcg_temp_new_i64(); + gen_psw_addr_disp(s, cdest, disp); } if (c->is_64) { @@ -1285,6 +1300,10 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, tcg_temp_free_i64(t1); } + tcg_temp_free_i64(next); + if (is_imm) { + tcg_temp_free_i64(cdest); + } ret = DISAS_PC_UPDATED; } @@ -5827,7 +5846,8 @@ static void in2_a2(DisasContext *s, DisasOps *o) static void in2_ri2(DisasContext *s, DisasOps *o) { - o->in2 = tcg_const_i64(s->base.pc_next + (int64_t)get_field(s, i2) * 2); + o->in2 = tcg_temp_new_i64(); + gen_psw_addr_disp(s, o->in2, (int64_t)get_field(s, i2) * 2); } #define SPEC_in2_ri2 0 @@ -6312,8 +6332,11 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) #ifndef CONFIG_USER_ONLY if (s->base.tb->flags & FLAG_MASK_PER) { - TCGv_i64 addr = tcg_constant_i64(s->base.pc_next); + TCGv_i64 addr = tcg_temp_new_i64(); + + gen_psw_addr_disp(s, addr, 0); gen_helper_per_ifetch(cpu_env, addr); + tcg_temp_free_i64(addr); } #endif @@ -6434,7 +6457,7 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) if (s->base.tb->flags & FLAG_MASK_PER) { /* An exception might be triggered, save PSW if not already done. */ if (ret == DISAS_NEXT || ret == DISAS_TOO_MANY) { - tcg_gen_movi_i64(psw_addr, s->pc_tmp); + gen_psw_addr_disp(s, psw_addr, s->ilen); } /* Call the helper to check for a possible PER exception. */ From patchwork Sun Dec 11 15:27:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633096 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1995396pvb; Sun, 11 Dec 2022 07:38:53 -0800 (PST) X-Google-Smtp-Source: AA0mqf6L41/u+4t7HPJFailQz7tvuf756INl14Oa2tEAJTrYvNnKC82+TgK0gC+n3Og/DhEuQvYZ X-Received: by 2002:ac8:5e52:0:b0:3a5:17f0:e718 with SMTP id i18-20020ac85e52000000b003a517f0e718mr24377206qtx.14.1670773133749; Sun, 11 Dec 2022 07:38:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670773133; cv=none; d=google.com; s=arc-20160816; b=dNJfsqwrZOPm7AdqyB0J+WZNr0K2R2crDhPoYfCMDgD6OZV7NyTWx+3uRv3qs4LEc0 fNE5iD/qDm+a1Sibo7r0ce+egJPRR6PD6OXtzw7ivFgkiw5FqsUW1dms+LZXBGK1JBV1 qZBHfB4Gp5ctqF4GmoXJMJ6Ge3Es8WclEo35dYp7vWAjurP06q92CcQbhcMeGnNbBfl9 dE1JUdhmLGlyorWNJ3RICVffQNsSXqdSJoU9g4IVhz3/buekPTjj37FThDGJ02Nbkphq BXqs+0h+VQBYfuU3+Egf+qkj56zB/u/FSmC5f4g0vlJY8ebk9s4nGF7F1Lto57WHWVs5 bi7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=DdKeHpnzihti8XnJXyZXdF/AKnoqunJKbe/ljjhBogQ=; b=fOLNPiMAKzEw4goethnZyMIPQxVSP2ClqyezQCHqtBDa6/17Jy6WaqSP6kKfyO4pI9 ACm8hqsjbXfLLKsEOejDrIVWYWfd7OkLHZoRD3IUlP0BoVrgjUMhIyWu53M+de8fnKnT Hjgaxy4MUPyAcIU33pZ4NJ9TPBuMMdK6ZUVz60egJmxWdq5UqXSWMp2KaQ0nfqyaaNy/ Ux35DQK36nwjbB1Ps7EJSUCMS/68esac8qDKMnYAruvy5Km85SgT3pFPrrbHUm7y+EA5 fZcu/DCpcOfA/3ibduhrJ2ZX1TSfD1TXeBNWyYnEPz8UHiHpzzZs8MjK0eE4+Ux6unRP 8EJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xrpyu6g8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id cq8-20020a05622a424800b0039cdad4d788si3701047qtb.777.2022.12.11.07.38.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:38:53 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xrpyu6g8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG7-0006ah-Ou; Sun, 11 Dec 2022 10:28:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFo-0006Ri-HQ for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:36 -0500 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFg-0007Xi-02 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:36 -0500 Received: by mail-ot1-x32c.google.com with SMTP id p10-20020a9d76ca000000b0066d6c6bce58so5833661otl.7 for ; Sun, 11 Dec 2022 07:28:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DdKeHpnzihti8XnJXyZXdF/AKnoqunJKbe/ljjhBogQ=; b=xrpyu6g8d5eSIV51kux/WzbiQQnhR2OlU0VLemyXJFBjuhAS+OIwQVm0fA89jUM/R9 1okPKdy6MVCfiEP2vAYBQbv1pj6ngUfwKQhPwPttquFzB6CY9br21A3NrNz4+A6/R+8I gJHkbZmNGEN81szAa+KKekHiHuAimerb3SX/bQv7N5VBwJsOK7Prm57wmXg29sn4VzDr CyZvEBkcUOTM4DReV0bGvlXuGREEWYUhtz65TUi4MxCQNQfmL+M4O7FlFhTHKwU15sZZ w+w7vabXk2ujjZ0/zPg+hb5bxigwWTwoj3ZyVUDp4OEx6SjTN9z8Cb25xfGgsyMmi7YZ 8NaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DdKeHpnzihti8XnJXyZXdF/AKnoqunJKbe/ljjhBogQ=; b=7GjJz8P+ovvRwtAPMZR9ZCjBSYHM+NWjGesn81poKwCScU0dyB5b61kd+Jei+Bj6ll aaIzkcMfgLk2b0Kls7HE9EWl2usLZqHOwKr3CHiSRaTvpU4/YnVWuYBEthcPE2HiIiSn UuI1RFL6G05mSRiGFfM3ONEj0TeX2qdGIa1sc/kvNHbxL4gWnuoe3jhKkVVT6CVoU7TX G5zytml08puw5j2PnbvJtz7Geq8SXUA1Us5ftwx7d+1smlSpAti3J+JjUV3kN/1TlCz4 t3iauFUzVjPy5XyGFTgjTfESD5NWF19vHeWdumh2DyMXUtQYbYKt8CgLZy2wNoS+o9Hx DenQ== X-Gm-Message-State: ANoB5pk+ruKMhsxUzmeoFgM5lld7dAy6XE1UIxD6kV57re+eSNVV3Y8h p9V0hn1OEFCC6WTbGxE/izEWbVh6SvoZmlqqe98= X-Received: by 2002:a05:6830:6b0a:b0:66c:71af:3330 with SMTP id db10-20020a0568306b0a00b0066c71af3330mr7260075otb.4.1670772495582; Sun, 11 Dec 2022 07:28:15 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich , =?utf-8?q?P?= =?utf-8?q?hilippe_Mathieu-Daud=C3=A9?= Subject: [PATCH v2 09/27] target/s390x: Remove pc argument to pc_to_link_into Date: Sun, 11 Dec 2022 09:27:44 -0600 Message-Id: <20221211152802.923900-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org All callers pass s->pc_tmp. Reviewed-by: Ilya Leoshkevich Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index a6a6dfd7fe..4e23ae8361 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -174,8 +174,10 @@ static void gen_psw_addr_disp(DisasContext *s, TCGv_i64 dest, int64_t disp) tcg_gen_movi_i64(dest, s->base.pc_next + disp); } -static void pc_to_link_info(TCGv_i64 out, DisasContext *s, uint64_t pc) +static void pc_to_link_info(TCGv_i64 out, DisasContext *s) { + uint64_t pc = s->pc_tmp; + if (s->base.tb->flags & FLAG_MASK_32) { if (s->base.tb->flags & FLAG_MASK_64) { tcg_gen_movi_i64(out, pc); @@ -1534,7 +1536,7 @@ static DisasJumpType op_ni(DisasContext *s, DisasOps *o) static DisasJumpType op_bas(DisasContext *s, DisasOps *o) { - pc_to_link_info(o->out, s, s->pc_tmp); + pc_to_link_info(o->out, s); if (o->in2) { tcg_gen_mov_i64(psw_addr, o->in2); per_branch(s, false); @@ -1549,7 +1551,7 @@ static void save_link_info(DisasContext *s, DisasOps *o) TCGv_i64 t; if (s->base.tb->flags & (FLAG_MASK_32 | FLAG_MASK_64)) { - pc_to_link_info(o->out, s, s->pc_tmp); + pc_to_link_info(o->out, s); return; } gen_op_calc_cc(s); @@ -1579,7 +1581,7 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o) static DisasJumpType op_basi(DisasContext *s, DisasOps *o) { - pc_to_link_info(o->out, s, s->pc_tmp); + pc_to_link_info(o->out, s); return help_goto_direct(s, (int64_t)get_field(s, i2) * 2); } From patchwork Sun Dec 11 15:27:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633078 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1992390pvb; Sun, 11 Dec 2022 07:31:49 -0800 (PST) X-Google-Smtp-Source: AA0mqf62Cfv95om6ev9f+ZKmeP5o5I51QRR2j3T2j+55ynUaD6YPGvoQsio6+Xh3pNd1rlI9VPSS X-Received: by 2002:ad4:5343:0:b0:4c6:9271:a03a with SMTP id v3-20020ad45343000000b004c69271a03amr19039988qvs.18.1670772709676; Sun, 11 Dec 2022 07:31:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772709; cv=none; d=google.com; s=arc-20160816; b=f4mKhGd523ZUsvI27zPYpLpwtohQOnJOVPyH06kKjMchM5Au8PMXYJA5e4XqiGWgMK V7feyK11NfQPHBVPmfJ/mM8mnQnpNSi9vxAN+lM3QG98rRbG5JDH6kDwsNcYfN9KKS4R 2q5SMPELK6kufkjyFKQxgnc/piRvyR+tPeMP5s1YERGSDaHkqI/zu0zDp9/hnsS5A0Kr D3zgPTlTvYtRUzbvLJ0acLmRMmxjXCOI3DxZF82QozQ/5ZDqFD1MxVJ9cT4+4AFtY+Ut q87mzZ6xXs8ouV2xqX966eD2Ovrqor7LfuLsqA8bDDJ/YZO3u7BTDxCqMplOfno0UtQk Pslg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hn2aWC+olD3a/3u7MBKa85o65R+akJavbUiaCuhehyg=; b=0CV8NUVvdSNBcEEilNkF9llkYhZCOPAJlCLlY8f9lY6p58zSgB7PwUvHYWLWR6eQX+ 3r0mGQG0UmjXtauwTQj6Zrvpx9aSVAta/TvwKydLw8Ra9jHkMqWw6ZE61O4tLQsU1TLj Io45uhWgKn/Rd4ihI7PrFZIicuPNhmKY5o+W8T1vnVM/e1kRZIHx0ctkseyiVLw/bzW+ EnraXmeDWAsMysFM/KincrIvxG7mVPvzDmUyl9GE+e27LY1Chh48gwCKnZAYmhDf+ZSK JwXmaKvMyeeHmYU21kNAJ4SxqF2T1AKH+lvrxa8OCqFaF+foHyup22X9VzGve/oUnyc3 JeeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J8LdAAuS; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id pc42-20020a05620a842a00b006fc977f4824si2706289qkn.248.2022.12.11.07.31.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:31:49 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J8LdAAuS; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG4-0006YB-Ky; Sun, 11 Dec 2022 10:28:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFo-0006Rd-Bz for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:36 -0500 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFg-0007Xs-0i for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:36 -0500 Received: by mail-oi1-x233.google.com with SMTP id v82so9072456oib.4 for ; Sun, 11 Dec 2022 07:28:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hn2aWC+olD3a/3u7MBKa85o65R+akJavbUiaCuhehyg=; b=J8LdAAuSXj26EZXicR8LdIXskfJ925erkMd8ce2dgvtrI/m+Oo+o81UIGd8Duh8HIB wKsGnOfvcCGBu631rBY29ex2guWrnDoH7mIFDZQArmOcNJhbCP7XsLIZIKwn3R61i+36 1Z3pXwBfMkoSHH9yX8OkzO2sAAYuEKlBO6i9JS0/ZvBcTamZHZJ3hWFt09A40Mz4julj klg47YuWRMJtr5GYYsgpFaGvWfjjwJ36huxyOKxThLI4XxhwAAHh9q21AOXdFP/S+5iJ 6TeWIah9mKmXtfJuNpUwg0NnpJu1a0T3htFa1Zw0+BMSJ4tA+jLZG3dM+FJcn6nRCo5S PdZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hn2aWC+olD3a/3u7MBKa85o65R+akJavbUiaCuhehyg=; b=EkmfT80eqqNb+xByOen7cvVhrgk8/oHuiVpgNtLjl2Rm3lEnCgzU4QV5u9g3EtkVnq c6Xo4WrJctR0JgCiIWAi2zUBUkjvQXeFPSNc8yBPKNPc8+q/xCdYMjV0P0FL/4MtxAKY Z6MjKBgt4InqCNtg+AOimZ5BaK52M+HVQOJtEnONoLmoDU1JPV+ee3CbaGymKouaUHCD ShnXSmrH7oeW0YV/ZLddlRsx/uaOAIhnTiWHvuMhGv4ZfBsKJH+9MF8rHXpy/V52qwN4 /MWfQp7IDwIn4fQrz3n+usqIYO4VTKDDxS2AyCEmdIDQPL3mLMbssZM2c00tE0gWUlaZ cgfQ== X-Gm-Message-State: ANoB5pmfF3hxi437iru40oDg+1kwnA+oYsaABLMFFiGm9vY68SXIHZxv i2/1tI5WID3sPm68f5cP8wa5ap+2ST08T+8i3Cg= X-Received: by 2002:a05:6808:f93:b0:359:d1ae:7863 with SMTP id o19-20020a0568080f9300b00359d1ae7863mr7254926oiw.22.1670772496842; Sun, 11 Dec 2022 07:28:16 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:16 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 10/27] target/s390x: Use gen_psw_addr_disp in pc_to_link_info Date: Sun, 11 Dec 2022 09:27:45 -0600 Message-Id: <20221211152802.923900-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::233; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x233.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org This is slightly more complicated than a straight displacement for 31 and 24-bit modes. Dont bother with a cant-happen assert. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 4e23ae8361..f5b97fe1c4 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -176,17 +176,20 @@ static void gen_psw_addr_disp(DisasContext *s, TCGv_i64 dest, int64_t disp) static void pc_to_link_info(TCGv_i64 out, DisasContext *s) { - uint64_t pc = s->pc_tmp; + TCGv_i64 tmp; - if (s->base.tb->flags & FLAG_MASK_32) { - if (s->base.tb->flags & FLAG_MASK_64) { - tcg_gen_movi_i64(out, pc); - return; - } - pc |= 0x80000000; + if (s->base.tb->flags & FLAG_MASK_64) { + gen_psw_addr_disp(s, out, s->ilen); + return; } - assert(!(s->base.tb->flags & FLAG_MASK_64)); - tcg_gen_deposit_i64(out, out, tcg_constant_i64(pc), 0, 32); + + tmp = tcg_temp_new_i64(); + gen_psw_addr_disp(s, tmp, s->ilen); + if (s->base.tb->flags & FLAG_MASK_32) { + tcg_gen_ori_i64(tmp, tmp, 0x80000000); + } + tcg_gen_deposit_i64(out, out, tmp, 0, 32); + tcg_temp_free_i64(tmp); } static TCGv_i64 psw_addr; From patchwork Sun Dec 11 15:27:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633090 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1994230pvb; Sun, 11 Dec 2022 07:36:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf6glF53aatuqGFmZDVE2WzHhjUC2JPLXfAhN5VuRL4vKBfu68RMW73bfnfu72ZLbKsDP5Ip X-Received: by 2002:a05:622a:408e:b0:3a6:21cb:cca4 with SMTP id cg14-20020a05622a408e00b003a621cbcca4mr20667657qtb.10.1670772966853; Sun, 11 Dec 2022 07:36:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772966; cv=none; d=google.com; s=arc-20160816; b=HpL9bxR7SxKLbqx6hgDclJ9az4loQRlbxuwpD43AwDIwuxD/Fc54SE0iv2ufONMD97 pu5EC4p2k7N2oeL4jKoHwBfqy8rP9+G4LaW+L0NisAyyzLKy1l/5FaXFjxrH/1m/g5Lr YR1/43nHmGScCG2ihg1df+Rl4Gd4zMuuNnk5MdcHECY2b7k+hwtHIM5ApLJxgtM2nrkG fTiEgALFow8hbIGfJhbCQ7nAORaVUr72/9n+wsxJVoFAq2JBt6W9fkV/v6scjKMRBJqc ZSCmWDoyAMAhyfqHP3rJcVmLLtB9IP7LYL1H3bG3/+Y3RDfTMB/joW5P6uwdPlNa+Ubb HyJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9PqR+j2AJ2Z/evFIqerFiBY2sN8DE35v/DjfPGQKroc=; b=0JgB8K/3ZWWEVCzy9ylxKD1Y7wYmCCZIINPIzhaJSIkTarSLzZfLhrheXi06k+e9th 48RnXCa9MVCeJNzVckev3LP/my4A8WexG9WxJFq+dDNlJLQ5eijdlj69ESZ0LHIAH3bw IQ27hemR6T9/yl1Kbw1+6xtXXNOQAoIwYyb/zSPp794rUtHSqkTVm1LtIAJuujQeH0ef orD/9fGVdLA8WW4YhYE6HLGD/cPXo4yaVfEamTHFTDn6KfGZeTItbkRSIs3f3a0sY3BC GU4zvS10/XHQYu6SuOknlOckyr4KsAGnZ1P+jvOLZC8KgVtKH9Sm71cbX2Po64s0kXsl UQrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=qM8zRNJe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ey25-20020a05622a4c1900b003a6955a6213si3994630qtb.427.2022.12.11.07.36.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:36:06 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=qM8zRNJe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFn-0006Qn-Ed; Sun, 11 Dec 2022 10:28:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFk-0006Ls-DD for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:32 -0500 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007Xz-R3 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:31 -0500 Received: by mail-ot1-x32a.google.com with SMTP id m6-20020a9d7e86000000b0066ec505ae93so5830750otp.9 for ; Sun, 11 Dec 2022 07:28:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9PqR+j2AJ2Z/evFIqerFiBY2sN8DE35v/DjfPGQKroc=; b=qM8zRNJeq1Vzlyd3QV65RyIKwItYmjlAMnZeB8liVV9T7Lzuwze6S05dJqcLXVj5A7 G9a5t6ymrnhPb6n+44NFrJcUku9ySbmjuh4ZuikV07gQGTDWz9XdkhLBNpQtksoJyNjq 6LaPjrgrWDNNGEbQ2fz1Cp4rvAHPfv4AbammEBhYimaa8LtpK4s26RfJM/taFtiALMMC l0x7Y7uuNW5JLWqEkuEowtetgHLCP7sj09QgftBssBWGIdx7frd3w4tnl7tY/APlsKhq ibOA01QIQLb9gONxPVasvlc8bf2dd12AmCv2tRN1l7l0ySnGULVe2LWA5MTjgBdqcLE6 ChXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9PqR+j2AJ2Z/evFIqerFiBY2sN8DE35v/DjfPGQKroc=; b=rPFEqoI/6zX1JhzlzTCgWHNq9Rmog7tfesz/SqF2PN0hI03pawSsklPyRzkGrS40t1 PNyxboSvI2HQGiz8EVxLll1+7U1e6jC5FtzMyfNNsC+xfGNSARh+btpqElwadLLbkb2J rDPdLRnRgM91Wv5p5pI+RuDNGFfGTC71obF+xQ0mx8u+/0fpI62z+C87bD3NUbAODvQ/ 4wPLY8sio2DbXe6zLk74FGoR7KIqUGKItddDH7cDvron9zaKftExE9CkZcWRwaHuHebc 2ISrRjNU8ew6mcaDgaNBSbq+r2r4FHZAA/rikBq+nLGcaXirBhso7w/W4tdFQtTsPq0Q /nSQ== X-Gm-Message-State: ANoB5pn+3NWeNpICxmYAKj1eaIvuCLY/lDCyAStPs8i7L6dwDK3nspXZ hrT78SQ3eWIT6wF46tj6yukLgzLXvpIOrkuAMY4= X-Received: by 2002:a9d:65d3:0:b0:670:5951:87b3 with SMTP id z19-20020a9d65d3000000b00670595187b3mr6279795oth.31.1670772498015; Sun, 11 Dec 2022 07:28:18 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich , =?utf-8?q?P?= =?utf-8?q?hilippe_Mathieu-Daud=C3=A9?= Subject: [PATCH v2 11/27] target/s390x: Use gen_psw_addr_disp in save_link_info Date: Sun, 11 Dec 2022 09:27:46 -0600 Message-Id: <20221211152802.923900-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32a; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Trivial but non-mechanical conversion away from pc_tmp. Reviewed-by: Ilya Leoshkevich Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index f5b97fe1c4..b317767a7d 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1558,9 +1558,11 @@ static void save_link_info(DisasContext *s, DisasOps *o) return; } gen_op_calc_cc(s); - tcg_gen_andi_i64(o->out, o->out, 0xffffffff00000000ull); - tcg_gen_ori_i64(o->out, o->out, ((s->ilen / 2) << 30) | s->pc_tmp); t = tcg_temp_new_i64(); + tcg_gen_andi_i64(o->out, o->out, 0xffffffff00000000ull); + gen_psw_addr_disp(s, t, s->ilen); + tcg_gen_or_i64(o->out, o->out, t); + tcg_gen_ori_i64(o->out, o->out, (s->ilen / 2) << 30); tcg_gen_shri_i64(t, psw_mask, 16); tcg_gen_andi_i64(t, t, 0x0f000000); tcg_gen_or_i64(o->out, o->out, t); From patchwork Sun Dec 11 15:27:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633092 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1994486pvb; Sun, 11 Dec 2022 07:36:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf6/GJIZeId72pLiOTFLfK5rdL9FSboIbRgtdFScu7lrbzVCDecOtDbvwtj8N+cHzo3BVSyi X-Received: by 2002:a05:6214:403:b0:4c6:cfb5:a881 with SMTP id z3-20020a056214040300b004c6cfb5a881mr26525408qvx.37.1670773000310; Sun, 11 Dec 2022 07:36:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670773000; cv=none; d=google.com; s=arc-20160816; b=qwDf64GKQJhdoATWPowVfpLzQLWclt90ywZVvmlAnI8jmMGwWsvN3IEGlr3SP6Qtz0 mtAXVHCGBNLjkIkc6V24/1lR1Im24dKiGyWIl2zhqXuptzbuM5kP9Wv9D68XsQUdYZTJ rAcgUJyi2U4NLz/pGxCThzt0sFDyH4SlR8jwaESqV1rLxeNy6aHn3hGkCW9lvLHQmvt+ JhMEt/enueG1iLJApyS1yR0y5LOho1jXGJ1PgMLhir/oB2uFygwv560U1dbmSH0GRhhU DmBYZlwDh2XWLR+akJS4dtH2HrVD4cgH/Lcmf09NFIH28CP9zoOqeMsRyq3g6nF9CO0O ULtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=eHRilwMZdGux1mMQrrcCyZM7FyweWHMuqYamGhTtaNE=; b=KYuKbz1KPK2gaqsRdis5mKmO+BpXVkJZmm8+jvaMWf2huah0iI1RgS2KxjQIjHkCpY 9ZDc2JtTFCaF+fG8nYsrpuuOTpsR+hypProiH4ogdyiD0Sw6gs9rTwVkrZOfe5rwx/Fi Dt10pSvsfECwzT5e3cYbAGZY/Pehx3RN0lq0oDZZN0Wmfyn7o5vgjGDN5/eG+qec/2G+ 8vvMmOllLUYzkrwrmR09ZG72QVNZoidqKwloR7gc2KyZHvK2BS8BtvoIyBwDZj0XKPwI YtbsfZjuvwNxHK2af4NHNWEpdrNI5QKbduUOtRSULGjwor9entBVD5BC7za6qlFGjUIE WwSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=YsJyGK2O; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t14-20020a0562140c6e00b004b1c2913b83si4090216qvj.445.2022.12.11.07.36.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:36:40 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=YsJyGK2O; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFp-0006TI-VM; Sun, 11 Dec 2022 10:28:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFm-0006Pr-PD for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:34 -0500 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007YF-S1 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:34 -0500 Received: by mail-ot1-x32e.google.com with SMTP id m6-20020a9d7e86000000b0066ec505ae93so5830764otp.9 for ; Sun, 11 Dec 2022 07:28:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eHRilwMZdGux1mMQrrcCyZM7FyweWHMuqYamGhTtaNE=; b=YsJyGK2OcvrRZgby+DNpi/NYWNZ5iNb2um2AdTxxz1/CG85MCmRa5+bvkdxyyLiGi1 Hv6jhNVc2KewIOHf9u3pcZRpIMTbk7ZOyHu06dU2e7ix+2P9iePe1j9FxidQiOmDo9pg TYMOEY0AZ7EeVgKYk1RI1kSx0NwQfB9g3algsQpd8gEVYr50+K4B8xYX6gRpL6P5BoVU X85Bwc7FWw3sj5+qhoITZU62LWwp5Kcr2ucfCAdOqw4+4QQjWMDzNQ8CTJ6xJtCmrIKv GBj1psQE8cZeenNIjQMpBz6PKmp1P6lXTWclJ8ZcheABBtDrfQvlFkWbqKzYkQJ1gM+n u+fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eHRilwMZdGux1mMQrrcCyZM7FyweWHMuqYamGhTtaNE=; b=hJGzwNd3y1B2q5hxrxjZE1YRBuuGTaI3WUn4b6demsETeep4VL9MOV8m7bUvX+XUsv 2Ono2DQq+/3Gd56fUhTXCcgUoMCo4EScg2Kpnc3GgMy1OYYeCRGVKalNUlgtvZEnVGgp mvsgR1cvzB4YY7Y+sKA4EAmF1rYQQknp2YLNGWVdLjSfcyuRjb5A6FFwTmQzNeo0zAse qxblpoDwkpeP2XC+INv0Qaxl7QNI4kiaq490lY4zj1oVMqvl0SAJmhKOWsiqg6mOKViI sP/FCISXeaghmzLj5VETRjtbuMvoPk4OUAlNceWwz/sguJQntuumcEkdTPbh0MbQmfP6 r+Ww== X-Gm-Message-State: ANoB5pm9Rl89pveoidsHfEHR9hCGPF3JDG6fWCvs1u9SliycAZbqSUQJ xe+iz8O9RqQ2fZGLcSCO74WB00c68YeQr2QzvC8= X-Received: by 2002:a9d:7699:0:b0:661:dfe6:9732 with SMTP id j25-20020a9d7699000000b00661dfe69732mr5648803otl.1.1670772499197; Sun, 11 Dec 2022 07:28:19 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:18 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 12/27] target/s390x: Use gen_psw_addr_disp in op_sam Date: Sun, 11 Dec 2022 09:27:47 -0600 Message-Id: <20221211152802.923900-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Complicated because we may now require a runtime jump. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 40 +++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index b317767a7d..96bd37426f 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -3922,7 +3922,7 @@ static DisasJumpType op_sacf(DisasContext *s, DisasOps *o) static DisasJumpType op_sam(DisasContext *s, DisasOps *o) { int sam = s->insn->data; - TCGv_i64 tsam; + TCGLabel *fault = NULL; uint64_t mask; switch (sam) { @@ -3937,20 +3937,36 @@ static DisasJumpType op_sam(DisasContext *s, DisasOps *o) break; } - /* Bizarre but true, we check the address of the current insn for the - specification exception, not the next to be executed. Thus the PoO - documents that Bad Things Happen two bytes before the end. */ - if (s->base.pc_next & ~mask) { - gen_program_exception(s, PGM_SPECIFICATION); - return DISAS_NORETURN; - } - s->pc_tmp &= mask; + /* + * Bizarre but true, we check the address of the current insn for the + * specification exception, not the next to be executed. Thus the PoO + * documents that Bad Things Happen two bytes before the end. + */ + if (mask != -1) { + TCGv_i64 t = tcg_temp_new_i64(); + fault = gen_new_label(); - tsam = tcg_constant_i64(sam); - tcg_gen_deposit_i64(psw_mask, psw_mask, tsam, 31, 2); + gen_psw_addr_disp(s, t, 0); + tcg_gen_andi_i64(t, t, ~mask); + tcg_gen_brcondi_i64(TCG_COND_NE, t, 0, fault); + tcg_temp_free_i64(t); + } + + update_cc_op(s); + + tcg_gen_deposit_i64(psw_mask, psw_mask, tcg_constant_i64(sam), 31, 2); + + gen_psw_addr_disp(s, psw_addr, s->ilen); + tcg_gen_andi_i64(psw_addr, psw_addr, mask); /* Always exit the TB, since we (may have) changed execution mode. */ - return DISAS_TOO_MANY; + tcg_gen_lookup_and_goto_ptr(); + + if (mask != -1) { + gen_set_label(fault); + gen_program_exception(s, PGM_SPECIFICATION); + } + return DISAS_NORETURN; } static DisasJumpType op_sar(DisasContext *s, DisasOps *o) From patchwork Sun Dec 11 15:27:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633091 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1994246pvb; Sun, 11 Dec 2022 07:36:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf6Jf3o4POKCBGsrm9qrmGepSMzhmT/5PnE0F8EyS2p0tvjn8wlJWQvrysR9y6URCYRUTpwu X-Received: by 2002:ac8:4b55:0:b0:3a5:7a7c:25bb with SMTP id e21-20020ac84b55000000b003a57a7c25bbmr15562695qts.27.1670772967657; Sun, 11 Dec 2022 07:36:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772967; cv=none; d=google.com; s=arc-20160816; b=ZVeGkAFdEK5qVOaefQRt7MpWrmWK2dK+/r53xKY3VdUEeThBP1GA3pVFp0XJ+9njx5 rgicV1mtN1Yel4pTIRLoXBSquRQ5QQx5Y9pIizBwPB8YyLEIQD3VmFa5JDQiYoXLnsWy J9cNuL+CQxZ1v94fgf67kYKEZ5HKzNmQsfI0VVAr+xG6aX8ipEVl3YWeq5ipu88M/XaJ GB6dsvlGTPURka0qkhFZUctepgULBJs+6gq210CXYBvoKz3ugl6tLrnqtDMKupNS/1Of wtaTtD/bCxvKYWh6b+a4VMMWzEJUTCJ68fgF22GdeJps31y0WxZkyd00y3A7AwkbER9K a5mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=0KchuaBzJWkMTjJsrbnSjZVRKRaS7lDJ8+obmeMmkCQ=; b=ntKMIJpW1tL1cqQlE9EX1AoscnRZv/sWVYTOdzaGdiaH3m2TnMrRzVrsPjmGXvkR6X mwVofpBXJ77Ex4AJbL5BYFfuiIYnjbXveyfIJjUjYX8pDb/SvVl04Xawf9nzkfU7RtEp pEdyvsM3GQA2jVY1IoKb4Flg5CsNhHAXPxvIqalgwkes/kHlK8iRH+YEf3eDruIKMMIu 4KrV4MKoWasWiPVUdONiZ9vAt1BtW0WM1kyAsVqvlsPSeVi9o7wvg93IeJsRsHLevJ16 jrqE9cLGngQ+HsPU86QlZL84BTbMUNuNATL1cs+72OuGMjmVMfrqV368W9x7GdfAOs4z 3B4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=g+LqkYsg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id cm11-20020a05622a250b00b003a6568a38a5si4211681qtb.41.2022.12.11.07.36.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:36:07 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=g+LqkYsg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFm-0006Pl-NF; Sun, 11 Dec 2022 10:28:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFk-0006Lk-CU for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:32 -0500 Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007Zb-Q7 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:31 -0500 Received: by mail-oi1-x22c.google.com with SMTP id c129so9114650oia.0 for ; Sun, 11 Dec 2022 07:28:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0KchuaBzJWkMTjJsrbnSjZVRKRaS7lDJ8+obmeMmkCQ=; b=g+LqkYsgUDtCAlBppJgT4y4Gconq2Lt0FEREdxDXBCwmfQry6Zz0p+ge4Z5Pmdy3Kh dmg0cAxIFxAxV/d7HkMml4uz3dSIfZOMcGX64hhKlPyWj2N5u/cYCBfJV6pmimZe5Enc YaO7LvsRTAtXz/O46KUDigz7zcMxASLjh7/qBW58R7fm+dUNWhtqR4ZZWEFwQre8VdEB AFqt6Eov0v/oDGSTm+z1fv3A+iIO0DfATp0/Obj0R5n9n9gk5zJr0yuA70u2VVuSoo3y aaJoUFB9EQQVycRuD3lksJ9wIE8sxho3T7PF1HkQGW4xtVwCtf9xSQ2D7XqWWj7ZyAOR 6vYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0KchuaBzJWkMTjJsrbnSjZVRKRaS7lDJ8+obmeMmkCQ=; b=5tKaR5UaxVTE8DHlHL4AJB9YtQ2t7mxY9hpSuluJ3RyCFcwZyxTW24dzlU4hqaoNBp 7fuPcbYyJ6y+5wqNpeyAmJCSAEHy1TuEV8LXzEPTJQCNHne4ItdmdAc7E6kcQLE/dmbY qxtqLLmM97EnLWCrntKQ84pO6wuoBhtysz4jUIZ/3zQ9D3bqLVrVynaDUihCU+hX53/b j00MwYcF7PtEjNeDbjKpIbth3bk2VYsOvC7ZcnrdVhy7Q+uNWVsVS64ZfQZlcWMwr5Nt PsZjKiLjEsT0llinIyvJf8NnvGiAFv0cuFU7wmvFQEy7hdz4Kki59PJQARpaa03TzQTJ p0mQ== X-Gm-Message-State: ANoB5pkcv5adTHxGNMyACV1ZQ6LrZK9/avygZA9JzDHINrfBnbpkNzkG TVt2XypPsW3ztcjEl9bzf81Am5Nl0oOxaNFgbMw= X-Received: by 2002:a05:6808:13c1:b0:355:1de8:bc79 with SMTP id d1-20020a05680813c100b003551de8bc79mr7336829oiw.27.1670772500292; Sun, 11 Dec 2022 07:28:20 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:19 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 13/27] target/s390x: Use ilen instead in branches Date: Sun, 11 Dec 2022 09:27:48 -0600 Message-Id: <20221211152802.923900-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::22c; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Remove the remaining uses of pc_tmp, and remove the variable. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/s390x/tcg/translate.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 96bd37426f..c9afa28c60 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -141,12 +141,6 @@ struct DisasContext { TCGOp *insn_start; DisasFields fields; uint64_t ex_value; - /* - * During translate_one(), pc_tmp is used to determine the instruction - * to be executed after base.pc_next - e.g. next sequential instruction - * or a branch target. - */ - uint64_t pc_tmp; uint32_t ilen; enum cc_op cc_op; bool exit_to_mainloop; @@ -1198,7 +1192,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, goto egress; } if (is_imm) { - if (dest == s->pc_tmp) { + if (disp == s->ilen) { /* Branch to next. */ per_branch(s, true); ret = DISAS_NEXT; @@ -1222,7 +1216,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, } } - if (use_goto_tb(s, s->pc_tmp)) { + if (use_goto_tb(s, s->base.pc_next + s->ilen)) { if (is_imm && use_goto_tb(s, dest)) { /* Both exits can use goto_tb. */ update_cc_op(s); @@ -6253,7 +6247,6 @@ static const DisasInsn *extract_insn(CPUS390XState *env, DisasContext *s) g_assert_not_reached(); } } - s->pc_tmp = s->base.pc_next + ilen; s->ilen = ilen; /* We can't actually determine the insn format until we've looked up @@ -6490,7 +6483,7 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) out: /* Advance to the next instruction. */ - s->base.pc_next = s->pc_tmp; + s->base.pc_next += s->ilen; return ret; } From patchwork Sun Dec 11 15:27:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633077 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991884pvb; Sun, 11 Dec 2022 07:30:45 -0800 (PST) X-Google-Smtp-Source: AA0mqf6TwDfk1bekR8VtbrhhmMpaBsLJcPMJEg1c4hxkmjww09hgIc5lomqjpYTjNeAtUI47KXzb X-Received: by 2002:a0c:ab1e:0:b0:4c6:eb63:9afd with SMTP id h30-20020a0cab1e000000b004c6eb639afdmr16385285qvb.26.1670772644966; Sun, 11 Dec 2022 07:30:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772644; cv=none; d=google.com; s=arc-20160816; b=gkFVLlv7vQvUjqwQynSKKEKk1fgl36Te5ogqiNcqur6WVWaS9zh4IWOyc3CfA77+vU tENskEfX0vJYXqbJjsXE5Z6dgicxAZPYdmtL45BGf/WneflR0c0sbHZ93im2dStE2XvX bYklJwsEhk/xZvdP65tU/MbOoyb90TG1mF8Ufr1INh1jFYgrWa70As4YPrGvfOjna7tN r0UorQYUsu0P9Yl50HAm7TXjEkyIqEOuTpFXhU1Fo7wZyWcMdjVK/57SCa5pR7CcH1L2 9d16gQpYXdK+u7TwU9FC2WJhx0ALAwIxiFVdxi83k0pEytHLhfGkIjLAVoXyzXwUaXSB 5SOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=vh4p13H2zViKHartLXadg1WDfoyDsm5UJJHMM3R8D9c=; b=locM9w3BuREgxsElzawDZ533gRG9eq1S7U4paJ6h5jA9QoSd9xntPf38kXQdkz4Ccx zidNnlHTc6DiD5a/1wcqHZPbK006wkgTnkHoRaweHA4wpWNSK7oH/IRdsNNTcdg0XLOe a0LCVWZdjZ9y5CofFZzGIdu1pUIyPU/IKVvmaSbA4JOMjab+WrkK7e7h97bo+YgJCXik RFKrOemIiFXdWOP4N3ec5amEtRKCwcy86CUtV+rftOdmu1XSMOGInwm/bTl6zIIa8cu/ rr1rBYDdOj17oJNzhHQUZyJktCDW2LvMB163RIvPNExmrBEOuulCnNc6i50HuwQsoMKL i0HQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fKhhc0Db; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t14-20020a0562140c6e00b004bbf5db39e8si3759804qvj.259.2022.12.11.07.30.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:30:44 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fKhhc0Db; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFp-0006SZ-Dw; Sun, 11 Dec 2022 10:28:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFk-0006MB-E6 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:32 -0500 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007eU-RQ for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:32 -0500 Received: by mail-ot1-x32b.google.com with SMTP id m7-20020a9d6447000000b0066da0504b5eso5824027otl.13 for ; Sun, 11 Dec 2022 07:28:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vh4p13H2zViKHartLXadg1WDfoyDsm5UJJHMM3R8D9c=; b=fKhhc0Dbs3zvZUralS7r5pAVhDbcRO0V+OAvdPewXahMsffmyd64iy1IiHa0jjs0gP 5X6VEP2Urp4v0FIGW0rd9WdZ4JHkilNxdI78nSMd9G37sh1jbq1XVcGIMDvW1D6ubJ8F DTC6uRh75lL964ROi7HJPlzrntYuR+cghiE0NOUfMo080vcot75EEm0HgAWgHHIDu/aM MJ0T9Ao9TZKMhXmXudyDaDXRdTSt5RkloqPiby7Dlg5Qn0sEPk3GIHTiC6qs79685qDF gReIgQEAYTUFdj5DR7ugc+gv465JMLwjHPgEy6gBREsEtNT4nD97CKPEai0mnqFjuuXL zbBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vh4p13H2zViKHartLXadg1WDfoyDsm5UJJHMM3R8D9c=; b=1KVd0dTMIZBLzSccSEH60wvdFTUa+0zgzXMnE/CN8I9+lN2ywOdaSlz+DEbGV0tnmg nH7rmIa1rR9Z5/BrLf5eohPmFz4LAKZEdQS3yZiUVOByN+OJAbA7d1GcbTFl/lz9aOSy JJEFbvpLYdR9qubcbqkB+5pFGGiOuvyPVPFtv56RegBXrCpNKmKjzub1ExX3mlRDkJiB aKm1Ei0qFF5vHavpq8SrfYWYdGufUoTN87FszndEKGtGBQVlks+AOVTSwC8Zq255NCE9 1SGx4EEY84doBb7/QGMnvaTW56ZME/jOFMcIJVgZcwPNi41R6ElP/IdDyEQT3iKTOmYd sC9A== X-Gm-Message-State: ANoB5pnbmqw8kD46VS4oVnJb5FiyCytJs3ft04E4KW6HyFpn0yGCRRz/ Nxz3K3RoVMGa+VFIKyZpDklGHMrYh/ds5neuzCg= X-Received: by 2002:a9d:7699:0:b0:661:dfe6:9732 with SMTP id j25-20020a9d7699000000b00661dfe69732mr5648856otl.1.1670772501375; Sun, 11 Dec 2022 07:28:21 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:20 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org Subject: [PATCH v2 14/27] target/s390x: Assert masking of psw.addr in cpu_get_tb_cpu_state Date: Sun, 11 Dec 2022 09:27:49 -0600 Message-Id: <20221211152802.923900-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32b; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org When changing modes via SAM, we raise a specification exception if the new PC is out of range. The masking in s390x_tr_init_disas_context was too late to be correct, but may be removed. Add a debugging assert in cpu_get_tb_cpu_state. Signed-off-by: Richard Henderson Reviewed-by: Ilya Leoshkevich --- target/s390x/cpu.h | 20 ++++++++++++++------ target/s390x/tcg/translate.c | 6 +----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 7d6d01325b..c7eeebfc53 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -379,17 +379,25 @@ static inline int cpu_mmu_index(CPUS390XState *env, bool ifetch) } static inline void cpu_get_tb_cpu_state(CPUS390XState* env, target_ulong *pc, - target_ulong *cs_base, uint32_t *flags) + target_ulong *cs_base, uint32_t *pflags) { - *pc = env->psw.addr; - *cs_base = env->ex_value; - *flags = (env->psw.mask >> FLAG_MASK_PSW_SHIFT) & FLAG_MASK_PSW; + int flags = (env->psw.mask >> FLAG_MASK_PSW_SHIFT) & FLAG_MASK_PSW; if (env->cregs[0] & CR0_AFP) { - *flags |= FLAG_MASK_AFP; + flags |= FLAG_MASK_AFP; } if (env->cregs[0] & CR0_VECTOR) { - *flags |= FLAG_MASK_VECTOR; + flags |= FLAG_MASK_VECTOR; } + *pflags = flags; + *cs_base = env->ex_value; + *pc = env->psw.addr; +#ifdef CONFIG_DEBUG_TCG + if (!(flags & FLAG_MASK_32)) { + assert(*pc <= 0xffffff); + } else if (!(flags & FLAG_MASK_64)) { + assert(*pc <= 0x7fffffff); + } +#endif } /* PER bits from control register 9 */ diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index c9afa28c60..fcf0c52b8d 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -6491,11 +6491,7 @@ static void s390x_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) { DisasContext *dc = container_of(dcbase, DisasContext, base); - /* 31-bit mode */ - if (!(dc->base.tb->flags & FLAG_MASK_64)) { - dc->base.pc_first &= 0x7fffffff; - dc->base.pc_next = dc->base.pc_first; - } + /* Note cpu_get_tb_cpu_state asserts PC is masked for the mode. */ dc->cc_op = CC_OP_DYNAMIC; dc->ex_value = dc->base.tb->cs_base; From patchwork Sun Dec 11 15:27:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633093 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1994535pvb; Sun, 11 Dec 2022 07:36:45 -0800 (PST) X-Google-Smtp-Source: AA0mqf5XmI1m86BDl3YzS36E43QvDlcKc7xTYj/AgEhptqH/s1mNkXYHLyPdlzGn/cbgTmZY4juK X-Received: by 2002:a0c:f689:0:b0:4dc:3f9:d44b with SMTP id p9-20020a0cf689000000b004dc03f9d44bmr5741683qvn.7.1670773005434; Sun, 11 Dec 2022 07:36:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670773005; cv=none; d=google.com; s=arc-20160816; b=v6HVxESQVWe7IvTNsN1Ru4rOawY0oxhe1QqaDUG5m8X8F3+NPD5lYtVgqMe3+8FxQM rP8vIPkvs8qeqVuZFF1z6u5SGoeiD7jPM85yv/a70c2We5LF7Vu42Gj32Ee4vsLdJXw/ Q8orYpkRhFbyqccTTWvnXXf3ejYKNFUm8kGdrbAO8WIUTtHVla7R5tDrXig/3s+5q3gx 7QPxPo87aCzX9cYyb2QFMQ5+teDJCVY6JZwljCewk8feJZW3QR8evmnskART15GqHxnX au00dlNJMGFddKbn6GOM22LZZrSh4TaELZ4MEB62YuXN9SvC+50gZg1q2/rt7pcmCcPh 5S8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=J8b95IT5scMPMa6HMgtE3iOPqIKnAQ1oJe1+BaYEyyY=; b=DL7yVGfDyfq1vfhxlyFb4V/yiOBBXMyqsuFMmWbztqC4zoHOMdUBhH4IkVkyEnF9pN KwO4xR5yEv2buihel6joiYnOkR6XJGZEcgUrznkelkIrRCjBtHKUUFrC2zwqLKp2wn3v avP5uqzVd9PnTbGjqmX8cUjU5Bz99j1VHFZvXyGklbHkHqpKweaSsWq/0VuVvEhntg7F tfbAYs2mYpYSYoEoMJzzg3VTZiYoLi4UsVyAGOOEnVBTNN1kor55/ThPpMdpuv5dHZ7S 75QrGQWA9JAFhNutc0WGMKgGhY+u4tA5AaqWeqeeqCA7nlruj6peNF7Q05pU2KPD81Ar 9CZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Lokc+qjm; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id s201-20020a37a9d2000000b006cf03b4c696si2689625qke.257.2022.12.11.07.36.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:36:45 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Lokc+qjm; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFn-0006QS-6O; Sun, 11 Dec 2022 10:28:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFk-0006M6-C3 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:32 -0500 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007BV-Qd for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:32 -0500 Received: by mail-oi1-x229.google.com with SMTP id n205so9090332oib.1 for ; Sun, 11 Dec 2022 07:28:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J8b95IT5scMPMa6HMgtE3iOPqIKnAQ1oJe1+BaYEyyY=; b=Lokc+qjmu1xee0mfs7Kbx92NS8A3NegIFeA7TxonGTSoX9kdNn9H3949mUF0Dl3Afn BlNqK0mBkekGyjensyi+ZYdcq6nfnuOcOSn7ibk9pbhHpEtOTjuzpTdNEKa9pvYNXDB5 4OmVFDgFJORrDeg/B8nCqhOaU+8hfbJoAJNJwjH+FyWqG6GBjImtV5EFDGsL6M5KG2FC TPzg0lbqYSsmNoHWPoCuJKFq6U9/LthFq3GNX71EEnt7bpvR2KC9Lm/3SZ3nKpdR25Nw G8vQOkpZUEWqjo5gEHu1fzXeMYeCSF9EDAVXqUHqcZRGHQy1PR4oeqVdnjR5RTdtoush HpNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J8b95IT5scMPMa6HMgtE3iOPqIKnAQ1oJe1+BaYEyyY=; b=tvedS/mnPrtOTjBKHh/2+bSsBs3ytpYII9EroeKj893vvuiZUZ9aja6b8lPVGYm5S2 NffqRbLCPTosTcZVlQnb/DH5fG1j/1kikuR8+wwEkvhulUpIoI+ZL3gdN3bMJi13DuKW 1FJGmRRLHPOAACfAhN9AjLuksXtH3Kp+VeeCrXCnwmqCZyPtuDvD2zn82VgjSGy/YhhQ Xue1i50Nd0PsTbZ+FWrW/Seo2dQgtpMn7qSQeOldSfCtbQoEFo99guNjs9/1UCaSEFrx kttXW2IPfvRq+BsiBALrKwGAyzhnbuymlFyx150tPXr9iOQhmTUUok/XyLNJMFY5MaiN wx+w== X-Gm-Message-State: ANoB5pnfqEDNDD4MtMPWLINtkSOMJHwSAJcNyvQaImP1VuG7leDMdUuC z9yCijWIytv7dx/l+IohLGILAvb9FQSt92PsObA= X-Received: by 2002:aca:3d89:0:b0:355:1de9:6530 with SMTP id k131-20020aca3d89000000b003551de96530mr4994747oia.18.1670772502461; Sun, 11 Dec 2022 07:28:22 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:22 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 15/27] target/s390x: Add disp argument to update_psw_addr Date: Sun, 11 Dec 2022 09:27:50 -0600 Message-Id: <20221211152802.923900-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::229; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x229.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Rename to update_psw_addr_disp at the same time. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/s390x/tcg/translate.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index fcf0c52b8d..c7adf0d72a 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -336,9 +336,9 @@ static void return_low128(TCGv_i64 dest) tcg_gen_ld_i64(dest, cpu_env, offsetof(CPUS390XState, retxl)); } -static void update_psw_addr(DisasContext *s) +static void update_psw_addr_disp(DisasContext *s, int64_t disp) { - gen_psw_addr_disp(s, psw_addr, 0); + gen_psw_addr_disp(s, psw_addr, disp); } static void per_branch(DisasContext *s, bool to_next) @@ -444,7 +444,7 @@ static void gen_program_exception(DisasContext *s, int code) offsetof(CPUS390XState, int_pgm_ilen)); /* update the psw */ - update_psw_addr(s); + update_psw_addr_disp(s, 0); /* Save off cc. */ update_cc_op(s); @@ -1168,11 +1168,11 @@ static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) update_cc_op(s); per_breaking_event(s); tcg_gen_goto_tb(0); - gen_psw_addr_disp(s, psw_addr, disp); + update_psw_addr_disp(s, disp); tcg_gen_exit_tb(s->base.tb, 0); return DISAS_NORETURN; } else { - gen_psw_addr_disp(s, psw_addr, disp); + update_psw_addr_disp(s, disp); per_branch(s, false); return DISAS_PC_UPDATED; } @@ -2448,7 +2448,7 @@ static DisasJumpType op_ex(DisasContext *s, DisasOps *o) return DISAS_NORETURN; } - update_psw_addr(s); + update_psw_addr_disp(s, 0); update_cc_op(s); if (r1 == 0) { @@ -3175,7 +3175,7 @@ static DisasJumpType op_lpd(DisasContext *s, DisasOps *o) /* In a parallel context, stop the world and single step. */ if (tb_cflags(s->base.tb) & CF_PARALLEL) { - update_psw_addr(s); + update_psw_addr_disp(s, 0); update_cc_op(s); gen_exception(EXCP_ATOMIC); return DISAS_NORETURN; @@ -4490,7 +4490,7 @@ static DisasJumpType op_stura(DisasContext *s, DisasOps *o) tcg_gen_qemu_st_tl(o->in1, o->in2, MMU_REAL_IDX, s->insn->data); if (s->base.tb->flags & FLAG_MASK_PER) { - update_psw_addr(s); + update_psw_addr_disp(s, 0); gen_helper_per_store_real(cpu_env); } return DISAS_NEXT; @@ -4728,7 +4728,7 @@ static DisasJumpType op_svc(DisasContext *s, DisasOps *o) { TCGv_i32 t; - update_psw_addr(s); + update_psw_addr_disp(s, 0); update_cc_op(s); t = tcg_constant_i32(get_field(s, i1) & 0xff); @@ -6473,7 +6473,7 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) if (s->base.tb->flags & FLAG_MASK_PER) { /* An exception might be triggered, save PSW if not already done. */ if (ret == DISAS_NEXT || ret == DISAS_TOO_MANY) { - gen_psw_addr_disp(s, psw_addr, s->ilen); + update_psw_addr_disp(s, s->ilen); } /* Call the helper to check for a possible PER exception. */ @@ -6542,7 +6542,7 @@ static void s390x_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs) case DISAS_NORETURN: break; case DISAS_TOO_MANY: - update_psw_addr(dc); + update_psw_addr_disp(dc, 0); /* FALLTHRU */ case DISAS_PC_UPDATED: /* Next TB starts off with CC_OP_DYNAMIC, so make sure the From patchwork Sun Dec 11 15:27:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633095 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1995313pvb; Sun, 11 Dec 2022 07:38:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf7XubCG+TsAA7PJpWA/WQouEf97hbBXntJ+/6eW+49Xzth+ODgxqV3c7oH6lBBe8BDsGY10 X-Received: by 2002:ac8:5ec6:0:b0:3a7:eab2:e461 with SMTP id s6-20020ac85ec6000000b003a7eab2e461mr16941391qtx.25.1670773120682; Sun, 11 Dec 2022 07:38:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670773120; cv=none; d=google.com; s=arc-20160816; b=Yc4RGlUvVxS/HpdgK7OVrtLAEnIT7/Nn3n0P8qdazMPDIW4SvVfNXyZZtP6KmjCQrh iu1MU4rTt6AU0eKg1S8p+XVPKY4FUJvY4fsIgb9D6bolyAJGYIDruZGR8GqsCBZLtdg8 akVBn3Rw3h+uP0lJEAk0iHpqG9oP/o16XL4tFtKYLgyvUcXWIaO/OVu/3MpUT78tKA3I kJ0wlGLVxM/0D45BkjSXct1TUZBtzHlqFpFCz0j4O2TIU4PD/Py0KOzwFQ+UHW9ooW48 wQkk6TlucL7WnyF42uINbCpnkzjDfoYr1YWNjwUMotP5uXBEC67Z2euZnRYhpBuLS6sb j2AQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=iHP2OeuMx3QS+Hc+EMNNXZmVyNHjtf95ORFV/MSLczs=; b=Aw9c2NgHk9/qh0kxUDxDM4oXExebIkxBhAquYQwA6nVbcHHb9ZfrD7D6ibvnKDLOp+ 26/qeTvfiZ3PfcEarv9MEluFNZQx14pKj634U+UQbN1pK8peG+n0AYPr3wkVQ7MGBvEQ 1mvzpzaRALKcZ2aCfE9isjhvW0Pd8mhdr39ApPwlYsv9f5FDQmnQb2EwRli7sEY4BzSB +X+xEoG6/gJwPcFsptAmxOFE7D5zJEfKSHrrL4SgSCnxOBI2UL75H9i6tERQ27BfRIYm misTtTA5w9wzT7uM1Oa6dLDPDcispp3gWnXu9bzIKbS/jA3SeQSB4TxPSHzZq4gshFi0 kpog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=arRSB5wY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id r21-20020ac87ef5000000b003a5214d70e9si3924848qtc.678.2022.12.11.07.38.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:38:40 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=arRSB5wY; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG7-0006a3-3F; Sun, 11 Dec 2022 10:28:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFo-0006Rj-Hn for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:36 -0500 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFg-0007kM-0G for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:36 -0500 Received: by mail-ot1-x32f.google.com with SMTP id db10-20020a0568306b0a00b0066d43e80118so5859162otb.1 for ; Sun, 11 Dec 2022 07:28:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iHP2OeuMx3QS+Hc+EMNNXZmVyNHjtf95ORFV/MSLczs=; b=arRSB5wYDbKJetGre27wb7JkJGS+cXilxzutuXHPJpSgwCznxY1lGzE+S/pr1AftDr yrKu0n1jf/xAoVGSWIrYO7V2xUuY8c7LkjcgAv3UG1ulPxPREGwLpLFfv2MhlPuklv6b BWhmZ+WA4gBkX+lTIkybDm3jGu+RD/nsnqwYFeB8/6h3r6MjXX196XaWFRj1F5pIHVBk SneyzbBgOuJ5kIceHuNnJXZdXzKkg4YGYzQsxj7pi35MoDyRtQekjX1bjfVhv+0lLF28 uBGAJI7yZduiPDkJzOdrehXDNj3Rbt7atvoHJvUFpqPv11Scor9JpgvVZrKIv3d6k+UT sF3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iHP2OeuMx3QS+Hc+EMNNXZmVyNHjtf95ORFV/MSLczs=; b=gRmOsmjgtxBg+USVCxAN8NPeJ0IZtydwpjg59MVfRTxtfWOuagrJDHlA6i55dtvURW LHd5qsl18t+tm1T2eSNKXYwGRdYWXRD9Xf4/W8JEuqM1QktbAntl/4CrnLPGK1ZmW7Cq dFyyTJeKKVEfq6sitHZ3QqDmbjgi1F/iWpBErjP6WaCrMpRYjr1vdLxMkviHqVkG190w tIIF3JF3wzvplUi6LbPFDBX3yCHpkwIPvsN9FXJy97Sniv+/pMAZEJDq/uY8DMewicVi wFAEGkCerDj6LjCJ3V2LzfnppM/4vOiAr5PsZQsoRrUSPCWP0Xgy/iTOPvTZtiAmLWAz 6b6w== X-Gm-Message-State: ANoB5pkSo116CMGS81OyvGuf2enmvDcPNWN6NWrOy8SCMC0l/E9LD00R p570FBepYdLsmHFZC2zzG4wJJ9/+TAdeAizkaWE= X-Received: by 2002:a9d:6455:0:b0:670:8cc8:3a02 with SMTP id m21-20020a9d6455000000b006708cc83a02mr1248692otl.12.1670772503675; Sun, 11 Dec 2022 07:28:23 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 16/27] target/s390x: Don't set gbea for user-only Date: Sun, 11 Dec 2022 09:27:51 -0600 Message-Id: <20221211152802.923900-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org The rest of the per_* functions have this ifdef; this one seemed to be missing. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index c7adf0d72a..5842a13a97 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -384,7 +384,9 @@ static void per_branch_cond(DisasContext *s, TCGCond cond, static void per_breaking_event(DisasContext *s) { +#ifndef CONFIG_USER_ONLY gen_psw_addr_disp(s, gbea, 0); +#endif } static void update_cc_op(DisasContext *s) From patchwork Sun Dec 11 15:27:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633075 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991733pvb; Sun, 11 Dec 2022 07:30:29 -0800 (PST) X-Google-Smtp-Source: AA0mqf76+C7tfIpMYv6WuTrd5qsRNYs9vqG9pN+zRyFCvJPaiOMM0D+tNluPKznCOm0nq1vchXT6 X-Received: by 2002:ac8:44ab:0:b0:3a5:f932:f167 with SMTP id a11-20020ac844ab000000b003a5f932f167mr18758441qto.52.1670772629063; Sun, 11 Dec 2022 07:30:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772629; cv=none; d=google.com; s=arc-20160816; b=wIG4UUUjjr8j4bV54FlMAjvOFa5oRQnJPavW9WrQGr8PDnUQOQUWWcfFJiauu0hOep x9CZtUi0+p/IM5SER3F1RcCrr99CnR2ju8ga3OGZXCORy/7PhCQ0XA7hQl+c0c5cUnt4 D/1IDF/27T5CwAXvwiuXO0ZxAr/TLiFByR3/11XFjav1GIRT6tIB8ok7d6oIyF4teQuH rZjm5RKxOane6gE5KvefE6cLJWXCDi/vDmOF/LeJOGbz2jw4KzhMAUbw2eXtHfUYithv yDRdwGl1A+U9EP2JPb1IMX3asS7L6VZFw2JUajOUoxWpGELP5yPf9vg11A5Kt58FBvst YvWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=8ORrX5TPBVZIoXMgmIEeKkVB5rHllP4+yQzO9tfkv6A=; b=iNXkyb0pbXExEOICbpNO4eachGytDll0Tkqyc9PhHMOzIOw5YYBabqcpEek29Tamuq tK6G/q4ysHZg6908MobJabf5Y0bdhejx3S0Pdp0EKHtf/8G6YFAqoWWlVnU3TrWAwBsv y10cf4NIeMv6xp/0/qZg1XMdrFd4puGx0nnkuaNwhwKatH5myQX+n2cb8Nb9oXBlBPHQ kWXj6aMr2enbzCfoYyt4GmN7jD0w1e70wgDOXEmSJ60lfe+QAoaZFB6X0d9wbj32xFyL vxU0gIv96vhcXLMF9brvtH/YHBdqUsaMm1aJBFOuenJjfzWlIP12iYWbjQMsx1npm8+J R62A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=MDtXRg5r; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x18-20020a05620a259200b006fb65bd06bbsi3141308qko.429.2022.12.11.07.30.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:30:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=MDtXRg5r; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFl-0006OH-I5; Sun, 11 Dec 2022 10:28:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFi-0006JZ-Vx for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:31 -0500 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007os-PV for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:30 -0500 Received: by mail-oi1-x231.google.com with SMTP id r11so9041432oie.13 for ; Sun, 11 Dec 2022 07:28:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8ORrX5TPBVZIoXMgmIEeKkVB5rHllP4+yQzO9tfkv6A=; b=MDtXRg5r6TGGnb0nVHpR5xII7u2F0nqTihmtv+4GaNZMpft8j4Goz6s0VIWKN7zu48 3PgnKiczriFKajKSSJr4ZjuuoXG2XdFnGIuhjuznUZz9yjDLguklLLl4hjwvM3KD0ohG 1jFLZwTMNiwrtA5nRgqiYd7wFWNaQDyPbJ4g1jpytNoK0/9OzrFAvjqCphFGU/6wKTDN Gpr1AoRfuhRWzrYiNxfz+WKZwUwpAamOOc4WLHfStxgg5gHKWu2/decA+STON2BxvkdG 3w7g7t+zrM2OmUGlKHgS9Kf2MHizFcms6DUsHoUpj8Y1ThE6kNws0WudWhHazccmJxzm UDjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8ORrX5TPBVZIoXMgmIEeKkVB5rHllP4+yQzO9tfkv6A=; b=tuRTrji7VOY++9HEryRF8RZCJGBKgH5pBCycZxOR/bOKkVvRioN2W487R1ph4RDnzB EcRZzUIVH+YVoCNhPK8tUiGILDAWoEKykUDhU7CfM1miqHUswmIGY8KYvDniF7L3sMcR 8+kDYooklIspdYJRUoslpKDMTliNDUmuf3h9TDfIKPMwGaCWUwIzeYihDuSBc+Yiny6d I2KzW9EpXudpfvnaAE3b6tH9UNnH3wSw89+936w0b9Pf5YCLyWopek0ztjDoQWJmb0gf DS2hebUAPvltKxSl68JYsnhucvNricyUMB0pEwfasOTyj1DujXAtJ1mHIV1KyGOcNvX3 uvEA== X-Gm-Message-State: ANoB5pmOGqHxNAk+KNd7UMjuhg9n79GlmQkjNKVBX2QsHO+IM4TQrpEe rGQf9z8xKCXmQnV86Gt9U9M68m4svLa0KW6HhDk= X-Received: by 2002:aca:1910:0:b0:35e:373e:6015 with SMTP id l16-20020aca1910000000b0035e373e6015mr5851238oii.58.1670772504810; Sun, 11 Dec 2022 07:28:24 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:24 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 17/27] target/s390x: Introduce per_enabled Date: Sun, 11 Dec 2022 09:27:52 -0600 Message-Id: <20221211152802.923900-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x231.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Hoist the test of FLAG_MASK_PER to a helper. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 5842a13a97..28c6e0211f 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -341,12 +341,21 @@ static void update_psw_addr_disp(DisasContext *s, int64_t disp) gen_psw_addr_disp(s, psw_addr, disp); } +static inline bool per_enabled(DisasContext *s) +{ +#ifdef CONFIG_USER_ONLY + return false; +#else + return unlikely(s->base.tb->flags & FLAG_MASK_PER); +#endif +} + static void per_branch(DisasContext *s, bool to_next) { #ifndef CONFIG_USER_ONLY gen_psw_addr_disp(s, gbea, 0); - if (s->base.tb->flags & FLAG_MASK_PER) { + if (per_enabled(s)) { if (to_next) { TCGv_i64 next_pc = tcg_temp_new_i64(); @@ -364,7 +373,7 @@ static void per_branch_cond(DisasContext *s, TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2) { #ifndef CONFIG_USER_ONLY - if (s->base.tb->flags & FLAG_MASK_PER) { + if (per_enabled(s)) { TCGLabel *lab = gen_new_label(); tcg_gen_brcond_i64(tcg_invert_cond(cond), arg1, arg2, lab); @@ -665,7 +674,7 @@ static void gen_op_calc_cc(DisasContext *s) static bool use_goto_tb(DisasContext *s, uint64_t dest) { - if (unlikely(s->base.tb->flags & FLAG_MASK_PER)) { + if (per_enabled(s)) { return false; } return translator_use_goto_tb(&s->base, dest); @@ -4491,7 +4500,7 @@ static DisasJumpType op_stura(DisasContext *s, DisasOps *o) { tcg_gen_qemu_st_tl(o->in1, o->in2, MMU_REAL_IDX, s->insn->data); - if (s->base.tb->flags & FLAG_MASK_PER) { + if (per_enabled(s)) { update_psw_addr_disp(s, 0); gen_helper_per_store_real(cpu_env); } @@ -6349,7 +6358,7 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) } #ifndef CONFIG_USER_ONLY - if (s->base.tb->flags & FLAG_MASK_PER) { + if (per_enabled(s)) { TCGv_i64 addr = tcg_temp_new_i64(); gen_psw_addr_disp(s, addr, 0); @@ -6472,7 +6481,7 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) } #ifndef CONFIG_USER_ONLY - if (s->base.tb->flags & FLAG_MASK_PER) { + if (per_enabled(s)) { /* An exception might be triggered, save PSW if not already done. */ if (ret == DISAS_NEXT || ret == DISAS_TOO_MANY) { update_psw_addr_disp(s, s->ilen); @@ -6497,7 +6506,7 @@ static void s390x_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) dc->cc_op = CC_OP_DYNAMIC; dc->ex_value = dc->base.tb->cs_base; - dc->exit_to_mainloop = (dc->base.tb->flags & FLAG_MASK_PER) || dc->ex_value; + dc->exit_to_mainloop = per_enabled(dc) || dc->ex_value; } static void s390x_tr_tb_start(DisasContextBase *db, CPUState *cs) From patchwork Sun Dec 11 15:27:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633074 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991565pvb; Sun, 11 Dec 2022 07:30:03 -0800 (PST) X-Google-Smtp-Source: AA0mqf5pjs+HlmQ57JCjfh1CVv5pSxnj1ChP1DO4Xma9BACF6fcav6GUu/Qo8b5RDmAdpRng9Ug7 X-Received: by 2002:a05:622a:4d8e:b0:3a6:258d:4387 with SMTP id ff14-20020a05622a4d8e00b003a6258d4387mr18419346qtb.13.1670772603717; Sun, 11 Dec 2022 07:30:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772603; cv=none; d=google.com; s=arc-20160816; b=E6n6vovcF/Pc+lfegud2fTzz54DoBWTeaDi7CMf3HcBj1JALJrVWMiBYyClLP8/bfZ 8fThKCE4vdnU+iUks1I8yi5wXrqlZUhAIbp05iTBSyH7d90MGpvgSYkG9Ecvys7XPN+V Zy5wnI752WXgystqIM7L+HAzpRm5sEW0crFKUPJHeWB5YrCC5zalCN8J6+kb9szBjdpA cEIVOJHqpx5wV10TPbH1tnd5wv9bML1XjMI4dQ1LJstU4G2l4Mp9ETMwhodvWR9Raz+O cLTkutzi/GGpE19+pPqRnvlzEM40InP/ziRVSccs2PcrYjquAXVxU3Ff/1OL9kfoYi8W vJKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=YL98l6pAG0wMqGHGwjraAdo5XKSqPbbe4JB0KEpW3m8=; b=CcNqtn1rXcNRLWR19XIuGF6hJFq0ODHTtiKY7QKTylu17Hh9Q/Qq3rEUyau4MGwzu3 cwE7Ez7PXy2T5f1xdRDd9F0K+laruJ1QPhBEb82BguAQYSLcvy+Bo/t7lTIJw/X6QNLM WCETfU1kYfc6O50LZ92OjxJpchct/y0fA+SfqfiGhnVzPO+BcIJHqD10CMi8cjR45FRL fBNXqFkn9XfyCoQaPcDDvRggkcssFTwqqJ+vhfUvqJ3pe+BbvdG0P89M5J12RToLt5xt h0in34zSHIyIbXnoXj1ouOPBYlIVCeZrlDo03Oy5hFqElZYxS1bp7HpIw85sKBmyOq8D zybQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EMVCgMup; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t14-20020ac865ce000000b0039d0291153esi3745303qto.357.2022.12.11.07.30.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:30:03 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EMVCgMup; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFp-0006SI-6A; Sun, 11 Dec 2022 10:28:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFl-0006Oi-LT for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:33 -0500 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFf-0007pC-S1 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:33 -0500 Received: by mail-ot1-x32d.google.com with SMTP id v19-20020a9d5a13000000b0066e82a3872dso5837591oth.5 for ; Sun, 11 Dec 2022 07:28:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YL98l6pAG0wMqGHGwjraAdo5XKSqPbbe4JB0KEpW3m8=; b=EMVCgMupVYseNYZLpzWcaMLSgR5q3Q11AmcZQ/MhwWgLlyBXGB0+Oc2y1yweQni8Kh V85VUcmsczM2qHqKYTBm4NiPHv4GWnIeIwa6kLPJdJ362oL2/EBuQRUMdjWTVrom+CNN 79SsyjY7s8uJwv5g7/lOZlTms77vCN8FUsa9n2j5ME9oyIAZZqv3a8n8aALSpiqYZPy1 x8osrGhunEhQ41SgKiIXwRtl5h3epBPddV82WGXRHj6Ml2UMTck35hRhZYKCJVhjrAHb 6667OW8+Ozm1bWC9AN+8IGcDd/TbIhs5xoM5XiBh96mS6rZpOzzHdxnJVXFvJvI7TJ1w 4p6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YL98l6pAG0wMqGHGwjraAdo5XKSqPbbe4JB0KEpW3m8=; b=DCQss7Cyzx8sZClFaWNkuAv8uaaBi9nwgf+hAtzSauvN3yaJtVWY5kOiCqwJfBzJDh jTUulcL7OsuBDpkT7t/AeMSmKNjmw3k04K/Y8EKrypE6RcDx1gYHLQyii7GRZMDob3gE k2OjyBpc25NdQZF/x2OytEpJ25mzBoHKESlIzFBPsDF7gGcc5wBRq7tPvRUSNFTrJxdU 6dRUX6tBQDdh70aawrn90ms4si/A3iqJsKdhPGwWCB94Rh3CqR0qMGmffgke01dNyoZu 4lbxlpYPR/bQ40fWzp/2xBf8TiNZdG8hukO3O3P+K+Gemd7y9YkzJH/Zt+qig2Sw+2CC RjTA== X-Gm-Message-State: ANoB5plXWcUqQAv4hVf7YNi0exLNbbwIzOlYDMh++yeQLviyI4criTYX gJiIWp/7p4OAOd+5axEhLvN1VO/+q2qUhkE9/fo= X-Received: by 2002:a9d:654a:0:b0:661:dfeb:ea49 with SMTP id q10-20020a9d654a000000b00661dfebea49mr5208235otl.8.1670772505944; Sun, 11 Dec 2022 07:28:25 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 18/27] target/s390x: Disable conditional branch-to-next for PER Date: Sun, 11 Dec 2022 09:27:53 -0600 Message-Id: <20221211152802.923900-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32d; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org For PER, we require a conditional call to helper_per_branch for the conditional branch. Fold the remaining optimization into a call to helper_goto_direct, which will take care of the remaining gbea adjustment. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 28c6e0211f..9e84f706d5 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1203,13 +1203,12 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, goto egress; } if (is_imm) { - if (disp == s->ilen) { - /* Branch to next. */ - per_branch(s, true); - ret = DISAS_NEXT; - goto egress; - } - if (c->cond == TCG_COND_ALWAYS) { + /* + * Do not optimize a conditional branch if PER enabled, because we + * still need a conditional call to helper_per_branch. + */ + if (c->cond == TCG_COND_ALWAYS + || (disp == s->ilen && !per_enabled(s))) { ret = help_goto_direct(s, disp); goto egress; } From patchwork Sun Dec 11 15:27:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633080 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993052pvb; Sun, 11 Dec 2022 07:33:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf6DCKBK0lDMpDIdAwPuSuH4zndRe8uiWhmL/xobP7yH6okVUeqRCn82PnqpJVhw2pm1B0W4 X-Received: by 2002:a05:622a:1143:b0:39c:da21:f1a0 with SMTP id f3-20020a05622a114300b0039cda21f1a0mr19230611qty.1.1670772797648; Sun, 11 Dec 2022 07:33:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772797; cv=none; d=google.com; s=arc-20160816; b=gtfvyoY1CBtvEo9g/kXTDD5HAX1OAzL7tRP00WxO+VoyTUcRizywVeDIACfb4Okqzm AHl5d4kPUXykS2mueDFD2v1mViVsAGar6WFzTerhCcw6Gl5odPmUj/ASiAwf0qpSrEPS 5Vu9X6hfCwuMrH6rnvTPjjiJyRAO4VjzRQIVVp6fSxxUHmY6TirzZNlx88zorZbRBhg5 JInYy88bfk8X5K3rKunvTHTxbH/+4CQFOuosGTkUoPhPe8f2POLwm/2ri1aflApbb6VE 4hpEr3NXwfVvkRnSwd1Vk9ynd6Ce1rV+BsrywgMiZ9zeXh6GIh3UhHaYIGUZKRx/hBaJ bRlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ougmtZxo3v3SsRwj4T+NvGRyt5F/WZFuGGwZrMTtC10=; b=hJGklKVRSd4qKAeHeXoAt0EpG4Cv8Qp099bo+kcAvhD2iqmgCdl5A5JuGm9Tdt8eZ/ b1AFUc0HfbFH622yAk5ddXK6c2tgU935KpY6Pv8WbBuLA+zK6JcBIpIH685ID6FE4HzQ iZDnBaC9I8nB6F7AOVr3k8GlnFiHK8ZQv20Lbs0Pv29GkbdnXdrRprSwmpOUoK4koeo3 ORp+YgbMl/wIOO58WMd/Z4dKP0EAn+if5tTyFvJn82ZqqtIUPDAFS93mGrCzUs2nwNn5 d8YmW6WeLHehu+4xPIiseUfhNY9qS0LN7hUcvz7KDKO6+42Kfgyhuk7952BDhsnQwnvB i63g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ltZtH+n3; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f2-20020a05620a280200b006fba0a3a2d7si3183623qkp.718.2022.12.11.07.33.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:17 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ltZtH+n3; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OFv-0006VM-F6; Sun, 11 Dec 2022 10:28:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFp-0006SY-B0 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:37 -0500 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFg-0007pK-GY for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:37 -0500 Received: by mail-ot1-x333.google.com with SMTP id l8-20020a056830054800b006705fd35eceso5835913otb.12 for ; Sun, 11 Dec 2022 07:28:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ougmtZxo3v3SsRwj4T+NvGRyt5F/WZFuGGwZrMTtC10=; b=ltZtH+n3dsvT9WWPPrMWDe8ErUY9UldG+8nLlXhMnMXIxv61IPLV6pWOIMMz+pB4m2 YADLq2SCfBrR6jeVTv1NiFXN7AtAst4lLuRZmHk21dCZl2bD0hVxFheWet2Td40m80/o LBBk/HpRF7b3JWSPBtYcHWan+Lg2xL9r1f6K1PjAkOdLSS8ZKNNshq90o3QTFM9fCu5N C3tu+D8w6gzQ17hAthx1bVWites+OcQKIvk+Go+EuhrIgcG5xLN+8HD3Q/S+k4a9ubK/ JNkLSUptt375QgzC2bUrM2KOpJ1Wpxizv4HZhws5CqKV4CGYQIGvzFh6qq7ubbkDhkyg PvZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ougmtZxo3v3SsRwj4T+NvGRyt5F/WZFuGGwZrMTtC10=; b=rNReLxtMazaL0l9R6J+J31RUl0mDjcW8jPrZpA0S6aNViNiWXmorlKm1J0KAF+6giy waqYzI4CI7m20/pSuEROSojj8d0mDIWByBQcjwPsQ3akyTNEC3EAVdhL0CRcEDtkLIec p58FFXOpOeTH9pr5jHZUFBZmUBS4dXZsb4AkPLuiAMmucMQ4HL9NgauWnI98dpWEFJTB kj1rkx3854d6yoeEjHBjU/12azsmX8GzyTmDvPiCRpeEdHlIRZmCO8apihaKSPFxMOwm G2sJ58S8lJAdZux69963xUYHp1i6BLpHQhfMQTcWd2lknljKU8bUzHlu7vFZHHuqnFhS IoZw== X-Gm-Message-State: ANoB5pkcrKIHrZgj0VK7m/9T/zRihMm8VVAPWnMcOGmkSkDw7AF+XZOj dSXlfSgCrENzV7YxtVraxUPCKOfkUApRS7ufeeA= X-Received: by 2002:a05:6830:6201:b0:66c:4634:ab1 with SMTP id cd1-20020a056830620100b0066c46340ab1mr8477300otb.38.1670772507079; Sun, 11 Dec 2022 07:28:27 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org Subject: [PATCH v2 19/27] target/s390x: Introduce help_goto_indirect Date: Sun, 11 Dec 2022 09:27:54 -0600 Message-Id: <20221211152802.923900-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::333; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Add a small helper to handle unconditional indirect jumps. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Ilya Leoshkevich --- target/s390x/tcg/translate.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 9e84f706d5..7506eff4b0 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1189,6 +1189,13 @@ static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) } } +static DisasJumpType help_goto_indirect(DisasContext *s, TCGv_i64 dest) +{ + tcg_gen_mov_i64(psw_addr, dest); + per_branch(s, false); + return DISAS_PC_UPDATED; +} + static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, bool is_imm, int imm, TCGv_i64 cdest) { @@ -1219,9 +1226,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, goto egress; } if (c->cond == TCG_COND_ALWAYS) { - tcg_gen_mov_i64(psw_addr, cdest); - per_branch(s, false); - ret = DISAS_PC_UPDATED; + ret = help_goto_indirect(s, cdest); goto egress; } } @@ -1545,9 +1550,7 @@ static DisasJumpType op_bas(DisasContext *s, DisasOps *o) { pc_to_link_info(o->out, s); if (o->in2) { - tcg_gen_mov_i64(psw_addr, o->in2); - per_branch(s, false); - return DISAS_PC_UPDATED; + return help_goto_indirect(s, o->in2); } else { return DISAS_NEXT; } @@ -1580,9 +1583,7 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o) { save_link_info(s, o); if (o->in2) { - tcg_gen_mov_i64(psw_addr, o->in2); - per_branch(s, false); - return DISAS_PC_UPDATED; + return help_goto_indirect(s, o->in2); } else { return DISAS_NEXT; } From patchwork Sun Dec 11 15:27:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633082 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993082pvb; Sun, 11 Dec 2022 07:33:21 -0800 (PST) X-Google-Smtp-Source: AA0mqf7OpbuIW+I4uU5oVZovvYF9phufaCqedMIbravukk/lMycIVYOqYiSI316sIGos8UZEzIlB X-Received: by 2002:ac8:4a11:0:b0:3a7:f599:1d2c with SMTP id x17-20020ac84a11000000b003a7f5991d2cmr19687380qtq.63.1670772800843; Sun, 11 Dec 2022 07:33:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772800; cv=none; d=google.com; s=arc-20160816; b=zsUpw70FmNU8P3SJA8etq8tIyua23F3auYHYTJXvEHjcTiPnhU/wSgBoX4/6IF9a/G ADc5lIIJGZbYFbOCIkzN4B5ItCtv86YoCuehNqo5+fvZFmT0T9BfEonMZuvauXIHwx0b oxXo3yHqzFjXpUP21Fns3W/wAwIdjI45TERs/jxaE1kx51BY0jxykQhSC9EuJn+pVCdn H+YcnycUKzC1WQMHlcDytcK9NPBTcB9JXPiauEfbD6tYVWq0qgifDhT8k5f+0b7P+Fi9 jo/ETaqRoMVCGda2ksee+VOxU3irtLJ9R1jOECiX/edsrOARHErD/+e8o3bczTdITkFt r8CA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=H8MpUEpMQiUpwtCPeAM5pmeXAHWrn/qz8xIsZr0JfzE=; b=Z1j66EqNu0GRVNPjnxXRELT3vKReqwXOMcGp1o4QB97tUbTOp2Zzn1zLpE4saC2kwS BchNI4cWxO1+CoVp5kcwrymY6VpGAe0fW0EcJjZ74/0+44HTjogdnYXBcbEbS8D+awyo GYA88msPzEoDENcaxSVQSj2lilGwBe3KBk6lwQHFbOU2yqREbK7i80zRKmyIEmkoZ7eB X/M/4lmwbJ0mr/QWPT/IW+NPrkNmcGeapNbz/qGJQOBxUQc5qfONbpGzvi4eKeSAoVnV j0ba45m27gvUDF0C9LqXk0INulYhF1EXostXPYoCxGv8sP8D+GZE5s1+4Y4IuFeMZ1Mg ZsfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ix7+Cxdz; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 15-20020a370b0f000000b006f9b019034bsi2759265qkl.259.2022.12.11.07.33.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:20 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ix7+Cxdz; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG6-0006Zi-Ib; Sun, 11 Dec 2022 10:28:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFp-0006TF-RN for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:37 -0500 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFh-0007tI-D3 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:37 -0500 Received: by mail-ot1-x332.google.com with SMTP id db10-20020a0568306b0a00b0066d43e80118so5859237otb.1 for ; Sun, 11 Dec 2022 07:28:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=H8MpUEpMQiUpwtCPeAM5pmeXAHWrn/qz8xIsZr0JfzE=; b=Ix7+CxdzxAQxolytdhWBYHYSWyNwomrlSHwC6rqluphKWlrhBHKmKu6Nhu1975U67g 6wyOuDE7j6Xq0fXTYisJAPDJwQ9yA97bg/dNwm71vV6ONBYryjAWBdIcoXNnh0HFFzQM slvg+LzwTfcMR0dpiTOwePuPHVmmj90WsoZcfzkeoGr5WrjRzEGl/mif8y0YU7Pl1k6y dHJduMJmm9IKBtbYcrS/sdYsc3Y5PzC4CkiFwu4kOdG8RhSHWxpw+gwdtjqOIGsNI3D2 BJN6QOkDfY3OiMLT6yAo4F1tvjBSS5eLJgDuitedE7gC4rBBzpVQMk593CUl9BDv0BRr utLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H8MpUEpMQiUpwtCPeAM5pmeXAHWrn/qz8xIsZr0JfzE=; b=f7narUV9BtEmuZva95stBQoHh+U1VAr5ZYBN3DBYe8Z5CCqfWG+H0PcVeK53Hrsd5J IwpXO2yEtndPpYRGqLFd6Csx0LR+Vyw5AAZkUKzbgAOj0WiHxsudoixhwDWaCNB5TkAQ EXiTzq5hVQdspx3hn9hCY/W14cSVovShPetked+1pLxjTUOENPlKxnsEcyooWP9kGhrR vEQIzF9Z5l9Btrfc6+oRHzxFFcuWyqqR8i9ONF6qCEVkbC0VeO2mOMZs/W4vL7iHNfRw /cbkvZJHMrl5xUG4q011WF0STxrT+Aie812saHTIjM/T0bB9gXDT+CPgRwSJJqCwFcak iDQg== X-Gm-Message-State: ANoB5pkYb8fKsMud5QzmPUeHWkQh2CHtScxZtPLZICdtoJ2WLUND4l9Z L8zAWpe/MXs7E331JyyP04WypfnodJJkLLNMXDE= X-Received: by 2002:a9d:1ad:0:b0:670:583a:467e with SMTP id e42-20020a9d01ad000000b00670583a467emr7634743ote.13.1670772508293; Sun, 11 Dec 2022 07:28:28 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 20/27] target/s390x: Split per_branch Date: Sun, 11 Dec 2022 09:27:55 -0600 Message-Id: <20221211152802.923900-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::332; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Split into per_branch_dest and per_branch_disp, which can be used for direct and indirect. In preperation for TARGET_TB_PCREL, call per_branch_* before indirect branches. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 7506eff4b0..1192024f3e 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -350,21 +350,25 @@ static inline bool per_enabled(DisasContext *s) #endif } -static void per_branch(DisasContext *s, bool to_next) +static void per_branch_dest(DisasContext *s, TCGv_i64 dest) { #ifndef CONFIG_USER_ONLY gen_psw_addr_disp(s, gbea, 0); - if (per_enabled(s)) { - if (to_next) { - TCGv_i64 next_pc = tcg_temp_new_i64(); + gen_helper_per_branch(cpu_env, gbea, dest); + } +#endif +} - gen_psw_addr_disp(s, next_pc, s->ilen); - gen_helper_per_branch(cpu_env, gbea, next_pc); - tcg_temp_free_i64(next_pc); - } else { - gen_helper_per_branch(cpu_env, gbea, psw_addr); - } +static void per_branch_disp(DisasContext *s, int64_t disp) +{ +#ifndef CONFIG_USER_ONLY + gen_psw_addr_disp(s, gbea, 0); + if (per_enabled(s)) { + TCGv_i64 dest = tcg_temp_new_i64(); + gen_psw_addr_disp(s, dest, disp); + gen_helper_per_branch(cpu_env, gbea, dest); + tcg_temp_free_i64(dest); } #endif } @@ -1172,7 +1176,7 @@ struct DisasInsn { static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) { if (disp == s->ilen) { - per_branch(s, true); + per_branch_disp(s, disp); return DISAS_NEXT; } if (use_goto_tb(s, s->base.pc_next + disp)) { @@ -1184,7 +1188,7 @@ static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) return DISAS_NORETURN; } else { update_psw_addr_disp(s, disp); - per_branch(s, false); + per_branch_dest(s, psw_addr); return DISAS_PC_UPDATED; } } @@ -1192,7 +1196,7 @@ static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) static DisasJumpType help_goto_indirect(DisasContext *s, TCGv_i64 dest) { tcg_gen_mov_i64(psw_addr, dest); - per_branch(s, false); + per_branch_dest(s, psw_addr); return DISAS_PC_UPDATED; } From patchwork Sun Dec 11 15:27:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633071 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991502pvb; Sun, 11 Dec 2022 07:29:51 -0800 (PST) X-Google-Smtp-Source: AA0mqf6SwpgVFC0FBAsLub+o/2VMFBQVH+ClxUggH/Q6UmBPfZ6DMmeRBR+RgmkXQBaE+d78WIga X-Received: by 2002:a05:6214:5785:b0:4c6:d916:2907 with SMTP id lv5-20020a056214578500b004c6d9162907mr19620520qvb.12.1670772591532; Sun, 11 Dec 2022 07:29:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772591; cv=none; d=google.com; s=arc-20160816; b=YP8L+OqhO93YuUkeUkfpxYMKqxlbzBMF8Luva15RnWa7u1gk0I84uvm+jqftlUnCu8 1oaWN7o7K+LbkGXrsMoGj18nPAIxOqAwrh9AUizAohYzRG8vO93KNvGgZB+mkNENo0QT +1zTmQ0MFoUYjdict68K7ZbgnwwYqMmUUGwI9GFKVW9qF78jhM0mHqqHpS36VbIt0JjY xOzcPbx4JN89SBdyfMNtwG8q5xfx7DoqU/UwTCytWIglHIxIfw9kcu2+H3p6fsNkEMSH Gt12argM+KJi3/idZ50dTsakkI9j+4x5+Irnk91/8ohdm+2JcHtoJvgUzKuIr45rimbR CYzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=n8My9uOu/9XHGfwKArzRxmxgdX0PQ3V3m+s96fguy/Q=; b=S45C+xhwoge9tP0V3cKEusKoU8GkEzJs1THkmi7q8stjM58K69dHsP1TfFmqsgr/Mf SNi/uOs3ZEoqgG6MM08b09yadvsFZS9yhktkCGaokMR9OO7szSMORVclzOo/lgxFbzUP TuNO81nuaQywBg6McBq4CUU9kH9wDgTSAE/Jxun3frV/4Px3jEodUV5y6EVraP1uhRxd 0lpRXq+wcEWGLRsFgx/KOeB1cXMvPmFcNQV/DLPvi+yBIwXxf5cYRU7q50rHSsNtCMrv a01Jtel7O+G1a1voVMQuBggUCa6YxPhn53rRXB0zGACoq/2xBBUFDkP1YtHtAFWUXXxz YzJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yB69Nonm; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id eq7-20020ad45967000000b004c6e1c0298fsi3715746qvb.139.2022.12.11.07.29.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:29:51 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yB69Nonm; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG9-0006cL-7q; Sun, 11 Dec 2022 10:28:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFq-0006Tj-5x for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:38 -0500 Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFi-00080V-Vz for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:37 -0500 Received: by mail-ot1-x331.google.com with SMTP id v19-20020a9d5a13000000b0066e82a3872dso5837665oth.5 for ; Sun, 11 Dec 2022 07:28:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=n8My9uOu/9XHGfwKArzRxmxgdX0PQ3V3m+s96fguy/Q=; b=yB69NonmKtn79bDWyd4pfMSAZ6TBRkeNaem4NHDZHNRzWl+dRL78L9Tw7B5KtKfGxk kZthDzsQbAXcqKP+RXdlsVnHV6E/dt7uNqgvMRzTGWowp3ygXOGZs9pQrxl9wcrtxDcT GdjheLPduMRvoq/bn+9uVdDbw4pCPThJ8en46k4NxV9EkQy1LAovdtycmnDxgaoOAeRy OhOjmVmvZ8GW7U+E7VLit9fhGsqMiM4Dwc1IH11dfEkroXdsBW4TLxpQSm6dFWgpkPB+ nsK5EkfpypW7X2I/Q1bwBEloVDnBsw3X/YP08TlOguzlAywNJ8a9VENA0rFo9QiZdZOm r9Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n8My9uOu/9XHGfwKArzRxmxgdX0PQ3V3m+s96fguy/Q=; b=S8N6NoJDl5GcH2YR2EJbflur2xVBNYbq5dsRBzXd2mMzBR17bMl/dvBppqo4M588jQ tvLL3FNTgm0rvGdYCWASEGjedF+eHW5VBqnmvmcGb6+NHvYH2PlbcUNyr0z6lb5vGIhk cBkirM8RI59k8t3xumdZFkspLDyt1MZktufdEr3F5v3M14VdCBWZ5bFxopSVVeNoVIIY iyQmS2xCAaC7/IG3vnjpkdszfMaKxWczcFiNlFAOp/UsVesOImoBqpafbs0yQ24dhBwH co9etAZy9LfkrbBGCOw356Qf5/mnuvwhQFr34MbGl6YlaDVC5Kn1YBw8FohidzDcoyrX jSHA== X-Gm-Message-State: ANoB5pnRc+UiWRif6ydiydOgfVgomTvTPIQRrq3zx+H6j4XLScRUYQk1 htA8wWTT08HtSMMy8/Jjv4Xr6ryozxlT5ala0Qo= X-Received: by 2002:a05:6830:6b0b:b0:66d:e033:e311 with SMTP id db11-20020a0568306b0b00b0066de033e311mr6626899otb.34.1670772509632; Sun, 11 Dec 2022 07:28:29 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 21/27] target/s390x: Simplify help_branch Date: Sun, 11 Dec 2022 09:27:56 -0600 Message-Id: <20221211152802.923900-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::331; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Always use a tcg branch, instead of movcond. The movcond was not a bad idea before PER was added, but since then we have either 2 or 3 actions to perform on each leg of the branch, and multiple movcond is inefficient. Reorder the taken branch to be fallthrough of the tcg branch. This will be helpful later with TARGET_TB_PCREL. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 154 ++++++++++------------------------- 1 file changed, 44 insertions(+), 110 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 1192024f3e..b7c0d24d75 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -373,28 +373,6 @@ static void per_branch_disp(DisasContext *s, int64_t disp) #endif } -static void per_branch_cond(DisasContext *s, TCGCond cond, - TCGv_i64 arg1, TCGv_i64 arg2) -{ -#ifndef CONFIG_USER_ONLY - if (per_enabled(s)) { - TCGLabel *lab = gen_new_label(); - tcg_gen_brcond_i64(tcg_invert_cond(cond), arg1, arg2, lab); - - gen_psw_addr_disp(s, gbea, 0); - gen_helper_per_branch(cpu_env, gbea, psw_addr); - - gen_set_label(lab); - } else { - TCGv_i64 pc = tcg_temp_new_i64(); - - gen_psw_addr_disp(s, pc, 0); - tcg_gen_movcond_i64(cond, gbea, arg1, arg2, gbea, pc); - tcg_temp_free_i64(pc); - } -#endif -} - static void per_breaking_event(DisasContext *s) { #ifndef CONFIG_USER_ONLY @@ -1205,7 +1183,6 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, { DisasJumpType ret; int64_t disp = (int64_t)imm * 2; - uint64_t dest = s->base.pc_next + disp; TCGLabel *lab; /* Take care of the special cases first. */ @@ -1235,96 +1212,53 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, } } - if (use_goto_tb(s, s->base.pc_next + s->ilen)) { - if (is_imm && use_goto_tb(s, dest)) { - /* Both exits can use goto_tb. */ - update_cc_op(s); + update_cc_op(s); - lab = gen_new_label(); - if (c->is_64) { - tcg_gen_brcond_i64(c->cond, c->u.s64.a, c->u.s64.b, lab); - } else { - tcg_gen_brcond_i32(c->cond, c->u.s32.a, c->u.s32.b, lab); - } - - /* Branch not taken. */ - tcg_gen_goto_tb(0); - gen_psw_addr_disp(s, psw_addr, s->ilen); - tcg_gen_exit_tb(s->base.tb, 0); - - /* Branch taken. */ - gen_set_label(lab); - per_breaking_event(s); - tcg_gen_goto_tb(1); - gen_psw_addr_disp(s, psw_addr, disp); - tcg_gen_exit_tb(s->base.tb, 1); - - ret = DISAS_NORETURN; - } else { - /* Fallthru can use goto_tb, but taken branch cannot. */ - /* Store taken branch destination before the brcond. This - avoids having to allocate a new local temp to hold it. - We'll overwrite this in the not taken case anyway. */ - if (!is_imm) { - tcg_gen_mov_i64(psw_addr, cdest); - } - - lab = gen_new_label(); - if (c->is_64) { - tcg_gen_brcond_i64(c->cond, c->u.s64.a, c->u.s64.b, lab); - } else { - tcg_gen_brcond_i32(c->cond, c->u.s32.a, c->u.s32.b, lab); - } - - /* Branch not taken. */ - update_cc_op(s); - tcg_gen_goto_tb(0); - gen_psw_addr_disp(s, psw_addr, s->ilen); - tcg_gen_exit_tb(s->base.tb, 0); - - gen_set_label(lab); - if (is_imm) { - gen_psw_addr_disp(s, psw_addr, disp); - } - per_breaking_event(s); - ret = DISAS_PC_UPDATED; - } - } else { - /* Fallthru cannot use goto_tb. This by itself is vanishingly rare. - Most commonly we're single-stepping or some other condition that - disables all use of goto_tb. Just update the PC and exit. */ - - TCGv_i64 next = tcg_temp_new_i64(); - - gen_psw_addr_disp(s, next, s->ilen); - if (is_imm) { - cdest = tcg_temp_new_i64(); - gen_psw_addr_disp(s, cdest, disp); - } - - if (c->is_64) { - tcg_gen_movcond_i64(c->cond, psw_addr, c->u.s64.a, c->u.s64.b, - cdest, next); - per_branch_cond(s, c->cond, c->u.s64.a, c->u.s64.b); - } else { - TCGv_i32 t0 = tcg_temp_new_i32(); - TCGv_i64 t1 = tcg_temp_new_i64(); - TCGv_i64 z = tcg_constant_i64(0); - tcg_gen_setcond_i32(c->cond, t0, c->u.s32.a, c->u.s32.b); - tcg_gen_extu_i32_i64(t1, t0); - tcg_temp_free_i32(t0); - tcg_gen_movcond_i64(TCG_COND_NE, psw_addr, t1, z, cdest, next); - per_branch_cond(s, TCG_COND_NE, t1, z); - tcg_temp_free_i64(t1); - } - - tcg_temp_free_i64(next); - if (is_imm) { - tcg_temp_free_i64(cdest); - } - ret = DISAS_PC_UPDATED; + /* + * Store taken branch destination before the brcond. This + * avoids having to allocate a new local temp to hold it. + * We'll overwrite this in the not taken case anyway. + */ + if (!is_imm) { + tcg_gen_mov_i64(psw_addr, cdest); } + lab = gen_new_label(); + if (c->is_64) { + tcg_gen_brcond_i64(tcg_invert_cond(c->cond), + c->u.s64.a, c->u.s64.b, lab); + } else { + tcg_gen_brcond_i32(tcg_invert_cond(c->cond), + c->u.s32.a, c->u.s32.b, lab); + } + + /* Branch taken. */ + if (is_imm) { + gen_psw_addr_disp(s, psw_addr, disp); + } + per_branch_dest(s, psw_addr); + + if (is_imm && use_goto_tb(s, s->base.pc_next + disp)) { + tcg_gen_goto_tb(0); + tcg_gen_exit_tb(s->base.tb, 0); + } else { + tcg_gen_lookup_and_goto_ptr(); + } + + gen_set_label(lab); + + /* Branch not taken. */ + if (use_goto_tb(s, s->base.pc_next + s->ilen)) { + tcg_gen_goto_tb(1); + gen_psw_addr_disp(s, psw_addr, s->ilen); + tcg_gen_exit_tb(s->base.tb, 1); + } else { + gen_psw_addr_disp(s, psw_addr, s->ilen); + tcg_gen_lookup_and_goto_ptr(); + } + + ret = DISAS_NORETURN; + egress: free_compare(c); return ret; From patchwork Sun Dec 11 15:27:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633089 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1994111pvb; Sun, 11 Dec 2022 07:35:48 -0800 (PST) X-Google-Smtp-Source: AA0mqf6EOn515Emhfwbt7OFq8NnxA/qAoiyuI97K3vpoRFYNhXMrgkEoKaK5Ngbw6/1NSAjbz2LP X-Received: by 2002:ad4:57c8:0:b0:4c7:8cb9:26f9 with SMTP id y8-20020ad457c8000000b004c78cb926f9mr19841854qvx.21.1670772948664; Sun, 11 Dec 2022 07:35:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772948; cv=none; d=google.com; s=arc-20160816; b=JAsph/T0E98Pei/oyZ1H6HbWoQ+5GPbmr1L8qEi/7mzX94aAgQxd+7XY4HAWP6qpVD /C1BJpF38dFTAUzKSyS75HUDyLf+gk7Etx6nGgtAllmhbLgt8gMEYtjqHBVkWPc56/aq OaLfHfs7ChoxTRoh1QMpBrhlF3BOcSFpOp1tq+xEzJ/Oke+PNFI3UgGJ/s6rCrepwGA8 OfhmEZ66AjcL/uPhinTMalTMBl/rfPjYEcybj72d/0n0bpo+Hm08wjZEcj/LTRvhXUoq ZbDk/VrdcSFkitfZApDAFupL54Rthr9q8fpB570rC3gvTRohJd+ncquxeFwVXGnnAxsM QHhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=4asYNccrx+BoU0MZdEMWP1GIa6QY2NIQn/AOiNqMEuM=; b=g+c+Zi4iIpF6c4It14ybZNxZRiQ3SKo/9ClIEydCU4liaYEaXVfdn4xg7w4jIRHqQE GteOt6NwChkSEsF06OAg/t3HFxQMO2HMK/yrQ0AOAFCdEkJMbSoDVqiEYKgd9Lh8iFa7 LCVTnoTnbtQwjIpGzCq04TFe2hg8JH/qpVSvavemhdtpNFDjGsTcOt5K59Yi73yPPXhW 3l/frNKtR5WccnLkWQvsIYBFe8+z4MqLmbchtz6iYLGB8PHXk5c+hWcSWKhf0JWSU5Pk FHvpuRMwmpIu3J7biPh1pR39uhwi6l3GBZqsBH203vGtX0z4VPW+5BS7FDKkUfmg1AIG nUBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PGYc+c7K; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q12-20020a056214194c00b004bb933e590csi4050737qvk.28.2022.12.11.07.35.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:35:48 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PGYc+c7K; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG6-0006Zh-IU; Sun, 11 Dec 2022 10:28:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OFv-0006Vz-NU for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:45 -0500 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFj-00084b-TI for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:38 -0500 Received: by mail-ot1-x334.google.com with SMTP id m7-20020a9d6447000000b0066da0504b5eso5824187otl.13 for ; Sun, 11 Dec 2022 07:28:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4asYNccrx+BoU0MZdEMWP1GIa6QY2NIQn/AOiNqMEuM=; b=PGYc+c7KPgL8q5LcoXEzzt1Mc8Xif7H1P4/oAc/ANdrBEgMPd5zypMph0Jw+GfGlfY ujoFKhbSq7atBBMOy7lxniQRp317tVXuziSJDQWDTgM4+HkudYK1TRlD25I6wqYMUi9n t3ffy/foZl0KCkUxxiy+bgH2HPN517NAZIvEGm0S9Zt7nK/F3QluKTTZVKZpmevF3KGU FAgE/8OtfEbBdOtJI92bzI3R8jDXfUCdoAT/mKLVxIc3ulC6BY4pqJatqrPpBf0yPCkl yjXQszyl2yVfmdKX5NxmHjuBngcnpPSMiVklqDRLtjas+mC7Zsd6B+uSTN7+UwKYpwXb d8Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4asYNccrx+BoU0MZdEMWP1GIa6QY2NIQn/AOiNqMEuM=; b=nAi1AOOdyKRQRXtnjVyjTWj06Ir7Y6GVGfbriD/XjZNXw6lmZm7A50pWG7Pk0KNvF1 GueIJ5LgqGLw3asxtTGUDz3EVzPM0oOvOYiilc9ZNNpICeEKcJStfV1gNd9aYR6bnGwt kgXGIlRejBzfksl1IxvgZaWKjhovn+qdYUfdZlRS2XVLfo1J0VuiYegWvNkAvmquz4L9 qh1lUhyzzw+NZEHoTSkR4Hyp2nbDh+ZSy/jqAEIgcHcCxElkQY8wxHf3tzq6odiybeNn qTk/OrycLGVhD5wU1rtLetdjd50nskX6uqd/n3gGVCgvPZs+6n+ia89iUCKCZty+tyMa U/3w== X-Gm-Message-State: ANoB5plqwfGng7pX2ZiDvjOQRAjZmCzoAMoZ4MxBjCPHrtwihQoig0sJ Py+f+cS7DI4n4OAubdA7KgqPDidKFn4j9GeN3Ag= X-Received: by 2002:a9d:7f0d:0:b0:66c:8b9f:86ef with SMTP id j13-20020a9d7f0d000000b0066c8b9f86efmr6277381otq.21.1670772510851; Sun, 11 Dec 2022 07:28:30 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 22/27] target/s390x: Split per_breaking_event from per_branch_* Date: Sun, 11 Dec 2022 09:27:57 -0600 Message-Id: <20221211152802.923900-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org This allows us to update gbea before other updates to psw_addr, which will be important for TARGET_TB_PCREL. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index b7c0d24d75..6006db3db2 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -353,7 +353,6 @@ static inline bool per_enabled(DisasContext *s) static void per_branch_dest(DisasContext *s, TCGv_i64 dest) { #ifndef CONFIG_USER_ONLY - gen_psw_addr_disp(s, gbea, 0); if (per_enabled(s)) { gen_helper_per_branch(cpu_env, gbea, dest); } @@ -363,7 +362,6 @@ static void per_branch_dest(DisasContext *s, TCGv_i64 dest) static void per_branch_disp(DisasContext *s, int64_t disp) { #ifndef CONFIG_USER_ONLY - gen_psw_addr_disp(s, gbea, 0); if (per_enabled(s)) { TCGv_i64 dest = tcg_temp_new_i64(); gen_psw_addr_disp(s, dest, disp); @@ -1153,13 +1151,14 @@ struct DisasInsn { static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) { + per_breaking_event(s); + if (disp == s->ilen) { per_branch_disp(s, disp); return DISAS_NEXT; } if (use_goto_tb(s, s->base.pc_next + disp)) { update_cc_op(s); - per_breaking_event(s); tcg_gen_goto_tb(0); update_psw_addr_disp(s, disp); tcg_gen_exit_tb(s->base.tb, 0); @@ -1173,6 +1172,7 @@ static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) static DisasJumpType help_goto_indirect(DisasContext *s, TCGv_i64 dest) { + per_breaking_event(s); tcg_gen_mov_i64(psw_addr, dest); per_branch_dest(s, psw_addr); return DISAS_PC_UPDATED; @@ -1233,6 +1233,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, } /* Branch taken. */ + per_breaking_event(s); if (is_imm) { gen_psw_addr_disp(s, psw_addr, disp); } From patchwork Sun Dec 11 15:27:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633081 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993053pvb; Sun, 11 Dec 2022 07:33:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf44etrD3rcmchsn2F7djH1J8FXZIomEsClxzMrDdXUCzM6WHMH5BzKou0nRtP6mX5cUuw02 X-Received: by 2002:a05:622a:4ccd:b0:3a5:ad81:8aff with SMTP id fa13-20020a05622a4ccd00b003a5ad818affmr19247053qtb.55.1670772797681; Sun, 11 Dec 2022 07:33:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772797; cv=none; d=google.com; s=arc-20160816; b=wQl6kVDDLuCeYIXGwasZ768IlvqLfESusZLVOHvuWgP5KBHxHWvw0J872xMyWPxgty b0pUa9J1dK3Iid++jO3AuaxqPVfxmPu7k5pDiEWTSPNBw4XRm3WlLKmsJSCQAzyiJpQJ KvchoSV5EEwARKrjmLHEUPlhSxQCKAlyf6rgNvv28vDUdD+FhFTX/aBJP6G/ghGAUlW/ eEgqdiXeYm0D3DcaHP/ajh0KzEqh0l2lSOF/z02+8qaz8x5TNFB4MyA9qdBMLSaWCocA sBD2L28viSkoslC91Rs8cLXHMR42f+VNY7c1hFHzh1xXSzp7OdVill4r7KzPITgXGVHr FeaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Z/skUfQCFQZ4X+J8MZM9bNAFhJbunyBxd+pVFGi7o9I=; b=x1Rx9H+THPvy6VAkj/Vlp9dn+CxlyNSuI0OFD7WU5cHm6TaXFD0oIMepPvQ0TtkLxY LxrSKcwO1xURIUqzJecjNIoo0QedL5L2LmXuwnSPJA+i3k0sBfxYZagxga5BiwZWwpdc muA202IJ8yOXZWoZj8yu2ijgkj2ZzmnOkUGdFPHWqhSopfnSinAu7ZAfs5s3ySe60wAe xhLOenuS97lgoMfYDDNatROEHS38otxdBqXmZEeE7Px9xX4DYO7VZTIHy8nNqnQpGYIU mq7YW6tG5HFPxcH8N3oOOlB1SzupiKb96+zQDCBjUvXG9TY2s33ALUy4iAUAPwn47qax vPDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kfNIvMO0; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v22-20020ac873d6000000b003a50bd9617csi3850014qtp.588.2022.12.11.07.33.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:17 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kfNIvMO0; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OGD-0006rB-Pv; Sun, 11 Dec 2022 10:29:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OG1-0006XP-8n for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:50 -0500 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFl-0007Vy-L4 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:39 -0500 Received: by mail-ot1-x335.google.com with SMTP id s30-20020a056830439e00b0067052c70922so5834780otv.11 for ; Sun, 11 Dec 2022 07:28:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Z/skUfQCFQZ4X+J8MZM9bNAFhJbunyBxd+pVFGi7o9I=; b=kfNIvMO0w13rzx/eQcX17mX5HHmvtv7BCqbTd4I+NrKPlKCEmnJ8xc3/Yt6Wa0qZRd 4PxdEWHXmeUPLqatdzve5iT9MflW9+4kAKMwCcDV5JtOaT2k4os1jr92hoY31nCsyXGA MVNAogGJqkL9IPbINw0cHfOgTAYE3NDrTtXI+UbxdOaNAw2jBAg5qMpGFGLtuAL4QUR3 Nakp7xf0jOJ1IKY5+HwcQmAjDdsl/fm53m5lb4ZZdGeHajoFDU1L6f/25s1lVN0MAvaH VCQpekzXoD6h88e2shd9DooHEIutDTM9t7GwvGXiZBRYUf706ckGCeC8VNJuLhXv7USI TVCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z/skUfQCFQZ4X+J8MZM9bNAFhJbunyBxd+pVFGi7o9I=; b=jNke7+1KKbt51NOytGGC+DHYaI3mfMH2XGAPlfK3Rti8jN7YD5Y+/Q/yBwo4LIqI6D diCrOnXCsIr2pHtnrNXELJSLv/PhIjrYWgmTzWRQNNnrQGsVZ29dguNgR2WLj4OT0hJ9 M7hT2lpPtTreOFQ0rSx2NeGWXSTxu/tT6aQkiM5z2/b5SUPKGZHBspcdYr1pO6ZMCS0/ vjbxBkRBk+ppXPgtpGYD20dN/C4DUkZqmmwJe31bUmaZl+g1Nky2pxlO8iv2hizdXMko Yd2yJwkJ043L37nJsoAFtPAct3Lgz8ucLolA7WlfnR/ubbirmJI7THqO8TTWPE577rHy g+Bw== X-Gm-Message-State: ANoB5pmkrHXxfLuufLr20BQkz3zzUt/b/jZUsLdqA2hdGTQcImh8FlJR iS/ihxbEfRx6nkMmKJJa7ZgYcsWct4zaEXGAbzU= X-Received: by 2002:a9d:6405:0:b0:661:dfeb:ea34 with SMTP id h5-20020a9d6405000000b00661dfebea34mr5728580otl.25.1670772511975; Sun, 11 Dec 2022 07:28:31 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 23/27] target/s390x: Remove PER check from use_goto_tb Date: Sun, 11 Dec 2022 09:27:58 -0600 Message-Id: <20221211152802.923900-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::335; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org While it is common for the PC update to happen in the shadow of a goto_tb, it is not required to be there. By moving it before the goto_tb, we can also place the call to helper_per_branch there, and then afterward chain to the next tb. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 6006db3db2..268de1359b 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -654,9 +654,6 @@ static void gen_op_calc_cc(DisasContext *s) static bool use_goto_tb(DisasContext *s, uint64_t dest) { - if (per_enabled(s)) { - return false; - } return translator_use_goto_tb(&s->base, dest); } @@ -1157,15 +1154,16 @@ static DisasJumpType help_goto_direct(DisasContext *s, int64_t disp) per_branch_disp(s, disp); return DISAS_NEXT; } + + update_psw_addr_disp(s, disp); + per_branch_dest(s, psw_addr); + if (use_goto_tb(s, s->base.pc_next + disp)) { update_cc_op(s); tcg_gen_goto_tb(0); - update_psw_addr_disp(s, disp); tcg_gen_exit_tb(s->base.tb, 0); return DISAS_NORETURN; } else { - update_psw_addr_disp(s, disp); - per_branch_dest(s, psw_addr); return DISAS_PC_UPDATED; } } From patchwork Sun Dec 11 15:27:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633076 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991810pvb; Sun, 11 Dec 2022 07:30:36 -0800 (PST) X-Google-Smtp-Source: AA0mqf7YgbL7nkuj3hAyoYkXA4Kvxte//GLm0Iy9kzlR61Ki3uVqso7Y/iRY6ZUtxNlVITzLsDkC X-Received: by 2002:ac8:7772:0:b0:39c:da20:68f with SMTP id h18-20020ac87772000000b0039cda20068fmr16516859qtu.50.1670772635863; Sun, 11 Dec 2022 07:30:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772635; cv=none; d=google.com; s=arc-20160816; b=cpUNG+VC0ikWe8sEfMfiJrb0KIAPdOMOz7RCUltZLQQx6HSlSguhl8jtKdea3B3U3b DHMvi8ePqqjQfG8DWckJ6nKBjL3VowaKl4oV3yDhWkqRucFiSo6qiWTxPGX3qpXknxC6 vpVI4ITCX56rj+BPPpS37I7Ipvf4NZOy5rBLLN4lvWl40QUw0dUYaXyk9P9zE2POi2Wx j2Plqo1tdsOufOFbWk+Pb63/iY0NQPjrHoSA4m0HJLKCOa8bcpOvKIP0e+3LfLmMixSx 5Ku1NbHiwrRW/pyyAG2i45+1Gx/x269VLwtX+TC0JRAOLVMNtfu4kvVvmoYJskHZqJCt A/+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=PnKVNWuy81wpLO8ctWZ75eeyyzKWmrB6j7VstOEmj/M=; b=W0mBNcaYL/SGKR2Bir7FaiJzH/KdIThv4tV3HfCOl3z98KBOguHXOF+lWBFK2e85hp Lp6xqrg8lTkB5bNTHZs5hKEjqFt2wszYeBOMYMqG9YjqCWIZ986MEMYSnNPyklm/lUFM +rfa73uAHjjzxAlorNJCfHlxwddvxIUumnAmb3x78yiw4LdUiCewUGYwRORW/l/1l/3P 6b2attI4RVMp0XuS+hZ9u8HVmcvuHZRiZApsuzCzM8BQhhKMpD06Ufr6fO6bETZ3vpsk 4AEWS/XcisYy239YLaifnMTgCCR+aSCVZnivib3D7JDT4rg6eEYRdyjrU0lZKjtTivl8 upMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LFVMmBrp; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id k7-20020ac80747000000b003a7f5e516b0si3912376qth.592.2022.12.11.07.30.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:30:35 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LFVMmBrp; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OGC-0006pn-Tu; Sun, 11 Dec 2022 10:29:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OG1-0006XW-BF for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:50 -0500 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFn-0007Vx-E2 for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:39 -0500 Received: by mail-ot1-x330.google.com with SMTP id m6-20020a9d7e86000000b0066ec505ae93so5831058otp.9 for ; Sun, 11 Dec 2022 07:28:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PnKVNWuy81wpLO8ctWZ75eeyyzKWmrB6j7VstOEmj/M=; b=LFVMmBrptS9d+LuQp5JU+rmkEzlEYy8oZj7nmZ8kNN5bh2IQWy0Rl83UkrCmflHO/d lkX3NLymrTXdD/lAxeWkJtj8sA+R9dp88VwSmYGJJuQhG+kcrk3uR3VZM63Z+sWktPwT OGe6kzlubAfaLUc7pcO+kgwW9JyKz2jmV3NOUqIupkOgeeQdT+Yb4VR6KkR1dvPARCXQ qiRXrzxiaswUbesa+wc418iFb51hdDrPyJ/c/R5D+3vXjSZcq0g/KJCrpNjUUm4KLGdb bcsXjYDOLJEvT6r3cwOGiCvOplhvKHvYvOWwmswEZyD7Ea0yX0xKeTmQsqMqawlw7cdx jqfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PnKVNWuy81wpLO8ctWZ75eeyyzKWmrB6j7VstOEmj/M=; b=gt1R84ZK7u7JOnkizmATBRjrCV/d9M2R1J1RzMVo6JbBrdDk32q0SnoJhhIyLWPnoW GGfPiGsAnveIa/WAl7JUvZS/8vDzAJ7f1kJVV4i9F6yLS+7cEeVUzFBvrFYiR++xgGCM vFGCT+vIVpEthhUcQ8pnmZ5pFpyFb6HKY237o59jaIOMRDoTOpJ+4PmUmSZoxNq0Cert jUGBRBT/AriTqyfmyixtCQ4dWteB6MGK4rt2Ewvyk9WQ39KBbRncmDbF5N9oCgFKTS5Y hXHGlxQnwfByq1/aenppKnEiJNddLJSSLl5pS4qH/+DL7oSJupDqx9++AhN6X0+hG6Ij 4Nag== X-Gm-Message-State: ANoB5pmE8svAZaWkBRhzStsxb8umppql15HO40Y9hF0YdpW5cguMHH8z zs9vFGchwCP4yfl6KuXzIAZrUJ/XYhRYke98RBw= X-Received: by 2002:a9d:64c3:0:b0:66c:43b0:5667 with SMTP id n3-20020a9d64c3000000b0066c43b05667mr4820953otl.38.1670772513156; Sun, 11 Dec 2022 07:28:33 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 24/27] target/s390x: Fix successful-branch PER events Date: Sun, 11 Dec 2022 09:27:59 -0600 Message-Id: <20221211152802.923900-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::330; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x330.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Ilya Leoshkevich The branching code sets per_perc_atmid, but afterwards it does goto_tb/exit_tb, so per_check_exception() added by translate_one() is not reached. Fix by raising PER exception in per_branch(). Signed-off-by: Ilya Leoshkevich Message-Id: <20221130174610.434590-1-iii@linux.ibm.com> Signed-off-by: Richard Henderson --- target/s390x/tcg/misc_helper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/s390x/tcg/misc_helper.c b/target/s390x/tcg/misc_helper.c index 71388a7119..b7220cef44 100644 --- a/target/s390x/tcg/misc_helper.c +++ b/target/s390x/tcg/misc_helper.c @@ -619,6 +619,7 @@ void HELPER(per_branch)(CPUS390XState *env, uint64_t from, uint64_t to) || get_per_in_range(env, to)) { env->per_address = from; env->per_perc_atmid = PER_CODE_EVENT_BRANCH | get_per_atmid(env); + tcg_s390_program_interrupt(env, PGM_PER, GETPC()); } } } From patchwork Sun Dec 11 15:28:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633084 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1993158pvb; Sun, 11 Dec 2022 07:33:31 -0800 (PST) X-Google-Smtp-Source: AA0mqf6MH4zsYF4ydekX2B9EJcb7HNZI3wBMSkZTLnLt8q60VFKCOCS6gHbfJIo/CwdhsOU1DFg2 X-Received: by 2002:a67:de16:0:b0:3b1:3d50:be24 with SMTP id q22-20020a67de16000000b003b13d50be24mr7252748vsk.8.1670772810936; Sun, 11 Dec 2022 07:33:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772810; cv=none; d=google.com; s=arc-20160816; b=0qV0hs243YJ621iMjMnWbYdzlYOrx/5xrDJWS9S2Es/HVqBY3HlpQjJQCHcERzf5Or VVQE6h9/ksZez+JYoPoS3rwTKndL6mPZBQHhE+b8EG2maeKzjs3vudR+KWTOlzGfc4mh w0i9v+gNNhA9tvCsLEYAPnMBwps06mi8mlolTlZ7eYMoX7RVBvATD90X7mKC8p8BFKRg iCKVf2YLIQdrFLFCEVVkSgh0hJ8I0HgQwbUXhHQlRYboFw03OzbwBuniWeb2uYqXZqip +KKd/2ZXiPt/CSXW6MDeRdZEmkJtUWi9Hd2cQ2OUBQTOPAHlygWgKL9J7EfHjO+8RgjD xGJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=6a8SyY9eZgzz8AJukTfXtGKf9OCDu+smgkxjoQH9ksA=; b=hbUQhCLXR00zC/2uz27DcqVJkqYjDrg+VBsg0ThABGXApo4UjnwY01loHXZd9EHPK2 fcpXpIor36yj6ih2qdSAFh1Y6Xt8qORTL9rPTwzpKAG3H4ajIVI7DrwcvEvt3oJFmyvn 4nfDBRqSISFDCKNFHKUrMpezPL09w+VOdgbbTx47I2E7EBHaV/PhDV6SLGZZ5L3Z7lNG gqy6Io/pW8GSQ2LpGIekjBl+xwez8WuhtY14Muq32uszTa1STVkpqJZ3yH6k1+h+fG8B E+3PxhVimgtm/sWCfzwOb1cVCVIcyc+JMirBRDCu3ekp6KdQ94ctrFzdec9ARybrKQkr oQDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gvbPaXxW; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t16-20020a37aa10000000b006fc9b17e2bbsi2813715qke.60.2022.12.11.07.33.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:33:30 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gvbPaXxW; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OGE-0006v4-Oa; Sun, 11 Dec 2022 10:29:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OG1-0006XQ-9T for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:50 -0500 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFn-0007Xy-Cy for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:39 -0500 Received: by mail-ot1-x32c.google.com with SMTP id z14-20020a9d65ce000000b0067059c25facso5840771oth.6 for ; Sun, 11 Dec 2022 07:28:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6a8SyY9eZgzz8AJukTfXtGKf9OCDu+smgkxjoQH9ksA=; b=gvbPaXxWvlmWDqIkYhhurH84QUf1s67kFhC/ZOHYP+vBPZGmcZVCb9dcmwGKpp0WJp dJZmSOV9p5c1h9SX7K3oi8oAH1djJNhEBvuAqvuNG6EG6/WkaSzLWuhGb0NML1SDxNYB E14cqusnGgUNAtRC7lBwkFafSafa+aR48RzD21jlVe0grgN2Av8bxgBJDVrQy5z1VHvg 9nxYSwFzok9seppscXJkxr6xdLvldPL4T75ZzceQ7MTWioiVxQFKsWhIW0L2yRYnGo49 Coi/zZg17JsAncBH2PiRikOLtfCJpp6ozjOkQkfyb5vtIUxz9kYajCcRBVHFJW97fwJn 56Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6a8SyY9eZgzz8AJukTfXtGKf9OCDu+smgkxjoQH9ksA=; b=xUV5JvF9La4gm+03OFeD6z5usc4xc59z4VDQiyALX61CQemjdETh9fC9epzcr3a6mu inwTLEnqhnoqo86DnVB6QB1xj9zWjsLnKOWtw93sWBAs8ztUnVOrb1FbGY1gZV/OVT4G 6uQeCPmE/MwcpX5EtOAdhpp24KwHoKVH0+XBwJweqMs1e0yE5cECASbgwScmapEVDB/J 5j9pyvaG8MznoOE14dLuQ0VMfITCrwMFNK7hGVvqwNxXW7EA38yZsulVRuKtlr6YstwL ppv7hX85aTIaTX/115T273VnwMldIARKwS05MeqOW02T9LzY+FI1qKWznv2zcCUiu9c3 FuWQ== X-Gm-Message-State: ANoB5pkWrEgyo568LwU0zFPmPhQan4rRYPMOaGfSl/0zHB49cAoj0hDC hESH1WaYunEaYW3mn6zzg+BPMRz6kKkRwju9x6w= X-Received: by 2002:a9d:5e86:0:b0:670:48c6:2c8d with SMTP id f6-20020a9d5e86000000b0067048c62c8dmr6169354otl.28.1670772514481; Sun, 11 Dec 2022 07:28:34 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 25/27] tests/tcg/s390x: Add per.S Date: Sun, 11 Dec 2022 09:28:00 -0600 Message-Id: <20221211152802.923900-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Ilya Leoshkevich Add a small test to avoid regressions. Signed-off-by: Ilya Leoshkevich Message-Id: <20221130174610.434590-2-iii@linux.ibm.com> Signed-off-by: Richard Henderson --- tests/tcg/s390x/Makefile.softmmu-target | 1 + tests/tcg/s390x/per.S | 55 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 tests/tcg/s390x/per.S diff --git a/tests/tcg/s390x/Makefile.softmmu-target b/tests/tcg/s390x/Makefile.softmmu-target index d6ca8d7342..7ee69e78d8 100644 --- a/tests/tcg/s390x/Makefile.softmmu-target +++ b/tests/tcg/s390x/Makefile.softmmu-target @@ -9,3 +9,4 @@ QEMU_OPTS=-action panic=exit-failure -kernel TESTS += unaligned-lowcore TESTS += bal TESTS += sam +TESTS += per diff --git a/tests/tcg/s390x/per.S b/tests/tcg/s390x/per.S new file mode 100644 index 0000000000..02f8422c44 --- /dev/null +++ b/tests/tcg/s390x/per.S @@ -0,0 +1,55 @@ +#define N_ITERATIONS 10 + + .org 0x8d +ilc: + .org 0x8e +program_interruption_code: + .org 0x96 +per_code: + .org 0x150 +program_old_psw: + .org 0x1d0 /* program new PSW */ + .quad 0,pgm_handler + .org 0x200 /* lowcore padding */ + + .globl _start +_start: + lpswe per_on_psw +start_per: + lghi %r0,N_ITERATIONS + xgr %r1,%r1 + lctlg %c9,%c11,per_on_regs +loop: + brct %r0,loop + lctlg %c9,%c11,per_off_regs + cgijne %r1,N_ITERATIONS-1,fail /* expected number of events? */ + lpswe success_psw +fail: + lpswe failure_psw + +pgm_handler: + chhsi program_interruption_code,0x80 /* PER event? */ + jne fail + cli per_code,0x80 /* successful-branching event? */ + jne fail + la %r1,1(%r1) /* increment event counter */ + mvc return_psw(8),program_old_psw + lg %r3,program_old_psw+8 + llgc %r2,ilc + sgr %r3,%r2 /* rewind PSW */ + stg %r3,return_psw+8 + lpswe return_psw + + .align 8 +per_on_psw: + .quad 0x4000000000000000,start_per +per_on_regs: + .quad 0x80000000,0,-1 /* successful-branching everywhere */ +per_off_regs: + .quad 0,0,0 +return_psw: + .quad 0,0 +success_psw: + .quad 0x2000000000000,0xfff /* see is_special_wait_psw() */ +failure_psw: + .quad 0x2000000000000,0 /* disabled wait */ From patchwork Sun Dec 11 15:28:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633070 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1991480pvb; Sun, 11 Dec 2022 07:29:46 -0800 (PST) X-Google-Smtp-Source: AA0mqf5znZiMDf5YKW8V53iBWeFXj6/rbDOdeazDCvd4ydJfwVNca/0gNB3pVI2N6rPoAEdScVQ2 X-Received: by 2002:a05:6214:80b:b0:4c7:b0f:675d with SMTP id df11-20020a056214080b00b004c70b0f675dmr20832025qvb.9.1670772586496; Sun, 11 Dec 2022 07:29:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670772586; cv=none; d=google.com; s=arc-20160816; b=XQOAn9TChqBbF9eNy6vF8fROLK6xi+b3xZ7Ubf75o+vUqy3HKf/9F2KuYI6y217dIC EYon0SyDq9Mm9UA1GP5gV2K9NNQg+Pya/zm8M8DPJL+xLLvzQyxYPhoy0sbDtN6eshwc /3Il1AY6LlS9Wktj5EFc/FR2HIY1N77Zz6LNDGdp2TyXj87+WmVNCacfIwua6JbT4ZYb 9mf3Oe0Y3eU8NZLvharsdPwXpzmZcA1EeBBW8ZhJEWfmeXKeGAwBHkiQR3ssfTa9vMDz VXsOxQNqgi7USrSfocpxqXkKz/cGaGwFonxGWQQ4955x4yfdWwiFCoJwCKbKdcH4Ihx2 90Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=mAse/p7xIH0qBnFFrf5T3qVh7iOKaqKi4Tlx5tF25Wc=; b=qBMCeT+tKgO9uqhCjrJijzNG6MoE7TIby0Rb15AOO+w9kTOYYAqYM0zQk3Ciw97eLu o/XcvI2cVL1nVI4w0WEO5ShVLb7w+aOsa7Vb8VLStjvgNdOdfm05oxFAkTB/tlYSNDX3 sNEPRsRu3Wdh8Q4kDNzcoRJqHD3CBtCMTxV3YZo3hAs78J4yGLnLjDPqD8uwMs2tHEgI eC9PflcUglq4OOqDFoFOb0GuwTx0VSl/q/WvkVjsoFjvkJyVO9x/2cC2T2ZV33nQ/7AS SDX5Dw0dW5WeI1SuvmcG665NHBtLOx3oh7bR9m8NJCp55EOWXXvvE5j6zn9spjRrZTfc xDXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="lnf/biUo"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a2-20020a0562140c2200b004c72c420363si4000212qvd.344.2022.12.11.07.29.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:29:46 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="lnf/biUo"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OGF-0006wI-Pn; Sun, 11 Dec 2022 10:29:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OG2-0006Xa-CJ for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:51 -0500 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFo-0007BV-Em for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:40 -0500 Received: by mail-oi1-x229.google.com with SMTP id n205so9090631oib.1 for ; Sun, 11 Dec 2022 07:28:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mAse/p7xIH0qBnFFrf5T3qVh7iOKaqKi4Tlx5tF25Wc=; b=lnf/biUopobVOI7oHKVp7xyj4T6jzJEV7n5M5QSF6P9UhlEl/YuOxKFeuqYO8/o90r VaOpNLt1OdANxbBqbZVcOClVMVC6hP860Mbv8UBQjSSMkn0eKcXw5G+fbOo/Ztny5gB8 UMsRZ9XZLkmiTpjsTpAP1HWYrBf6YOm1Mgwakf2gJQGpR7timr6XAkWgoKl5tJu6Ch2+ lqZeoEeyobN5BkVaVcY4pNf28lsoUZAC6mZTWrs+d4O6Y2f6XlNACyqR4TT/XxfbDkqO zvhFY4lciNUEt5Wx29/bJYMN1pBQBLQtfvTSTszgzrZQaEXnAJiJM5yBHOa2M/9/TVOL XNrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mAse/p7xIH0qBnFFrf5T3qVh7iOKaqKi4Tlx5tF25Wc=; b=n12ugSphicSFhGALvpTy2BVZN0Cb6L2+YjUilxu6HdK/ENaJJbTC0uMApszx2EzONJ jtqx/KRTs2+sgv3T0OPjTPr7nCGJYHd4E0jWcJWZAHFp9FE8GW93Rd5a5F/ZSGOkkkrt 5lxIkaRZNK3MPlzYw1KfQnTBToAt3orTnG8ZHbIPu3INuGlfYiQrezaXUd4L5TxWy4EC y+P2KLSX+yE/a+nh2LCvYZE3tc41qZmsIukwX2Ci95Hvb7RDiZCV2Mbp5FeaDaUXs39G UN7MZmhrTbPGnquFgr04YQNseoeff5r/5Pdv7VLxrFrrJHgwG4gyIgu20I92a4WS8BfP 77Mw== X-Gm-Message-State: ANoB5pnezxlZ+XJqHwUDb6Wc417KzIPgaf6Hm9GmzSqA7ju7yKUGZi/V jPrnoE4Qi+cRPrrHTnpZq8zPGl9SGHSJLzcRovg= X-Received: by 2002:a05:6808:1451:b0:35a:54d8:f11c with SMTP id x17-20020a056808145100b0035a54d8f11cmr8137740oiv.48.1670772515611; Sun, 11 Dec 2022 07:28:35 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 26/27] target/s390x: Pass original r2 register to BCR Date: Sun, 11 Dec 2022 09:28:01 -0600 Message-Id: <20221211152802.923900-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::229; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x229.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org We do not modify any general-purpose registers in BCR, which means that we may be able to avoid saving the value across a branch. Reviewed-by: Ilya Leoshkevich Signed-off-by: Richard Henderson --- target/s390x/tcg/insn-data.h.inc | 2 +- target/s390x/tcg/translate.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc index 54d4250c9f..0e5a1062ae 100644 --- a/target/s390x/tcg/insn-data.h.inc +++ b/target/s390x/tcg/insn-data.h.inc @@ -121,7 +121,7 @@ /* BRANCH INDIRECT ON CONDITION */ C(0xe347, BIC, RXY_b, MIE2,0, m2_64w, 0, 0, bc, 0) /* BRANCH ON CONDITION */ - C(0x0700, BCR, RR_b, Z, 0, r2_nz, 0, 0, bc, 0) + C(0x0700, BCR, RR_b, Z, 0, r2_o_nz, 0, 0, bc, 0) C(0x4700, BC, RX_b, Z, 0, a2, 0, 0, bc, 0) /* BRANCH RELATIVE ON CONDITION */ C(0xa704, BRC, RI_c, Z, 0, 0, 0, 0, bc, 0) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 268de1359b..7280498290 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -5704,6 +5704,16 @@ static void in2_r2_nz(DisasContext *s, DisasOps *o) } #define SPEC_in2_r2_nz 0 +static void in2_r2_o_nz(DisasContext *s, DisasOps *o) +{ + int r2 = get_field(s, r2); + if (r2 != 0) { + o->in2 = regs[r2]; + o->g_in2 = true; + } +} +#define SPEC_in2_r2_o_nz 0 + static void in2_r2_8s(DisasContext *s, DisasOps *o) { o->in2 = tcg_temp_new_i64(); From patchwork Sun Dec 11 15:28:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 633094 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp1995305pvb; Sun, 11 Dec 2022 07:38:38 -0800 (PST) X-Google-Smtp-Source: AA0mqf63g+p+4iRoBwf6HbDMGRh4IONNOpb0NHBVvfS1uckY0JPtnyHZzsxG0d0mefxB4dF4RFZD X-Received: by 2002:a05:622a:4014:b0:3a8:d2d:2940 with SMTP id cf20-20020a05622a401400b003a80d2d2940mr7647195qtb.47.1670773118562; Sun, 11 Dec 2022 07:38:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670773118; cv=none; d=google.com; s=arc-20160816; b=NwG/d6WNR7WPdLwnV9E7rufHaxjx/3FTpd0vLaqjsN7nidIT2QyGLW2o7mH7X5AQLS eujRYS1CPGnD9Ng8n73Btm2c/gBWBb+flYkg0yGoCtfMGT1rNQxwz5RwsaDeQwaGxaIc ekXgJApzPKEcskiZE+0ZUBvX6t6z5r/9RT9YkGtgV5H5Y2LZTUS26h4QY/Fd8SbLEqFO 219yrNldlWf0XnY0stIKer/dhQA5WpL6XlSfpYYgszKm98V4iIslEey6gbVHzR2KFxaG MQpsmkuJrMKRHqx7D9fMB6p39BRog89+S+rp6Aw3R/rlH3Z1gWziQTK+UYGW/a8kfa+q yisg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=DdEiZ7vjPxFiLeRTA0LuEkU3pLxvN6ovi79eXVPv7MI=; b=B8fDPKQbEjzHM2F1tFng2SzxVeoq+tHjPkAz69PMS3/6nL0sAcgLhb1KDjqfB0OTF3 +2p44xeh9XwsGtBDpRgdksHCwquxKx3Fb+HI8PtJ+2iFAKj8tAZjidyx9BIFkrRAI3pQ cgnyC1N6S8cmHDuse61S3X+rVBKuH8Bm5ZhujwFB6AkXT72a2joqo3AuJA+5Es98cOpQ 9UY78TdryZ9L3yze8eDNppMvr540dBpY5yw866ExNP4HfwfYVIc9h47nfdDli6ocmnuM EF4bumjFquEU7onytK65WxBs+AmuUpBcWzBY+qKGC576SxfTVO6GOQugmbX+rd1VxXEh p7oQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=I7DUBflX; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id pc24-20020a05620a841800b006fcaae20037si2773292qkn.741.2022.12.11.07.38.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 11 Dec 2022 07:38:38 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=I7DUBflX; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4OG7-0006aS-Il; Sun, 11 Dec 2022 10:28:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4OG2-0006Xb-Dr for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:51 -0500 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p4OFu-0007pC-GG for qemu-devel@nongnu.org; Sun, 11 Dec 2022 10:28:45 -0500 Received: by mail-ot1-x32d.google.com with SMTP id v19-20020a9d5a13000000b0066e82a3872dso5837821oth.5 for ; Sun, 11 Dec 2022 07:28:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DdEiZ7vjPxFiLeRTA0LuEkU3pLxvN6ovi79eXVPv7MI=; b=I7DUBflXWzmyWBg+lf+l9N8VTtPZ7tcXdiJvCS6OhKNPCy27ArUHR8MipIvdyKMed7 Pt9HYKnvx7DgDyliP6AxgJn2TJPO4SS9Zm8XVvdQNmlZ8sREnqN42/aMjxNjqjsoz6Do JTERPmmFZY//Jav6LEO3aI90uDEBXhXxTay14ju8p5wZryPkOv0dyv3obU9FlO3uSnWp SbxlVFQ+qHjVk3HLGWwvFX8SCbgqRwa4opVAdBcyn3Q04vcpEQVB+Xi/ngD3Rx9Sj8ri SWzm+CQcKaUyCkSn3Hp5Ao+0ZUzdHWaY+9jLhEqyUP7i2gqBobnv374QEF1GFO2kyvp/ LnUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DdEiZ7vjPxFiLeRTA0LuEkU3pLxvN6ovi79eXVPv7MI=; b=xYnAwD5IEmiLY10vd1OggnmvSrtAgEtoQA3pCtNuY+RNDu5hXuypks7aU8iq+2E2VO WRPMZZnelJtjCtduidhXdmvqU8b/WZW+JJjozCcN1r6KiKqXTdqAKeEFJyuOIrguyMd2 meH+7H4Gom0D2oq3Q4ES8bsxVw2n9/5/3Ux7A2q+Rha2JWtbgk6t9Oc6zWu4AcXEwNSR WKX95QsEux0VpRPacllDRGKutpJQ2G2QtZjIgiocvA8CGWYzC+QXTe4uwE5ROd8E+PQS 9Gh2yj2cbp3UfweCpLd+9VzIVMlSsOs+KTdYFfOSzB8KtJKo5s2zrJExKZX8RpX/8ZJ5 hFSw== X-Gm-Message-State: ANoB5plIBTbvOFYFQ7m128ASd7PXliezwHLD5NYMZXDRz9hGEn94WFOY dUgRl94RPG+iqdNNnmsRAbHnTOCq7Vd9rkQx6mI= X-Received: by 2002:a05:6830:4412:b0:66e:a35c:c051 with SMTP id q18-20020a056830441200b0066ea35cc051mr8266250otv.35.1670772516703; Sun, 11 Dec 2022 07:28:36 -0800 (PST) Received: from stoup.. ([2806:102e:18:2efc:7b4f:f28b:eca6:b583]) by smtp.gmail.com with ESMTPSA id q24-20020a056830233800b006708d2cd8bcsm938140otg.65.2022.12.11.07.28.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 07:28:36 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org Subject: [PATCH v2 27/27] target/s390x: Enable TARGET_TB_PCREL Date: Sun, 11 Dec 2022 09:28:02 -0600 Message-Id: <20221211152802.923900-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221211152802.923900-1-richard.henderson@linaro.org> References: <20221211152802.923900-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::32d; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Signed-off-by: Richard Henderson Reviewed-by: Ilya Leoshkevich --- target/s390x/cpu-param.h | 1 + target/s390x/cpu.c | 12 +++++ target/s390x/tcg/translate.c | 86 +++++++++++++++++++++++------------- 3 files changed, 68 insertions(+), 31 deletions(-) diff --git a/target/s390x/cpu-param.h b/target/s390x/cpu-param.h index bf951a002e..467ecade8c 100644 --- a/target/s390x/cpu-param.h +++ b/target/s390x/cpu-param.h @@ -13,5 +13,6 @@ #define TARGET_PHYS_ADDR_SPACE_BITS 64 #define TARGET_VIRT_ADDR_SPACE_BITS 64 #define NB_MMU_MODES 4 +#define TARGET_TB_PCREL 1 #endif diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 96562c516d..7e55134255 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -35,6 +35,7 @@ #include "fpu/softfloat-helpers.h" #include "disas/capstone.h" #include "sysemu/tcg.h" +#include "exec/exec-all.h" #define CR0_RESET 0xE0UL #define CR14_RESET 0xC2000000UL; @@ -81,6 +82,16 @@ uint64_t s390_cpu_get_psw_mask(CPUS390XState *env) return r; } +static void s390_cpu_synchronize_from_tb(CPUState *cs, + const TranslationBlock *tb) +{ + /* The program counter is always up to date with TARGET_TB_PCREL. */ + if (!TARGET_TB_PCREL) { + S390CPU *cpu = S390_CPU(cs); + cpu->env.psw.addr = tb_pc(tb); + } +} + static void s390_cpu_set_pc(CPUState *cs, vaddr value) { S390CPU *cpu = S390_CPU(cs); @@ -272,6 +283,7 @@ static void s390_cpu_reset_full(DeviceState *dev) static const struct TCGCPUOps s390_tcg_ops = { .initialize = s390x_translate_init, + .synchronize_from_tb = s390_cpu_synchronize_from_tb, .restore_state_to_opc = s390x_restore_state_to_opc, #ifdef CONFIG_USER_ONLY diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 7280498290..036ddd9d20 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -139,6 +139,7 @@ struct DisasContext { DisasContextBase base; const DisasInsn *insn; TCGOp *insn_start; + target_ulong pc_save; DisasFields fields; uint64_t ex_value; uint32_t ilen; @@ -163,29 +164,6 @@ static uint64_t inline_branch_hit[CC_OP_MAX]; static uint64_t inline_branch_miss[CC_OP_MAX]; #endif -static void gen_psw_addr_disp(DisasContext *s, TCGv_i64 dest, int64_t disp) -{ - tcg_gen_movi_i64(dest, s->base.pc_next + disp); -} - -static void pc_to_link_info(TCGv_i64 out, DisasContext *s) -{ - TCGv_i64 tmp; - - if (s->base.tb->flags & FLAG_MASK_64) { - gen_psw_addr_disp(s, out, s->ilen); - return; - } - - tmp = tcg_temp_new_i64(); - gen_psw_addr_disp(s, tmp, s->ilen); - if (s->base.tb->flags & FLAG_MASK_32) { - tcg_gen_ori_i64(tmp, tmp, 0x80000000); - } - tcg_gen_deposit_i64(out, out, tmp, 0, 32); - tcg_temp_free_i64(tmp); -} - static TCGv_i64 psw_addr; static TCGv_i64 psw_mask; static TCGv_i64 gbea; @@ -336,9 +314,39 @@ static void return_low128(TCGv_i64 dest) tcg_gen_ld_i64(dest, cpu_env, offsetof(CPUS390XState, retxl)); } +static void gen_psw_addr_disp(DisasContext *s, TCGv_i64 dest, int64_t disp) +{ + assert(s->pc_save != -1); + if (TARGET_TB_PCREL) { + disp += s->base.pc_next - s->pc_save; + tcg_gen_addi_i64(dest, psw_addr, disp); + } else { + tcg_gen_movi_i64(dest, s->base.pc_next + disp); + } +} + +static void pc_to_link_info(TCGv_i64 out, DisasContext *s) +{ + TCGv_i64 tmp; + + if (s->base.tb->flags & FLAG_MASK_64) { + gen_psw_addr_disp(s, out, s->ilen); + return; + } + + tmp = tcg_temp_new_i64(); + gen_psw_addr_disp(s, tmp, s->ilen); + if (s->base.tb->flags & FLAG_MASK_32) { + tcg_gen_ori_i64(tmp, tmp, 0x80000000); + } + tcg_gen_deposit_i64(out, out, tmp, 0, 32); + tcg_temp_free_i64(tmp); +} + static void update_psw_addr_disp(DisasContext *s, int64_t disp) { gen_psw_addr_disp(s, psw_addr, disp); + s->pc_save = s->base.pc_next + disp; } static inline bool per_enabled(DisasContext *s) @@ -1172,6 +1180,7 @@ static DisasJumpType help_goto_indirect(DisasContext *s, TCGv_i64 dest) { per_breaking_event(s); tcg_gen_mov_i64(psw_addr, dest); + s->pc_save = -1; per_branch_dest(s, psw_addr); return DISAS_PC_UPDATED; } @@ -1181,6 +1190,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, { DisasJumpType ret; int64_t disp = (int64_t)imm * 2; + TCGv_i64 cdest_save = NULL; TCGLabel *lab; /* Take care of the special cases first. */ @@ -1213,12 +1223,12 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, update_cc_op(s); /* - * Store taken branch destination before the brcond. This - * avoids having to allocate a new local temp to hold it. - * We'll overwrite this in the not taken case anyway. + * Save taken branch destination across the brcond if required. */ if (!is_imm) { - tcg_gen_mov_i64(psw_addr, cdest); + cdest_save = tcg_temp_local_new_i64(); + tcg_gen_mov_i64(cdest_save, cdest); + cdest = cdest_save; } lab = gen_new_label(); @@ -1234,6 +1244,11 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, per_breaking_event(s); if (is_imm) { gen_psw_addr_disp(s, psw_addr, disp); + } else { + tcg_gen_mov_i64(psw_addr, cdest); + } + if (cdest_save) { + tcg_temp_free_i64(cdest_save); } per_branch_dest(s, psw_addr); @@ -1247,15 +1262,15 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c, gen_set_label(lab); /* Branch not taken. */ + gen_psw_addr_disp(s, psw_addr, s->ilen); if (use_goto_tb(s, s->base.pc_next + s->ilen)) { tcg_gen_goto_tb(1); - gen_psw_addr_disp(s, psw_addr, s->ilen); tcg_gen_exit_tb(s->base.tb, 1); } else { - gen_psw_addr_disp(s, psw_addr, s->ilen); tcg_gen_lookup_and_goto_ptr(); } + s->pc_save = -1; ret = DISAS_NORETURN; egress: @@ -6451,6 +6466,7 @@ static void s390x_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) /* Note cpu_get_tb_cpu_state asserts PC is masked for the mode. */ + dc->pc_save = dc->base.pc_first; dc->cc_op = CC_OP_DYNAMIC; dc->ex_value = dc->base.tb->cs_base; dc->exit_to_mainloop = per_enabled(dc) || dc->ex_value; @@ -6463,9 +6479,13 @@ static void s390x_tr_tb_start(DisasContextBase *db, CPUState *cs) static void s390x_tr_insn_start(DisasContextBase *dcbase, CPUState *cs) { DisasContext *dc = container_of(dcbase, DisasContext, base); + target_ulong pc_arg = dc->base.pc_next; + if (TARGET_TB_PCREL) { + pc_arg &= ~TARGET_PAGE_MASK; + } /* Delay the set of ilen until we've read the insn. */ - tcg_gen_insn_start(dc->base.pc_next, dc->cc_op, 0); + tcg_gen_insn_start(pc_arg, dc->cc_op, 0); dc->insn_start = tcg_last_op(); } @@ -6559,7 +6579,11 @@ void s390x_restore_state_to_opc(CPUState *cs, CPUS390XState *env = &cpu->env; int cc_op = data[1]; - env->psw.addr = data[0]; + if (TARGET_TB_PCREL) { + env->psw.addr = (env->psw.addr & TARGET_PAGE_MASK) | data[0]; + } else { + env->psw.addr = data[0]; + } /* Update the CC opcode if it is not already up-to-date. */ if ((cc_op != CC_OP_DYNAMIC) && (cc_op != CC_OP_STATIC)) {