From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410445; cv=none; d=zoho.com; s=zohoarc; b=jr2Jh6JSPCbnxZZjGtdBpCNPU480/hvluBeyINQDZHU/ErHALK3b3wL5mtPSdc1/phrggnNdQhgIc1RHUMpR0lVfSRlTUgNwa/6L7ZqyCgPx7vpYWNHhkEvu8ETlkBdwH93hzoGiHHa7Ow91fcfep7e0pYRSCw7bs26QPNyNyFE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410445; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=XvCHdm9nHE9smMApxfPJipkd9WnhL73swaE5KE6lGAQ=; b=oGTky4AjKrMK8Gk7rxHnBOZgDS1KVWf+Q7NsnQ4NGEeUJryVuTKtOapVtAwKHNhN26uejPwDi1l8ilnCojOY+O/aydd+UEy1HHc0GgYDGQ5AzJLEHdkk7l9pWaUmMZHst95rX6VZDJiyixkKyHHMyqm393qhRarcMeGeB/bATEQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 156541044508450.27172319013005; Fri, 9 Aug 2019 21:14:05 -0700 (PDT) Received: from localhost ([::1]:34770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlT-0006pR-2r for importer@patchew.org; Sat, 10 Aug 2019 00:13:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34612) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkh-0005AM-FN for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkf-0004Ay-KR for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:11 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:38326) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkf-00049x-F0 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:09 -0400 Received: by mail-ot1-x342.google.com with SMTP id d17so140618573oth.5 for ; Fri, 09 Aug 2019 21:13:09 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.06 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XvCHdm9nHE9smMApxfPJipkd9WnhL73swaE5KE6lGAQ=; b=Lhq62uzDjPBbw4Y8IOghI1shSH/u2dDOpDtsZYXNFyuAVHeMONRM9oebf9rJnPjCL0 80ZMrxlzhZRpTJVv4WQgtuuz/5lPyP3O9k+HTwNWpAYmVQmudB/T5XcXOdomAZrF7LNj 4Vw9f2mxTyy6PTYXmnZr4Eedx4hbyXCcWdXw9BVL+VO20X3ENL6GJhAjDbM7idlN48as Ahkx0y8C9cjiD3VHeAlGB0et+6HLQZnSgNF+/trscsY1B7gchYhIYEAM90clXncfUpN6 Lmv7fzK6KqHS21Qi1y4dwOIIQEkFM+QbdnED/JVeCJf/hbEL3hZMwqhbd+GS021P/xqY EPSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XvCHdm9nHE9smMApxfPJipkd9WnhL73swaE5KE6lGAQ=; b=qF8s5ni/gL4HkaRYI351NalecyLY1Y8lklnooo71Y1jZmZ585ASrdu5j3ylofmpt94 GdfBT/sLvEyEH82YQKD56kzt5i5jh2hG9MOzgB6CXGLc7WEekOB3zoeFBuWVbVcwv16C u9w0OHzldYAb/HS8wMoiJIu2dzyzEil3bvppTWOMsA8LmkZc0OB6P8JX6qxAF+Z8tDwH UtubrTdd53VxfOjvQMwI6QxTpB9oAKRPQV1nCCrgxB5rQljHpFh0dATcwyf5uqFD/CfG DQlwBoewXCZJ7Eu/zVAdWleE8nDSLrkI/P9Nh6KEQQvqpVCeFv1BHi4OqVSJsoM1KOz3 zl1g== X-Gm-Message-State: APjAAAWcp6PrIX3tqFYg2mpqR7Pnev4P5I9Bc5YRx3XU0g2XOycV56Xr 4LEeTLHfLP0vyGvrMj4LvHfzWPkG X-Google-Smtp-Source: APXvYqwkndva2OC7QD7TTOJK+zJCqg1yxVjjxEQpaMYemlg/qgj17WwLb8uK3tJQxKBWLUCaJhsQHQ== X-Received: by 2002:a05:6830:1146:: with SMTP id x6mr21260761otq.86.1565410388539; Fri, 09 Aug 2019 21:13:08 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:17 -0400 Message-Id: <20190810041255.6820-2-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 01/39] target/i386: Push rex_r into DisasContext X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Richard Henderson Treat this value the same as we do for rex_b and rex_x. Signed-off-by: Richard Henderson --- target/i386/translate.c | 85 +++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index 03150a86e2..d74dbfd585 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -43,10 +43,12 @@ #define CODE64(s) ((s)->code64) #define REX_X(s) ((s)->rex_x) #define REX_B(s) ((s)->rex_b) +#define REX_R(s) ((s)->rex_r) #else #define CODE64(s) 0 #define REX_X(s) 0 #define REX_B(s) 0 +#define REX_R(s) 0 #endif =20 #ifdef TARGET_X86_64 @@ -98,7 +100,7 @@ typedef struct DisasContext { #ifdef TARGET_X86_64 int lma; /* long mode active */ int code64; /* 64 bit code segment */ - int rex_x, rex_b; + int rex_x, rex_b, rex_r; #endif int vex_l; /* vex vector length */ int vex_v; /* vex vvvv register, without 1's complement. */ @@ -3037,7 +3039,7 @@ static const struct SSEOpHelper_eppi sse_op_table7[25= 6] =3D { }; =20 static void gen_sse(CPUX86State *env, DisasContext *s, int b, - target_ulong pc_start, int rex_r) + target_ulong pc_start) { int b1, op1_offset, op2_offset, is_xmm, val; int modrm, mod, rm, reg; @@ -3107,8 +3109,9 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, =20 modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7); - if (is_xmm) - reg |=3D rex_r; + if (is_xmm) { + reg |=3D REX_R(s); + } mod =3D (modrm >> 6) & 3; if (sse_fn_epp =3D=3D SSE_SPECIAL) { b |=3D (b1 << 8); @@ -3642,7 +3645,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, tcg_gen_ld16u_tl(s->T0, cpu_env, offsetof(CPUX86State,fpregs[rm].mmx.MMX_W(= val))); } - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_op_mov_reg_v(s, ot, reg, s->T0); break; case 0x1d6: /* movq ea, xmm */ @@ -3686,7 +3689,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, offsetof(CPUX86State, fpregs[rm].mmx)); gen_helper_pmovmskb_mmx(s->tmp2_i32, cpu_env, s->ptr0); } - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); tcg_gen_extu_i32_tl(cpu_regs[reg], s->tmp2_i32); break; =20 @@ -3698,7 +3701,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, } modrm =3D x86_ldub_code(env, s); rm =3D modrm & 7; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (b1 >=3D 2) { goto unknown_op; @@ -3774,7 +3777,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, /* Various integer extensions at 0f 38 f[0-f]. */ b =3D modrm | (b1 << 8); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 switch (b) { case 0x3f0: /* crc32 Gd,Eb */ @@ -4128,7 +4131,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, b =3D modrm; modrm =3D x86_ldub_code(env, s); rm =3D modrm & 7; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (b1 >=3D 2) { goto unknown_op; @@ -4148,7 +4151,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, rm =3D (modrm & 7) | REX_B(s); if (mod !=3D 3) gen_lea_modrm(env, s, modrm); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); val =3D x86_ldub_code(env, s); switch (b) { case 0x14: /* pextrb */ @@ -4317,7 +4320,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, /* Various integer extensions at 0f 3a f[0-f]. */ b =3D modrm | (b1 << 8); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 switch (b) { case 0x3f0: /* rorx Gy,Ey, Ib */ @@ -4491,14 +4494,15 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) TCGMemOp ot, aflag, dflag; int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; - int rex_w, rex_r; target_ulong pc_start =3D s->base.pc_next; + int rex_w; =20 s->pc_start =3D s->pc =3D pc_start; s->override =3D -1; #ifdef TARGET_X86_64 s->rex_x =3D 0; s->rex_b =3D 0; + s->rex_r =3D 0; s->x86_64_hregs =3D false; #endif s->rip_offset =3D 0; /* for relative ip address */ @@ -4511,7 +4515,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 prefixes =3D 0; rex_w =3D -1; - rex_r =3D 0; =20 next_byte: b =3D x86_ldub_code(env, s); @@ -4555,9 +4558,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s)) { /* REX prefix */ rex_w =3D (b >> 3) & 1; - rex_r =3D (b & 0x4) << 1; + s->rex_r =3D (b & 0x4) << 1; s->rex_x =3D (b & 0x2) << 2; - REX_B(s) =3D (b & 0x1) << 3; + s->rex_b =3D (b & 0x1) << 3; /* select uniform byte register addressing */ s->x86_64_hregs =3D true; goto next_byte; @@ -4590,8 +4593,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->x86_64_hregs) { goto illegal_op; } + s->rex_r =3D (~vex2 >> 4) & 8; #endif - rex_r =3D (~vex2 >> 4) & 8; if (b =3D=3D 0xc5) { /* 2-byte VEX prefix: RVVVVlpp, implied 0f leading opcode = byte */ vex3 =3D vex2; @@ -4681,7 +4684,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) switch(f) { case 0: /* OP Ev, Gv */ modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); if (mod !=3D 3) { @@ -4703,7 +4706,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 1: /* OP Gv, Ev */ modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); rm =3D (modrm & 7) | REX_B(s); if (mod !=3D 3) { gen_lea_modrm(env, s, modrm); @@ -5123,7 +5126,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d(b, dflag); =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_op_mov_v_reg(s, ot, s->T1, reg); @@ -5195,7 +5198,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x6b: ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (b =3D=3D 0x69) s->rip_offset =3D insn_const_size(ot); else if (b =3D=3D 0x6b) @@ -5247,7 +5250,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c1: /* xadd Ev, Gv */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; gen_op_mov_v_reg(s, ot, s->T0, reg); if (mod =3D=3D 3) { @@ -5279,7 +5282,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; oldv =3D tcg_temp_new(); newv =3D tcg_temp_new(); @@ -5502,7 +5505,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x89: /* mov Gv, Ev */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 /* generate a generic store */ gen_ldst_modrm(env, s, modrm, ot, reg, 1); @@ -5528,7 +5531,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x8b: /* mov Ev, Gv */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_op_mov_reg_v(s, ot, reg, s->T0); @@ -5578,7 +5581,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s_ot =3D b & 8 ? MO_SIGN | ot : ot; =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); =20 @@ -5617,7 +5620,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) goto illegal_op; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); { AddressParts a =3D gen_lea_modrm_0(env, s, modrm); TCGv ea =3D gen_lea_modrm_1(s, a); @@ -5699,7 +5702,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x87: /* xchg Ev, Gv */ ot =3D mo_b_d(b, dflag); modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) { rm =3D (modrm & 7) | REX_B(s); @@ -5736,7 +5739,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) do_lxx: ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) goto illegal_op; @@ -5819,7 +5822,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (mod !=3D 3) { gen_lea_modrm(env, s, modrm); opreg =3D OR_TMP0; @@ -6674,7 +6677,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_cmovcc1(env, s, ot, b, modrm, reg); break; =20 @@ -6824,7 +6827,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) do_btx: ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); gen_op_mov_v_reg(s, MO_32, s->T1, reg); @@ -6929,7 +6932,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1bd: /* bsr / lzcnt */ ot =3D dflag; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); gen_extu(ot, s->T0); =20 @@ -7693,7 +7696,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) d_ot =3D dflag; =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); =20 @@ -7767,7 +7770,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); t0 =3D tcg_temp_local_new(); gen_update_cc_op(s); @@ -7808,7 +7811,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); if (s->flags & HF_MPX_EN_MASK) { mod =3D (modrm >> 6) & 3; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (prefixes & PREFIX_REPZ) { /* bndcl */ if (reg >=3D 4 @@ -7898,7 +7901,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); if (s->flags & HF_MPX_EN_MASK) { mod =3D (modrm >> 6) & 3; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (mod !=3D 3 && (prefixes & PREFIX_REPZ)) { /* bndmk */ if (reg >=3D 4 @@ -8012,7 +8015,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) * are assumed to be 1's, regardless of actual values. */ rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (CODE64(s)) ot =3D MO_64; else @@ -8069,7 +8072,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) * are assumed to be 1's, regardless of actual values. */ rm =3D (modrm & 7) | REX_B(s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); if (CODE64(s)) ot =3D MO_64; else @@ -8112,7 +8115,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) goto illegal_op; - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); /* generate a generic store */ gen_ldst_modrm(env, s, modrm, ot, reg, 1); break; @@ -8338,7 +8341,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; =20 modrm =3D x86_ldub_code(env, s); - reg =3D ((modrm >> 3) & 7) | rex_r; + reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 if (s->prefix & PREFIX_DATA) { ot =3D MO_16; @@ -8366,7 +8369,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c2: case 0x1c4 ... 0x1c6: case 0x1d0 ... 0x1fe: - gen_sse(env, s, b, pc_start, rex_r); + gen_sse(env, s, b, pc_start); break; default: goto unknown_op; --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410497; cv=none; d=zoho.com; s=zohoarc; b=B5TWM/TQ/4Bg9zvZA2zvteHAcgm7Gtkc5sKBkBrUQ+NRgD0ZsA+Smkycbw4N2l6omTr32N47bbNAsO0akMq/dsqISmEwC3Ckeh34j2KEn3byJCA16K8K4qzSyY3bk+qqyoU9eS+9LgY/123B2JDxtSXDvLO9tCaD5vrbeqgJjFg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410497; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=6nDSi2OJfOTaQ/1QMGaIy9TKp9JFtHSdU8wWAA7Z90w=; b=bhYv01BRb6voY7eBBPGvsf5SfWadG0qlpH22XjmbM/CGCcspUqayprLhCBnKzh03TbuQdMP57NzSeOUzaWcnsM7FyCcqb5L6chO52w44xIBTz/22RlATpkPlz54gJQjgoziqnesgh4xEdViBeadqfOzbr8/FZGcLy5/ARRJtQ1o= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410497778836.2055309074356; Fri, 9 Aug 2019 21:14:57 -0700 (PDT) Received: from localhost ([::1]:34792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwImO-00022F-S3 for importer@patchew.org; Sat, 10 Aug 2019 00:14:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34614) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkh-0005AN-IJ for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkg-0004BI-FM for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:11 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:36299) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkg-0004B2-B6 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:10 -0400 Received: by mail-ot1-x341.google.com with SMTP id k18so8366688otr.3 for ; Fri, 09 Aug 2019 21:13:10 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.08 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6nDSi2OJfOTaQ/1QMGaIy9TKp9JFtHSdU8wWAA7Z90w=; b=bAg1ZLD5yhKtQ+/2t6GkF7qnprGc3gMX6Zsrijhy8LCLKmvGhQurrIT6Qu7rjv5t1D j46jcz22T8yUfsndTrMI0NhQTdIIz+NGYTWcrgG0xViUHCVbQ3phTJYaqH8v9tSA92PH kRQMHGw0B3U5TnBLjvzoF9xoJqF6dWZKWXR4pvQfxVoXvaVQFvIGRLNQdYg3J2EHuVwk HfHYTKKZAcNv9GhigJk5R1lpFfvVotHNbndPSuP1lQOJjHUsHdLghwrhpkpG+O1linzJ 8l87F6ntrMmP03Lr653pn6jqDsJCnbBZbCIBWOTqenRALxLidF98+Ws7wMj119wZ+64S 0hEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6nDSi2OJfOTaQ/1QMGaIy9TKp9JFtHSdU8wWAA7Z90w=; b=cRVl9vfB8PNUL34pf4+/G98QyMs+salN1vRUnkbj9paRr1uOHOAkh27W90C0Rvq+7w Rc4ObZYpAFZv3V5d/MxmXmIwUvkZ/Hx8wupC9F64YnS0tIgv9V/Y0BDnSHYo9fyVVG/Z Si0Nx9hFyUTV93w3veEQSfsL5gQQ/QcrH6Z0ltC1nmo3HDRWhmCDok9DkZUsvw02ZS7I hG/OfiUK1rlB8hl+L51Rq6RDpexVL2L4/JhJihO/3wEGFA10G+phGWSMAaHVBuOUNvKA wpN5sgP18VTA2iDzfFwXBaPCSDbjdncHYhf8qlg+sqr7F47KFfbLDNZq5UgQPmlboOjp ty2w== X-Gm-Message-State: APjAAAUXkqtx9ZU1K+71ai/cjwdpB/7lqInnSgN7nsHYMVQsX95xpHRD uuwOhcwCM+a+5YCMpvTAaJrk868Z X-Google-Smtp-Source: APXvYqwGuSANDRoYqS4OMbe4mDM62cEqCj2mxAc47WpmEMtzSD4DSohwsCMmGScOZlQ13jgBtZJ9dw== X-Received: by 2002:a9d:76da:: with SMTP id p26mr21558703otl.311.1565410389635; Fri, 09 Aug 2019 21:13:09 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:18 -0400 Message-Id: <20190810041255.6820-3-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 02/39] target/i386: Push rex_w into DisasContext X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Richard Henderson Treat this the same as we already do for other rex bits. Signed-off-by: Richard Henderson --- target/i386/translate.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index d74dbfd585..c0866c2797 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -44,11 +44,13 @@ #define REX_X(s) ((s)->rex_x) #define REX_B(s) ((s)->rex_b) #define REX_R(s) ((s)->rex_r) +#define REX_W(s) ((s)->rex_w) #else #define CODE64(s) 0 #define REX_X(s) 0 #define REX_B(s) 0 #define REX_R(s) 0 +#define REX_W(s) -1 #endif =20 #ifdef TARGET_X86_64 @@ -100,7 +102,7 @@ typedef struct DisasContext { #ifdef TARGET_X86_64 int lma; /* long mode active */ int code64; /* 64 bit code segment */ - int rex_x, rex_b, rex_r; + int rex_x, rex_b, rex_r, rex_w; #endif int vex_l; /* vex vector length */ int vex_v; /* vex vvvv register, without 1's complement. */ @@ -4495,7 +4497,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; target_ulong pc_start =3D s->base.pc_next; - int rex_w; =20 s->pc_start =3D s->pc =3D pc_start; s->override =3D -1; @@ -4503,6 +4504,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s->rex_x =3D 0; s->rex_b =3D 0; s->rex_r =3D 0; + s->rex_w =3D -1; s->x86_64_hregs =3D false; #endif s->rip_offset =3D 0; /* for relative ip address */ @@ -4514,7 +4516,6 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } =20 prefixes =3D 0; - rex_w =3D -1; =20 next_byte: b =3D x86_ldub_code(env, s); @@ -4557,7 +4558,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x40 ... 0x4f: if (CODE64(s)) { /* REX prefix */ - rex_w =3D (b >> 3) & 1; + s->rex_w =3D (b >> 3) & 1; s->rex_r =3D (b & 0x4) << 1; s->rex_x =3D (b & 0x2) << 2; s->rex_b =3D (b & 0x1) << 3; @@ -4606,7 +4607,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s->rex_b =3D (~vex2 >> 2) & 8; #endif vex3 =3D x86_ldub_code(env, s); - rex_w =3D (vex3 >> 7) & 1; +#ifdef TARGET_X86_64 + s->rex_w =3D (vex3 >> 7) & 1; +#endif switch (vex2 & 0x1f) { case 0x01: /* Implied 0f leading opcode bytes. */ b =3D x86_ldub_code(env, s) | 0x100; @@ -4631,9 +4634,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* Post-process prefixes. */ if (CODE64(s)) { /* In 64-bit mode, the default data size is 32-bit. Select 64-bit - data with rex_w, and 16-bit data with 0x66; rex_w takes precede= nce + data with REX_W, and 16-bit data with 0x66; REX_W takes precede= nce over 0x66 if both are present. */ - dflag =3D (rex_w > 0 ? MO_64 : prefixes & PREFIX_DATA ? MO_16 : MO= _32); + dflag =3D (REX_W(s) > 0 ? MO_64 : prefixes & PREFIX_DATA ? MO_16 := MO_32); /* In 64-bit mode, 0x67 selects 32-bit addressing. */ aflag =3D (prefixes & PREFIX_ADR ? MO_32 : MO_64); } else { @@ -5029,7 +5032,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* operand size for jumps is 64 bit */ ot =3D MO_64; } else if (op =3D=3D 3 || op =3D=3D 5) { - ot =3D dflag !=3D MO_16 ? MO_32 + (rex_w =3D=3D 1) : MO_16; + ot =3D dflag !=3D MO_16 ? MO_32 + (REX_W(s) =3D=3D 1) : MO= _16; } else if (op =3D=3D 6) { /* default push size is 64 bit */ ot =3D mo_pushpop(s, dflag); --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410443; cv=none; d=zoho.com; s=zohoarc; b=bda4R89DQeLwHHVu/oVnyItYJ+QprcukSZZBZDmhiYYqE7y4PI58GIAYU27DvaNw+C3z/FafFmFpmNqQpnF44IlgIjsXTzVdOv96SI0N5peMCjOWn+3hMAU/HU6MGSrroHW0qO/QYKTIYq2dFBDFZQ74PeuZjGFutZfFnpDF6mQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410443; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=WFpvXIDyuG9TPH/GD9uG23x87TyOtajUpKaxr9QGUcU=; b=XlVoDpgINyqggalMbv3gRyB5JGQyMcLNkCbhlpKkJ8K6LXhv6Kv/nJbQtaDMgE1pCWfCgkQRT2KVQYX24zpOOkB+jKGg9oHC7EtCq52Pzxenmfb0GXfEMzFxjIXl5f7tTSC+qu89tP/plQ+SlPxad5thnrw8r7V68R7s2hlSdGk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15654104437791021.5239448590387; Fri, 9 Aug 2019 21:14:03 -0700 (PDT) Received: from localhost ([::1]:34772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlR-0006pi-S0 for importer@patchew.org; Sat, 10 Aug 2019 00:13:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34626) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIki-0005AT-H8 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkh-0004CM-KE for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:12 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:37148) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkh-0004BT-Fk for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:11 -0400 Received: by mail-ot1-x343.google.com with SMTP id f17so5087907otq.4 for ; Fri, 09 Aug 2019 21:13:11 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.09 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WFpvXIDyuG9TPH/GD9uG23x87TyOtajUpKaxr9QGUcU=; b=RpaTyTmVKcGAIM1HX21JZOZBOh8UEOX0ZsJIuPKhkHGE/WmYpsgwVzEtVg9+/19kBK b1OIyKwcIKaJvw2qOJX1sb1qDb3hHfcYNtxE7C8Kb92fa+pizIhFrcF1CzcsmfyXC26Z Leeu9q4/HNJ0Zm8h/IkXUac3GKpt3dnFTzz/lmbtSf/0nH0TV3tbuBbKqppyz4DMeCub PiAFvqUZGFnA+c1Ld4PjGQn/w/E3D6M4sKjJ1mMSe/JqQM7QfkjWDyfMPrdEkhrNJETv u4hqUcUhJxOYvpaANkHHkR54t3nkHmJiRVkDmUxZla1joHkirnOeilsixqMa+dJnlCow 6Rdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WFpvXIDyuG9TPH/GD9uG23x87TyOtajUpKaxr9QGUcU=; b=NOOioP8Xun84XVhGleO0CfVSLWhpHOEiDbA5ZP6OGj4bNGulHgu76X5tMQTAWToYWa c166uq6w+ShNC2aQgepXqWGWlfLpQ2uauVPcvmFg5RABZcCg/ZgXHf47QOZdE632clee oh3w1vid80tPwPp+KRiyFx3+Y+UbTLSjGntuZbFASz0vIWfvhlEtsXu/7LK/q0IsCxkG BjkCcCLsXj1MDBDQ1QooAmJlLcpVFVWgn5U+2/T9O75KtafEPMtSI+4mGZZ/5f7TyFBt hD8bXNFW3Bu9Cu90XhKtXa8flfGw+N05lGS+ksEOfVVU8Zy+ZQbip0DZ4ASM9FsFsatd 62Qg== X-Gm-Message-State: APjAAAWQc8aUHhURtE8OMphpaR5KY9k8bI1cfmgb7ElsU6lqxVbfUCU4 dkURua8gox/r7LsfSKjfJm9E16aH X-Google-Smtp-Source: APXvYqzR9J3UCrQYP49IHAu+drLfiRs0XY3yyJ5VCGfx+0f57SW3Jn9hoi3M5aAFyGV4t/C+jwP4aw== X-Received: by 2002:a05:6830:4b:: with SMTP id d11mr7533790otp.106.1565410390716; Fri, 09 Aug 2019 21:13:10 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:19 -0400 Message-Id: <20190810041255.6820-4-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 03/39] target/i386: reduce scope of variable aflag X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The variable aflag is not used in most of disas_insn; make this clear by explicitly reducing its scope to the block where it is used. Suggested-by: Richard Henderson Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index c0866c2797..bda96277e4 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4493,11 +4493,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) CPUX86State *env =3D cpu->env_ptr; int b, prefixes; int shift; - TCGMemOp ot, aflag, dflag; + TCGMemOp ot, dflag; int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; target_ulong pc_start =3D s->base.pc_next; =20 + { + TCGMemOp aflag; + s->pc_start =3D s->pc =3D pc_start; s->override =3D -1; #ifdef TARGET_X86_64 @@ -4657,6 +4660,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s->prefix =3D prefixes; s->aflag =3D aflag; s->dflag =3D dflag; + } =20 /* now check op code */ reswitch: --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410626; cv=none; d=zoho.com; s=zohoarc; b=C8GGIL4cL4/ZXGIW9GBwAVEyoCF3y47pcfNyOl/kP4T40LyVTJNxQ9fCJLWN3UvhJfKlGe0uLXZgb9CyzzmgFM069HoxJgMGFXCj+5GcNUMzAkCXy4Nu4HYJ6bs6S9zR6splnHkVd0QFntF5iSRnL/UX5vXwJJNwfZvuzt/LiRA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410626; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=B7EJT5lzpjHtBLSgeZjnrnvOhaVIfQhoZsfiVYdqw5k=; b=S+MySgmqfgq3dW9lX+ke8/tBwks7Vpk7X7QNAm/eIUeu5LHL63A9YTeGd16NOqQewlsFuDZinQnqdTaKkruQVLBXyPblStG79HjpfdWNYGXWvmpVicBIvVP1YQnnI4Pfm7Obkn8qOz/mR2ePBVNAxtr8Zyg4oPna/GlH5jBciZU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410626188679.0141145270704; Fri, 9 Aug 2019 21:17:06 -0700 (PDT) Received: from localhost ([::1]:34830 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIoT-0006e7-63 for importer@patchew.org; Sat, 10 Aug 2019 00:17:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34655) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkm-0005I9-D5 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkj-0004Ds-DM for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:16 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:39400) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkj-0004Di-6C for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:13 -0400 Received: by mail-ot1-x342.google.com with SMTP id r21so134535749otq.6 for ; Fri, 09 Aug 2019 21:13:13 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.11 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=B7EJT5lzpjHtBLSgeZjnrnvOhaVIfQhoZsfiVYdqw5k=; b=jnNMRsiS/8XdMP9cGpnato2KBes2Dq35e51AlbHHfw/6wFipWfd87RS1IsDRS8NvEp 1OqDOL3nV7udRY5neNROImHJ1Ia3gJmfvSC0hLxT7v+u6Gz74Z78t1LCyGb9jYjWcavm ODWmT/Fc8YeBnHRAOUSVYoJDepSJv6J0j1r05ZZuhdI+Prky1TE3UUY+UnwFIoTYZTve ao5B5BDTxkyVwux5oDVaNKuONgketTRswu1S8XECnNHuOJsKm+ME8i1mAleU/Bmf/njH BJ/utv6nLnao6F3Gl1EiEs6uXl5uVYRg6qTqvOLAC9lLXfWXAfYqiSXFQp/r+giMeT1u osyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=B7EJT5lzpjHtBLSgeZjnrnvOhaVIfQhoZsfiVYdqw5k=; b=d3COlwCA+MYVZNzzyLE18c4EANX+7sHKUtlLx5C/o+uc/EMxY9B8+Jjcgy26myyPXI Di+/MzAb/IxLJqRAoYRPC8xC404PdYvYBzHFqEj0mkx42i5/1hFgJPSMKLtml6hS0wrC kYMLjFg57ulq4UmIFWUj711gFs0d8/0wu6aBtRk0Vjvrkp0ZG7qEQVHqAqGgtvIhvhg1 VTvGinE2dlZL/qEUP0NVy/th0uaA6OveuQpQeF/n7vTqa3HTGQgzPL89cA7Db/uk4m+V co/3bOvnAC+l81fSvncKPnrztcz5DGaJuwruUXJEpNtdK/kwgyzEu5GTPmNGI+58wPki VQmQ== X-Gm-Message-State: APjAAAWRito2fHoEMzZ7aHUzAWDl//Fwi5OZR4nq7w5v2Z1KXUXhGtQu SeDF6c0Ac89cNEKuJwiONsddn6wF X-Google-Smtp-Source: APXvYqw8ZorOsDyBSffGycob+4dAVWmcnNyYvHmVnijwgbOUA8VVoAveIyMvnuR3BCIpulX6lsAy0A== X-Received: by 2002:aca:72c7:: with SMTP id p190mr4445646oic.9.1565410391946; Fri, 09 Aug 2019 21:13:11 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:20 -0400 Message-Id: <20190810041255.6820-5-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 04/39] target/i386: use dflag from DisasContext X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" There already is a variable dflag in DisasContext, so reduce the scope of the local variable dflag to enforce use of the one in DisasContext. Suggested-by: Richard Henderson Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 184 ++++++++++++++++++++-------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index bda96277e4..bb13877df7 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4493,13 +4493,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) CPUX86State *env =3D cpu->env_ptr; int b, prefixes; int shift; - TCGMemOp ot, dflag; + TCGMemOp ot; int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; target_ulong pc_start =3D s->base.pc_next; =20 { - TCGMemOp aflag; + TCGMemOp aflag, dflag; =20 s->pc_start =3D s->pc =3D pc_start; s->override =3D -1; @@ -4686,7 +4686,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) op =3D (b >> 3) & 7; f =3D (b >> 1) & 3; =20 - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); =20 switch(f) { case 0: /* OP Ev, Gv */ @@ -4744,7 +4744,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) { int val; =20 - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); =20 modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; @@ -4781,16 +4781,16 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) /**************************/ /* inc, dec, and other misc arith */ case 0x40 ... 0x47: /* inc Gv */ - ot =3D dflag; + ot =3D s->dflag; gen_inc(s, ot, OR_EAX + (b & 7), 1); break; case 0x48 ... 0x4f: /* dec Gv */ - ot =3D dflag; + ot =3D s->dflag; gen_inc(s, ot, OR_EAX + (b & 7), -1); break; case 0xf6: /* GRP3 */ case 0xf7: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); =20 modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; @@ -5022,7 +5022,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xfe: /* GRP4 */ case 0xff: /* GRP5 */ - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); =20 modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; @@ -5036,10 +5036,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) /* operand size for jumps is 64 bit */ ot =3D MO_64; } else if (op =3D=3D 3 || op =3D=3D 5) { - ot =3D dflag !=3D MO_16 ? MO_32 + (REX_W(s) =3D=3D 1) : MO= _16; + ot =3D s->dflag !=3D MO_16 ? MO_32 + (REX_W(s) =3D=3D 1) := MO_16; } else if (op =3D=3D 6) { /* default push size is 64 bit */ - ot =3D mo_pushpop(s, dflag); + ot =3D mo_pushpop(s, s->dflag); } } if (mod !=3D 3) { @@ -5067,7 +5067,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 2: /* call Ev */ /* XXX: optimize if memory (no 'and' is necessary) */ - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tcg_gen_ext16u_tl(s->T0, s->T0); } next_eip =3D s->pc - s->cs_base; @@ -5085,19 +5085,19 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) if (s->pe && !s->vm86) { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_lcall_protected(cpu_env, s->tmp2_i32, s->T1, - tcg_const_i32(dflag - 1), + tcg_const_i32(s->dflag - 1), tcg_const_tl(s->pc - s->cs_base= )); } else { tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_lcall_real(cpu_env, s->tmp2_i32, s->T1, - tcg_const_i32(dflag - 1), + tcg_const_i32(s->dflag - 1), tcg_const_i32(s->pc - s->cs_base)); } tcg_gen_ld_tl(s->tmp4, cpu_env, offsetof(CPUX86State, eip)); gen_jr(s, s->tmp4); break; case 4: /* jmp Ev */ - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tcg_gen_ext16u_tl(s->T0, s->T0); } gen_op_jmp_v(s->T0); @@ -5130,7 +5130,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0x84: /* test Ev, Gv */ case 0x85: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); =20 modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); @@ -5143,7 +5143,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xa8: /* test eAX, Iv */ case 0xa9: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); val =3D insn_get(env, s, ot); =20 gen_op_mov_v_reg(s, ot, s->T0, OR_EAX); @@ -5153,7 +5153,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 case 0x98: /* CWDE/CBW */ - switch (dflag) { + switch (s->dflag) { #ifdef TARGET_X86_64 case MO_64: gen_op_mov_v_reg(s, MO_32, s->T0, R_EAX); @@ -5176,7 +5176,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 0x99: /* CDQ/CWD */ - switch (dflag) { + switch (s->dflag) { #ifdef TARGET_X86_64 case MO_64: gen_op_mov_v_reg(s, MO_64, s->T0, R_EAX); @@ -5203,7 +5203,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1af: /* imul Gv, Ev */ case 0x69: /* imul Gv, Ev, I */ case 0x6b: - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); if (b =3D=3D 0x69) @@ -5255,7 +5255,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x1c0: case 0x1c1: /* xadd Ev, Gv */ - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; @@ -5287,7 +5287,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) { TCGv oldv, newv, cmpv; =20 - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; @@ -5348,7 +5348,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } #ifdef TARGET_X86_64 - if (dflag =3D=3D MO_64) { + if (s->dflag =3D=3D MO_64) { if (!(s->cpuid_ext_features & CPUID_EXT_CX16)) { goto illegal_op; } @@ -5388,7 +5388,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } gen_helper_rdrand(s->T0, cpu_env); rm =3D (modrm & 7) | REX_B(s); - gen_op_mov_reg_v(s, dflag, rm, s->T0); + gen_op_mov_reg_v(s, s->dflag, rm, s->T0); set_cc_op(s, CC_OP_EFLAGS); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_end(); @@ -5425,7 +5425,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x68: /* push Iv */ case 0x6a: - ot =3D mo_pushpop(s, dflag); + ot =3D mo_pushpop(s, s->dflag); if (b =3D=3D 0x68) val =3D insn_get(env, s, ot); else @@ -5510,7 +5510,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* mov */ case 0x88: case 0x89: /* mov Gv, Ev */ - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 @@ -5519,7 +5519,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xc6: case 0xc7: /* mov Ev, Iv */ - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; if (mod !=3D 3) { @@ -5536,7 +5536,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x8a: case 0x8b: /* mov Ev, Gv */ - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); =20 @@ -5568,7 +5568,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (reg >=3D 6) goto illegal_op; gen_op_movl_T0_seg(s, reg); - ot =3D mod =3D=3D 3 ? dflag : MO_16; + ot =3D mod =3D=3D 3 ? s->dflag : MO_16; gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; =20 @@ -5581,7 +5581,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) TCGMemOp s_ot; =20 /* d_ot is the size of destination */ - d_ot =3D dflag; + d_ot =3D s->dflag; /* ot is the size of source */ ot =3D (b & 1) + MO_8; /* s_ot is the sign+size of source */ @@ -5632,7 +5632,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) AddressParts a =3D gen_lea_modrm_0(env, s, modrm); TCGv ea =3D gen_lea_modrm_1(s, a); gen_lea_v_seg(s, s->aflag, ea, -1, -1); - gen_op_mov_reg_v(s, dflag, reg, s->A0); + gen_op_mov_reg_v(s, s->dflag, reg, s->A0); } break; =20 @@ -5643,7 +5643,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) { target_ulong offset_addr; =20 - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); switch (s->aflag) { #ifdef TARGET_X86_64 case MO_64: @@ -5681,7 +5681,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xb8 ... 0xbf: /* mov R, Iv */ #ifdef TARGET_X86_64 - if (dflag =3D=3D MO_64) { + if (s->dflag =3D=3D MO_64) { uint64_t tmp; /* 64 bit case */ tmp =3D x86_ldq_code(env, s); @@ -5691,7 +5691,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } else #endif { - ot =3D dflag; + ot =3D s->dflag; val =3D insn_get(env, s, ot); reg =3D (b & 7) | REX_B(s); tcg_gen_movi_tl(s->T0, val); @@ -5701,13 +5701,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) =20 case 0x91 ... 0x97: /* xchg R, EAX */ do_xchg_reg_eax: - ot =3D dflag; + ot =3D s->dflag; reg =3D (b & 7) | REX_B(s); rm =3D R_EAX; goto do_xchg_reg; case 0x86: case 0x87: /* xchg Ev, Gv */ - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; @@ -5744,7 +5744,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1b5: /* lgs Gv */ op =3D R_GS; do_lxx: - ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; + ot =3D s->dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; @@ -5772,7 +5772,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) shift =3D 2; grp2: { - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; op =3D (modrm >> 3) & 7; @@ -5825,7 +5825,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) op =3D 1; shift =3D 0; do_shiftd: - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; rm =3D (modrm & 7) | REX_B(s); @@ -5987,7 +5987,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 0x0c: /* fldenv mem */ - gen_helper_fldenv(cpu_env, s->A0, tcg_const_i32(dflag - 1)= ); + gen_helper_fldenv(cpu_env, s->A0, tcg_const_i32(s->dflag -= 1)); break; case 0x0d: /* fldcw mem */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, @@ -5995,7 +5995,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_helper_fldcw(cpu_env, s->tmp2_i32); break; case 0x0e: /* fnstenv mem */ - gen_helper_fstenv(cpu_env, s->A0, tcg_const_i32(dflag - 1)= ); + gen_helper_fstenv(cpu_env, s->A0, tcg_const_i32(s->dflag -= 1)); break; case 0x0f: /* fnstcw mem */ gen_helper_fnstcw(s->tmp2_i32, cpu_env); @@ -6010,10 +6010,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) gen_helper_fpop(cpu_env); break; case 0x2c: /* frstor mem */ - gen_helper_frstor(cpu_env, s->A0, tcg_const_i32(dflag - 1)= ); + gen_helper_frstor(cpu_env, s->A0, tcg_const_i32(s->dflag -= 1)); break; case 0x2e: /* fnsave mem */ - gen_helper_fsave(cpu_env, s->A0, tcg_const_i32(dflag - 1)); + gen_helper_fsave(cpu_env, s->A0, tcg_const_i32(s->dflag - = 1)); break; case 0x2f: /* fnstsw mem */ gen_helper_fnstsw(s->tmp2_i32, cpu_env); @@ -6355,7 +6355,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xa4: /* movsS */ case 0xa5: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_movs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { @@ -6365,7 +6365,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xaa: /* stosS */ case 0xab: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_stos(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { @@ -6374,7 +6374,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xac: /* lodsS */ case 0xad: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_lods(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { @@ -6383,7 +6383,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xae: /* scasS */ case 0xaf: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); if (prefixes & PREFIX_REPNZ) { gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 1); } else if (prefixes & PREFIX_REPZ) { @@ -6395,7 +6395,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xa6: /* cmpsS */ case 0xa7: - ot =3D mo_b_d(b, dflag); + ot =3D mo_b_d(b, s->dflag); if (prefixes & PREFIX_REPNZ) { gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 1); } else if (prefixes & PREFIX_REPZ) { @@ -6406,7 +6406,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x6c: /* insS */ case 0x6d: - ot =3D mo_b_d32(b, dflag); + ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base,=20 SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes) | 4); @@ -6421,7 +6421,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x6e: /* outsS */ case 0x6f: - ot =3D mo_b_d32(b, dflag); + ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base, svm_is_rep(prefixes) | 4); @@ -6440,7 +6440,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 case 0xe4: case 0xe5: - ot =3D mo_b_d32(b, dflag); + ot =3D mo_b_d32(b, s->dflag); val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); gen_check_io(s, ot, pc_start - s->cs_base, @@ -6459,7 +6459,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xe6: case 0xe7: - ot =3D mo_b_d32(b, dflag); + ot =3D mo_b_d32(b, s->dflag); val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); gen_check_io(s, ot, pc_start - s->cs_base, @@ -6480,7 +6480,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xec: case 0xed: - ot =3D mo_b_d32(b, dflag); + ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base, SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes)); @@ -6498,7 +6498,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xee: case 0xef: - ot =3D mo_b_d32(b, dflag); + ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base, svm_is_rep(prefixes)); @@ -6542,21 +6542,21 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) if (s->pe && !s->vm86) { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_lret_protected(cpu_env, tcg_const_i32(dflag - 1), + gen_helper_lret_protected(cpu_env, tcg_const_i32(s->dflag - 1), tcg_const_i32(val)); } else { gen_stack_A0(s); /* pop offset */ - gen_op_ld_v(s, dflag, s->T0, s->A0); + gen_op_ld_v(s, s->dflag, s->T0, s->A0); /* NOTE: keeping EIP updated is not a problem in case of exception */ gen_op_jmp_v(s->T0); /* pop selector */ - gen_add_A0_im(s, 1 << dflag); - gen_op_ld_v(s, dflag, s->T0, s->A0); + gen_add_A0_im(s, 1 << s->dflag); + gen_op_ld_v(s, s->dflag, s->T0, s->A0); gen_op_movl_seg_T0_vm(s, R_CS); /* add stack offset */ - gen_stack_update(s, val + (2 << dflag)); + gen_stack_update(s, val + (2 << s->dflag)); } gen_eob(s); break; @@ -6567,17 +6567,17 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); if (!s->pe) { /* real mode */ - gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); + gen_helper_iret_real(cpu_env, tcg_const_i32(s->dflag - 1)); set_cc_op(s, CC_OP_EFLAGS); } else if (s->vm86) { if (s->iopl !=3D 3) { gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); } else { - gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1)); + gen_helper_iret_real(cpu_env, tcg_const_i32(s->dflag - 1)); set_cc_op(s, CC_OP_EFLAGS); } } else { - gen_helper_iret_protected(cpu_env, tcg_const_i32(dflag - 1), + gen_helper_iret_protected(cpu_env, tcg_const_i32(s->dflag - 1), tcg_const_i32(s->pc - s->cs_base)); set_cc_op(s, CC_OP_EFLAGS); } @@ -6585,14 +6585,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) break; case 0xe8: /* call im */ { - if (dflag !=3D MO_16) { + if (s->dflag !=3D MO_16) { tval =3D (int32_t)insn_get(env, s, MO_32); } else { tval =3D (int16_t)insn_get(env, s, MO_16); } next_eip =3D s->pc - s->cs_base; tval +=3D next_eip; - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tval &=3D 0xffff; } else if (!CODE64(s)) { tval &=3D 0xffffffff; @@ -6609,7 +6609,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 if (CODE64(s)) goto illegal_op; - ot =3D dflag; + ot =3D s->dflag; offset =3D insn_get(env, s, ot); selector =3D insn_get(env, s, MO_16); =20 @@ -6618,13 +6618,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) } goto do_lcall; case 0xe9: /* jmp im */ - if (dflag !=3D MO_16) { + if (s->dflag !=3D MO_16) { tval =3D (int32_t)insn_get(env, s, MO_32); } else { tval =3D (int16_t)insn_get(env, s, MO_16); } tval +=3D s->pc - s->cs_base; - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tval &=3D 0xffff; } else if (!CODE64(s)) { tval &=3D 0xffffffff; @@ -6638,7 +6638,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 if (CODE64(s)) goto illegal_op; - ot =3D dflag; + ot =3D s->dflag; offset =3D insn_get(env, s, ot); selector =3D insn_get(env, s, MO_16); =20 @@ -6649,7 +6649,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xeb: /* jmp Jb */ tval =3D (int8_t)insn_get(env, s, MO_8); tval +=3D s->pc - s->cs_base; - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tval &=3D 0xffff; } gen_jmp(s, tval); @@ -6658,7 +6658,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) tval =3D (int8_t)insn_get(env, s, MO_8); goto do_jcc; case 0x180 ... 0x18f: /* jcc Jv */ - if (dflag !=3D MO_16) { + if (s->dflag !=3D MO_16) { tval =3D (int32_t)insn_get(env, s, MO_32); } else { tval =3D (int16_t)insn_get(env, s, MO_16); @@ -6666,7 +6666,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) do_jcc: next_eip =3D s->pc - s->cs_base; tval +=3D next_eip; - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tval &=3D 0xffff; } gen_bnd_jmp(s); @@ -6682,7 +6682,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!(s->cpuid_features & CPUID_CMOV)) { goto illegal_op; } - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_cmovcc1(env, s, ot, b, modrm, reg); @@ -6707,7 +6707,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } else { ot =3D gen_pop_T0(s); if (s->cpl =3D=3D 0) { - if (dflag !=3D MO_16) { + if (s->dflag !=3D MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | AC_MA= SK | ID_MASK | NT_MA= SK | @@ -6722,7 +6722,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } } else { if (s->cpl <=3D s->iopl) { - if (dflag !=3D MO_16) { + if (s->dflag !=3D MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | AC_MASK | @@ -6739,7 +6739,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) & 0xffff)); } } else { - if (dflag !=3D MO_16) { + if (s->dflag !=3D MO_16) { gen_helper_write_eflags(cpu_env, s->T0, tcg_const_i32((TF_MASK | AC_MAS= K | ID_MASK | NT_MAS= K))); @@ -6799,7 +6799,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /************************/ /* bit operations */ case 0x1ba: /* bt/bts/btr/btc Gv, im */ - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); op =3D (modrm >> 3) & 7; mod =3D (modrm >> 6) & 3; @@ -6832,7 +6832,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1bb: /* btc */ op =3D 3; do_btx: - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); mod =3D (modrm >> 6) & 3; @@ -6937,7 +6937,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x1bc: /* bsf / tzcnt */ case 0x1bd: /* bsr / lzcnt */ - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); @@ -7111,7 +7111,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x62: /* bound */ if (CODE64(s)) goto illegal_op; - ot =3D dflag; + ot =3D s->dflag; modrm =3D x86_ldub_code(env, s); reg =3D (modrm >> 3) & 7; mod =3D (modrm >> 6) & 3; @@ -7129,7 +7129,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c8 ... 0x1cf: /* bswap reg */ reg =3D (b & 7) | REX_B(s); #ifdef TARGET_X86_64 - if (dflag =3D=3D MO_64) { + if (s->dflag =3D=3D MO_64) { gen_op_mov_v_reg(s, MO_64, s->T0, reg); tcg_gen_bswap64_i64(s->T0, s->T0); gen_op_mov_reg_v(s, MO_64, reg, s->T0); @@ -7159,7 +7159,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) tval =3D (int8_t)insn_get(env, s, MO_8); next_eip =3D s->pc - s->cs_base; tval +=3D next_eip; - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tval &=3D 0xffff; } =20 @@ -7243,7 +7243,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!s->pe) { gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); } else { - gen_helper_sysexit(cpu_env, tcg_const_i32(dflag - 1)); + gen_helper_sysexit(cpu_env, tcg_const_i32(s->dflag - 1)); gen_eob(s); } break; @@ -7262,7 +7262,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!s->pe) { gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); } else { - gen_helper_sysret(cpu_env, tcg_const_i32(dflag - 1)); + gen_helper_sysret(cpu_env, tcg_const_i32(s->dflag - 1)); /* condition codes are modified only in long mode */ if (s->lma) { set_cc_op(s, CC_OP_EFLAGS); @@ -7301,7 +7301,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, ldt.selector)); - ot =3D mod =3D=3D 3 ? dflag : MO_16; + ot =3D mod =3D=3D 3 ? s->dflag : MO_16; gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 2: /* lldt */ @@ -7322,7 +7322,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, tr.selector)); - ot =3D mod =3D=3D 3 ? dflag : MO_16; + ot =3D mod =3D=3D 3 ? s->dflag : MO_16; gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 3: /* ltr */ @@ -7366,7 +7366,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_op_st_v(s, MO_16, s->T0, s->A0); gen_add_A0_im(s, 2); tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, gdt.base)); - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tcg_gen_andi_tl(s->T0, s->T0, 0xffffff); } gen_op_st_v(s, CODE64(s) + MO_32, s->T0, s->A0); @@ -7421,7 +7421,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_op_st_v(s, MO_16, s->T0, s->A0); gen_add_A0_im(s, 2); tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.base)); - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tcg_gen_andi_tl(s->T0, s->T0, 0xffffff); } gen_op_st_v(s, CODE64(s) + MO_32, s->T0, s->A0); @@ -7571,7 +7571,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_op_ld_v(s, MO_16, s->T1, s->A0); gen_add_A0_im(s, 2); gen_op_ld_v(s, CODE64(s) + MO_32, s->T0, s->A0); - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tcg_gen_andi_tl(s->T0, s->T0, 0xffffff); } tcg_gen_st_tl(s->T0, cpu_env, offsetof(CPUX86State, gdt.base)); @@ -7588,7 +7588,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_op_ld_v(s, MO_16, s->T1, s->A0); gen_add_A0_im(s, 2); gen_op_ld_v(s, CODE64(s) + MO_32, s->T0, s->A0); - if (dflag =3D=3D MO_16) { + if (s->dflag =3D=3D MO_16) { tcg_gen_andi_tl(s->T0, s->T0, 0xffffff); } tcg_gen_st_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.base)); @@ -7700,7 +7700,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s)) { int d_ot; /* d_ot is the size of destination */ - d_ot =3D dflag; + d_ot =3D s->dflag; =20 modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); @@ -7775,7 +7775,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) TCGv t0; if (!s->pe || s->vm86) goto illegal_op; - ot =3D dflag !=3D MO_16 ? MO_32 : MO_16; + ot =3D s->dflag !=3D MO_16 ? MO_32 : MO_16; modrm =3D x86_ldub_code(env, s); reg =3D ((modrm >> 3) & 7) | REX_R(s); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); @@ -8117,7 +8117,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c3: /* MOVNTI reg, mem */ if (!(s->cpuid_features & CPUID_SSE2)) goto illegal_op; - ot =3D mo_64_32(dflag); + ot =3D mo_64_32(s->dflag); modrm =3D x86_ldub_code(env, s); mod =3D (modrm >> 6) & 3; if (mod =3D=3D 3) @@ -8353,7 +8353,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->prefix & PREFIX_DATA) { ot =3D MO_16; } else { - ot =3D mo_64_32(dflag); + ot =3D mo_64_32(s->dflag); } =20 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410589; cv=none; d=zoho.com; s=zohoarc; b=BGutBD5+xEKR6Cx1SVNoGM1nnNvDbjJA9XWWpOVu2bkVDYima/aOI9qAsabf81SmbeTkpo/lDx4uXVE+OX0+NkRc4IxiElLCqxYl0XG6vM1mIyu1Esia9zMIxVDNSUrzTGVlZ1o6T9KoTRk0z3Az3Ez9rQfrgBZACLXhu24gmxs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410589; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=HBP4b/pjXXG4n16ZSc8MQ2tDyjzKCxYPAB7gYBBStz0=; b=aWmlHcuk4Hzv/ypjMc3imH2pE9DOCuWH+/6Lp5n83T2gcPApd9XROftYEdd+5vGY0N8Ol7vK5ZrBjD70vHloStsPTcRbxDftXqC1Bo2cBudc01lHkqQviWnT7zmK7+gF77DrcxIv7riurIsQ/+reYqyNK7WzY9EB0zSLXVDY8xk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410589308901.1213027928487; Fri, 9 Aug 2019 21:16:29 -0700 (PDT) Received: from localhost ([::1]:34826 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIns-0005af-3w for importer@patchew.org; Sat, 10 Aug 2019 00:16:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34646) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkl-0005G5-PQ for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkj-0004Dy-Nd for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:15 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:39401) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkj-0004Dn-Hb for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:13 -0400 Received: by mail-ot1-x343.google.com with SMTP id r21so134535772otq.6 for ; Fri, 09 Aug 2019 21:13:13 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.12 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HBP4b/pjXXG4n16ZSc8MQ2tDyjzKCxYPAB7gYBBStz0=; b=PleQq/qgE002nGAG2xdLuJyzUSWoeAbOiuVebj0mzdOE9oeBP5H22+/M+yiZIz4wQV n4jTlAy6ov1W50tM23Upq1l8q/7lQttKhPt+UtzIFrPU7TsH5v0NY7vUq0V4VjOzjSnX 2Ks+rM9ZQbd46jjYVmUXdK8ApkI0a3Lobt2K3qU9R0I1KSRD46rcalSYPng463b6K8ue pKRpfpdtzbFdyuiwPTkMM8N44xDjzL9MNyMCo2YuF9J04u11V8+ZLmMuIxXktJFer72R rJZiPu/QrAPah36K1O2nZKXY1EH9d2dttHEm5xI5jUqASAQZYttA/fuvGvRtlUNzGE4e 6AvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HBP4b/pjXXG4n16ZSc8MQ2tDyjzKCxYPAB7gYBBStz0=; b=FME7bIdcUWXSxdf0GwE/JhT/f0dymXzq6Aj3s1rhrP8+YUMavrF8YOOwj0psyQyMKD qaCPbKYeDz1hAQilqFkQKnKryvM0YrlUx3S4Kn9knzkgEEpeW4nSiUnsFyxHKnzIUM+6 zXFn5inmTUb0ZphdigODoBr36SYVebMTM6P+dAwWzIFbd0dwO0fxc0hdiklTKRCopcva sUPgRcnSX//ZmlsYnm7+S1tj2xi0Vieh92JqC66eGef8sT4n49OeYbYcdrXX9qyal7rD PEUJ9N0zuWEwxKBXCYqPiELbYAcyGUbaWpV4uHxhbhZXMAG2tTvH+1wJTEKWVf1KSvc4 2hbg== X-Gm-Message-State: APjAAAXntE889SbXGQs58e2ZTaqj6ColpQ/yppLdHDVz7od3Zw9wpI48 Cgos+x9ll0qsqL4Nywg1oedO58DW X-Google-Smtp-Source: APXvYqydnCUaPZzMrfHGYFxEEWojkuyUh5v939YDYF6/S3pBj8JGymn6eJvxvsOzsTvLU/S1Dxc08g== X-Received: by 2002:aca:4c8:: with SMTP id 191mr5064830oie.120.1565410392613; Fri, 09 Aug 2019 21:13:12 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:21 -0400 Message-Id: <20190810041255.6820-6-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 05/39] target/i386: use prefix from DisasContext X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Reduce scope of the local variable prefixes to enforce use of prefix from DisasContext instead. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 113 ++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index bb13877df7..40a4844b64 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4491,7 +4491,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, static target_ulong disas_insn(DisasContext *s, CPUState *cpu) { CPUX86State *env =3D cpu->env_ptr; - int b, prefixes; + int b; int shift; TCGMemOp ot; int modrm, reg, rm, mod, op, opreg, val; @@ -4499,6 +4499,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) target_ulong pc_start =3D s->base.pc_next; =20 { + int prefixes; TCGMemOp aflag, dflag; =20 s->pc_start =3D s->pc =3D pc_start; @@ -6356,7 +6357,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xa4: /* movsS */ case 0xa5: ot =3D mo_b_d(b, s->dflag); - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_movs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { gen_movs(s, ot); @@ -6366,7 +6367,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xaa: /* stosS */ case 0xab: ot =3D mo_b_d(b, s->dflag); - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_stos(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { gen_stos(s, ot); @@ -6375,7 +6376,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xac: /* lodsS */ case 0xad: ot =3D mo_b_d(b, s->dflag); - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_lods(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { gen_lods(s, ot); @@ -6384,9 +6385,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xae: /* scasS */ case 0xaf: ot =3D mo_b_d(b, s->dflag); - if (prefixes & PREFIX_REPNZ) { + if (s->prefix & PREFIX_REPNZ) { gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 1); - } else if (prefixes & PREFIX_REPZ) { + } else if (s->prefix & PREFIX_REPZ) { gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 0); } else { gen_scas(s, ot); @@ -6396,9 +6397,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xa6: /* cmpsS */ case 0xa7: ot =3D mo_b_d(b, s->dflag); - if (prefixes & PREFIX_REPNZ) { + if (s->prefix & PREFIX_REPNZ) { gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 1); - } else if (prefixes & PREFIX_REPZ) { + } else if (s->prefix & PREFIX_REPZ) { gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 0); } else { gen_cmps(s, ot); @@ -6409,8 +6410,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base,=20 - SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes) | 4); - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { + SVM_IOIO_TYPE_MASK | svm_is_rep(s->prefix) | 4); + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_ins(s, ot, pc_start - s->cs_base, s->pc - s->cs_base); } else { gen_ins(s, ot); @@ -6424,8 +6425,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base, - svm_is_rep(prefixes) | 4); - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) { + svm_is_rep(s->prefix) | 4); + if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { gen_repz_outs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); } else { gen_outs(s, ot); @@ -6444,7 +6445,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); gen_check_io(s, ot, pc_start - s->cs_base, - SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes)); + SVM_IOIO_TYPE_MASK | svm_is_rep(s->prefix)); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -6463,7 +6464,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); gen_check_io(s, ot, pc_start - s->cs_base, - svm_is_rep(prefixes)); + svm_is_rep(s->prefix)); gen_op_mov_v_reg(s, ot, s->T1, R_EAX); =20 if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6483,7 +6484,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base, - SVM_IOIO_TYPE_MASK | svm_is_rep(prefixes)); + SVM_IOIO_TYPE_MASK | svm_is_rep(s->prefix)); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -6501,7 +6502,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); gen_check_io(s, ot, pc_start - s->cs_base, - svm_is_rep(prefixes)); + svm_is_rep(s->prefix)); gen_op_mov_v_reg(s, ot, s->T1, R_EAX); =20 if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6944,7 +6945,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_extu(ot, s->T0); =20 /* Note that lzcnt and tzcnt are in different extensions. */ - if ((prefixes & PREFIX_REPZ) + if ((s->prefix & PREFIX_REPZ) && (b & 1 ? s->cpuid_ext3_features & CPUID_EXT3_ABM : s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_BMI1)) { @@ -7037,14 +7038,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) /* misc */ case 0x90: /* nop */ /* XXX: correct lock test for all insn */ - if (prefixes & PREFIX_LOCK) { + if (s->prefix & PREFIX_LOCK) { goto illegal_op; } /* If REX_B is set, then this is xchg eax, r8d, not a nop. */ if (REX_B(s)) { goto do_xchg_reg_eax; } - if (prefixes & PREFIX_REPZ) { + if (s->prefix & PREFIX_REPZ) { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); gen_helper_pause(cpu_env, tcg_const_i32(s->pc - pc_start)); @@ -7607,7 +7608,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); break; case 0xee: /* rdpkru */ - if (prefixes & PREFIX_LOCK) { + if (s->prefix & PREFIX_LOCK) { goto illegal_op; } tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); @@ -7615,7 +7616,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_= i64); break; case 0xef: /* wrpkru */ - if (prefixes & PREFIX_LOCK) { + if (s->prefix & PREFIX_LOCK) { goto illegal_op; } tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], @@ -7819,18 +7820,18 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) if (s->flags & HF_MPX_EN_MASK) { mod =3D (modrm >> 6) & 3; reg =3D ((modrm >> 3) & 7) | REX_R(s); - if (prefixes & PREFIX_REPZ) { + if (s->prefix & PREFIX_REPZ) { /* bndcl */ if (reg >=3D 4 - || (prefixes & PREFIX_LOCK) + || (s->prefix & PREFIX_LOCK) || s->aflag =3D=3D MO_16) { goto illegal_op; } gen_bndck(env, s, modrm, TCG_COND_LTU, cpu_bndl[reg]); - } else if (prefixes & PREFIX_REPNZ) { + } else if (s->prefix & PREFIX_REPNZ) { /* bndcu */ if (reg >=3D 4 - || (prefixes & PREFIX_LOCK) + || (s->prefix & PREFIX_LOCK) || s->aflag =3D=3D MO_16) { goto illegal_op; } @@ -7838,14 +7839,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) tcg_gen_not_i64(notu, cpu_bndu[reg]); gen_bndck(env, s, modrm, TCG_COND_GTU, notu); tcg_temp_free_i64(notu); - } else if (prefixes & PREFIX_DATA) { + } else if (s->prefix & PREFIX_DATA) { /* bndmov -- from reg/mem */ if (reg >=3D 4 || s->aflag =3D=3D MO_16) { goto illegal_op; } if (mod =3D=3D 3) { int reg2 =3D (modrm & 7) | REX_B(s); - if (reg2 >=3D 4 || (prefixes & PREFIX_LOCK)) { + if (reg2 >=3D 4 || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } if (s->flags & HF_MPX_IU_MASK) { @@ -7874,7 +7875,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* bndldx */ AddressParts a =3D gen_lea_modrm_0(env, s, modrm); if (reg >=3D 4 - || (prefixes & PREFIX_LOCK) + || (s->prefix & PREFIX_LOCK) || s->aflag =3D=3D MO_16 || a.base < -1) { goto illegal_op; @@ -7909,10 +7910,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) if (s->flags & HF_MPX_EN_MASK) { mod =3D (modrm >> 6) & 3; reg =3D ((modrm >> 3) & 7) | REX_R(s); - if (mod !=3D 3 && (prefixes & PREFIX_REPZ)) { + if (mod !=3D 3 && (s->prefix & PREFIX_REPZ)) { /* bndmk */ if (reg >=3D 4 - || (prefixes & PREFIX_LOCK) + || (s->prefix & PREFIX_LOCK) || s->aflag =3D=3D MO_16) { goto illegal_op; } @@ -7937,22 +7938,22 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) /* bnd registers are now in-use */ gen_set_hflag(s, HF_MPX_IU_MASK); break; - } else if (prefixes & PREFIX_REPNZ) { + } else if (s->prefix & PREFIX_REPNZ) { /* bndcn */ if (reg >=3D 4 - || (prefixes & PREFIX_LOCK) + || (s->prefix & PREFIX_LOCK) || s->aflag =3D=3D MO_16) { goto illegal_op; } gen_bndck(env, s, modrm, TCG_COND_GTU, cpu_bndu[reg]); - } else if (prefixes & PREFIX_DATA) { + } else if (s->prefix & PREFIX_DATA) { /* bndmov -- to reg/mem */ if (reg >=3D 4 || s->aflag =3D=3D MO_16) { goto illegal_op; } if (mod =3D=3D 3) { int reg2 =3D (modrm & 7) | REX_B(s); - if (reg2 >=3D 4 || (prefixes & PREFIX_LOCK)) { + if (reg2 >=3D 4 || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } if (s->flags & HF_MPX_IU_MASK) { @@ -7979,7 +7980,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* bndstx */ AddressParts a =3D gen_lea_modrm_0(env, s, modrm); if (reg >=3D 4 - || (prefixes & PREFIX_LOCK) + || (s->prefix & PREFIX_LOCK) || s->aflag =3D=3D MO_16 || a.base < -1) { goto illegal_op; @@ -8027,7 +8028,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D MO_64; else ot =3D MO_32; - if ((prefixes & PREFIX_LOCK) && (reg =3D=3D 0) && + if ((s->prefix & PREFIX_LOCK) && (reg =3D=3D 0) && (s->cpuid_ext3_features & CPUID_EXT3_CR8LEG)) { reg =3D 8; } @@ -8131,7 +8132,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) switch (modrm) { CASE_MODRM_MEM_OP(0): /* fxsave */ if (!(s->cpuid_features & CPUID_FXSR) - || (prefixes & PREFIX_LOCK)) { + || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } if ((s->flags & HF_EM_MASK) || (s->flags & HF_TS_MASK)) { @@ -8144,7 +8145,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(1): /* fxrstor */ if (!(s->cpuid_features & CPUID_FXSR) - || (prefixes & PREFIX_LOCK)) { + || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } if ((s->flags & HF_EM_MASK) || (s->flags & HF_TS_MASK)) { @@ -8183,8 +8184,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(4): /* xsave */ if ((s->cpuid_ext_features & CPUID_EXT_XSAVE) =3D=3D 0 - || (prefixes & (PREFIX_LOCK | PREFIX_DATA - | PREFIX_REPZ | PREFIX_REPNZ))) { + || (s->prefix & (PREFIX_LOCK | PREFIX_DATA + | PREFIX_REPZ | PREFIX_REPNZ))) { goto illegal_op; } gen_lea_modrm(env, s, modrm); @@ -8195,8 +8196,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(5): /* xrstor */ if ((s->cpuid_ext_features & CPUID_EXT_XSAVE) =3D=3D 0 - || (prefixes & (PREFIX_LOCK | PREFIX_DATA - | PREFIX_REPZ | PREFIX_REPNZ))) { + || (s->prefix & (PREFIX_LOCK | PREFIX_DATA + | PREFIX_REPZ | PREFIX_REPNZ))) { goto illegal_op; } gen_lea_modrm(env, s, modrm); @@ -8211,10 +8212,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) break; =20 CASE_MODRM_MEM_OP(6): /* xsaveopt / clwb */ - if (prefixes & PREFIX_LOCK) { + if (s->prefix & PREFIX_LOCK) { goto illegal_op; } - if (prefixes & PREFIX_DATA) { + if (s->prefix & PREFIX_DATA) { /* clwb */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_CLWB)) { goto illegal_op; @@ -8224,7 +8225,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /* xsaveopt */ if ((s->cpuid_ext_features & CPUID_EXT_XSAVE) =3D=3D 0 || (s->cpuid_xsave_features & CPUID_XSAVE_XSAVEOPT) = =3D=3D 0 - || (prefixes & (PREFIX_REPZ | PREFIX_REPNZ))) { + || (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ))) { goto illegal_op; } gen_lea_modrm(env, s, modrm); @@ -8235,10 +8236,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) break; =20 CASE_MODRM_MEM_OP(7): /* clflush / clflushopt */ - if (prefixes & PREFIX_LOCK) { + if (s->prefix & PREFIX_LOCK) { goto illegal_op; } - if (prefixes & PREFIX_DATA) { + if (s->prefix & PREFIX_DATA) { /* clflushopt */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_CLFLUSHOPT= )) { goto illegal_op; @@ -8258,8 +8259,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xd0 ... 0xd7: /* wrfsbase (f3 0f ae /2) */ case 0xd8 ... 0xdf: /* wrgsbase (f3 0f ae /3) */ if (CODE64(s) - && (prefixes & PREFIX_REPZ) - && !(prefixes & PREFIX_LOCK) + && (s->prefix & PREFIX_REPZ) + && !(s->prefix & PREFIX_LOCK) && (s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_FSGSBASE)) { TCGv base, treg, src, dst; =20 @@ -8288,10 +8289,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) goto unknown_op; =20 case 0xf8: /* sfence / pcommit */ - if (prefixes & PREFIX_DATA) { + if (s->prefix & PREFIX_DATA) { /* pcommit */ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_PCOMMIT) - || (prefixes & PREFIX_LOCK)) { + || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } break; @@ -8299,21 +8300,21 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) /* fallthru */ case 0xf9 ... 0xff: /* sfence */ if (!(s->cpuid_features & CPUID_SSE) - || (prefixes & PREFIX_LOCK)) { + || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } tcg_gen_mb(TCG_MO_ST_ST | TCG_BAR_SC); break; case 0xe8 ... 0xef: /* lfence */ if (!(s->cpuid_features & CPUID_SSE) - || (prefixes & PREFIX_LOCK)) { + || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } tcg_gen_mb(TCG_MO_LD_LD | TCG_BAR_SC); break; case 0xf0 ... 0xf7: /* mfence */ if (!(s->cpuid_features & CPUID_SSE2) - || (prefixes & PREFIX_LOCK)) { + || (s->prefix & PREFIX_LOCK)) { goto illegal_op; } tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC); @@ -8341,8 +8342,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_eob(s); break; case 0x1b8: /* SSE4.2 popcnt */ - if ((prefixes & (PREFIX_REPZ | PREFIX_LOCK | PREFIX_REPNZ)) !=3D - PREFIX_REPZ) + if ((s->prefix & (PREFIX_REPZ | PREFIX_LOCK | PREFIX_REPNZ)) !=3D + PREFIX_REPZ) goto illegal_op; if (!(s->cpuid_ext_features & CPUID_EXT_POPCNT)) goto illegal_op; --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410448; cv=none; d=zoho.com; s=zohoarc; b=amkyQnXQd7A+kYRPE/3cBszTTYIOZmlC39PnjOhg7RorycxXT6pzkJCOkOByEoWz4pl2BECCpYdj1zt2Gx+/6IJp1GaOWfd3/qZHkOmQ6VZsPou4brGXzR2l7dsWbcbqS2OkwnAboxZ6izmCwuSyXuZkUc6SK6PwWVv/xOIgQpA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410448; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=YM6JnD5zVeDNhUIY5JwD7QUjg+Ky9R6ynEiC0EUrLPE=; b=Vs/GHlfRGDL7GX92TrsdLawnoLfrrMvRWA05XrhD4r1tJVpVb4dsB0vJbzh1P0Q5UCKBsYoCoZ/WdGBJGTGV8jtXH1lxF/Ie6HrAIHoZGqL/Z+cOGT8e54VLedxvO9ZkUDh7I3q3KR06DAVRqOV8b00H+rQ1Tpu0IPNPq6aT8TY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410448438479.8267698040478; Fri, 9 Aug 2019 21:14:08 -0700 (PDT) Received: from localhost ([::1]:34774 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlb-0007Ij-DZ for importer@patchew.org; Sat, 10 Aug 2019 00:14:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34658) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkm-0005JD-OM for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkk-0004Ej-Ne for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:16 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:47086) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkk-0004Ed-HF for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:14 -0400 Received: by mail-ot1-x341.google.com with SMTP id z17so22039112otk.13 for ; Fri, 09 Aug 2019 21:13:14 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.13 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YM6JnD5zVeDNhUIY5JwD7QUjg+Ky9R6ynEiC0EUrLPE=; b=XtKKOw5mfwQKFRyKK4P3Guw9P856fDN5qyajBy22VtTTGP+fVtwToRnjNAlWwrRv/k 0U7Zq3f0ASyA6Z8jGdpdcmRpWf8bXVYCz/2MJ9EzpDGAfcTmpuwHuK26Nxzzbr+tgWJb NGtB1a6EX2KSA/Kp85C1pUoPmHLGNoGpTZ0jKrrfw86KEmvr1/wiyOw/PxPZEKhMK+Z8 f7jKN0gDNIUAAvP99T/+uTsD4KSuRrK+Kl7DkvJNslCHmyUDG76Mr9A7KuGt3UA2e2Bo BP4PM94LE38bLWvBjlyiFLuxOI+rAyDJWaYSEW9s18BvxUqYBOgfnh5jcnknmRMMnWyl z46w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YM6JnD5zVeDNhUIY5JwD7QUjg+Ky9R6ynEiC0EUrLPE=; b=tV7fd2xxpUBQ6g2L1AD4A386MeXDrd1N5zf9kJrA5BhJZn+hW2HYBXwq2kojnoyFlT bKSNJhOZHeEyBLiBBVg6urfoYDgPcWpPaoqxzaUipFMrFLOyLz1so0Az7A83NUh1QVD6 yfdIxUdHNhPcbAVTNqi4/uX8mrVM/BHKdTSqo8BGEc+TvIWHwTx5lEsVNxpjHlQMtMav WuBtzqHPFjPN1wxZkD1K1CIc+9tzG5xjNnZWFPW0BQSejz3+j2gqL6mHhlSBphmVBEIB fa1hWV5uFcv8iIo4Vo6znOfpZvS8lbO7ZdibrSpJWKxg92PWU6XNp4EPT996B8H8hqyl eGFw== X-Gm-Message-State: APjAAAWrRMbbvrn6OsMm8XR7cWREkjWuUTpcmcIl+MMUfZlVIeiyP3eb bxxVn0uJeSkrhSc4jzH+KlgqDl9v X-Google-Smtp-Source: APXvYqwJSmZm8nGdgO9FSohANDJpWCOc/VPQqORE5WaQZzND/HF93/Q2qXLsSsTFKAjGmhHmXqDx2w== X-Received: by 2002:a05:6830:2119:: with SMTP id i25mr22122748otc.282.1565410393687; Fri, 09 Aug 2019 21:13:13 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:22 -0400 Message-Id: <20190810041255.6820-7-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 06/39] target/i386: Simplify gen_exception arguments X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Richard Henderson We can compute cur_eip from values present within DisasContext. Signed-off-by: Richard Henderson --- target/i386/translate.c | 89 ++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index 40a4844b64..7532d65778 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -1272,10 +1272,10 @@ static void gen_helper_fp_arith_STN_ST0(int op, int= opreg) } } =20 -static void gen_exception(DisasContext *s, int trapno, target_ulong cur_ei= p) +static void gen_exception(DisasContext *s, int trapno) { gen_update_cc_op(s); - gen_jmp_im(s, cur_eip); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_raise_exception(cpu_env, tcg_const_i32(trapno)); s->base.is_jmp =3D DISAS_NORETURN; } @@ -1284,7 +1284,7 @@ static void gen_exception(DisasContext *s, int trapno= , target_ulong cur_eip) the instruction is known, but it isn't allowed in the current cpu mode.= */ static void gen_illegal_opcode(DisasContext *s) { - gen_exception(s, EXCP06_ILLOP, s->pc_start - s->cs_base); + gen_exception(s, EXCP06_ILLOP); } =20 /* if d =3D=3D OR_TMP0, it means memory operand (address in A0) */ @@ -3040,8 +3040,7 @@ static const struct SSEOpHelper_eppi sse_op_table7[25= 6] =3D { [0xdf] =3D AESNI_OP(aeskeygenassist), }; =20 -static void gen_sse(CPUX86State *env, DisasContext *s, int b, - target_ulong pc_start) +static void gen_sse(CPUX86State *env, DisasContext *s, int b) { int b1, op1_offset, op2_offset, is_xmm, val; int modrm, mod, rm, reg; @@ -3076,7 +3075,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s= , int b, } /* simple MMX/SSE operation */ if (s->flags & HF_TS_MASK) { - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); return; } if (s->flags & HF_EM_MASK) { @@ -4515,7 +4514,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) s->vex_l =3D 0; s->vex_v =3D 0; if (sigsetjmp(s->jmpbuf, 0) !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); return s->pc; } =20 @@ -5854,7 +5853,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->flags & (HF_EM_MASK | HF_TS_MASK)) { /* if CR0.EM or CR0.TS are set, generate an FPU exception */ /* XXX: what to do if illegal op ? */ - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); break; } modrm =3D x86_ldub_code(env, s); @@ -6572,7 +6571,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) set_cc_op(s, CC_OP_EFLAGS); } else if (s->vm86) { if (s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_helper_iret_real(cpu_env, tcg_const_i32(s->dflag - 1)); set_cc_op(s, CC_OP_EFLAGS); @@ -6694,7 +6693,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x9c: /* pushf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); if (s->vm86 && s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_update_cc_op(s); gen_helper_read_eflags(s->T0, cpu_env); @@ -6704,7 +6703,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x9d: /* popf */ gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); if (s->vm86 && s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { ot =3D gen_pop_T0(s); if (s->cpl =3D=3D 0) { @@ -7021,7 +7020,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; val =3D x86_ldub_code(env, s); if (val =3D=3D 0) { - gen_exception(s, EXCP00_DIVZ, pc_start - s->cs_base); + gen_exception(s, EXCP00_DIVZ); } else { gen_helper_aam(cpu_env, tcg_const_i32(val)); set_cc_op(s, CC_OP_LOGICB); @@ -7055,7 +7054,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x9b: /* fwait */ if ((s->flags & (HF_MP_MASK | HF_TS_MASK)) =3D=3D (HF_MP_MASK | HF_TS_MASK)) { - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); } else { gen_helper_fwait(cpu_env); } @@ -7066,7 +7065,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xcd: /* int N */ val =3D x86_ldub_code(env, s); if (s->vm86 && s->iopl !=3D 3) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_interrupt(s, val, pc_start - s->cs_base, s->pc - s->cs_bas= e); } @@ -7089,13 +7088,13 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) if (s->cpl <=3D s->iopl) { gen_helper_cli(cpu_env); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } } else { if (s->iopl =3D=3D 3) { gen_helper_cli(cpu_env); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } } break; @@ -7106,7 +7105,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_jmp_im(s, s->pc - s->cs_base); gen_eob_inhibit_irq(s, true); } else { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } break; case 0x62: /* bound */ @@ -7198,7 +7197,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x130: /* wrmsr */ case 0x132: /* rdmsr */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); @@ -7231,7 +7230,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s) && env->cpuid_vendor1 !=3D CPUID_VENDOR_INTEL_1) goto illegal_op; if (!s->pe) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_helper_sysenter(cpu_env); gen_eob(s); @@ -7242,7 +7241,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (CODE64(s) && env->cpuid_vendor1 !=3D CPUID_VENDOR_INTEL_1) goto illegal_op; if (!s->pe) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_helper_sysexit(cpu_env, tcg_const_i32(s->dflag - 1)); gen_eob(s); @@ -7261,7 +7260,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x107: /* sysret */ if (!s->pe) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_helper_sysret(cpu_env, tcg_const_i32(s->dflag - 1)); /* condition codes are modified only in long mode */ @@ -7283,7 +7282,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0xf4: /* hlt */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_update_cc_op(s); gen_jmp_im(s, pc_start - s->cs_base); @@ -7309,7 +7308,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!s->pe || s->vm86) goto illegal_op; if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); @@ -7330,7 +7329,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (!s->pe || s->vm86) goto illegal_op; if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); @@ -7446,7 +7445,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], @@ -7463,7 +7462,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7488,7 +7487,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7501,7 +7500,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7516,7 +7515,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7530,7 +7529,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7554,7 +7553,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7564,7 +7563,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(2): /* lgdt */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_WRITE); @@ -7581,7 +7580,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(3): /* lidt */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_WRITE); @@ -7626,7 +7625,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; CASE_MODRM_OP(6): /* lmsw */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); @@ -7638,7 +7637,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) =20 CASE_MODRM_MEM_OP(7): /* invlpg */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); break; } gen_update_cc_op(s); @@ -7653,7 +7652,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) #ifdef TARGET_X86_64 if (CODE64(s)) { if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { tcg_gen_mov_tl(s->T0, cpu_seg_base[R_GS]); tcg_gen_ld_tl(cpu_seg_base[R_GS], cpu_env, @@ -7690,7 +7689,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x108: /* invd */ case 0x109: /* wbinvd */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_svm_check_intercept(s, pc_start, (b & 2) ? SVM_EXIT_INVD := SVM_EXIT_WBINVD); /* nothing to do */ @@ -8014,7 +8013,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x120: /* mov reg, crN */ case 0x122: /* mov crN, reg */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { modrm =3D x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). @@ -8071,7 +8070,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x121: /* mov reg, drN */ case 0x123: /* mov drN, reg */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { modrm =3D x86_ldub_code(env, s); /* Ignore the mod bits (assume (modrm&0xc0)=3D=3D0xc0). @@ -8105,7 +8104,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x106: /* clts */ if (s->cpl !=3D 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + gen_exception(s, EXCP0D_GPF); } else { gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); gen_helper_clts(cpu_env); @@ -8136,7 +8135,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if ((s->flags & HF_EM_MASK) || (s->flags & HF_TS_MASK)) { - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8149,7 +8148,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if ((s->flags & HF_EM_MASK) || (s->flags & HF_TS_MASK)) { - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8161,7 +8160,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->flags & HF_TS_MASK) { - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8174,7 +8173,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } if (s->flags & HF_TS_MASK) { - gen_exception(s, EXCP07_PREX, pc_start - s->cs_base); + gen_exception(s, EXCP07_PREX); break; } gen_lea_modrm(env, s, modrm); @@ -8377,7 +8376,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c2: case 0x1c4 ... 0x1c6: case 0x1d0 ... 0x1fe: - gen_sse(env, s, b, pc_start); + gen_sse(env, s, b); break; default: goto unknown_op; --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410826; cv=none; d=zoho.com; s=zohoarc; b=IR4T5zVGcyc02+mKksrvHqym6YjNtiqPfiQxwZTRkrARgFB39ROIyZ7U9bxEarM74u+ZQVEpLmaWM1ZvI5pYINrRMmbhvASv/M9vdK7w1YcicJIfj4JmanU7HdmMY9qYzM8dcXxj6gBjnwQpRLn/9Z4HDFXM1pd0/84/hOLWxeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410826; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=yMfSxCj3hPs9P0sLn5EV7jE/uUeD9Vqi65PSWmUj6As=; b=UKbQSpIQeuoXFwtXQ8ffqBs7mtSYxIVLPJx3UOrkgdMUdHiYDacp6AJrM56BNf89lXmhGZO8Kcbm6rYKSku+Envy5nbUMolaH5uQ+snOJGGBIarS0YYbNI1S54TMx0aCUiGNWtzfCPeogjdf0Yuxj1Cr6NobtR0csqltLLGEmtk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410826415523.4637577653314; Fri, 9 Aug 2019 21:20:26 -0700 (PDT) Received: from localhost ([::1]:34878 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIrh-0004iQ-6e for importer@patchew.org; Sat, 10 Aug 2019 00:20:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34689) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIko-0005Ow-MB for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkm-0004F8-4L for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:18 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:47088) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkl-0004Ew-U5 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:16 -0400 Received: by mail-ot1-x343.google.com with SMTP id z17so22039221otk.13 for ; Fri, 09 Aug 2019 21:13:15 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.14 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yMfSxCj3hPs9P0sLn5EV7jE/uUeD9Vqi65PSWmUj6As=; b=M0cjkg4XJ9ge2fa8IQuIVL1OWICEf2eh5MEiUT9kygYNq9KsXJ+ucigGeFSWZfUfzX IWvhhYDmigCloK7cJmpYQoDgLFnTVP4DXd5yycaq/4fvGlPkgAiBX1xMku9969fjgS3b 9Uqn8jeq8D4vheNi/DHbnmdSPO2ykigYNwO0Q5BrQCxwThmqN8tfYxK0QMdmtip3YvJ/ sR4XMoEbaxJ3wZiUsKYFMyUVgIpT5m/jUhkpr/9KAaG1pCNK+cA1mU7cK2uup2IDHWvu lRo9BXo0Mzflva5GxpAtQMf0iVTd+HiqKI9xbZJENUYKlVTwo8mFc2A5lqLvBzWv0zyw QuqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yMfSxCj3hPs9P0sLn5EV7jE/uUeD9Vqi65PSWmUj6As=; b=RW07MIvRSuMa8w8brtMu9+SvvSmlffoA1RmhhM/G5pkaJC0Odyw/kQCiIb9LMoBMpK 0CP6Uhf7zKjf9QINPadQgEbk6XGoW3x3bzC1jE4t07x8I6QEckwkusdqYH2i6bMEgkg4 /lFjYmkMyxuAak20226iFiZE3IeO6bcMlhbXF/8EQ184jAfovhT2zJxGJJkRK+EhkVRZ 8tJ8XoztmvLmoJhw4S0SjzhFAwPrsT6MhfS9mHXLuKdOe4edC7GbX7iSYr4PCSj9URSC nsfoFx6ISx1B7pyFt/lXvJ2602dn2u6JCAATQYVE38gUupiHJHOHFgG3mR42oIpJv8G6 TTGQ== X-Gm-Message-State: APjAAAXJymGYgsdbrIPIR/obZtFv16bH6KMCQefSiFaddNAlD46IfeFE Nw0DHWNt66TgQ75vdPs+7+o3+6f3 X-Google-Smtp-Source: APXvYqyprA9TPaz6I2EnKr3OyUvLc7IKBZ50wSJZ0Re8kk1Bbah57112REBRYU1qCBlzV5vMaFhI8g== X-Received: by 2002:aca:4588:: with SMTP id s130mr8015617oia.79.1565410394793; Fri, 09 Aug 2019 21:13:14 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:23 -0400 Message-Id: <20190810041255.6820-8-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 07/39] target/i386: use pc_start from DisasContext X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The variable pc_start is already a member of DisasContext. Remove the superfluous local variable. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 131 ++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index 7532d65778..b1ba2fc3e5 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4495,13 +4495,12 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) TCGMemOp ot; int modrm, reg, rm, mod, op, opreg, val; target_ulong next_eip, tval; - target_ulong pc_start =3D s->base.pc_next; =20 { int prefixes; TCGMemOp aflag, dflag; =20 - s->pc_start =3D s->pc =3D pc_start; + s->pc_start =3D s->pc =3D s->base.pc_next; s->override =3D -1; #ifdef TARGET_X86_64 s->rex_x =3D 0; @@ -6357,7 +6356,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xa5: ot =3D mo_b_d(b, s->dflag); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_movs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); + gen_repz_movs(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase); } else { gen_movs(s, ot); } @@ -6367,7 +6366,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xab: ot =3D mo_b_d(b, s->dflag); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_stos(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); + gen_repz_stos(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase); } else { gen_stos(s, ot); } @@ -6376,7 +6375,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xad: ot =3D mo_b_d(b, s->dflag); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_lods(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); + gen_repz_lods(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase); } else { gen_lods(s, ot); } @@ -6385,9 +6384,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xaf: ot =3D mo_b_d(b, s->dflag); if (s->prefix & PREFIX_REPNZ) { - gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 1); + gen_repz_scas(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase, 1); } else if (s->prefix & PREFIX_REPZ) { - gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 0); + gen_repz_scas(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase, 0); } else { gen_scas(s, ot); } @@ -6397,9 +6396,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xa7: ot =3D mo_b_d(b, s->dflag); if (s->prefix & PREFIX_REPNZ) { - gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 1); + gen_repz_cmps(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase, 1); } else if (s->prefix & PREFIX_REPZ) { - gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= , 0); + gen_repz_cmps(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase, 0); } else { gen_cmps(s, ot); } @@ -6408,10 +6407,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0x6d: ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base,=20 + gen_check_io(s, ot, s->pc_start - s->cs_base, SVM_IOIO_TYPE_MASK | svm_is_rep(s->prefix) | 4); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_ins(s, ot, pc_start - s->cs_base, s->pc - s->cs_base); + gen_repz_ins(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_ba= se); } else { gen_ins(s, ot); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6423,10 +6422,10 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) case 0x6f: ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base, + gen_check_io(s, ot, s->pc_start - s->cs_base, svm_is_rep(s->prefix) | 4); if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ)) { - gen_repz_outs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base= ); + gen_repz_outs(s, ot, s->pc_start - s->cs_base, s->pc - s->cs_b= ase); } else { gen_outs(s, ot); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { @@ -6443,7 +6442,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, s->dflag); val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); - gen_check_io(s, ot, pc_start - s->cs_base, + gen_check_io(s, ot, s->pc_start - s->cs_base, SVM_IOIO_TYPE_MASK | svm_is_rep(s->prefix)); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); @@ -6462,7 +6461,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) ot =3D mo_b_d32(b, s->dflag); val =3D x86_ldub_code(env, s); tcg_gen_movi_tl(s->T0, val); - gen_check_io(s, ot, pc_start - s->cs_base, + gen_check_io(s, ot, s->pc_start - s->cs_base, svm_is_rep(s->prefix)); gen_op_mov_v_reg(s, ot, s->T1, R_EAX); =20 @@ -6482,7 +6481,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xed: ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base, + gen_check_io(s, ot, s->pc_start - s->cs_base, SVM_IOIO_TYPE_MASK | svm_is_rep(s->prefix)); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); @@ -6500,7 +6499,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0xef: ot =3D mo_b_d32(b, s->dflag); tcg_gen_ext16u_tl(s->T0, cpu_regs[R_EDX]); - gen_check_io(s, ot, pc_start - s->cs_base, + gen_check_io(s, ot, s->pc_start - s->cs_base, svm_is_rep(s->prefix)); gen_op_mov_v_reg(s, ot, s->T1, R_EAX); =20 @@ -6541,7 +6540,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) do_lret: if (s->pe && !s->vm86) { gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_lret_protected(cpu_env, tcg_const_i32(s->dflag - 1), tcg_const_i32(val)); } else { @@ -6564,7 +6563,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) val =3D 0; goto do_lret; case 0xcf: /* iret */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_IRET); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_IRET); if (!s->pe) { /* real mode */ gen_helper_iret_real(cpu_env, tcg_const_i32(s->dflag - 1)); @@ -6691,7 +6690,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) /************************/ /* flags */ case 0x9c: /* pushf */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_PUSHF); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_PUSHF); if (s->vm86 && s->iopl !=3D 3) { gen_exception(s, EXCP0D_GPF); } else { @@ -6701,7 +6700,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } break; case 0x9d: /* popf */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_POPF); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_POPF); if (s->vm86 && s->iopl !=3D 3) { gen_exception(s, EXCP0D_GPF); } else { @@ -7046,8 +7045,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) } if (s->prefix & PREFIX_REPZ) { gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_pause(cpu_env, tcg_const_i32(s->pc - pc_start)); + gen_jmp_im(s, s->pc_start - s->cs_base); + gen_helper_pause(cpu_env, tcg_const_i32(s->pc - s->pc_start)); s->base.is_jmp =3D DISAS_NORETURN; } break; @@ -7060,27 +7059,27 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) } break; case 0xcc: /* int3 */ - gen_interrupt(s, EXCP03_INT3, pc_start - s->cs_base, s->pc - s->cs= _base); + gen_interrupt(s, EXCP03_INT3, s->pc_start - s->cs_base, s->pc - s-= >cs_base); break; case 0xcd: /* int N */ val =3D x86_ldub_code(env, s); if (s->vm86 && s->iopl !=3D 3) { gen_exception(s, EXCP0D_GPF); } else { - gen_interrupt(s, val, pc_start - s->cs_base, s->pc - s->cs_bas= e); + gen_interrupt(s, val, s->pc_start - s->cs_base, s->pc - s->cs_= base); } break; case 0xce: /* into */ if (CODE64(s)) goto illegal_op; gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_into(cpu_env, tcg_const_i32(s->pc - pc_start)); + gen_jmp_im(s, s->pc_start - s->cs_base); + gen_helper_into(cpu_env, tcg_const_i32(s->pc - s->pc_start)); break; #ifdef WANT_ICEBP case 0xf1: /* icebp (undocumented, exits to external debugger) */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_ICEBP); - gen_debug(s, pc_start - s->cs_base); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_ICEBP); + gen_debug(s, s->pc_start - s->cs_base); break; #endif case 0xfa: /* cli */ @@ -7200,7 +7199,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_exception(s, EXCP0D_GPF); } else { gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); if (b & 2) { gen_helper_rdmsr(cpu_env); } else { @@ -7210,7 +7209,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x131: /* rdtsc */ gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -7222,7 +7221,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; case 0x133: /* rdpmc */ gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_rdpmc(cpu_env); break; case 0x134: /* sysenter */ @@ -7251,8 +7250,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x105: /* syscall */ /* XXX: is it usable in real mode ? */ gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_syscall(cpu_env, tcg_const_i32(s->pc - pc_start)); + gen_jmp_im(s, s->pc_start - s->cs_base); + gen_helper_syscall(cpu_env, tcg_const_i32(s->pc - s->pc_start)); /* TF handling for the syscall insn is different. The TF bit is c= hecked after the syscall insn completes. This allows #DB to not be generated after one has entered CPL0 if TF is set in FMASK. */ @@ -7277,7 +7276,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) #endif case 0x1a2: /* cpuid */ gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_cpuid(cpu_env); break; case 0xf4: /* hlt */ @@ -7285,8 +7284,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_exception(s, EXCP0D_GPF); } else { gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_hlt(cpu_env, tcg_const_i32(s->pc - pc_start)); + gen_jmp_im(s, s->pc_start - s->cs_base); + gen_helper_hlt(cpu_env, tcg_const_i32(s->pc - s->pc_start)); s->base.is_jmp =3D DISAS_NORETURN; } break; @@ -7298,7 +7297,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0: /* sldt */ if (!s->pe || s->vm86) goto illegal_op; - gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_READ); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_LDTR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, ldt.selector)); ot =3D mod =3D=3D 3 ? s->dflag : MO_16; @@ -7310,7 +7309,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->cpl !=3D 0) { gen_exception(s, EXCP0D_GPF); } else { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_LDTR_WRITE); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_LDTR_WRIT= E); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_lldt(cpu_env, s->tmp2_i32); @@ -7319,7 +7318,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 1: /* str */ if (!s->pe || s->vm86) goto illegal_op; - gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_READ); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_TR_READ); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, tr.selector)); ot =3D mod =3D=3D 3 ? s->dflag : MO_16; @@ -7331,7 +7330,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->cpl !=3D 0) { gen_exception(s, EXCP0D_GPF); } else { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_TR_WRITE); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_TR_WRITE); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); gen_helper_ltr(cpu_env, s->tmp2_i32); @@ -7359,7 +7358,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) modrm =3D x86_ldub_code(env, s); switch (modrm) { CASE_MODRM_MEM_OP(0): /* sgdt */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_READ); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_GDTR_READ); gen_lea_modrm(env, s, modrm); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, gdt.limit)); @@ -7377,7 +7376,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); tcg_gen_mov_tl(s->A0, cpu_regs[R_EAX]); gen_extu(s->aflag, s->A0); gen_add_A0_ds_seg(s); @@ -7389,8 +7388,8 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); - gen_helper_mwait(cpu_env, tcg_const_i32(s->pc - pc_start)); + gen_jmp_im(s, s->pc_start - s->cs_base); + gen_helper_mwait(cpu_env, tcg_const_i32(s->pc - s->pc_start)); gen_eob(s); break; =20 @@ -7415,7 +7414,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_MEM_OP(1): /* sidt */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_READ); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_IDTR_READ); gen_lea_modrm(env, s, modrm); tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.lim= it)); gen_op_st_v(s, MO_16, s->T0, s->A0); @@ -7466,9 +7465,9 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_vmrun(cpu_env, tcg_const_i32(s->aflag - 1), - tcg_const_i32(s->pc - pc_start)); + tcg_const_i32(s->pc - s->pc_start)); tcg_gen_exit_tb(NULL, 0); s->base.is_jmp =3D DISAS_NORETURN; break; @@ -7478,7 +7477,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_vmmcall(cpu_env); break; =20 @@ -7491,7 +7490,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_vmload(cpu_env, tcg_const_i32(s->aflag - 1)); break; =20 @@ -7504,7 +7503,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_vmsave(cpu_env, tcg_const_i32(s->aflag - 1)); break; =20 @@ -7533,7 +7532,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_clgi(cpu_env); break; =20 @@ -7544,7 +7543,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_skinit(cpu_env); break; =20 @@ -7557,7 +7556,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_helper_invlpga(cpu_env, tcg_const_i32(s->aflag - 1)); break; =20 @@ -7566,7 +7565,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_exception(s, EXCP0D_GPF); break; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_GDTR_WRITE); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_GDTR_WRITE); gen_lea_modrm(env, s, modrm); gen_op_ld_v(s, MO_16, s->T1, s->A0); gen_add_A0_im(s, 2); @@ -7583,7 +7582,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_exception(s, EXCP0D_GPF); break; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_IDTR_WRITE); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_IDTR_WRITE); gen_lea_modrm(env, s, modrm); gen_op_ld_v(s, MO_16, s->T1, s->A0); gen_add_A0_im(s, 2); @@ -7596,7 +7595,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; =20 CASE_MODRM_OP(4): /* smsw */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_READ_CR0); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_READ_CR0); tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, cr[0])); if (CODE64(s)) { mod =3D (modrm >> 6) & 3; @@ -7628,7 +7627,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_exception(s, EXCP0D_GPF); break; } - gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_WRITE_CR0); gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0); gen_helper_lmsw(cpu_env, s->T0); gen_jmp_im(s, s->pc - s->cs_base); @@ -7641,7 +7640,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) break; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); gen_lea_modrm(env, s, modrm); gen_helper_invlpg(cpu_env, s->A0); gen_jmp_im(s, s->pc - s->cs_base); @@ -7670,7 +7669,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) goto illegal_op; } gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } @@ -7691,7 +7690,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->cpl !=3D 0) { gen_exception(s, EXCP0D_GPF); } else { - gen_svm_check_intercept(s, pc_start, (b & 2) ? SVM_EXIT_INVD := SVM_EXIT_WBINVD); + gen_svm_check_intercept(s, s->pc_start, (b & 2) ? SVM_EXIT_INV= D : SVM_EXIT_WBINVD); /* nothing to do */ } break; @@ -8038,7 +8037,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 4: case 8: gen_update_cc_op(s); - gen_jmp_im(s, pc_start - s->cs_base); + gen_jmp_im(s, s->pc_start - s->cs_base); if (b & 2) { if (tb_cflags(s->base.tb) & CF_USE_ICOUNT) { gen_io_start(); @@ -8088,14 +8087,14 @@ static target_ulong disas_insn(DisasContext *s, CPU= State *cpu) goto illegal_op; } if (b & 2) { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_DR0 + = reg); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_WRITE_DR0= + reg); gen_op_mov_v_reg(s, ot, s->T0, rm); tcg_gen_movi_i32(s->tmp2_i32, reg); gen_helper_set_dr(cpu_env, s->tmp2_i32, s->T0); gen_jmp_im(s, s->pc - s->cs_base); gen_eob(s); } else { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_READ_DR0 + r= eg); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_READ_DR0 = + reg); tcg_gen_movi_i32(s->tmp2_i32, reg); gen_helper_get_dr(s->T0, cpu_env, s->tmp2_i32); gen_op_mov_reg_v(s, ot, rm, s->T0); @@ -8106,7 +8105,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) if (s->cpl !=3D 0) { gen_exception(s, EXCP0D_GPF); } else { - gen_svm_check_intercept(s, pc_start, SVM_EXIT_WRITE_CR0); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_WRITE_CR0); gen_helper_clts(cpu_env); /* abort block because static cpu state changed */ gen_jmp_im(s, s->pc - s->cs_base); @@ -8332,7 +8331,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) gen_nop_modrm(env, s, modrm); break; case 0x1aa: /* rsm */ - gen_svm_check_intercept(s, pc_start, SVM_EXIT_RSM); + gen_svm_check_intercept(s, s->pc_start, SVM_EXIT_RSM); if (!(s->flags & HF_SMM_MASK)) goto illegal_op; gen_update_cc_op(s); --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410501; cv=none; d=zoho.com; s=zohoarc; b=DKeFbH1tNyacwYTgbXVZdknm0of6xXj/SywPK2MF5UOlEccfb+/ConO5I81H3qT+GCpY8P1OvDmf9dfhUILQ+CowHZQPX9GTYsGCiu0AlpE03ZTcqkfbDQIDsJqTablbtMmHFxcfkZoTiB/sZ3tK3GH3ip4jL88QIDBu0lyi/sc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410501; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=l+C2s0/x9K7v+IIGqknAyrxawnw0HcYf8A60AmZ8LNU=; b=eLdzzLAS4XJNGBrya1z4SB6d9cgq8YtIdT9WBnJUbthL/4bAu/WVGc4btIlvle537bH6mlAxU3wUyF6fviSBdb5pxGXMRtPEdbQcA91uzVpIDUCc3JbL56wUsUBVLVufkbSxg1JiKp/OBAGZOTMLaws157jgLq3mout+7FnhoOg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410500993989.6061686412456; Fri, 9 Aug 2019 21:15:00 -0700 (PDT) Received: from localhost ([::1]:34796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwImR-0002BZ-Vg for importer@patchew.org; Sat, 10 Aug 2019 00:15:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34670) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkn-0005Mf-S9 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkm-0004Fl-Sr for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:17 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:37149) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkm-0004FY-Of for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:16 -0400 Received: by mail-ot1-x341.google.com with SMTP id f17so5088365otq.4 for ; Fri, 09 Aug 2019 21:13:16 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.15 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=l+C2s0/x9K7v+IIGqknAyrxawnw0HcYf8A60AmZ8LNU=; b=XRSXs+vqbJuclW1RvdF+cyeSGxChBXTM01lSu2zpfKOqpPRvz16B5zzygpWV1fHXzJ 46rr+giXKB88Sn9zVd83KyHK3I+OJGNBroxIYZDhveogF5W3GlZK+NaKQ9cPY1EfB46D Ho3vL6mPPxLy/pezFxLB0Hs4ba4q/HN7xKmUGoFWhbx0vhJz85D15VLjDvk8o/ZtPlPu GPaqmHRzotAq+ISoF3cyLucudhwcdJDyBnBzusBJo3uQJsgUCeHi+OXZ6x+lEZT/JWxI XOaXrgY1GqrTFPanLKglXMhmxMjgjgGOAEjGbPrPxikG4fwdE/CWwqDNRJqcfXSY+cVx a1hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=l+C2s0/x9K7v+IIGqknAyrxawnw0HcYf8A60AmZ8LNU=; b=dZUONPE3Ykmykzad9ahFI/8VQUSfFBB9FW3lFHxsdfFc3REJNZZjvMCwRSgdh/VTN5 oc8hTfsyN+QLKCfxLLoU0PSn0VuaT+oRGhWNIF1TMQCyT62x8yf85uHi/3DxFUNCYNMd GH+GDmIAYXnZN0gqd5q14+U0XeOMj1/SxcafxLmuHDp2KQs5+GJRVWB1iMq+GrFZZMMc jGn1AOZdUTVRJ6nXLAhhne/MpkcBjEH/IHWZwxWUgOa5WM3DlSyL5IiXL4HZUrJpogiA nfzpQnMpCpq9b6hKRKAZTWoFGvOPyt5WJswSkgyHp3Lc1IsJ+v+auMeqSPKkM86z0cCw 8ivw== X-Gm-Message-State: APjAAAW0v6fBzyT4QnpbMyO1OHzyAsCI/IXJ/uhaaDcnwa/NYmomBcsO l+djXAQvQ+gQsvfTr/auiP62xScJ X-Google-Smtp-Source: APXvYqwx7oROdhFtb5BezWIb0jyiZEMNhctk7MQzmCRZQSd+zH89moqMTBPP6WSYmgtP9O9FD/XH0w== X-Received: by 2002:a9d:f65:: with SMTP id 92mr6771685ott.24.1565410396000; Fri, 09 Aug 2019 21:13:16 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:24 -0400 Message-Id: <20190810041255.6820-9-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 08/39] target/i386: make variable b1 const X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The variable b1 does not change value once assigned. Make this fact explicit by marking it const. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index b1ba2fc3e5..8bf39b73c4 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -3042,7 +3042,7 @@ static const struct SSEOpHelper_eppi sse_op_table7[25= 6] =3D { =20 static void gen_sse(CPUX86State *env, DisasContext *s, int b) { - int b1, op1_offset, op2_offset, is_xmm, val; + int op1_offset, op2_offset, is_xmm, val; int modrm, mod, rm, reg; SSEFunc_0_epp sse_fn_epp; SSEFunc_0_eppi sse_fn_eppi; @@ -3051,14 +3051,11 @@ static void gen_sse(CPUX86State *env, DisasContext = *s, int b) TCGMemOp ot; =20 b &=3D 0xff; - if (s->prefix & PREFIX_DATA) - b1 =3D 1; - else if (s->prefix & PREFIX_REPZ) - b1 =3D 2; - else if (s->prefix & PREFIX_REPNZ) - b1 =3D 3; - else - b1 =3D 0; + const int b1 =3D + s->prefix & PREFIX_DATA ? 1 + : s->prefix & PREFIX_REPZ ? 2 + : s->prefix & PREFIX_REPNZ ? 3 + : 0; sse_fn_epp =3D sse_op_table1[b][b1]; if (!sse_fn_epp) { goto unknown_op; --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410508; cv=none; d=zoho.com; s=zohoarc; b=nBzesjPyawVO43MKBAFKZNJ26Tzx8jNROmluKCVN7Z+84cmSKtmAjBXKTObxiMJCb2o/2tJLpfKBOefsMfKx4uueLq63SYf8pbgXM9a2t5CT5wUfDhylnxznhbYyQ1dItL+JcQHLzwxUxNSv0RZOXVLu39t+J2HaahTrnmpeEAw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410508; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=GAcvgP4Isw7Hfqe0q/GzuOtPct/EkGIUWGKaxvtkJzo=; b=lFCaIzuQ4u3FFg9T03ZWBjkILOR+yn8y+3YFix9Eo/azfsyObs1zgta266wD/9HYJrvN8oRv9Gl0ShZZHTOa6WG1kCq5I8f+4H2VeJRo8q0pu62K3+Z8l1gncD1oBQq+xKBj4OX1waJEkLLz4k+2GE8UGw4KMBz6VX1dbncMd1s= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410508797377.7739886834489; Fri, 9 Aug 2019 21:15:08 -0700 (PDT) Received: from localhost ([::1]:34798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwImZ-0002dH-RK for importer@patchew.org; Sat, 10 Aug 2019 00:15:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34692) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIko-0005PC-Of for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkn-0004Fx-K9 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:18 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:44992) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkn-0004Fp-Fn for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:17 -0400 Received: by mail-ot1-x343.google.com with SMTP id b7so90233340otl.11 for ; Fri, 09 Aug 2019 21:13:17 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.16 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GAcvgP4Isw7Hfqe0q/GzuOtPct/EkGIUWGKaxvtkJzo=; b=B/GdNl8uEz9ez4yNhPbXeRK5D81FqoTCXLBmLU3HVzydkDw7fTkRE9jgVQd1o5Fwbk RJzvWE7Dx6VZPRKwhkgfN/uof3CtBsbm03DGZL10fb1g7o2wfIBwmA7rjs8AsDzUjZYS Sc+6fFh9vNJF4cl6fAgREUYreTQaihHOmvynIcBedC0eGy0Fo5d9mZMshvsG1LpiIYDV vE1YJPbjzYffJx2yqjNDm2pvsr/pXxWxs9//ikzinRFqc6uGsdxawZLTiTtPEKOHg7uP 1dSfn+ZvLJNmZcnqKt0sC/1y7owhmiSOe/R94/q7c0RqUWtT49HmA97fAwAnKgRIhbQG bYDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GAcvgP4Isw7Hfqe0q/GzuOtPct/EkGIUWGKaxvtkJzo=; b=M9ygHuQ81MyOggcAkEmJxs9W+xURe8xvnzCQXAi4kHG4s/I5AbPwis9T7J3+V5mOil W4dYIe93ieXfd3Ood/ubuwyCXe/jM8EpMRhQbGX2qRRbpoAD9dYP8tt1faBwbhmvFmvY KJPVykLfiSOsb3FKLpp5LjELWxEu6fzxiAsG9XgbC1tcaUL7iGmgstl58L9PepYq7gYb g6eR3Y2OpQzRsrtG44IB2GEhzQo9ma2ZopTbRsoTEYBObS8kxNmkR21Hk6O7Tl1g4eU8 A4zs0mj3icZQjOlLGeMb1hjB+D9X/gcGPDsgNzH0WKx1dm/7/aajyFh0kB1yWXMDxsem RLXw== X-Gm-Message-State: APjAAAVaAo+BohngiUTwOBbJznn5QW9EMijjYb3UVsyfvY+J6jhTBARO WmgiI0Eg4D3rwnS9I/PDtoVYuStO X-Google-Smtp-Source: APXvYqxrM0Z+eQC7q8yxKZwAvTIyPpiPsjj/4SCdGy18kRwCM7RdT3jliMYPqXzeXfm+wtPokbUo9w== X-Received: by 2002:a9d:7988:: with SMTP id h8mr20925964otm.301.1565410396806; Fri, 09 Aug 2019 21:13:16 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:25 -0400 Message-Id: <20190810041255.6820-10-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 09/39] target/i386: make variable is_xmm const X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The variable is_xmm does not change value after assignment, so make this fact explicit by marking it const. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index 8bf39b73c4..c5ec309fe2 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -3042,7 +3042,7 @@ static const struct SSEOpHelper_eppi sse_op_table7[25= 6] =3D { =20 static void gen_sse(CPUX86State *env, DisasContext *s, int b) { - int op1_offset, op2_offset, is_xmm, val; + int op1_offset, op2_offset, val; int modrm, mod, rm, reg; SSEFunc_0_epp sse_fn_epp; SSEFunc_0_eppi sse_fn_eppi; @@ -3056,20 +3056,15 @@ static void gen_sse(CPUX86State *env, DisasContext = *s, int b) : s->prefix & PREFIX_REPZ ? 2 : s->prefix & PREFIX_REPNZ ? 3 : 0; + const int is_xmm =3D + (0x10 <=3D b && b <=3D 0x5f) + || b =3D=3D 0xc6 + || b =3D=3D 0xc2 + || !!b1; sse_fn_epp =3D sse_op_table1[b][b1]; if (!sse_fn_epp) { goto unknown_op; } - if ((b <=3D 0x5f && b >=3D 0x10) || b =3D=3D 0xc6 || b =3D=3D 0xc2) { - is_xmm =3D 1; - } else { - if (b1 =3D=3D 0) { - /* MMX case */ - is_xmm =3D 0; - } else { - is_xmm =3D 1; - } - } /* simple MMX/SSE operation */ if (s->flags & HF_TS_MASK) { gen_exception(s, EXCP07_PREX); --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410733; cv=none; d=zoho.com; s=zohoarc; b=VLf8eSPIk0slV8Fzos6s6Lv0U5ALdaxYy5UvoII5GTIcPsbArDVHkFhqxlOWpYiO8QOcbD9S/mfT4MNgQ0JzhHakSS2pm3RKzVnN+3iNb+UfL/fLQ+4EdhWLC7woPZAJp2l69QZ/wvxM0IroMsS75bT4Ckgi1o/QuqlkIDmUVHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410733; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=UnCpLXb0Tm7zqYonWzBKX7Cm2ohAULA3NbEvcZesBtY=; b=krTxz6lalwSwUFxh/afeGKXNLyUmuFTeF/4dT01HlDXN2dnwdqGbLgEARMddpFBHcrtqGnfN7hfq2Nmn4WSjDrFJTN4enHkQI7aVUfmj/V2Ou2ZkzYZIySb4+/8mTTbiBdIYmQx2gXGjAgce0bG1aqKfJdhKDGdeTmzvuH/G7QY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410733113278.45063794393; Fri, 9 Aug 2019 21:18:53 -0700 (PDT) Received: from localhost ([::1]:34854 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIqC-00017y-4r for importer@patchew.org; Sat, 10 Aug 2019 00:18:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34705) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkp-0005RP-Ft for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIko-0004GV-GB for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:19 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:34820) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIko-0004GF-Bs for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:18 -0400 Received: by mail-ot1-x344.google.com with SMTP id j19so63823631otq.2 for ; Fri, 09 Aug 2019 21:13:18 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.16 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UnCpLXb0Tm7zqYonWzBKX7Cm2ohAULA3NbEvcZesBtY=; b=Y4YCuurmcsRd1lDniXb8fsVDwtM3OIO2st5C+qJdDllcoceRr4+PKh4a5jT1X1F7nV jvCh3iris+hldYmfd31xMNnTeo82+bH+uHqMyIBX+bkAln6D2c50CVxJN7UrAi/D0gzU HiSodpmf5ZdtM2lDALc1k+5w9PPaNZK4hsUy4h42DhUJy5ttAl5oVLmDmxEm62/aGj4+ L/zkV694NLLtTTEKjJX5GECNY1K7MxeSb6A7bfcLm/owM3enJJujssFFo9JQRFu850St W4g0lp2tdTkO4s/F21ursy7ALzaYltYVCz29MkWmT01FNEu/EA/RAyRhrMskrn+EbiTb C7AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UnCpLXb0Tm7zqYonWzBKX7Cm2ohAULA3NbEvcZesBtY=; b=pGaU4WV7aYAv3Cj4OnucDo9gki54++9/gfxs+vaK2xgZ0eup0F4x/62ugKooDx274j rdzB2PvMSTULFFYeS20ATut8GVQRE+jiGSu4HfqtZxs77dam8W1wsX5WCsuwPFJQ7RSM t05R03MoiAfYtgDBZ0lHPF8Lmt8gofAtv6wmg5U8mGVgJsrOg6GZcni58AvDMj5iOZtO Cu8NlDFZl5Z3bG74AblqRK8CzO0jXW3voU6e61/Q3cuiaV10286KB9luQpzh5GMM8enG bFYuOr3b8M8KQ+X8WV9W3Rp+1uGi1WrkCaIPEzKPeyixjms1NwlvFCGju+mn9nO6Cfqs DCog== X-Gm-Message-State: APjAAAUyxo+/GT3IUuyiEz0HKokfKQ3PNeAvQGzG7Y6vVEgtcl/d8StE X96fDvU+W47giPFgC7MMCgPKhnQ8 X-Google-Smtp-Source: APXvYqwRT8CfMHKtC+/kor1tPsDPt7uP5cQI1/DLILmArdYMAakdY6Peh/3zXLI/Q+dE7z2z0CQDNw== X-Received: by 2002:a54:4191:: with SMTP id 17mr4018392oiy.125.1565410397558; Fri, 09 Aug 2019 21:13:17 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:26 -0400 Message-Id: <20190810041255.6820-11-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 10/39] target/i386: add vector register file alignment constraints X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" gvec operations require that all vectors be aligned on 16-byte boundary; make sure the MM/XMM/YMM/ZMM register file is aligned as neccessary. Reviewed-by: Richard Henderson Signed-off-by: Jan Bobek --- target/i386/cpu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 8b3dc5533e..cb407b86ba 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1199,9 +1199,9 @@ typedef struct CPUX86State { float_status mmx_status; /* for 3DNow! float ops */ float_status sse_status; uint32_t mxcsr; - ZMMReg xmm_regs[CPU_NB_REGS =3D=3D 8 ? 8 : 32]; - ZMMReg xmm_t0; - MMXReg mmx_t0; + ZMMReg xmm_regs[CPU_NB_REGS =3D=3D 8 ? 8 : 32] QEMU_ALIGNED(16); + ZMMReg xmm_t0 QEMU_ALIGNED(16); + MMXReg mmx_t0 QEMU_ALIGNED(8); =20 XMMReg ymmh_regs[CPU_NB_REGS]; =20 --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410499; cv=none; d=zoho.com; s=zohoarc; b=drBs5YgpLa49+JoaR+xoFAYQFNJeW2nfYNTS8iTno6/xAVUuD2HQNF0Rx4JtFdoLIbenUHyhMtO9y5HFTfB4Dc9xkTmnZ9ne3h0WlXYMBfHSgeIVqS+9DEhUMHlcJtW7oe6NLnVtM7GUwvhUfjd1cujBLUJDdJkJgqDz4DLaFBU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410499; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=asidY1pQnxUGRio46lMssjxV36QIyDmNgONa9nVKDss=; b=UmCtvmLA+AalXXv8vULw+7N60oOk1kHXZwuGQLEQMsSmWjQT54T6VbBw2yTz8osjd5xwPDCoFlkJP1HdhWixRdT6XSnqeZfd1wxo3+ueWFNYB+PalFv0k+mbGmyp0MmQ6bAIm681mJayF9LZ7+Zv35JQqOaSFaaYkN2BWBglTRo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410499468962.7486057782304; Fri, 9 Aug 2019 21:14:59 -0700 (PDT) Received: from localhost ([::1]:34794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwImQ-00026t-IT for importer@patchew.org; Sat, 10 Aug 2019 00:14:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34718) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkq-0005Tt-9Z for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkp-0004IH-8j for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:20 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:44991) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkp-0004Gr-49 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:19 -0400 Received: by mail-ot1-x341.google.com with SMTP id b7so90233506otl.11 for ; Fri, 09 Aug 2019 21:13:19 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.17 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=asidY1pQnxUGRio46lMssjxV36QIyDmNgONa9nVKDss=; b=LCl5bVEMtE0B6Y4Gj0jw/s274sdfq64UcjGjnsDjO40okufyYjWHZVzbqJwMsYcHAa XRF4dybGY3zObfca68KGMXrioGBW+60BqGB2szmmfutlxPjwwsl5ANLQZVszu/eFjYYw LJwf4kXj5MpOR7anwtVoVmp4p4cIdXGelP7S/SI2Chv87gT6MxLsAXJFgX70fbqr5gdD iDlHHFmbcXBY6YFy3STg7DrPYPqTcqMCXyPXeYezmnySPmxCwYGv5zOoP2+jCHmhRjJy 7s3lBzCj4CF1EiDcmfF9uX+YcsRSw8SPEL8nuinzB5mKIQl/y1ujZq2E8TP+GnHcbxyx RhiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=asidY1pQnxUGRio46lMssjxV36QIyDmNgONa9nVKDss=; b=oAhweOf4AgRuXtY55O9VmmTTlpwN0IBsagcbldcxnMflhD1w0bwX7WStiSQujuxvJi i/rkkRWOctvrALiChsq+EIYE3tzqMDB2pb5Aw4mB5E6uprThnpLMTwccUEDB6G1Vsu2H GtFK+NlKzOlzQx8Y2kF8hPHU+kTGDLTW+WjfO343jzt1gMpB4FBYPiOT1Lc0UK/Z/F7x 0LHg+6razQ0fovX3WMwJ9VKOOgzID27Lwo1xDqAy+mAWhNPep3hBvzkB1boFhR03uaxh wmszVwki5fyRPAHh0yKWh/FbFQGsD7gj1dovICm/U+/JFXZhRBOwy10oiISwLkVjBzd9 KBUQ== X-Gm-Message-State: APjAAAXdu3NnW0UAJGU23TolybMn3by6NnwoH3N9iLa2/pAwiBbkKQBb Z6A83mIbjsJzYmD+mf8PlLUR2vJW X-Google-Smtp-Source: APXvYqwCPo5vFBQ405GNA++InLa/OZHMU/gtpPzpqnDxZQebCRz2pccCVcT2gAw9QNaqdQZSUIyl1g== X-Received: by 2002:aca:3158:: with SMTP id x85mr7686618oix.93.1565410398398; Fri, 09 Aug 2019 21:13:18 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:27 -0400 Message-Id: <20190810041255.6820-12-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 11/39] target/i386: introduce gen_(ld, st)d_env_A0 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Similar in spirit to the already present gen_(ld,st)(q,o)_env_A0, it will prove useful in later commits for smaller-sized vector loads. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index c5ec309fe2..258351fce3 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -2652,6 +2652,18 @@ static void gen_jmp(DisasContext *s, target_ulong ei= p) gen_jmp_tb(s, eip, 0); } =20 +static inline void gen_ldd_env_A0(DisasContext *s, int offset) +{ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL); + tcg_gen_st_i32(s->tmp2_i32, cpu_env, offset); +} + +static inline void gen_std_env_A0(DisasContext *s, int offset) +{ + tcg_gen_ld_i32(s->tmp2_i32, cpu_env, offset); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL); +} + static inline void gen_ldq_env_A0(DisasContext *s, int offset) { tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEQ); --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410671; cv=none; d=zoho.com; s=zohoarc; b=KPPCK/1q6JnieTAzWrhY/nQoyvcvW6taQAddbibE5jKB4sgwZITpH5FQv8mliupeSuP94uqH/I5NFbuZ+1piL2eY1Dw8oJrpaLtJD9L2vM79ZyE0N5SsGmrszgRMzZ0e1cNRHSNmvqubtT04SwxBZgd3pN5yZQ85SCsedryVI6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410671; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7KP+U6MpoVPbGr0lDO3rePNLzDgSsxV/T5vodj8pKVs=; b=UUopp851U+o7eflU2DZ2qHjLjUgTBXX5kyQ/8VQIfg6j+xo6h3E5PBJ4th7twErQGIaVq4mU425KfjJiv5GM+nqDeK9A3jgBPX987NIVyDgcOqu4QND2q4k2XgPvpd1PeRgFcIdJ8f0xnceoyPdVR59SVyjLUschmhhbDSP5r4k= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410671469905.5378250696615; Fri, 9 Aug 2019 21:17:51 -0700 (PDT) Received: from localhost ([::1]:34832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIpC-0007Uk-At for importer@patchew.org; Sat, 10 Aug 2019 00:17:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34731) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkq-0005Vl-Ve for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkq-0004J9-1l for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:20 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:36306) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkp-0004J0-Tq for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:19 -0400 Received: by mail-ot1-x344.google.com with SMTP id k18so8367625otr.3 for ; Fri, 09 Aug 2019 21:13:19 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.18 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7KP+U6MpoVPbGr0lDO3rePNLzDgSsxV/T5vodj8pKVs=; b=hG1G+ZzdU5JOeuKiPAfnfR6qrufrlRgFqZ3gHPGgDsGlojX1nelB07yaXJJXEq3WfQ QYmj4tYHzDDu6nk4WAnNyL3aGDxePvFkQbXUvWG8vXJ7o0+SZzzYJ+9FRjq9gEThsXlx JUNI2gsNUof0cW2BvUl8HqPz0zNZrbg+918PvHJ0LnW2NeT53Q4thCper267PQzidf3n nHIE1WptfCPCeH0FxoCNCVbTEzTVIIHO8JCLASjNS3aJnbZ1c0qmhIa/cJoPAZ27Qokg CtEr0vqtoLYZAzsz3N5kN8v2Ygy5rmmXh7r98pKpxL6uvX0fwSiJWMWZDXFPaYbK/9lX s70A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7KP+U6MpoVPbGr0lDO3rePNLzDgSsxV/T5vodj8pKVs=; b=hUbiXazEp+u5+VJCxD8RP3f1HjFaOdf7JUj7SQQahKbdpIA3RPt91YnEHimbX4PUYy 26ZO7DvkkYcukrsxEQbNzYebmaKiOnxAr/LpqTIg/aVgXva0U9WtA4PNPk9nqfbnIyTt kSafz7MZAJZ8xpqbJGPki3V5ViV/FLlvF99ZdIFeSaK1nXNjYmx83LqM818xxvbwaokk Gpwyb9r3NG2RA0qqGLKGi2Zx0lw1trA5Ko0fbcKfkRPSrbK//4tUsZ5kNgQDvulvcWI+ ti85TEBk6zLMmlBciRaovCi4MoVacJfjvfCcPDsyg++Ds7Lohxo7f4ROoCmVzKrG3V5S sMLw== X-Gm-Message-State: APjAAAVjtCkZCTCqY6KQScfyRkMxRS2HbJHJx08SmH4W7x7t5Fqf3kuh dSUyiQyUETdxjAXIQAoENSYIFl0/ X-Google-Smtp-Source: APXvYqxS5EDZRsd7t779oAGRBel2Hp694oiadWDBPAMaTcrkAwheXxL0z6J3OOh91+Lw9JkXAkdj8A== X-Received: by 2002:aca:df08:: with SMTP id w8mr8216049oig.84.1565410399174; Fri, 09 Aug 2019 21:13:19 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:28 -0400 Message-Id: <20190810041255.6820-13-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 12/39] target/i386: introduce gen_sse_ng X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This function serves as the point-of-intercept for all newly implemented instructions. If no new implementation exists, fall back to gen_sse. Note: This changeset is intended for development only and shall not be included in the final patch series. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index 258351fce3..fbf10b57a2 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4489,6 +4489,31 @@ static void gen_sse(CPUX86State *env, DisasContext *= s, int b) } } =20 +static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) +{ + enum { + P_66 =3D 1 << (0 + 8), + P_F3 =3D 1 << (1 + 8), + P_F2 =3D 1 << (2 + 8), + W_0 =3D 0 << (3 + 8), + W_1 =3D 1 << (3 + 8), + M_0F =3D 1 << (4 + 8), + }; + + switch (b | M_0F + | (s->prefix & PREFIX_DATA ? P_66 : 0) + | (s->prefix & PREFIX_REPZ ? P_F3 : 0) + | (s->prefix & PREFIX_REPNZ ? P_F2 : 0) + | (REX_W(s) > 0 ? W_1 : W_0)) { + + default: + gen_sse(env, s, b); + return; + } + + g_assert_not_reached(); +} + /* convert one instruction. s->base.is_jmp is set if the translation must be stopped. Return the next pc value */ static target_ulong disas_insn(DisasContext *s, CPUState *cpu) @@ -8379,7 +8404,7 @@ static target_ulong disas_insn(DisasContext *s, CPUSt= ate *cpu) case 0x1c2: case 0x1c4 ... 0x1c6: case 0x1d0 ... 0x1fe: - gen_sse(env, s, b); + gen_sse_ng(env, s, b); break; default: goto unknown_op; --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410755; cv=none; d=zoho.com; s=zohoarc; b=mZjwtZyhMhrCRz5Ec4uQDUwruYyTinIB4YKG/VF2Wdh/PamqUiCjTsJMbaBZhTezenDWZMYjrFCQjuZL8OfXhLAeat8y8/tQFjvW0Hx97tRfMt/pZB4Cii93+vuDSO8Ca+ZJZ8tlPO6FGOupRiJyf+Sna9ywNPF4wpjpZ3v3V8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410755; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=cdQ2zHbW0n5vJl74dX5gSkq4IDwwB5HUv7xrl7+M5h4=; b=PUCtTAsGmjHkFoh+qZu5G7OoPVt099iHsTtkxJfBRXWe4d5g+f5Kta8geooNpxgA9N5rfji+w/cRuSjHLmhnJKcsFJh3qPp54V/QsLNVROOLDx7/Xziq6yUTEnJp/vB2ktaD7cIkm+b/rDtemP9lTpyyTiwbc5ceSyhJQqxFRPg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410755957883.7693816167839; Fri, 9 Aug 2019 21:19:15 -0700 (PDT) Received: from localhost ([::1]:34856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIqU-0001qP-1o for importer@patchew.org; Sat, 10 Aug 2019 00:19:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34746) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkr-0005Yr-Rc for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkq-0004Jk-Ss for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:21 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:34822) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkq-0004JY-N1 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:20 -0400 Received: by mail-ot1-x344.google.com with SMTP id j19so63823816otq.2 for ; Fri, 09 Aug 2019 21:13:20 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.19 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cdQ2zHbW0n5vJl74dX5gSkq4IDwwB5HUv7xrl7+M5h4=; b=OJL0rxJnhpB3/XnARFLu3HaekUeDLS2G5va7KZGRvM/Ub80os6wAYCMv1jV7+6/A+7 Ox5s3MRvTlVxEdq8tMNOJUHdohzuZGYMcztZYO1TaW4pUHFsaxyaCtfDXmb8cy9geYuP +0cu6kdm+fQztdjJQrLNKBuZ1YCJ/FluC0MrOL8S5i5r+8mJ1rSZNVO5jDJTTwGws7G8 WnrwrYBdLyerEEbIKsHPSovZFzrcZH95jLM4MZsIkFfMBDeEC5t4LIM/SAFxLXUkRlQ/ Qzbh2r5ErMIW2OUj92VaqOLcyFBbVRtpVtoLTp+vKFtXjSdjwp4ERI2aBBg188as2gnL Gjlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cdQ2zHbW0n5vJl74dX5gSkq4IDwwB5HUv7xrl7+M5h4=; b=t3xy9vELtUN4ijWB2Fzzj3nWVEWf/Vw6gQok3+8Ht8hsWP/Z4Icv0fozBBTjZJUQUw om2ouuHUKgNCtIcK7KtKHDTIwXm63DD8lb8woSx0bS1XNWBUM3R7BtcN2MY6Kxw/q6zg G+8iv5CGRxzGejUsnUKDCq/0DzDo2OWyZD7wv5KCJ7qW/Z32aqTITg3PFPNM8M5qopba vpRmU1qGowEoo2edq95BaDgFh/8Eq1zCIB6pFSOSpK1m3mxhwzNRtCXOcpjgruh6rTdj Ce60Puk4CW3q10bUhkbanqFoCG7k6h/OCnTYcIgDVSS7eoFq5Uih/5ypTo25q1BhLnbp 6QcQ== X-Gm-Message-State: APjAAAVwQaDGTOZHW2B7Ha0lzSrMoPWF8JTPY//tP+C//Xg+jOMkHDoQ cQTRSBvKTsAc7G8vkO94R+Dn/u1M X-Google-Smtp-Source: APXvYqyPsA/TllPJq4B6jXcPfgj6zf5PRf07URZU1HoSdzx5xxHtEprx+ckWSioKbcbcdbW6YBuZYA== X-Received: by 2002:a9d:4902:: with SMTP id e2mr20076436otf.184.1565410400035; Fri, 09 Aug 2019 21:13:20 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:29 -0400 Message-Id: <20190810041255.6820-14-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 13/39] target/i386: disable unused function warning temporarily X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Some functions added later are generated by preprocessor macros and end up being unused (e.g. not all operands can serve as a destination operand). Disable unused function warnings for the new code until I figure out how I want to solve this particular issue. Note: This changeset is intended for development only and shall not be included in the final patch series. Signed-off-by: Jan Bobek --- target/i386/translate.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index fbf10b57a2..23550a21d3 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4489,6 +4489,10 @@ static void gen_sse(CPUX86State *env, DisasContext *= s, int b) } } =20 +/* XXX TODO get rid of this eventually */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { @@ -4513,6 +4517,7 @@ static void gen_sse_ng(CPUX86State *env, DisasContext= *s, int b) =20 g_assert_not_reached(); } +#pragma GCC diagnostic pop =20 /* convert one instruction. s->base.is_jmp is set if the translation must be stopped. Return the next pc value */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410837; cv=none; d=zoho.com; s=zohoarc; b=VV7JH2FQbHzpnTWm2ZDI4hPbZQFsUphEdLAh3gAMBl4vwoCqZtUCkwwgWGK2n5KAQG6gYMX5noZLpm0XuHZ1qb5ac+62goXs8C0q+Tkmkad0U04qXhL28a+rHFVuZV8CUaI/h+KOTg0PkzwYtQI6H9JLknqf+RXOfK3S7nFPAC0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410837; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=RvvZNuwuP5zROeDoG9Y2s+/dwyJ4NAp8aFQnZB83t4Y=; b=oFzkWirXC5+Zy6uaD3ju/NAYTCQ2NtC8XCsO4s3foUTPDeeweM4WiCtsESetF8VdbwFEntnn40A/bBrEitk8u/thfzuNxzyX/SBsWrcROoTX/m9On9l+AFX8HdGI+DRF5f4zUfLYoVVjHV2JJ1tUI3eghMP7CcCz4QNCrtkg1uk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410837608891.3637181369736; Fri, 9 Aug 2019 21:20:37 -0700 (PDT) Received: from localhost ([::1]:34880 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIrs-0005lp-ML for importer@patchew.org; Sat, 10 Aug 2019 00:20:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34754) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIks-0005aa-FN for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkr-0004Kf-H0 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:22 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:43532) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkr-0004Jw-Cq for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:21 -0400 Received: by mail-ot1-x343.google.com with SMTP id j11so40045509otp.10 for ; Fri, 09 Aug 2019 21:13:21 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.20 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RvvZNuwuP5zROeDoG9Y2s+/dwyJ4NAp8aFQnZB83t4Y=; b=ZIi4C9Ri5O551X3Mj04AvYc91YpyCO1VQNWBal4+Tar2+qCB80wA+uyHZKheh5MJSk Izm8KJLawVvBg1MISTeYoHmMmfYP6OO3mj4Mpru8CS199KrqyIsl9/PkGxSU9wVciNjb LgX+L4Xy4N0shsPOAuFkfKz5LDjsgkCN2NEWX0IqstyOVX1A+WMb/5JBYWut8j3K8yJz U7/+cGIqGaN8iabX+aPQ6Vh6YShX3P+SjYjU3SHITR8dvU3Jf2iVYYHp8u36AQ8fmbkb wAMTziFuSKhNJoIbGhV9emNinZTv/5P5JGw7/+gmpYh7RncKFziaELqCox6bSpB15Ozn geIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RvvZNuwuP5zROeDoG9Y2s+/dwyJ4NAp8aFQnZB83t4Y=; b=DzAODDMI0zin9QiQRTpcKHVxruE7E3fyokFDhbuy1GI8+5dce7H62wynxZIY3/pgc5 AXqh9yjjoROWYuJvw8tCzaJ+KydRFIKzhYvnBhcBs1J7vTqhj2Uz8t+GgJ6+JrjSlpve qO8+LgVXO8EEHhW07AB9pW8TuEZGcCC81sM17KrDXKoqQ0T3Iwtac9284DPVMNG0z+Mf RON3xZqWZe4XFO+hW8jLvVJb8+DdyTgL5SFnU0aGewESZ5K7rJvg2YeMoJFTWUIjkvJx 5Q4vP4Xz4OKvjx12cD0lsHdyekJ+fnnr80BUV6CLXSWGbxy/8cs4WzAzhVXLniU+c2yW nrDA== X-Gm-Message-State: APjAAAXqopPhw1rMlVOu0MOROuGLGsJ/Wefy5b6bZgzU3OdY3G3tbRZH 0VYmomVB/AVcoC1giSchXI1uRAgu X-Google-Smtp-Source: APXvYqxs5m2ox/Ef2EKtz1vBpWex79Y7HCOADCe1j1+picSTAPB4/6P7nu+CVL5ohNaLcGRyMrUhMg== X-Received: by 2002:a9d:711e:: with SMTP id n30mr18992937otj.97.1565410400719; Fri, 09 Aug 2019 21:13:20 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:30 -0400 Message-Id: <20190810041255.6820-15-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 14/39] target/i386: introduce mnemonic aliases for several gvec operations X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" It is helpful to introduce aliases for some general gvec operations as it makes a couple of instruction code generators simpler (added later). Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 23550a21d3..03b49411e5 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4493,6 +4493,13 @@ static void gen_sse(CPUX86State *env, DisasContext *= s, int b) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-function" =20 +#define tcg_gen_gvec_andn(vece, dofs, aofs, bofs, oprsz, maxsz) \ + tcg_gen_gvec_andc(vece, dofs, bofs, aofs, oprsz, maxsz) +#define tcg_gen_gvec_cmpeq(vece, dofs, aofs, bofs, oprsz, maxsz) \ + tcg_gen_gvec_cmp(TCG_COND_EQ, vece, dofs, aofs, bofs, oprsz, maxsz) +#define tcg_gen_gvec_cmpgt(vece, dofs, aofs, bofs, oprsz, maxsz) \ + tcg_gen_gvec_cmp(TCG_COND_GT, vece, dofs, aofs, bofs, oprsz, maxsz) + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410775; cv=none; d=zoho.com; s=zohoarc; b=kRDhK5qNp7EykJldySir/+g2yy+fsNuDIzZbgfzP0niafuv+ZaJj27S+gre+BF+oofzknpzv46iyYZ1iLvSYbU+jSDf/WYsHpsr21JnTJQYVERMcKLYgwmQhZIGPbFumL324pzZNuyGXZoh/74yGsbQPRVDIveOFWUCGkpoWyXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410775; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ZHK0e9XvID8Cei/Jt59+/qv7qtS8MQ3X4OU+8rhkUPE=; b=dMWZy/AnGMKcCNRpX+86R3oYnbMhBBqX7l+KokstSv8RoUzGVSu246cL+1pvONrXz4MYzY00SXqgp7vjqu14AX7d2THEKmPrTNkaXVm+EpypOiCcmQgzLLrusocm90RphsVYdpdpBH0AayjxlC0Ft7k6K6CJMyMs5SRfMmILmDs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410775043858.8603352443306; Fri, 9 Aug 2019 21:19:35 -0700 (PDT) Received: from localhost ([::1]:34858 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIqs-0002Rm-4g for importer@patchew.org; Sat, 10 Aug 2019 00:19:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34768) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkt-0005eZ-Jb for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIks-0004Lq-Fd for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:23 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:42320) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIks-0004La-Ao for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:22 -0400 Received: by mail-ot1-x341.google.com with SMTP id l15so140514210otn.9 for ; Fri, 09 Aug 2019 21:13:22 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZHK0e9XvID8Cei/Jt59+/qv7qtS8MQ3X4OU+8rhkUPE=; b=ahsESW22KAjIWNotNXHxKR0VkHaaRXzx8cLpmbMyXWLQIULdRN2W3hVpU1soGVw7sO 7OjyfxH7ACbUBzopeND900CMDvTlsE24JzoEi5PBDhhTa6N/Pxt8M8gwntUMG25SA9lL 8xI8Y5OAbY56kvovR1cZgg8v6ZfnlA56w/VEAuRRVyWKeEubohR+0kxhfaABBuncogz/ cAG8TtDZwJ/C8hJ5vrWYnqZQO4DfiKtOGw6j26r5+XHe1+wpYrCua2cTbCVt7mSxVUVl 7l/1VD/1qAyvdf/VHqMBD9aIxrP8/N8XQKo60DLenskp7Q8TKO2gxckuHGyeu0t8A1YC jZyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZHK0e9XvID8Cei/Jt59+/qv7qtS8MQ3X4OU+8rhkUPE=; b=NiULbeEiDaiIDMr1p3mrlmAPLU4cRImpKlHieJD96b5yek3w9W9vAGYnafuStE9Ais SJ0G3vSdcjhGCN1ZKlswC8ytJIA67wn03caYQI4Fba8LNgOe8S7BUbT/M9s93zxQJDqk 06mcwDAU30GyFeLIj81Hjsrfby3GjewRTQjDvF6gkGQ6f8Ziquxa8CbHw9v4ZThrcpR8 ePULVLhwZgo/1c2KMAWilhDSb5iiNU3dW9L6Gw+ZF/+ext/r4ZSFad0ozsLfOBxmVe9d dYlbtkpgRjgZOPWEGsBjug5zqUPMlV4vP2HgkPFoa9w66F284hACh8j9LOGxv69BEJEN JAQA== X-Gm-Message-State: APjAAAUR3oz+TubZ8sVqp8vwMYp604VuKfQzDUwYF2iVxQSHBYJwZcUK dn1IAieJeGQs52iZ9x5fRYBGmN8O X-Google-Smtp-Source: APXvYqz2dsZGnx97vx1eckCs3GgLSgcOiFAq2evuyXwn8di1MQJf3G4X1N6hxIE3+JeB4rLtKxdSgw== X-Received: by 2002:a9d:17e6:: with SMTP id j93mr21134723otj.275.1565410401658; Fri, 09 Aug 2019 21:13:21 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:31 -0400 Message-Id: <20190810041255.6820-16-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 15/39] target/i386: introduce function ck_cpuid X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Introduce a helper function to take care of instruction CPUID checks. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 03b49411e5..508d584584 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4500,6 +4500,51 @@ static void gen_sse(CPUX86State *env, DisasContext *= s, int b) #define tcg_gen_gvec_cmpgt(vece, dofs, aofs, bofs, oprsz, maxsz) \ tcg_gen_gvec_cmp(TCG_COND_GT, vece, dofs, aofs, bofs, oprsz, maxsz) =20 +enum { + CK_CPUID_MMX =3D 1, + CK_CPUID_3DNOW, + CK_CPUID_SSE, + CK_CPUID_SSE2, + CK_CPUID_SSE3, + CK_CPUID_SSSE3, + CK_CPUID_SSE4_1, + CK_CPUID_SSE4_2, + CK_CPUID_SSE4A, + CK_CPUID_AVX, + CK_CPUID_AVX2, +}; + +static int ck_cpuid(CPUX86State *env, DisasContext *s, int ck_cpuid_feat) +{ + switch (ck_cpuid_feat) { + case CK_CPUID_MMX: + return !(s->cpuid_features & CPUID_MMX) + || !(s->cpuid_ext2_features & CPUID_EXT2_MMX); + case CK_CPUID_3DNOW: + return !(s->cpuid_ext2_features & CPUID_EXT2_3DNOW); + case CK_CPUID_SSE: + return !(s->cpuid_features & CPUID_SSE); + case CK_CPUID_SSE2: + return !(s->cpuid_features & CPUID_SSE2); + case CK_CPUID_SSE3: + return !(s->cpuid_ext_features & CPUID_EXT_SSE3); + case CK_CPUID_SSSE3: + return !(s->cpuid_ext_features & CPUID_EXT_SSSE3); + case CK_CPUID_SSE4_1: + return !(s->cpuid_ext_features & CPUID_EXT_SSE41); + case CK_CPUID_SSE4_2: + return !(s->cpuid_ext_features & CPUID_EXT_SSE42); + case CK_CPUID_SSE4A: + return !(s->cpuid_ext3_features & CPUID_EXT3_SSE4A); + case CK_CPUID_AVX: + return !(s->cpuid_ext_features & CPUID_EXT_AVX); + case CK_CPUID_AVX2: + return !(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_AVX2); + default: + g_assert_not_reached(); + } +} + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410909; cv=none; d=zoho.com; s=zohoarc; b=d4TWgiM8u4Yd1/bYagEdvYx4THPmwOVwMDlYbE4Vj5l8O5j27fLbRM9sYRz+XHXsjdCXxfgGZOtcFW3yvfHkFP0Q0KcIxlO14eed7QVqlVPJcwGyJngx0hu0bdnxf51CFWD4nszSC17GZDjdk7ctCxMxQKyPXCG9DWR6kJUwI6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410909; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=D3geIlGl84SmXsN7QLZGdQ5xDPB0CYHN009O2rh5GH0=; b=lRBXcwQmG4C+0vOfy+PBNIjD3TY7DYzZes3XCnsXwL0oVYbnqSovdiN3feFaQu6mXx9OtyXwm/+166HeBqYCbZctLl5XzxokYAEUC1F0NBNIi1+oRLAeAwAo+iM8pOIiBTPlcJAnNbLF+0evXSgQ45hX8nItwgf6xOtebMzRd1U= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410909139393.1417495093119; Fri, 9 Aug 2019 21:21:49 -0700 (PDT) Received: from localhost ([::1]:34902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIt0-0000Dj-Ph for importer@patchew.org; Sat, 10 Aug 2019 00:21:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34780) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIku-0005iE-LW for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkt-0004M8-Ik for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:24 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:34631) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkt-0004M1-Dn for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:23 -0400 Received: by mail-ot1-x341.google.com with SMTP id n5so140564862otk.1 for ; Fri, 09 Aug 2019 21:13:23 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=D3geIlGl84SmXsN7QLZGdQ5xDPB0CYHN009O2rh5GH0=; b=g8o5cMtwLH/3rlUo8P0+TXPoJMsUmbiNrTLPhapYZKgJ9YLvLE/krKeaimB9bxNRud 7qyfG6ZUadnCZFUzG/9zl/nasFliH9J3XKCRTZ1U/PdN53+5u7zgz7mP37XWb7XLKQBc PE2hM4tXyYncpdPzYznvAjVz8anHu+i43d5/Q1ZNLK+uD+MVwlpS5sVZkFDrh9Gzi7lX KV6GFOQfN68xYdtOpsU/yfyVVymYT4aWwdFuxNzh9JcUounXIIQSh0Uax6B6SP+ABLRq p4J/nOaPVDkr22G1J28QLEDEtxceb2Axru8G6iIvUgIFWbBuX317o6rc0Cyc3zPrUkpd YW/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=D3geIlGl84SmXsN7QLZGdQ5xDPB0CYHN009O2rh5GH0=; b=rkHSNF2W+EvP4khV4IhJSyd1QkHoOOTIDROv77Gv1Ob9dJpzTBJF0FmSnVs/ZWDiXN anbJlKLS2QN6oDhIZGgW0VhjBtSX1ZnYqUq9MxXalj6J9HXy9Csi0SE6FqHvSBo63DRv HaAxr1BXE0CRChk1q2JLGXJSwDgJEZYtamfRnIbT3Q0lif3DKADzI6XZFuzbOEY+BYfu WjAzO7qgf1oe72xnrd4satTmpd0VR0ekU1mNrfaMdPv5c0ZbaRl99HiUdfLhsms2ycPr gZVvvJvoaLmgZAJAL6LZeX1P8jvt1h8JYjsAVeh7gTyTULhdtnVK1s6mREbwkC5PFf1i 1HuA== X-Gm-Message-State: APjAAAXtocdKeQ96A4Vr9tcnzl0em9ph19SnB6hdSww1NzXuDOLz2Xej g6aKIdNY5rA4s5hXgvPxNmVe2Yxo X-Google-Smtp-Source: APXvYqzScN9WhUzRUZVxpJv+A+dva6x4oQEDJ5m46Z6y3Od7aRZ5I6cYiApdcyI27ne1MxFaijcMBQ== X-Received: by 2002:a9d:77d5:: with SMTP id w21mr18680189otl.330.1565410402661; Fri, 09 Aug 2019 21:13:22 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:32 -0400 Message-Id: <20190810041255.6820-17-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 16/39] target/i386: introduce instruction operand infrastructure X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" insnop_t and the init, prepare and finalize functions form the basis of instruction operand decoding. Introduce macros for defining a generic instruction operand; use cases for operand decoding will be introduced later with instruction translators. Signed-off-by: Jan Bobek --- target/i386/translate.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 508d584584..109e4922eb 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4545,6 +4545,47 @@ static int ck_cpuid(CPUX86State *env, DisasContext *= s, int ck_cpuid_feat) } } =20 +/* + * Core instruction operand infrastructure + */ +#define insnop_t(opT) insnop_ ## opT ## _t +#define insnop_init(opT) insnop_ ## opT ## _init +#define insnop_prepare(opT) insnop_ ## opT ## _prepare +#define insnop_finalize(opT) insnop_ ## opT ## _finalize + +#define TYPEDEF_INSNOP_T(opT, type) \ + typedef type insnop_t(opT); +#define INSNOP_INIT(opT, init_stmt) \ + static int insnop_init(opT)(CPUX86State *env, DisasContext *s, \ + int modrm, insnop_t(opT) *op) \ + { \ + init_stmt; \ + } +#define INSNOP_PREPARE(opT, prepare_stmt) \ + static void insnop_prepare(opT)(CPUX86State *env, DisasContext *s, \ + int modrm, insnop_t(opT) *op) \ + { \ + prepare_stmt; \ + } +#define INSNOP_FINALIZE(opT, finalize_stmt) \ + static void insnop_finalize(opT)(CPUX86State *env, DisasContext *s, \ + int modrm, insnop_t(opT) *op) \ + { \ + finalize_stmt; \ + } +#define INSNOP(opT, type, init_stmt, prepare_stmt, finalize_stmt) \ + TYPEDEF_INSNOP_T(opT, type) \ + INSNOP_INIT(opT, init_stmt) \ + INSNOP_PREPARE(opT, prepare_stmt) \ + INSNOP_FINALIZE(opT, finalize_stmt) + +#define INSNOP_INIT_FAIL return 1 +#define INSNOP_INIT_OK(x) return ((*(op) =3D (x)), 0) +#define INSNOP_PREPARE_NOOP /* no-op */ +#define INSNOP_PREPARE_INVALID g_assert_not_reached() +#define INSNOP_FINALIZE_NOOP /* no-op */ +#define INSNOP_FINALIZE_INVALID g_assert_not_reached() + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410588; cv=none; d=zoho.com; s=zohoarc; b=Jn5C4xdeIBykPyg3znCsiVZO0A3tXe1qolDHmcslDXoLgK/G/kq9hF3IHzjJfemo7iiWBAkk+1oQaknyFfVijaywDktIRjqrfunVU6nGV6mDe/NYeibxwKoBtHP4cCEaYtRNLhHkObJJgQPERLtxQKkGFJQJMo0cMjjjURALaIU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410588; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=n4ayeLooNp0fm7Wh5HpoXhexlt7VndsDJ81PF2rUFA0=; b=YiJy+NeU3Vkbn4jR9haH/TpQ4SAAgCZJ4LYOrtekVMdzosWif7ob+9MDQ5VtFhH9HGZ01D3H0Cc2M8iD0FrOMLUna+ift4FJAl5sepnO/a1Vuqn35U019jyXU5L5nyXfYc8xKadE85DfX6GRieQNSdNSR64kF1fkHxicEzZciN4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410588060685.1644599567081; Fri, 9 Aug 2019 21:16:28 -0700 (PDT) Received: from localhost ([::1]:34828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwInr-0005at-3n for importer@patchew.org; Sat, 10 Aug 2019 00:16:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34788) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkv-0005kQ-87 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIku-0004MR-BO for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:25 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:42323) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIku-0004MI-7G for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:24 -0400 Received: by mail-ot1-x342.google.com with SMTP id l15so140514396otn.9 for ; Fri, 09 Aug 2019 21:13:24 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.22 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=n4ayeLooNp0fm7Wh5HpoXhexlt7VndsDJ81PF2rUFA0=; b=DVplSbDCgX7onjD5puxpTGLnxluQ0jX+43UGtWkzo3STsfRWvDI4tvUMJ0yKtpHrED PRapDVmeoH98/k2wifF+7Fh3KxYm62PrCfWFJet0RG+xXU/fBip7ZStBBBvZl9S8VKvm cKtHqDbKW0fPvFjIVYLzy0zB+WRpkggKcldD1mMZz/YHfFHrwYkofEH8bkxIUbVbtk9P KIKo+wMAX3fqZbSk3cAh3lNrlV774oZuKVOFbq9QjgP9do9bjTcoWHMnyOxtvqGjMDA1 RYooEPchLLy4mmtdpff9fR3qhjO5AtATL4wu31QXfIIy8yzpXR1PtgK+C12DD0s97zfv aJpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=n4ayeLooNp0fm7Wh5HpoXhexlt7VndsDJ81PF2rUFA0=; b=QNz2AEOlkVno57vQU47RRtOiDI9iUSFUc6s/jbk1/XtaUYPldiHwbxPGYKuxpOqYRJ C7//R2YeEjnAHvIQwQ9cuk+azffRKxH50/xx4qdkbucHHmDilJ3YIiRZyOQhBUz42MI3 F3SRmm34SowG6V7hGXrvLAgnuZlHwbF5x18iGknSvmMw7nhXtJRoF+GKVnRMT+DgWLUS ZpJCTyFZBflk8d3/hdVF9bTtb3K3wQLu81MjdSWT0AdE+4mzD8VZcg3lJ78RUXy9eaPG edTdlcpfI5vieCj47J12M/gqRPXdxGyIb9z21FjII8i+e/3gQOg61xxamrFZG/52gAxY +jrw== X-Gm-Message-State: APjAAAUyZOV0ky5FVMoEQqaDgKTGGdYtTUE0LRgHPMSaPJqemetGwkee suukHPjd+NEEqsxYyG7u/LixRgAT X-Google-Smtp-Source: APXvYqzMJ7XmCqdQnhh6kKPYbuRkepa1HG9DtTu/UEZb315ATUEtYxpMK5ufmGoTtGcmhw1TgiD90w== X-Received: by 2002:a9d:6a95:: with SMTP id l21mr3725154otq.192.1565410403539; Fri, 09 Aug 2019 21:13:23 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:33 -0400 Message-Id: <20190810041255.6820-18-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 17/39] target/i386: introduce helpers for decoding modrm fields X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The old code uses bitshifts and bitwise-and all over the place for decoding ModR/M fields. Avoid doing that by introducing proper decoding macros. Signed-off-by: Jan Bobek --- target/i386/translate.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 109e4922eb..4a2dae6238 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4500,6 +4500,21 @@ static void gen_sse(CPUX86State *env, DisasContext *= s, int b) #define tcg_gen_gvec_cmpgt(vece, dofs, aofs, bofs, oprsz, maxsz) \ tcg_gen_gvec_cmp(TCG_COND_GT, vece, dofs, aofs, bofs, oprsz, maxsz) =20 +#define decode_modrm_mod(env, s, modrm) \ + (((modrm) >> 6) & 3) + +#define decode_modrm_reg_norexr(env, s, modrm) \ + (((modrm) >> 3) & 7) +#define decode_modrm_reg_rexr(env, s, modrm) \ + (decode_modrm_reg_norexr(env, s, modrm) \ + | REX_R(s)) + +#define decode_modrm_rm_norexb(env, s, modrm) \ + ((modrm) & 7) +#define decode_modrm_rm_rexb(env, s, modrm) \ + (decode_modrm_rm_norexb(env, s, modrm) \ + | REX_B(s)) + enum { CK_CPUID_MMX =3D 1, CK_CPUID_3DNOW, --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410731; cv=none; d=zoho.com; s=zohoarc; b=kGP+IhALFXJ7/X4XnIMBUqo32cxlV3oxH8qlIqqv7nnja0IjVSDz3TFMpK9uEy5QriDfOiotd19FBL9YqE588ebT4EdHX6sn++WPBc9tYtXpFRQxXSBQ6UOObGuMPl6JZ+StfhYU1x2CGcklD4WnGsQ3GuPoan8x4gjh/saQUBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410731; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=tSn61jr3E0eccd5dUu+yzc0P1TL3PTMW/+yDPp+cvf8=; b=jwJg6EsOiXUunGCepBXAdB708w3uDhfJKepbw2CF6ShMymfyxsBlpn83cedMzqwbiCx3nr3psyI8RyaKz9A0aa4RuLvExFpQ9KOQLV5oAu9Y8M39Airf++E1b5Y3sL4Q2A6REqyTDxNNdwbO3Ir2JrPo+Xz4Rx52X22lehVhT2c= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410731422941.8672822476585; Fri, 9 Aug 2019 21:18:51 -0700 (PDT) Received: from localhost ([::1]:34852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIqA-00011o-Fk for importer@patchew.org; Sat, 10 Aug 2019 00:18:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34801) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkw-0005of-Fs for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkv-0004Mu-BQ for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:26 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:37155) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkv-0004Mj-7D for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:25 -0400 Received: by mail-ot1-x341.google.com with SMTP id f17so5089193otq.4 for ; Fri, 09 Aug 2019 21:13:25 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.23 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tSn61jr3E0eccd5dUu+yzc0P1TL3PTMW/+yDPp+cvf8=; b=KqCKaaV7/38wjZlNBqNcubY1258iiuc0QHQ81A224k92q5fVIpZcT8EY1ZYy/Eldc9 rior9IE8vOegdK82p2R70rVglh8GHIHj5wF2hyTxJDZmcQzN+vF7G+mFBV/kAWfdp58I llvvCJx8xkCUvmsJscYv7+GvsdotyHoMo7TgeS5tou3OGqXqbGlwmfhv/TDklUxCl8YU PmWUgLmp0tCs6PIxryLR1YlB28cn0z7vor78nWkzKiCydXSgpiaIf8nu5taHoav0c9qZ opKrC+u1r6vA40GzHMmRMZYeFFkEeQ1BSgmqgrX1lJMl9RGbxLXauigjler+WZKq3sax eFPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tSn61jr3E0eccd5dUu+yzc0P1TL3PTMW/+yDPp+cvf8=; b=MocrB/SZe/kdOZ1tYVgKgVonIzcctQUSP4Y116KFr9JUUI0BVUyrijUuRm01HEDeUV 61l4JEVE5x3HjTv1QKeuj9QkjG/XGg6AtfG1jnZnlm5nEbnFCqhUY3VrLjcjvks857fo qBk6qoFUsTh7cxF+QBy3JGre0yYR/b0IOExQ9EZev3g7jRCx9iGSitE0Rn4AgjfUkYMm IDRAiz2lhpUVmAJpWLkGdO+JsPjBvVCYJSDdruPsVrBOJp05Fv8t8MxGD7sIiaTQAzU6 48YYf1mQ2AVQfpr3pxSPSKG3bsOvr3QMSXyaINEFktYOEXtHvXKbmIlbS4YsoWwdec/g 4DUw== X-Gm-Message-State: APjAAAWIwI9ogU9ahUlC2IxTRJlJjP7RnNUBJKPtNDBc84peNLYjsZe7 6ys6hyQfpF4qVXN/rP2H13x+Z1aD X-Google-Smtp-Source: APXvYqyi8gxyLPBivNSp6TZja/vQ+rwToIcDNi57U//6BljhGjweO3vY7ise+UyYDucxNNZWSPt5Qw== X-Received: by 2002:a9d:67cf:: with SMTP id c15mr19033922otn.326.1565410404532; Fri, 09 Aug 2019 21:13:24 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:34 -0400 Message-Id: <20190810041255.6820-19-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 18/39] target/i386: introduce modifier for direct-only operand decoding X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Many operands can only decode successfully if the ModR/M byte has the direct form (i.e. MOD=3D3). Capture this common aspect by introducing a special operand-initialization statement wrapper. Signed-off-by: Jan Bobek --- target/i386/translate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 4a2dae6238..0bee7288e6 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4601,6 +4601,15 @@ static int ck_cpuid(CPUX86State *env, DisasContext *= s, int ck_cpuid_feat) #define INSNOP_FINALIZE_NOOP /* no-op */ #define INSNOP_FINALIZE_INVALID g_assert_not_reached() =20 +#define INSNOP_INIT_DIRECT_ONLY(init_stmt) \ + do { \ + if (decode_modrm_mod(env, s, modrm) =3D=3D 3) { \ + init_stmt; \ + } else { \ + INSNOP_INIT_FAIL; \ + } \ + } while (0) + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410813; cv=none; d=zoho.com; s=zohoarc; b=lqvCwrDH+Fo9IpvCf+dpCk4WINBsLbWN3NVDfnGVXNRkyHlJOljaFfTGSEHalzCc2GHc7giIPnXjdN7jEKbWHCn06ciDc46jzJrPUYykMk64/H8b5nij9ckWT5vlCcGyQxau+2l3MwtuOyCt7HwST2LI4VbfnXhat8CClWMFO+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410813; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=WxPwpX1GW/1SZtW0nrtEipcgu8BrO/U7byXPZhHTfV8=; b=oQqt1H8WB6DiuT/71HC6VjULXAAhrK4EJI+1Z0uxA7dJgVapjZ5Y0WpkpE4YrIvnqfs7uQwguYtuzmf6ueviO033UqKqstvt9mfewGIoI3Aw6p2n7jCMtUkh8UqicR9YgMYZo9Ri4Qhw9FYCjV5ZYTHBo43cx8unu5h/cKnMTQA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410813558486.5956172257023; Fri, 9 Aug 2019 21:20:13 -0700 (PDT) Received: from localhost ([::1]:34876 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIrU-0004Tf-Ji for importer@patchew.org; Sat, 10 Aug 2019 00:20:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34814) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkx-0005sX-Fd for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkw-0004NJ-F9 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:27 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:41266) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkw-0004N3-A7 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:26 -0400 Received: by mail-ot1-x342.google.com with SMTP id o101so5583985ota.8 for ; Fri, 09 Aug 2019 21:13:26 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.25 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WxPwpX1GW/1SZtW0nrtEipcgu8BrO/U7byXPZhHTfV8=; b=vY70WQCnXdrUCSy2On0pGeSJz+Ng37MhHQPxpHhYRUMmYjcViehElx/Tps9tLGR732 5fd7dv2MC3YJY0LwphdXcBJIKm4T45DDCAvKeN9yGyampb7ZENodFvp0WURBuvUWybP1 Zhmg0EwtaAXA54yKsKN9tCvSpnrZrWdvt6OOPiBzcBzt63yV4N95yHqcSCfDwf01+XLD UUmqFNQJHf68IZxuFP9nmvmKIwcL+4zm2cKS7BLONTXNftLtaEjfeUF2jOUTSLnnsWo7 Oyh8rUEg8Ai1o/h+d9f96sulU54eOdLp+PsZpMD41xL60gaVbn9iyFrJ52KKDnxqNKP7 C2bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WxPwpX1GW/1SZtW0nrtEipcgu8BrO/U7byXPZhHTfV8=; b=YnL3mEYpHnbQcifvEHH5A2+ubRAlursT5x5Chr+E6QjV/6e63jeJr2xDpPGPAoXtcE LhodDq8Q35q2Rv//PMz4gWSvSyc67jmbSLdtBnPjHmuA9aqRjvp58k314oMGDIHb+TCB X3N8goaJf0eymWnQuWxEgSQWKxbdYt2UAA3xv9zPstAzGLyY1JRGnuOFLPygdT/WXdw5 JNfFQYm+mp55p84NddtDPFNT0xS0hH0B600YOHsQ4hSbC232jy2cWDvR6vJ0uRSqXGx7 91Nsfj7D/h2QcQZEMaTP+1ilu5yCESMCaQP8nMDtb2PgPTr92fEbmy5x+MdUT87hrhMl +qwA== X-Gm-Message-State: APjAAAU3l0vHoX3dhJgYiKtpMEV48kjfMNWdw57fxQ4YatqSFFOEqnYd rppUps17Qzfjl1sIQGwk8JDd8Zu2 X-Google-Smtp-Source: APXvYqz6TZXIK1CPRwIVU22Ov/jnQuT0z8KvMyY8WpAMUaSxCNCTX0gm8mLVolzslrYjTrfB0OKHpQ== X-Received: by 2002:a9d:3e4e:: with SMTP id h14mr19830202otg.182.1565410405653; Fri, 09 Aug 2019 21:13:25 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:35 -0400 Message-Id: <20190810041255.6820-20-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 19/39] target/i386: introduce generic operand alias X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" It turns out it is useful to be able to declare operand name aliases. Introduce a macro to capture this functionality. Signed-off-by: Jan Bobek --- target/i386/translate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 0bee7288e6..cd2467e6a5 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4610,6 +4610,15 @@ static int ck_cpuid(CPUX86State *env, DisasContext *= s, int ck_cpuid_feat) } \ } while (0) =20 +/* + * "Alias" operand helper + */ +#define INSNOP_ALIAS(opT, opT2) \ + INSNOP(opT, insnop_t(opT2), \ + return insnop_init(opT2)(env, s, modrm, op), \ + insnop_prepare(opT2)(env, s, modrm, op), \ + insnop_finalize(opT2)(env, s, modrm, op)) + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410998; cv=none; d=zoho.com; s=zohoarc; b=lwcyH1jtlNiZ/bzrokdXEgUUo9CuOZGSWXk7ILA0+LOsLJ+oOv0b3TmIU3heZ2nwAbaROhKHSL/PuQK8u3RKgPXkHdqQC8CuUyp8C1iSco2LF0ZaL6hpjvCzTjMleceea7dupZ4Kb3JsAmhGHIqxMpAlE+dtS7ZXUzkGyqbCK6c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410998; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=Uta9ArntGI4TyKGIhn9+xSKs0zFnFU+lVjX12nvNzmE=; b=Ir22ElcoXbalHkzvxqwHlk0I4uDQeo8YzLRP4jUzPVZMGWFlBerya+kYGQj8nk+nmNvUvWIOBHZVECmiGUoLxXpY1/MWtfT6J3rk1WHbXZ2idoVXJ4bBfkT/TLIX913XwV/XZmnsKsTDsgz+W7FwC/Uj/X0lP55sPlHcqWlv1yI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410998547901.3472915997045; Fri, 9 Aug 2019 21:23:18 -0700 (PDT) Received: from localhost ([::1]:34926 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIuT-0003Y3-Is for importer@patchew.org; Sat, 10 Aug 2019 00:23:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34825) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIky-0005vn-FN for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkx-0004Nf-Cf for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:28 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:42325) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkx-0004NU-7v for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:27 -0400 Received: by mail-ot1-x343.google.com with SMTP id l15so140514689otn.9 for ; Fri, 09 Aug 2019 21:13:27 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.25 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Uta9ArntGI4TyKGIhn9+xSKs0zFnFU+lVjX12nvNzmE=; b=MtvzrO5m//97TpKLwJ8WbiaNGE2Gvl99knQ59BLDZ4TsvRkCOjbxXhq8CsAIfgfjCa y82rxFSKpKOdyNSQob5mH0e0gV+0tTC32iuIqDSFTYAb6VLBP3A2L2lpp29XaBnYydAh AXUB175pCcEUkAUTvo5l53cg3H3nBo2oC+4WYm7i8i2JjKcUHTkL9uK3lzxeqXqe9r6E vANn8q1bInaQ+hPpos0gOwQHYHPpODC57ae0H0E7QhT8BflYYFWFJo0ENLQ+w39Ora/T q9jKRACRyGw3O/9adR3G87m2+RBSrGI40un7WoGejxLqSk7+HLOmaaxJSrbyY4roi7VA mpvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Uta9ArntGI4TyKGIhn9+xSKs0zFnFU+lVjX12nvNzmE=; b=LqXfgcRpG7pkl0ulnsQBuJuEpePoGWXoIAbOa22W71hQJtYvbsslBLIrK/JCzWfw4a oxTj5PMdBuTiriHGzYaXlyzpjXTBkNYYbUDE6RoNtAO0pw1d5eCWRhgZMMhUYLE0j5Zw e2i7Ea3POgfu8L+drn8cN331AvmVgzAc4sjGp9Hez0wW5XRXiWPb9l8tkMyquZhA3j1W GlGxUxpEupYspNowUi2eYeUc6EjZDJmR0qacvW0oZ5YuKTUUZOnxgPJixRWPl5Bo4f7n czoO6J8XIe1np85DajY3EJUAHuVb4E/I8VFQkzjs4AG4dMfpnfKfhDrhEKyeH8Mto/zi u3VQ== X-Gm-Message-State: APjAAAUIeYM9xyGE1BOl6sr0QXE12dpIV1d7JA8VJdKpzCzZpoDjRcfs In4Js39hERhlwiZ4vujXFJFchL7V X-Google-Smtp-Source: APXvYqyUdkZSbEp1tbpwmXREPxct8h0ydApSHG4PjJI2SECNU5Z5Bz49MEu9KmK9zgIqsvEtiIzm1g== X-Received: by 2002:a05:6830:11d7:: with SMTP id v23mr10443218otq.58.1565410406542; Fri, 09 Aug 2019 21:13:26 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:36 -0400 Message-Id: <20190810041255.6820-21-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 20/39] target/i386: introduce generic load-store operand X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This operand attempts to capture the "indirect" or "memory" operand in a generic way. It significatly reduces the amount code that needs to be written in order to read operands from memory to temporary storage and write them back. Signed-off-by: Jan Bobek --- target/i386/translate.c | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index cd2467e6a5..ebb68fef0b 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4619,6 +4619,84 @@ static int ck_cpuid(CPUX86State *env, DisasContext *= s, int ck_cpuid_feat) insnop_prepare(opT2)(env, s, modrm, op), \ insnop_finalize(opT2)(env, s, modrm, op)) =20 +/* + * "Load-store" operand helper + */ +#define INSNOP_LDST(opT, opTr, opTm, scratch_op, ld_stmt, st_stmt) \ + INSNOP( \ + opT, \ + struct { \ + bool is_mem; \ + insnop_t(opTr) op_reg; \ + }, \ + do { \ + insnop_t(opTr) reg; \ + insnop_t(opTm) ptr; \ + if (!insnop_init(opTr)(env, s, modrm, ®)) { \ + op->is_mem =3D 0; \ + op->op_reg =3D reg; \ + INSNOP_INIT_OK(*op); \ + } else if (!insnop_init(opTm)(env, s, modrm, &ptr)) { \ + op->is_mem =3D 1; \ + op->op_reg =3D (scratch_op); \ + INSNOP_INIT_OK(*op); \ + } \ + INSNOP_INIT_FAIL; \ + } while (0), \ + do { \ + insnop_t(opTr) reg =3D op->op_reg; \ + if (op->is_mem) { \ + insnop_t(opTm) ptr; \ + const int ret =3D insnop_init(opTm)(env, s, modrm, &ptr); \ + assert(!ret); \ + \ + insnop_prepare(opTm)(env, s, modrm, &ptr); \ + ld_stmt; \ + } else { \ + insnop_prepare(opTr)(env, s, modrm, ®); \ + } \ + } while (0), \ + do { \ + insnop_t(opTr) reg =3D op->op_reg; \ + if (op->is_mem) { \ + insnop_t(opTm) ptr; \ + const int ret =3D insnop_init(opTm)(env, s, modrm, &ptr); \ + assert(!ret); \ + \ + insnop_prepare(opTm)(env, s, modrm, &ptr); \ + st_stmt; \ + } else { \ + insnop_finalize(opTr)(env, s, modrm, ®); \ + } \ + } while (0)) + +#define INSNOP_LDST_UNIFY(opT, opTr, opTrm) \ + INSNOP( \ + opT, insnop_t(opTr), \ + do { \ + insnop_t(opTrm) rm; \ + if (!insnop_init(opTrm)(env, s, modrm, &rm)) { \ + INSNOP_INIT_OK(rm.op_reg); \ + } \ + INSNOP_INIT_FAIL; \ + } while (0), \ + do { \ + insnop_t(opTrm) rm; \ + const int ret =3D insnop_init(opTrm)(env, s, modrm, &rm); \ + assert(!ret); \ + \ + rm.op_reg =3D *op; \ + insnop_prepare(opTrm)(env, s, modrm, &rm); \ + } while (0), \ + do { \ + insnop_t(opTrm) rm; \ + const int ret =3D insnop_init(opTrm)(env, s, modrm, &rm); \ + assert(!ret); \ + \ + rm.op_reg =3D *op; \ + insnop_finalize(opTrm)(env, s, modrm, &rm); \ + } while (0)) + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410879; cv=none; d=zoho.com; s=zohoarc; b=cKP2jDIwy2iwhiHo2bN9reODO1RYilb3nPYr0wxcFqYhuTzjsWvcUY0o08J7xNUv0CZIZXItNJcjl7RXbed9HvesK3Lmn5FpmgS2aKJa6gbkAwz6dhRkPusRTfiv8Qtw6Ck4YPdWtR5PyjrYYppXl5AwPi8biQOHuKCL736ztus= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410879; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=1WE3bBdYSXJrRK7mJcEb6kzPO19OfCWH98w1USfvuLI=; b=iA0XhPZEZs024lEHQ83mRtpyiUKtG0DTofaphWLD36ly0EqkUwu1M7n5XsiLvZT/dL414ntbOEgJIRK3ggOxBZGju4UwaN2SF95NeZGBXSNPTPixNtMCqURLSg1w+ADscsfcIoJJxbFqDge3E6u3XsCojn3LLN/NUJUf9Xht/y8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410879058385.1639508993237; Fri, 9 Aug 2019 21:21:19 -0700 (PDT) Received: from localhost ([::1]:34898 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIsY-0007jJ-3i for importer@patchew.org; Sat, 10 Aug 2019 00:21:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34835) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkz-0005zX-Fk for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIky-0004O5-C1 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:29 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:36311) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIky-0004Nr-7g for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:28 -0400 Received: by mail-ot1-x343.google.com with SMTP id k18so8368442otr.3 for ; Fri, 09 Aug 2019 21:13:28 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1WE3bBdYSXJrRK7mJcEb6kzPO19OfCWH98w1USfvuLI=; b=Z41coFLcit1TJUSm2DITt/S3umZupphV9koQnYcZ4kOY0OS6t1u68v+l3DOntlcC9J kFFRh+eUS/zxIkbKs5ccfoeJghLo8Pn+YhcD3JkKvYgUypCtzwMhf03p0Di0iwCza9kw yLrsluK489hQqjpMUQ52ZSHixaaaCbDIgshn5WIMDKgpd5yTMkajEf7TorWQqtSeeKY0 xWB17Kec37RdkXClw9TSNuHlZoE7T+f7wSJzhXvEEtXl5qacGR5SGPj+JSaMKfa2GZD/ zpiLXhWRwslBauXnxRoADj/18T0ZHa3cnvxu+FCoHtukCdOFjy0eHebkCyDGZyHyiYbO t4fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1WE3bBdYSXJrRK7mJcEb6kzPO19OfCWH98w1USfvuLI=; b=WKVrv80jS61AFITuWw7qb77AKm7Ok3FJc4zeAcPlRNpiZ37ft9u+BT55jzedtb2vCM XDSBJDmWPfYfj3VyuBvQ7qG0a26N1Q5rrZqKtysi9611nAYBHMND9JyvWMW3NRQLTtYi lk58YRwSY2wPvpV1SUitD0xIMXQ64eiphNZtm9Ezoc4K0YNqXoxfB27zxuR2HHndbn/L Bw5iRShDbzapiROO+4s+UsY9JbcEx/OvSuSpLDYyjJ5GeEpqy7JF0in+j6LBQmkvrAUX ZHTFf361xn2ZbEQVqlNi1jy9BbMFZHEm9CdmbvDFW5490v40sMxxcUPqZW8fFrULRTX9 A10g== X-Gm-Message-State: APjAAAXXao56FG+pLddkRV6V1I3d6Qhxx5egswEJUUV2Xn7aPeDOfxrk GPv23fICVbBENeVs8FjP0JIDU2SA X-Google-Smtp-Source: APXvYqzpr1e8qc8IBucNc3quEye7PTiX0XPsfjbQbsi4oEA4q+PPqGqEktcdMgdB3C2/SKk8J3CcxA== X-Received: by 2002:a05:6830:200e:: with SMTP id e14mr19227814otp.245.1565410407564; Fri, 09 Aug 2019 21:13:27 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:37 -0400 Message-Id: <20190810041255.6820-22-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 21/39] target/i386: introduce insn.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This header is intended to eventually list all supported instructions along with some useful details (e.g. mnemonics, opcode, operands etc.) It shall be used (along with some preprocessor magic) anytime we need to automatically generate code for every instruction. Signed-off-by: Jan Bobek --- target/i386/insn.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 target/i386/insn.h diff --git a/target/i386/insn.h b/target/i386/insn.h new file mode 100644 index 0000000000..4b48c0c0e1 --- /dev/null +++ b/target/i386/insn.h @@ -0,0 +1,87 @@ +#ifndef INSN +# define INSN(mnem, prefix, opcode, feat) +#endif /* INSN */ + +#ifndef INSN_R +# define INSN_R(mnem, prefix, opcode, feat, opR1) +#endif /* INSN_R */ + +#ifndef INSN_RR +# define INSN_RR(mnem, prefix, opcode, feat, opR1, opR2) +#endif /* INSN_RR */ + +#ifndef INSN_W +# define INSN_W(mnem, prefix, opcode, feat, opW1) +#endif /* INSN_W */ + +#ifndef INSN_WR +# define INSN_WR(mnem, prefix, opcode, feat, opW1, opR1) +#endif /* INSN_WR */ + +#ifndef INSN_WRR +# define INSN_WRR(mnem, prefix, opcode, feat, opW1, opR1, opR2) +#endif /* INSN_WRR */ + +#ifndef INSN_WRRR +# define INSN_WRRR(mnem, prefix, opcode, feat, opW1, opR1, opR2, opR3) +#endif /* INSN_WRRR */ + +#ifndef INSN_GRP +# define INSN_GRP(grpname, prefix, opcode) +#endif /* INSN_GRP */ + +#ifndef INSN_GRP_BEGIN +# define INSN_GRP_BEGIN(grpname) +#endif /* INSN_GRP_BEGIN */ + +#ifndef INSN_GRPMEMB +# define INSN_GRPMEMB(grpname, mnem, opcode, feat) +#endif /* INSN_GRPMEMB */ + +#ifndef INSN_GRPMEMB_R +# define INSN_GRPMEMB_R(grpname, mnem, opcode, feat, opR1) +#endif /* INSN_GRPMEMB_R */ + +#ifndef INSN_GRPMEMB_RR +# define INSN_GRPMEMB_RR(grpname, mnem, opcode, feat, opR1, opR2) +#endif /* INSN_GRPMEMB_RR */ + +#ifndef INSN_GRPMEMB_W +# define INSN_GRPMEMB_W(grpname, mnem, opcode, feat, opW1) +#endif /* INSN_GRPMEMB_W */ + +#ifndef INSN_GRPMEMB_WR +# define INSN_GRPMEMB_WR(grpname, mnem, opcode, feat, opW1, opR1) +#endif /* INSN_GRPMEMB_WR */ + +#ifndef INSN_GRPMEMB_WRR +# define INSN_GRPMEMB_WRR(grpname, mnem, opcode, feat, opW1, opR1, opR2) +#endif /* INSN_GRPMEMB_WRR */ + +#ifndef INSN_GRPMEMB_WRRR +# define INSN_GRPMEMB_WRRR(grpname, mnem, opcode, feat, opW1, opR1, opR2= , opR3) +#endif /* INSN_GRPMEMB_WRRR */ + +#ifndef INSN_GRP_END +# define INSN_GRP_END(grpname) +#endif /* INSN_GRP_END */ + +#undef LEG +#undef VEX +#undef INSN +#undef INSN_R +#undef INSN_RR +#undef INSN_W +#undef INSN_WR +#undef INSN_WRR +#undef INSN_WRRR +#undef INSN_GRP +#undef INSN_GRP_BEGIN +#undef INSN_GRPMEMB +#undef INSN_GRPMEMB_R +#undef INSN_GRPMEMB_RR +#undef INSN_GRPMEMB_W +#undef INSN_GRPMEMB_WR +#undef INSN_GRPMEMB_WRR +#undef INSN_GRPMEMB_WRRR +#undef INSN_GRP_END --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411078; cv=none; d=zoho.com; s=zohoarc; b=A497td22bTobCdR++uorzX+el/9n7h9HN0upxzVP0LcnDHE+CjlVDN4h6Q0qE2IDrUc3evtyqF/02drEX4nKb8NYewcYkeSBN4okCDP4fnOrinS2hMp3FOGI61O11Na3yJAvCoOyax7Jts6i+t/eb0gdiYINEVQ7gdA6BcX1qTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411078; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=N+dtPNIK3VoSsjKgKbGhkBhajKi+jxRCrJYpAZtiaR8=; b=UIj8Ki4SGIOC3Yt64OByBu5YmgrqO460e1aAJj75zzEdnm5HhJGMxlRun+e8+ndBo7W+LcluybPjdO5Adbo7SC3cIj08Yyrj5gr5ZHc5ieigzONaqfwqTJoLx/bpo1lVhk2V28VAsmpbzxo41sZyxfCQERBrLo0E6ftO1hBx7x4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411078332983.6683464542725; Fri, 9 Aug 2019 21:24:38 -0700 (PDT) Received: from localhost ([::1]:34952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIvl-00079f-DT for importer@patchew.org; Sat, 10 Aug 2019 00:24:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34846) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl0-000638-IW for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIkz-0004Pl-JF for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:30 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:40796) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIkz-0004OS-F6 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:29 -0400 Received: by mail-ot1-x341.google.com with SMTP id c34so481495otb.7 for ; Fri, 09 Aug 2019 21:13:29 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.28 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N+dtPNIK3VoSsjKgKbGhkBhajKi+jxRCrJYpAZtiaR8=; b=UEz8ZQHJxZToygOlIqeBcI8w+wKgEi5UUshjl0YJpOuEr1yrYa6ZDGPpgyGfDfLTZH 7d8zFaKqJs226N4R1niBy1hfaLZ3ZZmA3aPeXG4AO5ttiDzvwaj7q1gi3CWVijK7lrDh NaCD3/YRU3D6+/URArrGhQhDuhVyv5svGcJjD2Cl6XtzjU69nhelxDZBjEoLOV4ths8B 9la5g2QPIOf8cVZTnsDV68PXT4adc1Ey+G4dAOTpBilv+6Gkgl28IYU+/aFuIKkgSfFK CfaO2Xb5zftxYTUJAhGJ3FpYYe9+JEiiZ5SaeH4YlI/ie8d/seFzZKMmYNuRdgM21DYt VKMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N+dtPNIK3VoSsjKgKbGhkBhajKi+jxRCrJYpAZtiaR8=; b=W+40yM9iiNzMr4uyIhqk5CDxO/MngD6HqNKNRwULmkAFxP1d4XM2x8MBMAm7MUeCXh BTIzNbb6g0kOnQE4SkaQpeOfCsqdtzWAWdE+/xQ2cM6QaHvzNd3QKH06u32UT88cGTii mOhKZBLccvTp9ncvVGKsGuQdQSM9jieeNWm8DnmPtPfu5UKoSHj7tyduiKzjAxbPjLSx 0/aVftIoMAx2zFKTMvo4H92OW0r+7mZqieKUjW51y/F66qzYVj4sSUsaru2mZgHY88iC QB3eUUL6njBscneJufmfB71PoIGuXWw823kD5uXi4v3zlR+SBTa5nft/XbJJsGHH3WZv f8Jg== X-Gm-Message-State: APjAAAWMtN2PJwCBzISwDy/KxkeaTaoYICxZx00Qex3C9X7JZ1u/59kq IChBB+aj177NFZk//jCnp7eioeFA X-Google-Smtp-Source: APXvYqz0HHESLuDiG3PXy3OWFVlFrU04AspNx7/rRrJ3Acmz8CLBI4VXX9BBKfYI/H0Buntw2fZDgA== X-Received: by 2002:a9d:5911:: with SMTP id t17mr19533422oth.159.1565410408794; Fri, 09 Aug 2019 21:13:28 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:38 -0400 Message-Id: <20190810041255.6820-23-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 22/39] target/i386: introduce code generators X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" In this context, "code generators" are functions that receive decoded instruction operands and emit TCG ops implementing the correct instruction functionality. Introduce the naming macros first, actual generator macros will be added later. Signed-off-by: Jan Bobek --- target/i386/translate.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index ebb68fef0b..30180d1c25 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4697,6 +4697,24 @@ static int ck_cpuid(CPUX86State *env, DisasContext *= s, int ck_cpuid_feat) insnop_finalize(opTrm)(env, s, modrm, &rm); \ } while (0)) =20 +/* + * Code generators + */ +#define gen_insn(mnem) \ + gen_ ## mnem +#define gen_insn_r(mnem, opR1) \ + gen_ ## mnem ## _ ## opR1 +#define gen_insn_rr(mnem, opR1, opR2) \ + gen_ ## mnem ## _ ## opR1 ## opR2 +#define gen_insn_w(mnem, opW1) \ + gen_ ## mnem ## _ ## opW1 +#define gen_insn_wr(mnem, opW1, opR1) \ + gen_ ## mnem ## _ ## opW1 ## opR1 +#define gen_insn_wrr(mnem, opW1, opR1, opR2) \ + gen_ ## mnem ## _ ## opW1 ## opR1 ## opR2 +#define gen_insn_wrrr(mnem, opW1, opR1, opR2, opR3) \ + gen_ ## mnem ## _ ## opW1 ## opR1 ## opR2 ## opR3 + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411255; cv=none; d=zoho.com; s=zohoarc; b=CV8m6dP5qSoafIxksPg2cqP2l/xORsAOLZ+C/B4b1jQR+wtpIdjsVgkOXP23TgMArsL7MuQbTzGF5oncYywbclinSTmfqS5PxsffrbwJgx/UQjPFG15an1JLhq1gsEz4h4wQNibWiWAjEBJCkUu7rslsOUgHLkxZYJaeD/tQ+/U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411255; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=49k4L6Ed4GjJbtEpz/mWICDG8bIJSDwKyFJ7IpyHgb4=; b=AmgGlr8ANRNChR+aNGz/oCPEndfhJDyJr1HZMnpU5U9xR2EvJ6G+5Rx8Vtfn/NUmOJppOKa/XrI+IalQNfhAX71140liRK/Wrxsh84hlHX6yPRqqwa7ekRi4946i7nzCdcLUMiUr3eLnMx+ZiTGk42W7ak8m227vSPtP6qZQGWY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411255383717.2063464996245; Fri, 9 Aug 2019 21:27:35 -0700 (PDT) Received: from localhost ([::1]:34986 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIyc-0003Gf-Dx for importer@patchew.org; Sat, 10 Aug 2019 00:27:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34864) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl2-0006AA-Mk for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl0-0004Qw-Uo for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:32 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:34824) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl0-0004Qd-Ox for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:30 -0400 Received: by mail-ot1-x342.google.com with SMTP id j19so63824774otq.2 for ; Fri, 09 Aug 2019 21:13:30 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.29 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=49k4L6Ed4GjJbtEpz/mWICDG8bIJSDwKyFJ7IpyHgb4=; b=i0GOzEG/TuAuakcReWv4mmDO83sFXHIkf7FXrJfohVzOUo827HzJH6fXFC5WdLEAJB E9iWo1A5/4+gPrWKYKg2xm3q5TS/yoXuunFpmtrrnJ6sLZMufmlE1zFGtFmyb6sKQYdr dHkLrIcINT6vdAuw2xmpbe2chbW3IramaDlkO8+9l82v3sIuvsD3aIleQNqj1TS0APFC Rij9bN5MVnm+UR7PGw2dnV9zuIPTOdXkxSSL1rlcJhQeSKBM1M/DiVo/FuRJXzLaoUaE CZBzonHkKZ3BPi8m36ZoITGjhRYzSlIU3nKl1lVurngOwE2xLWZ75qII+pt5Ysc/y51b nmuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=49k4L6Ed4GjJbtEpz/mWICDG8bIJSDwKyFJ7IpyHgb4=; b=eavyiKsFOZZrr60ki5JL1UBK0pknWF2tmjL1JZRF4sNPpceg9Gwdlb6P06K7BpEDAp 6Ff4R+98DilEh4Rz5ULT0wdOw4xfKE9nnMsslI+znJTcQ2gFFhQZKlfTGo/2+wD+SmAH vVHcJboDM3sm8YHO82MSgRervMgRjdOt2bkO3Gg+W9Ay087LiymuwYucE0pDkerxQeV9 U3WQClhmX2P/JYHRV02mROoieUaTqC7DPMqtAbyskU9Hs9fpmKaxsbs7K1vThBIi6NwO XolPCzC6boWhPDPCUhdxnxcsnLz1R8QnQ559nvnLyvX+6OKkDvp+cKznJ/3GDW0PuibB F7Qw== X-Gm-Message-State: APjAAAU4X1WwM82LYmw97xxTmj9DufPpmVW8iST7SFGiLICiPLp3hf5j 2hA8Fk5NK8ewuq9wyF26Az3dTWLp X-Google-Smtp-Source: APXvYqxPFF4tz9Zij61f3Y5LXqQPZFPSsJIxpv8BdMmAKHa0sB7RYzTRS8LqbO7aPwsIA8g//GL9oQ== X-Received: by 2002:a9d:76ce:: with SMTP id p14mr5690952otl.342.1565410409998; Fri, 09 Aug 2019 21:13:29 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:39 -0400 Message-Id: <20190810041255.6820-24-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 23/39] target/i386: introduce instruction translator macros X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Instruction "translators" are responsible for decoding and loading instruction operands, calling the passed-in code generator, and storing the operands back (if applicable). Once a translator returns, the instruction has been translated to TCG ops, hence the name. Signed-off-by: Jan Bobek --- target/i386/translate.c | 288 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 30180d1c25..0da064d5fd 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4715,6 +4715,222 @@ static int ck_cpuid(CPUX86State *env, DisasContext = *s, int ck_cpuid_feat) #define gen_insn_wrrr(mnem, opW1, opR1, opR2, opR3) \ gen_ ## mnem ## _ ## opW1 ## opR1 ## opR2 ## opR3 =20 +/* + * Instruction translators + */ +#define translate_insn_r(opR1) \ + translate_insn_r_ ## opR1 +#define translate_insn_rr(opR1, opR2) \ + translate_insn_rr_ ## opR1 ## opR2 +#define translate_insn_w(opW1) \ + translate_insn_w_ ## opW1 +#define translate_insn_wr(opW1, opR1) \ + translate_insn_wr_ ## opW1 ## opR1 +#define translate_insn_wrr(opW1, opR1, opR2) \ + translate_insn_wrr_ ## opW1 ## opR1 ## opR2 +#define translate_insn_wrrr(opW1, opR1, opR2, opR3) \ + translate_insn_wrrr_ ## opW1 ## opR1 ## opR2 ## opR3 +#define translate_group(grpname) \ + translate_group_ ## grpname + +static void translate_insn( + CPUX86State *env, DisasContext *s, int ck_cpuid_feat, + void (*gen_insn_fp)(CPUX86State *, DisasContext *)) +{ + if (ck_cpuid(env, s, ck_cpuid_feat)) { + gen_illegal_opcode(s); + return; + } + + (*gen_insn_fp)(env, s); +} + +#define TRANSLATE_INSN_R(opR1) \ + static void translate_insn_r(opR1)( \ + CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ + void (*gen_insn_fp)(CPUX86State *, DisasContext *, insnop_t(opR1))= ) \ + { \ + insnop_t(opR1) arg1; \ + \ + if (ck_cpuid(env, s, ck_cpuid_feat) \ + || insnop_init(opR1)(env, s, modrm, &arg1)) { \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + insnop_prepare(opR1)(env, s, modrm, &arg1); \ + (*gen_insn_fp)(env, s, arg1); \ + } + +#define TRANSLATE_INSN_RR(opR1, opR2) \ + static void translate_insn_rr(opR1, opR2)( \ + CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ + void (*gen_insn_fp)(CPUX86State *, DisasContext *, insnop_t(opR1),= \ + insnop_t(opR2))) \ + { \ + insnop_t(opR1) arg1; \ + insnop_t(opR2) arg2; \ + \ + if (ck_cpuid(env, s, ck_cpuid_feat) \ + || insnop_init(opR1)(env, s, modrm, &arg1) \ + || insnop_init(opR2)(env, s, modrm, &arg2)) { \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + insnop_prepare(opR1)(env, s, modrm, &arg1); \ + insnop_prepare(opR2)(env, s, modrm, &arg2); \ + (*gen_insn_fp)(env, s, arg1, arg2); \ + } + +#define TRANSLATE_INSN_W(opW1) \ + static void translate_insn_w(opW1)( \ + CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ + void (*gen_insn_fp)(CPUX86State *, DisasContext *, insnop_t(opW1))= ) \ + { \ + insnop_t(opW1) ret; \ + \ + if (ck_cpuid(env, s, ck_cpuid_feat) \ + || insnop_init(opW1)(env, s, modrm, &ret)) { \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + (*gen_insn_fp)(env, s, ret); \ + insnop_finalize(opW1)(env, s, modrm, &ret); \ + } + +#define TRANSLATE_INSN_WR(opW1, opR1) \ + static void translate_insn_wr(opW1, opR1)( \ + CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ + void (*gen_insn_fp)(CPUX86State *, DisasContext *, insnop_t(opW1),= \ + insnop_t(opR1))) \ + { \ + insnop_t(opW1) ret; \ + insnop_t(opR1) arg1; \ + \ + if (ck_cpuid(env, s, ck_cpuid_feat) \ + || insnop_init(opW1)(env, s, modrm, &ret) \ + || insnop_init(opR1)(env, s, modrm, &arg1)) { \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + insnop_prepare(opR1)(env, s, modrm, &arg1); \ + (*gen_insn_fp)(env, s, ret, arg1); \ + insnop_finalize(opW1)(env, s, modrm, &ret); \ + } + +#define TRANSLATE_INSN_WRR(opW1, opR1, opR2) \ + static void translate_insn_wrr(opW1, opR1, opR2)( \ + CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ + void (*gen_insn_fp)(CPUX86State *, DisasContext *, insnop_t(opW1),= \ + insnop_t(opR1), insnop_t(opR2))) \ + { \ + insnop_t(opW1) ret; \ + insnop_t(opR1) arg1; \ + insnop_t(opR2) arg2; \ + \ + if (ck_cpuid(env, s, ck_cpuid_feat) \ + || insnop_init(opW1)(env, s, modrm, &ret) \ + || insnop_init(opR1)(env, s, modrm, &arg1) \ + || insnop_init(opR2)(env, s, modrm, &arg2)) { \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + insnop_prepare(opR1)(env, s, modrm, &arg1); \ + insnop_prepare(opR2)(env, s, modrm, &arg2); \ + (*gen_insn_fp)(env, s, ret, arg1, arg2); \ + insnop_finalize(opW1)(env, s, modrm, &ret); \ + } + +#define TRANSLATE_INSN_WRRR(opW1, opR1, opR2, opR3) \ + static void translate_insn_wrrr(opW1, opR1, opR2, opR3)( \ + CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ + void (*gen_insn_fp)(CPUX86State *, DisasContext *, insnop_t(opW1),= \ + insnop_t(opR1), insnop_t(opR2), insnop_t(opR3)= )) \ + { \ + insnop_t(opW1) ret; \ + insnop_t(opR1) arg1; \ + insnop_t(opR2) arg2; \ + insnop_t(opR3) arg3; \ + \ + if (ck_cpuid(env, s, ck_cpuid_feat) \ + || insnop_init(opW1)(env, s, modrm, &ret) \ + || insnop_init(opR1)(env, s, modrm, &arg1) \ + || insnop_init(opR2)(env, s, modrm, &arg2) \ + || insnop_init(opR3)(env, s, modrm, &arg3)) { \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + insnop_prepare(opR1)(env, s, modrm, &arg1); \ + insnop_prepare(opR2)(env, s, modrm, &arg2); \ + insnop_prepare(opR3)(env, s, modrm, &arg3); \ + (*gen_insn_fp)(env, s, ret, arg1, arg2, arg3); \ + insnop_finalize(opW1)(env, s, modrm, &ret); \ + } + +#define INSN_GRP_BEGIN(grpname) \ + static void translate_group(grpname)( \ + CPUX86State *env, DisasContext *s, int modrm) \ + { \ + const int reg =3D decode_modrm_reg_norexr(env, s, modrm); \ + \ + switch (reg) { +#define INSN_GRPMEMB(grpname, mnem, opcode, feat) \ + case opcode: \ + translate_insn( \ + env, s, CK_CPUID_ ## feat, \ + gen_insn(mnem)); \ + return; +#define INSN_GRPMEMB_R(grpname, mnem, opcode, feat, opR1) \ + case opcode: \ + translate_insn_r(opR1)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_r(mnem, opR1)); \ + return; +#define INSN_GRPMEMB_RR(grpname, mnem, opcode, feat, opR1, opR2) \ + case opcode: \ + translate_insn_rr(opR1, opR2)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_rr(mnem, opR1, opR2)); \ + return; +#define INSN_GRPMEMB_W(grpname, mnem, opcode, feat, opW1) \ + case opcode: \ + translate_insn_w(opW1)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_w(mnem, opW1)); \ + return; +#define INSN_GRPMEMB_WR(grpname, mnem, opcode, feat, opW1, opR1) \ + case opcode: \ + translate_insn_wr(opW1, opR1)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wr(mnem, opW1, opR1)); \ + return; +#define INSN_GRPMEMB_WRR(grpname, mnem, opcode, feat, opW1, opR1, opR2) \ + case opcode: \ + translate_insn_wrr(opW1, opR1, opR2)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wrr(mnem, opW1, opR1, opR2)); \ + return; +#define INSN_GRPMEMB_WRRR(grpname, mnem, opcode, feat, opW1, opR1, opR2, o= pR3) \ + case opcode: \ + translate_insn_wrrr(opW1, opR1, opR2, opR3)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wrrr(mnem, opW1, opR1, opR2, opR3)); \ + return; +#define INSN_GRP_END(grpname) \ + default: \ + gen_illegal_opcode(s); \ + return; \ + } \ + \ + g_assert_not_reached(); \ + } +#include "insn.h" + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { @@ -4726,15 +4942,87 @@ static void gen_sse_ng(CPUX86State *env, DisasConte= xt *s, int b) M_0F =3D 1 << (4 + 8), }; =20 + int modrm; + switch (b | M_0F | (s->prefix & PREFIX_DATA ? P_66 : 0) | (s->prefix & PREFIX_REPZ ? P_F3 : 0) | (s->prefix & PREFIX_REPNZ ? P_F2 : 0) | (REX_W(s) > 0 ? W_1 : W_0)) { =20 +#define CASES_LEG_NP_0F_W0(opcode) \ + case opcode | M_0F | W_0: +#define CASES_LEG_NP_0F_W1(opcode) \ + case opcode | M_0F | W_1: +#define CASES_LEG_F3_0F_W0(opcode) \ + case opcode | M_0F | P_F3 | W_0: +#define CASES_LEG_F3_0F_W1(opcode) \ + case opcode | M_0F | P_F3 | W_1: + +#define LEG(p, m, w) \ + CASES_LEG_ ## p ## _ ## m ## _W ## w +#define INSN(mnem, cases, opcode, feat) \ + cases(opcode) \ + translate_insn( \ + env, s, CK_CPUID_ ## feat, \ + gen_insn(mnem)); \ + return; +#define INSN_R(mnem, cases, opcode, feat, opR1) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_insn_r(opR1)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_r(mnem, opR1)); \ + return; +#define INSN_RR(mnem, cases, opcode, feat, opR1, opR2) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_insn_rr(opR1, opR2)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_rr(mnem, opR1, opR2)); \ + return; +#define INSN_W(mnem, cases, opcode, feat, opW1) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_insn_wr(opW1)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wr(mnem, opW1)); \ + return; +#define INSN_WR(mnem, cases, opcode, feat, opW1, opR1) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_insn_wr(opW1, opR1)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wr(mnem, opW1, opR1)); \ + return; +#define INSN_WRR(mnem, cases, opcode, feat, opW1, opR1, opR2) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_insn_wrr(opW1, opR1, opR2)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wrr(mnem, opW1, opR1, opR2)); \ + return; +#define INSN_WRRR(mnem, cases, opcode, feat, opW1, opR1, opR2, opR3) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_insn_wrrr(opW1, opR1, opR2, opR3)( \ + env, s, modrm, CK_CPUID_ ## feat, \ + gen_insn_wrrr(mnem, opW1, opR1, opR2, opR3)); \ + return; +#define INSN_GRP(grpname, cases, opcode) \ + cases(opcode) \ + modrm =3D x86_ldub_code(env, s); \ + translate_group(grpname)(env, s, modrm); \ + return; +#include "insn.h" default: gen_sse(env, s, b); return; + +#undef CASES_LEG_NP_0F_W0 +#undef CASES_LEG_NP_0F_W1 +#undef CASES_LEG_F3_0F_W0 +#undef CASES_LEG_F3_0F_W1 } =20 g_assert_not_reached(); --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411170; cv=none; d=zoho.com; s=zohoarc; b=RM1Yr8ki+kYRtE3iadzwcDQbiFuzCKtAisiqFE1+c92ThHnd0LtnGDHVaV5b4BwY9/3VlZ7Ck9iuvcmb0GJQqv2SzZPrbyK9TwKGcJNzoLpTI4P5Cmfyg80kW+EW+z0Is1+uIRknBGnoNVfuqfDOudEZ2E0dTiIew4rOz4WWd2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411170; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=z9grixh37d7b2RJWqW6FqjUKRalgRN8iH6PjGzbqJZ8=; b=fG+uf39BxtyyVks7UrBb356so2YFFw/yyltnr+ySz8kJgdyhlo1TflTddUj+4iNbRL5Xyw0SQk+hlK4yguuX/VtKySk82s8SI30pnHz3TCaIBaHXeKbSbQRhbj1Cy4C0IIwaTGMBW8+0I2yDc+++J+PDSNQkwXpaardYImi1bBA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411170721131.7298885384589; Fri, 9 Aug 2019 21:26:10 -0700 (PDT) Received: from localhost ([::1]:34970 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIxF-0001JS-RF for importer@patchew.org; Sat, 10 Aug 2019 00:26:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34863) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl2-0006A6-Me for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl1-0004RC-O5 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:32 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:41269) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl1-0004R3-Ju for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:31 -0400 Received: by mail-ot1-x341.google.com with SMTP id o101so5584481ota.8 for ; Fri, 09 Aug 2019 21:13:31 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.30 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=z9grixh37d7b2RJWqW6FqjUKRalgRN8iH6PjGzbqJZ8=; b=O3av3WtZWKp+sWQTo1aDD+J4wlsCVOSLg1rClKA7oPLhO9AS4cAIMjAz3Oi1xwGBK9 yIriHvnCLH9BZ4KOniam793Mu8xodztRmPwAhXd6P2pb2aipwb+0YCmdiHuKPzYSJkaA xFH+bhoxz8RWRNL6fIpN7W25Bh+kwCxbZs6vViTQ6sigy44e3Gzhn6OHq66ZpvYQJ+wl cmraHbSrYFTW+mtxBygVNrpL4M8yKB+hdPHQ3RRXOb+Ox+XyEYMI5L/LGme73+lkBlYz SybUzczUlEQuQQPaDZ7OCXUqZ23sYA/48xAxMBGhkMvo+iboir4VKP2z3Kcy5/XGOhr1 SnNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=z9grixh37d7b2RJWqW6FqjUKRalgRN8iH6PjGzbqJZ8=; b=uPT3NR9ujRpmZxOunEErNlEwZ7WgK6yokewGMjrzbfGdP7xbbAolwJ2bKKKiaIduZc F1rgfk80yKXFa2VHzIfu0L4kiHVvtMM0PqEc5zP2+Vxy/cFGjMFKGOooup+3Q9ZcYgLv KCRvy1n670txrsAEQh29l6Xtna/Ct0jwrVvXzSIqY0BLUdKEkhFwbrrZZsOgsASo4C/d INvx7nLlfcTlIv/xIgfRk/VqNZP2b2ubZsPGz4b878QbzX0HGsiNC7qYDxZSLjAfSeS5 vDFJqc5+LUBDMd7nEI3s4dpP5xXQ/pAbKVQNXBorT6RGAC3/Kexf7LSyY9G0ci2vg6+O VB1w== X-Gm-Message-State: APjAAAVe8IIk35IEPVlGuTEiAP3weQx2qGt4mZgKYxj/4+Z+hoAiluzb x6V+aYrxk2jydxQw2bVmjE2HFPp+ X-Google-Smtp-Source: APXvYqyTbnv8vzaw3FESp6gtza+8bPSlv+VGNDhH9ePUZy7KSxNwRrKRfkhWyaN14fSshgzjUx3B5A== X-Received: by 2002:aca:5e06:: with SMTP id s6mr8573717oib.171.1565410410911; Fri, 09 Aug 2019 21:13:30 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:40 -0400 Message-Id: <20190810041255.6820-25-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 24/39] target/i386: introduce Ib (immediate) operand X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Introduce the immediate-byte operand, which loads a byte from the instruction stream and passes its value as the operand. Signed-off-by: Jan Bobek --- target/i386/translate.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 0da064d5fd..b8e6eaebb4 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4697,6 +4697,14 @@ static int ck_cpuid(CPUX86State *env, DisasContext *= s, int ck_cpuid_feat) insnop_finalize(opTrm)(env, s, modrm, &rm); \ } while (0)) =20 +/* + * Immediate operand + */ +INSNOP(Ib, int8_t, \ + INSNOP_INIT_OK(*op), \ + (*op =3D x86_ldub_code(env, s)), \ + INSNOP_FINALIZE_INVALID) + /* * Code generators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411368; cv=none; d=zoho.com; s=zohoarc; b=jKf9niR3LaDph6YxMHmtMkPbNTDN/eZ/iC9PG5MfdS8TnNCT5FQHimAutiJb4MRNtCvtZnnLdfdRTzdWWt92z+nlTtS/zaMYl2mk4klDh+81QYtHyzpwiy+w5LAXGudgHV/SfzZgjNoH9kVgorC8g+DgaROVWeaR+ETx+EsKv6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411368; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=2dEeYOdO8k86iFOdeCG1Qzb5tXqRbL2ElGcxu6RqHdc=; b=L9LsOjsbsNE7BpSsjtiNTbTIXjrdMwTa3Ig6/W+iI1MxaX2FK9JqFesp9WpyArQB1cemVm/uBjIDsXZZAtp4MXo+0nfVAB7X7SH6EDggRzPsKCTzWYRY6i0nGgjuoycMflYNFYqU+4UEBrlEe9h4dxk1QKmv++MVKNKR0ZLTdrY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411368664397.27443254472746; Fri, 9 Aug 2019 21:29:28 -0700 (PDT) Received: from localhost ([::1]:34998 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwJ0R-0006KS-I8 for importer@patchew.org; Sat, 10 Aug 2019 00:29:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34877) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl3-0006DT-IN for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl2-0004SO-I0 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:33 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:41271) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl2-0004Rq-Cm for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:32 -0400 Received: by mail-ot1-x343.google.com with SMTP id o101so5584537ota.8 for ; Fri, 09 Aug 2019 21:13:32 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.31 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2dEeYOdO8k86iFOdeCG1Qzb5tXqRbL2ElGcxu6RqHdc=; b=jDivdAqrqL1DVKKaLjvcYB31mue+KhN+kOzHfewLqwg/aYjcvEYQ68/FfpHHLBhmg4 Bl4vgo5NZspCuAXD2hwK4QcOsvj3onncWuv6YPVCx423dxH4CGsHangSDvrOHOL4norE /vZTOoyCSR8hiXnC6KzdQXgBjnvBvIuwomoz9MgVpPlVhhRyszkhyyEOkzqeDc4xPMVV f0zLW82bCNb0CkIcMNl2INir9qKXvB7ZXnJYov1uBmgWvOpyprwHKGJ3AjYwSmJISV9/ JjtDxpb5t+NGy7p2RTJj/ZhcelIhVTinnUFQvc0nTMW/6zzxh74eSwnUCfgYu+WJbxJE x7UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2dEeYOdO8k86iFOdeCG1Qzb5tXqRbL2ElGcxu6RqHdc=; b=oDlIW/RfPqwF78xmgnavqvSoYp1m2rn5IpOhsnKwNoy0qy2EDzkw46nGDcypvdEeV7 Ot++pSOyL1AClX3v+Vaiu5izOe90+ISdrz2UWBXgeCmusknVPA4kAW4MqsYvcmsow7Ut u6uzpMweZLzR2g6CS6c65zSat4eDWMFjeja7PMWFL9DnpD1BjjlHh/j3dpzlBFAJCk0l LnGOGmE4CRuRSo/18kwP9fPi8YD6+BxdDdGMMMlHgwWQxD3hgVzYwrMH7W13uZpRpl7X wJl4x0zzgdCu8LIkh9LWNYFC9eI2VwE29IVhl7j2tRjhFYZHeQ85RmQ1PqRgv/TzPac9 UWgg== X-Gm-Message-State: APjAAAW9SbH0IMXrEwwucBPaPbVNpEMAMdQgoNPJ4GBbz8xiuYyaF3KM pXklSGs3JJyyEk6mkEp8t2LP+zbv X-Google-Smtp-Source: APXvYqwOwCFwXc7MSoxKVEVNxIerOai2LPKKv/Rh9qpUW4b9BJu0afEs97UM12Tiozwv5fFLuyk9sg== X-Received: by 2002:a9d:5c11:: with SMTP id o17mr19460742otk.107.1565410411740; Fri, 09 Aug 2019 21:13:31 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:41 -0400 Message-Id: <20190810041255.6820-26-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 25/39] target/i386: introduce M* (memptr) operands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The memory-pointer operand decodes the indirect form of ModR/M byte, loads the effective address into a register and passes that register as the operand. Note: This operand has a known flaw: if an instruction is writing to memory (rather than reading), this operand cannot and will not load the effective address into the register (as it should). The current workaround is to declare the memory operand as read (rather than write); this flaw will be addressed in the next iteration. Signed-off-by: Jan Bobek --- target/i386/translate.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index b8e6eaebb4..301dc4eddf 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4705,6 +4705,31 @@ INSNOP(Ib, int8_t, \ (*op =3D x86_ldub_code(env, s)), \ INSNOP_FINALIZE_INVALID) =20 +/* + * Memory-pointer operand + */ +INSNOP( + M, TCGv, + do { + if (decode_modrm_mod(env, s, modrm) =3D=3D 3) { + INSNOP_INIT_FAIL; + } else { + INSNOP_INIT_OK(s->A0); + } + } while (0), + do { + assert(*op =3D=3D s->A0); + gen_lea_modrm(env, s, modrm); + } while (0), + INSNOP_FINALIZE_NOOP) + +INSNOP_ALIAS(Mb, M) +INSNOP_ALIAS(Mw, M) +INSNOP_ALIAS(Mq, M) +INSNOP_ALIAS(Md, M) +INSNOP_ALIAS(Mdq, M) +INSNOP_ALIAS(Mqq, M) + /* * Code generators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410903; cv=none; d=zoho.com; s=zohoarc; b=FFvWLFrQY6YhFAZOZQTS7puF9cs7rAB2pJgW/mog7iIsXcTOoxdijwHlgGw1DxyUz5H6a8nvlPFwNlq8ZaXMUBIDLKTSNNm/QC2Ushq/flixo+XaMRKakM43h6k5gkOZMkkrwdfU34i7eog04i32WHwgcgkntLj7wxfCZqcEeiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410903; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ZzNqi122k+7Jd9BKz3dezcAE/xj5VfNz4Zoq5N5DAcM=; b=XqnTc+oYSlU/QFQST+vIQ3bjIzp0FPn3Negzv2nkve8n8WSsL63q7HPJE3NNuUE+St1RNZcjMkeLrxI48khyjvTg0CjvrZwlk8lAEWMlh5eV7h8wMkPCsizq4p6vsosYtsM/IaIKAEUkaCmLAN4E7JEUwmidhTAgWoxGkU6XGAA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410903558466.28762680370085; Fri, 9 Aug 2019 21:21:43 -0700 (PDT) Received: from localhost ([::1]:34901 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIsw-0008QH-KV for importer@patchew.org; Sat, 10 Aug 2019 00:21:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34892) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl4-0006GS-Fk for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl3-0004Sq-EA for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:34 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:44997) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl3-0004Sh-9f for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:33 -0400 Received: by mail-ot1-x341.google.com with SMTP id b7so90234805otl.11 for ; Fri, 09 Aug 2019 21:13:33 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.31 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZzNqi122k+7Jd9BKz3dezcAE/xj5VfNz4Zoq5N5DAcM=; b=Vg6/+3s2vhIMRi5WeVr7xkzHVwLxNkBt25TILLQwR23tsVixPRxuLv14k3OX+OOkR9 cHGj/2ugNC/vfOglccb1JWwNDLU23BQncctmN1hPIjoggZWB1lOTIJ6qjhvK98l6ouAV 0x7fLA5geECuCizVWZYwer1ImTnk7sy660tG0FLzaABmDPtOfcjdkz2GNFwPS+NtoLTX 8moJR9g9DE689/nMiV61mQiF1KsyckKojxYcvtmY/iK3uU1h8gBRR7I5gYD5kLkIHbvb L0/4W1u3FvjeQO+OttzVrqeW6Ikysyy8yp6q0jm6DsL7XiTcjMeU34JYDGrO2QvTjlZ9 F7mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZzNqi122k+7Jd9BKz3dezcAE/xj5VfNz4Zoq5N5DAcM=; b=To0VcdO7l7RU4Ar0jd2fUO0xaioQW4ffwV9LvNvI7gcJ+ueYlPk4ipDONgcYVug6sA WpSI1FNWkqtDShgYzzEUyckgHgZ85CL9b8HomjIIO2keQvFyy1n1KQ8kEEzeTvmlc7Q4 sEc31b9s+bsmQMsRUYWaEGH7OZzx+17U6vogfW5JazUDehJqp/KtgkqzlDyR3aWBXiKU iRfiWqgan3U1V+WfTuGOrhHpd3Hf0bRKeYMWb589e6YAqURXjqajpsrz4luSd4Z8uo0K lW1ozsdxB1+MbTEbJV6nKnhP0ahSRcTzOmJmu8tVkvrXV5iMR1GhGcpiGB0YHQQCojg/ KRsw== X-Gm-Message-State: APjAAAV7yRmNl5K5ghdsBuCHKGky2qUk4eFdjFIRxayZk/YbikL55oYB povihtJzuhqtKWzCVPWWvOjYxsiE X-Google-Smtp-Source: APXvYqzEESjl+Oxl6Rr2UqB7fjwlTJr1AQcQQJ76CX5Tqcle5suHxuuU3LO5wMYNfljmnOKTIFMx1w== X-Received: by 2002:aca:4256:: with SMTP id p83mr8914903oia.125.1565410412505; Fri, 09 Aug 2019 21:13:32 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:42 -0400 Message-Id: <20190810041255.6820-27-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 26/39] target/i386: introduce G*, R*, E* (general register) operands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" These address the general-purpose register file. The corresponding 32-bit or 64-bit register is passed as the operand value. Signed-off-by: Jan Bobek --- target/i386/translate.c | 65 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 301dc4eddf..0e57d5f049 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4730,6 +4730,71 @@ INSNOP_ALIAS(Md, M) INSNOP_ALIAS(Mdq, M) INSNOP_ALIAS(Mqq, M) =20 +/* + * General registers + */ +#define INSNOP_R32(opT, regid_fp, init_stmt) \ + INSNOP( \ + opT, TCGv_i32, init_stmt, \ + do { \ + const int regid =3D regid_fp(env, s, modrm); \ + tcg_gen_trunc_tl_i32(*op, cpu_regs[regid]); \ + } while (0), \ + do { \ + const int regid =3D regid_fp(env, s, modrm); \ + tcg_gen_extu_i32_tl(cpu_regs[regid], *op); \ + } while (0)) + +#define INSNOP_R64(opT, regid_fp, init_stmt) \ + INSNOP( \ + opT, TCGv_i64, init_stmt, \ + do { \ + const int regid =3D regid_fp(env, s, modrm); \ + tcg_gen_mov_i64(*op, cpu_regs[regid]); \ + } while (0), \ + do { \ + const int regid =3D regid_fp(env, s, modrm); \ + tcg_gen_mov_i64(cpu_regs[regid], *op); \ + } while (0)) + +#ifdef TARGET_X86_64 +INSNOP_R32(Gd, decode_modrm_reg_rexr, INSNOP_INIT_OK(s->tmp2_i32)) +INSNOP_R64(Gq, decode_modrm_reg_rexr, INSNOP_INIT_OK(s->T1)) + +INSNOP_R32(Rd, decode_modrm_rm_rexb, + INSNOP_INIT_DIRECT_ONLY(INSNOP_INIT_OK(s->tmp3_i32))) +INSNOP_R64(Rq, decode_modrm_rm_rexb, + INSNOP_INIT_DIRECT_ONLY(INSNOP_INIT_OK(s->T0))) +#else /* !TARGET_X86_64 */ +INSNOP_R32(Gd, decode_modrm_reg_rexr, INSNOP_INIT_OK(s->T1)) +INSNOP(Gq, TCGv_i64, INSNOP_INIT_FAIL, + INSNOP_PREPARE_INVALID, INSNOP_FINALIZE_INVALID) + +INSNOP_R32(Rd, decode_modrm_rm_rexb, + INSNOP_INIT_DIRECT_ONLY(INSNOP_INIT_OK(s->T0))) +INSNOP(Rq, TCGv_i64, INSNOP_INIT_FAIL, + INSNOP_PREPARE_INVALID, INSNOP_FINALIZE_INVALID) +#endif /* !TARGET_X86_64 */ + +#ifdef TARGET_X86_64 +INSNOP_LDST(RdMd, Rd, Md, s->tmp3_i32, + tcg_gen_qemu_ld_i32(reg, ptr, s->mem_index, MO_LEUL), + tcg_gen_qemu_st_i32(reg, ptr, s->mem_index, MO_LEUL)) +INSNOP_LDST(RqMq, Rq, Mq, s->T0, + tcg_gen_qemu_ld_i64(reg, ptr, s->mem_index, MO_LEQ), + tcg_gen_qemu_st_i64(reg, ptr, s->mem_index, MO_LEQ)) +#else /* !TARGET_X86_64 */ +INSNOP_LDST(RdMd, Rd, Md, s->T0, + tcg_gen_qemu_ld_i32(reg, ptr, s->mem_index, MO_LEUL), + tcg_gen_qemu_st_i32(reg, ptr, s->mem_index, MO_LEUL)) +INSNOP_LDST(RqMq, Rq, Mq, NULL, + INSNOP_PREPARE_INVALID, + INSNOP_FINALIZE_INVALID) +#endif /* !TARGET_X86_64 */ + +INSNOP_LDST_UNIFY(Ed, Rd, RdMd) +INSNOP_LDST_UNIFY(Eq, Rq, RqMq) + /* * Code generators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410964; cv=none; d=zoho.com; s=zohoarc; b=G5CQzuSMJV5vah76mrFhGq/lD8cd+iNskLQLoqIi3pcwkIsr2Oulr9S29LORkTRsq/Lx5/bYpC6yqOwWWdV+p8jPhZrR3PkxvXMJ1FzxNPoNwzHaUp3EE9YdadMBqiYsX1JAfCTMtasIE3J+6JudHXVFb67Kd5Tv59wBdOpcDZw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410964; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=15iM45DlpSKZArUqDXfgNusnAitpl/Ar5JV1uBV+dQo=; b=cSHzHLVuRATG8OvN2K5XC8DkBnyU+lrL2xb3kyIe6mSTBhoJPc2E51HNh+IGs1jKQ97pA+IXXDPUrUr3aFRzNEiy5zvXRQh81W+JR9l6nGleSuH9uLHxPhT6UlwvGIWxDoUiMXlmzY92qT/bU5pRdmIMsKPkyH8tuY8z84qnEOs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410964367698.2533954017964; Fri, 9 Aug 2019 21:22:44 -0700 (PDT) Received: from localhost ([::1]:34924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwItv-0003Gn-EY for importer@patchew.org; Sat, 10 Aug 2019 00:22:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34902) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl5-0006JQ-9e for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl4-0004TB-CE for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:35 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:39412) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl4-0004T2-7z for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:34 -0400 Received: by mail-ot1-x343.google.com with SMTP id r21so134537625otq.6 for ; Fri, 09 Aug 2019 21:13:34 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.32 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=15iM45DlpSKZArUqDXfgNusnAitpl/Ar5JV1uBV+dQo=; b=YnyR5VBVAnub7UmY9hv2BK2U8LTUIqdS6B4ggYmssHOSJ+gh8nvA8+Ia1HO0G9Lqlg ymb2YDOwQmUaF1QUcK25PqIhol66CWBK6ohR+r+Ag4dJTJmYLMNVi00+JPT1TuPnz1wx 0o0taWRaZ3TP5RlBj8XrDjeIu7jZTXYQNsLkOVsge0FaUs8eb0UV5lXh+6S5978di08E lrydPJOaRgq6xg3SVaGltatUZIO9CRnRqjVBcnS9p0sZgEWil/NDEqaoq4nWtwIoxFoj PqXQlSaV+cbj1KRmtfrApcscNjvANywdCt4jDksRFr/pHIIbMV+gALJlG1WEpPYJwmZa hBEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=15iM45DlpSKZArUqDXfgNusnAitpl/Ar5JV1uBV+dQo=; b=aFDFaapTpjwpaAtvGZNstHSHmyPHgpVSlXxUUehqXPFvP4/Hdqt3oxdh2ssf42pOvl vfc7Pn9WeiIsBKiWn+NYV09evLils9sD5nZQgGF3xY4TbjN7QYLG0epNKcbKyghEorsP LK+kh1TF2FZyiO3G1wH+H8JLHStNfmQ45aVWuLy2RzXggcgC0NgT7k313v36aJrqvuPN MacEp8JRbbYP8jx2WpVVZ+t+CpQQMHSIHHb1jdam5a6swt1WtjyParxJvoGg2oyn5zjk yCsm2BytHljAfGHpKupyW3LBJ5gZAORhQwzDcWWkzs/cpqBDDkltvng2yNXpNfBhlSKF Yl4Q== X-Gm-Message-State: APjAAAXFzNQKoSSbfQRawYMw+eu0lPdwCBDWwo54pmJQJkxrR/7vxC8o 7CF3AzEmdbyh3JcxBUGqYkf6XAHw X-Google-Smtp-Source: APXvYqydqc16jOCYu2/uxBQOIN+Tb9UzSdM/MJnUT8g3E5dDzNk6sGl7hbdjSECjTkbg0sc20yd+ww== X-Received: by 2002:a9d:4b0b:: with SMTP id q11mr21619292otf.69.1565410413531; Fri, 09 Aug 2019 21:13:33 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:43 -0400 Message-Id: <20190810041255.6820-28-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 27/39] target/i386: introduce RdMw operand X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The PINSRW family of instructions have a peculiar second operand: 32-bit general-purpose register file is addressed, but if the operand is indirect, only 16 bits are loaded from memory. Reflect this by the RdMw operand. Signed-off-by: Jan Bobek --- target/i386/translate.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 0e57d5f049..9896f1c99e 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4777,6 +4777,9 @@ INSNOP(Rq, TCGv_i64, INSNOP_INIT_FAIL, #endif /* !TARGET_X86_64 */ =20 #ifdef TARGET_X86_64 +INSNOP_LDST(RdMw, Rd, Mw, s->tmp3_i32, + tcg_gen_qemu_ld_i32(reg, ptr, s->mem_index, MO_LEUW), + tcg_gen_qemu_st_i32(reg, ptr, s->mem_index, MO_LEUW)) INSNOP_LDST(RdMd, Rd, Md, s->tmp3_i32, tcg_gen_qemu_ld_i32(reg, ptr, s->mem_index, MO_LEUL), tcg_gen_qemu_st_i32(reg, ptr, s->mem_index, MO_LEUL)) @@ -4784,6 +4787,9 @@ INSNOP_LDST(RqMq, Rq, Mq, s->T0, tcg_gen_qemu_ld_i64(reg, ptr, s->mem_index, MO_LEQ), tcg_gen_qemu_st_i64(reg, ptr, s->mem_index, MO_LEQ)) #else /* !TARGET_X86_64 */ +INSNOP_LDST(RdMw, Rd, Md, s->T0, + tcg_gen_qemu_ld_i32(reg, ptr, s->mem_index, MO_LEUW), + tcg_gen_qemu_st_i32(reg, ptr, s->mem_index, MO_LEUW)) INSNOP_LDST(RdMd, Rd, Md, s->T0, tcg_gen_qemu_ld_i32(reg, ptr, s->mem_index, MO_LEUL), tcg_gen_qemu_st_i32(reg, ptr, s->mem_index, MO_LEUL)) --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411077; cv=none; d=zoho.com; s=zohoarc; b=WNCA3owc7UcSoy0j1c8qrugClP9ZwgwAwEN+WVXYbbvaTrco0Bk+xo6j/mfjZN0nSuvCi/Z8ahi8PkzjprJsW4FwRBAtpGUvucn0OPaW+22ZXN7UzW/ChmbBHcMciL2EO9CwbryY1Nd3UWc+QN1SNIak5qOS0h/6JieUBgm2zvg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411077; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=DbrkzDutmrfs4okVyFu2tN+4UZ2g6EPa+UzGILusqVI=; b=Jd7bMeICTwl0k7dDBx/OWPfflSmtsR0BG0Vdg+TDwERnV4tXCjp4WhTn2FRAz3HF6sFysllijwiDNuBH/qxFpJPp8WGp2K+BQy23WgOGzZclruDicj7+lDUAqJA9CJJ/WZ4jvzBXZPDJXE+ybgdu1J8fwY4q5K7bxAvI3bqazF8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411077163382.15769065661846; Fri, 9 Aug 2019 21:24:37 -0700 (PDT) Received: from localhost ([::1]:34950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIvh-0006ss-2m for importer@patchew.org; Sat, 10 Aug 2019 00:24:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34914) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl6-0006Np-L3 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl5-0004UN-HH for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:36 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:33384) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl5-0004TO-CT for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:35 -0400 Received: by mail-ot1-x341.google.com with SMTP id q20so140362397otl.0 for ; Fri, 09 Aug 2019 21:13:35 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.33 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DbrkzDutmrfs4okVyFu2tN+4UZ2g6EPa+UzGILusqVI=; b=GtjTjbxW2yqhUhv/aEGer1DGfWbJBqq2IyQqiDpYj6Q/+oZWxGc6cCxGKk3FjJHbXL 1NypyHX55VFw3W91i20CBHGvAMH4wd3C+ojTPqW9JRgjYNuO+TNe8Ah6tRds3JnCZJ2e PsxADAfz/rKQpgpFqYQwPC7Y5ChHVYXtCJlVli61X7hbVi+HcnU+A7ek9vMNJB8tQ33B SUM+ikFKRq8XjqBr4/7JheTy+vK1NsR7jAWTyKSqDhC7290Nwe+Ltfg6HzXja9VtXbhr eujNn6CBm7UM7PUWhsuhdDFcXVq8ipLqLmoFDL/F2oqVP+pLXT7QBvOsuLicxr+mlUpl WKpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DbrkzDutmrfs4okVyFu2tN+4UZ2g6EPa+UzGILusqVI=; b=Ytu/WbJO9azT7Vc7d06sfyRmp9lO8z9qMhK39Ve6B1YC3Ek+ar1eI4l0Icqe4irnfj eXIuWMr2N6ENOScM8WH7C7xd15F0LDVEWGfpO8GzNqv20N8Qj5xksa+nVHi2hmAhzce+ tOZctyhYIY+eServGmKG6/v0pKgilymFo7ccugot/QbW/Rva008E4H2aj5QObJQuvj3f fB2zDnvAcIIFqjL74NcELebJJA7bKeNtzmUCFLDWtjIaCACTo4OlcHXh601xvwpJjW/d NLeidMiNcuC8AbsxuxzFfLvtgZ1n+hA4FiAFCMRWb4DUDef05sdr0+OSLIEQRqvoqPd5 Q1Sw== X-Gm-Message-State: APjAAAXlxafTlJie30GdfS4Ts5Mu+xA7u/+R3NvUi6kz88Z9uU7j4O0A 1FUGiQ+s21ionob9qvS1N6U2BbV2 X-Google-Smtp-Source: APXvYqx208iXeiIncB/eWHiUinL3yo4oqlq4NI64+auF1uozo47xCmgUhMgY8N9rDEY+Dabg4vM5IA== X-Received: by 2002:a54:4f09:: with SMTP id e9mr8499793oiy.89.1565410414527; Fri, 09 Aug 2019 21:13:34 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:44 -0400 Message-Id: <20190810041255.6820-29-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 28/39] target/i386: introduce P*, N*, Q* (MMX) operands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" These address the MMX-technology register file; the corresponding cpu_env offset is passed as the operand value. Notably, offset of the entire register is pased at all times, regardless of the operand-size suffix. Signed-off-by: Jan Bobek --- target/i386/translate.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 9896f1c99e..19b92d61f6 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4801,6 +4801,43 @@ INSNOP_LDST(RqMq, Rq, Mq, NULL, INSNOP_LDST_UNIFY(Ed, Rd, RdMd) INSNOP_LDST_UNIFY(Eq, Rq, RqMq) =20 +/* + * MMX registers + */ +#define INSNOP_INIT_MM(mmid_fp) \ + do { \ + const int mmid =3D mmid_fp(env, s, modrm); \ + INSNOP_INIT_OK(offsetof(CPUX86State, fpregs[mmid].mmx)); \ + } while (0) + +#define INSNOP_MM(opT, init_stmt) \ + INSNOP(opT, uint32_t, \ + init_stmt, \ + INSNOP_PREPARE_NOOP, \ + INSNOP_FINALIZE_NOOP) + +INSNOP_MM(P, INSNOP_INIT_MM(decode_modrm_reg_norexr)) +INSNOP_ALIAS(Pd, P) +INSNOP_ALIAS(Pq, P) + +INSNOP_MM(N, INSNOP_INIT_DIRECT_ONLY(INSNOP_INIT_MM(decode_modrm_rm_norexb= ))) +INSNOP_ALIAS(Nd, N) +INSNOP_ALIAS(Nq, N) + +INSNOP_LDST(NdMd, Nd, Md, offsetof(CPUX86State, mmx_t0), + (assert(ptr =3D=3D s->A0), + gen_ldd_env_A0(s, reg + offsetof(MMXReg, MMX_L(0)))), + (assert(ptr =3D=3D s->A0), + gen_std_env_A0(s, reg + offsetof(MMXReg, MMX_L(0))))) +INSNOP_LDST(NqMq, Nq, Mq, offsetof(CPUX86State, mmx_t0), + (assert(ptr =3D=3D s->A0), + gen_ldq_env_A0(s, reg + offsetof(MMXReg, MMX_Q(0)))), + (assert(ptr =3D=3D s->A0), + gen_stq_env_A0(s, reg + offsetof(MMXReg, MMX_Q(0))))) + +INSNOP_LDST_UNIFY(Qd, Nd, NdMd) +INSNOP_LDST_UNIFY(Qq, Nq, NqMq) + /* * Code generators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410953; cv=none; d=zoho.com; s=zohoarc; b=m6iWBagoqCmIbMK8dXfeKLVYaTOsRXVJ7yA+sSj3oq9xHvp4xvqO9ETOOGa1uMcnnz6VMPEV2i/tGNMp6v4UyiU3ndDJoiFq8KRxOvGryhQjEP/cf2ApSORgbhyMo3xn7rEEyzqC4T/HR8k2ZNtTU3ek5Up2uT3w19Gvp0TqF6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410953; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=q6DnEc89TW6Qa3yBPyPdGyYM9ThqGiR5er7hiKTRvYk=; b=EDXnu3GgkQ0FD6NhJy6kswjygSkflAk7pTwY6OPsbFGbtNkRfVz9wLfFCwNo8dhjPhyaIwIpEV83ptrgvJ/jEw3V+KTaIHA4aQ+p3bkppl8YqErfsWK/abUYEyVlBsMoube7jVfmYf1179qJKSKSlYvvkgVblnIL2EV7SDquak8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410953238598.4854676335127; Fri, 9 Aug 2019 21:22:33 -0700 (PDT) Received: from localhost ([::1]:34922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwItk-0002kn-80 for importer@patchew.org; Sat, 10 Aug 2019 00:22:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34927) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl7-0006RM-MT for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl6-0004Uy-MP for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:37 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:39414) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl6-0004Ug-I3 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:36 -0400 Received: by mail-ot1-x344.google.com with SMTP id r21so134537806otq.6 for ; Fri, 09 Aug 2019 21:13:36 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.35 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q6DnEc89TW6Qa3yBPyPdGyYM9ThqGiR5er7hiKTRvYk=; b=plFeN00E7BakXWolWbIbmFul1Y1cUzH3nLVldl4Gv0GC7IuTBExcxA+rkUXuK0BQU/ Q2R/n0EZ1J7NvicGbAid0tZWAM3gSku0OJ8ich3L+ULRUquZAS6ZXv7A/xPIXErkAI1v 8vFWZ9IbG7PCP54WBpw8807b5gixtV292IwKggMHSpV4H8o0uKJB8m9dw6L1vfMl1UIV 5yMojFhjbCSkZsVe/v6cDqFLRrgdnWjQqKWKnInMLRsQXvcxKOGBKBO5c9s39ZwJQjzl sI4Pq6YaKEvEhk899YiXjGR7eEuSJTj288qx3opuho9TG/9oSKlZQnGr+VLhWbIOCHsL 32Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q6DnEc89TW6Qa3yBPyPdGyYM9ThqGiR5er7hiKTRvYk=; b=qPX5rzqHASbolvGJw1J2rrt+6oZ6r1Qef+GBSCN6QiKgPToo1S8GZGML++IuBCF6aL bTe0ULqu7w9EiqSJIoNc79b/+GX9ti4QiefaktDkzXLaB6oECaHFK1aqHTq/hc+bcG3y oY80ff6UQVCGuYpyLdHYGxXSydoO8AnWneObIo0isCUDGJYmhBBUAnP9EOTrN1jVSu6d 8L6/nNcGlhuuTI70u0bZno3MunrnU0jq7kyM86fQRQAaIWqAO7ojODMeKev+erpmPgdG /+ZskyeZCSRAtchYpa6FaI7QdgIGhUWcoHrJlS0/RWEnIbmW0NtCWm382vbxVI7Bhnfi H46A== X-Gm-Message-State: APjAAAVjcJu5zhF9yVOjOBhiiYf0HsUbjPsQUNavONHUUdeSQCu92sCO 1GB7wpefvBuBdnHNM/I7OkjkIz67 X-Google-Smtp-Source: APXvYqyhIVoyEwW7HIbJu7Tv+YhEtve77qAsqPI+JK3qhNMPlrsQKiHKkz3JTi/ISyLnm9OIYSz/tQ== X-Received: by 2002:aca:420b:: with SMTP id p11mr7863554oia.124.1565410415791; Fri, 09 Aug 2019 21:13:35 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:45 -0400 Message-Id: <20190810041255.6820-30-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 29/39] target/i386: introduce helper-based code generator macros X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Code generators defined using these macros rely on a helper function (as emitted by gen_helper_*). Signed-off-by: Jan Bobek --- target/i386/translate.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 19b92d61f6..d721bb5142 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4856,6 +4856,32 @@ INSNOP_LDST_UNIFY(Qq, Nq, NqMq) #define gen_insn_wrrr(mnem, opW1, opR1, opR2, opR3) \ gen_ ## mnem ## _ ## opW1 ## opR1 ## opR2 ## opR3 =20 +#define GEN_INSN_HELPER(mnem, helper) \ + static void gen_insn(mnem)( \ + CPUX86State *env, DisasContext *s) \ + { \ + gen_helper_ ## helper(cpu_env); \ + } +#define GEN_INSN_WR_HELPER(mnem, helper, opW1, opR1) \ + static void gen_insn_wr(mnem, opW1, opR1)( \ + CPUX86State *env, DisasContext *s, insnop_t(opW1) ret, \ + insnop_t(opR1) arg1) \ + { \ + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); \ + tcg_gen_addi_ptr(s->ptr1, cpu_env, arg1); \ + gen_helper_ ## helper(cpu_env, s->ptr0, s->ptr1); \ + } +#define GEN_INSN_WRR_HELPER(mnem, helper, opW1, opR1, opR2) \ + static void gen_insn_wrr(mnem, opW1, opR1, opR2)( \ + CPUX86State *env, DisasContext *s, insnop_t(opW1) ret, \ + insnop_t(opR1) arg1, insnop_t(opR2) arg2) \ + { \ + assert(ret =3D=3D arg1); \ + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); \ + tcg_gen_addi_ptr(s->ptr1, cpu_env, arg2); \ + gen_helper_ ## helper(cpu_env, s->ptr0, s->ptr1); \ + } + /* * Instruction translators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411435; cv=none; d=zoho.com; s=zohoarc; b=Pr5dpevNLtXYC2HsEBJ/eA7ghWAXXh49LnwofIZzyv7VI8TE6Fxxsr5nGhbQByuZOuz04uYhVQaYxpYQlKPoPjnKiCzbv+sF8NLa1WBV7XgaPPzhD9C/6esqPME2/4rz/7HxEVCQm4PQUhfAoupky6h4d1iXrX8vAW8kZqWbnx8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411435; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=4/+1yhQdyK8ZDeq0meu1PGD/43DRms8yD88y6giDNC0=; b=kNcCFFXqGhUpyr/N0ymSVryfdsWOmLszWOpmSHyK8tcn2ZhSJwJghC8IKosL08zkYZi1KM7XPKaUhiVN27ulm5t844x0n7mNuGJNiAU3hqpq0OY4wcjh2+yDRYg+0S6eCdaXtnirGPfePXmus1+BjFw1jTT2MkzgTzrblGpi6Ss= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411435545367.3392592376231; Fri, 9 Aug 2019 21:30:35 -0700 (PDT) Received: from localhost ([::1]:35016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwJ1T-00084g-JV for importer@patchew.org; Sat, 10 Aug 2019 00:30:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34936) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl8-0006Sc-G6 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl7-0004VD-Bz for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:38 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:37162) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl7-0004V3-7e for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:37 -0400 Received: by mail-ot1-x344.google.com with SMTP id f17so5090247otq.4 for ; Fri, 09 Aug 2019 21:13:37 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.36 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4/+1yhQdyK8ZDeq0meu1PGD/43DRms8yD88y6giDNC0=; b=enIuXWGEz8l5Zk61S8PJUaCh9WDsjjkrYd4x7oLzOZAaHpZcoJxCsMdDeRwso1zLSx noGxuvsmiraB+I4NIV5kRcZFOQdOUIZOT0iLwkCUdYs/LlYyzt/dJGoo+JK8MwXFre2V sV1zjmP1bgcv/JK/hyWh5zd+lCTPUGvAXvD8OrvpxpKSgj7L+y8X02b9TplE6mGy/e6T gNNz8MbJmhUnZPH+glSmbHaFeR0zu7jv+cio0yGCoqpLAKrO8+WLZVPwqsWqBh1dhGNw CAC9bo4O30sz0mUavTm1h1ASaKdXuyT1Id0xrCG06MSlTsrpg+MViVmpqOIBX59imvdf vQyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4/+1yhQdyK8ZDeq0meu1PGD/43DRms8yD88y6giDNC0=; b=XV2pJhu542WWp2zk/BjGfwnWY22aq0vsbv+K5/ielBB39HSczsrkx4Up97r5EK6oBR RDs3zeTr9k4Ei5lGBnIuxFVIWAVS/OO7REJeHDacImD2KTSxGTNeaWKkS2ZZdYf0PV65 DUpSpTL6JM24cvwG0z1HAw5dK4HgtzqyCWQXPGRka417Mo2asHfrEq9qLqyjwmCmgp61 XpFtL186y7j8LHdHp1flXIAgQGotzSIgXcy0rWUkAdjX44bM4XzsWiG8uEBtjNrvlG8i wzklZUD1TlvD+iBEsc4shfYvN7qSdJkkRlO8ciJdQYueQ080WD+mIJkTSeiGsjnXnmOk 6LeQ== X-Gm-Message-State: APjAAAUWZu2CHlZ1wXFH+xP2AN37xzSgnf7TEUFvRU0CwA11ixNcmG4S JHYktVauVP6XcAQ819oq/EtReIm0 X-Google-Smtp-Source: APXvYqzW44RZ7k+imKy0HNWRLmArU4zFPGSzlKla7iUJ4Ha7rJv2cZTBiC9eYulZcoDuK17V4rxutg== X-Received: by 2002:a9d:d51:: with SMTP id 75mr21550015oti.46.1565410416538; Fri, 09 Aug 2019 21:13:36 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:46 -0400 Message-Id: <20190810041255.6820-31-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 30/39] target/i386: introduce gvec-based code generator macros X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Code generators defined using these macros rely on a gvec operation (i.e. tcg_gen_gvec_*). Signed-off-by: Jan Bobek --- target/i386/translate.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index d721bb5142..36f2579654 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -23,6 +23,7 @@ #include "disas/disas.h" #include "exec/exec-all.h" #include "tcg-op.h" +#include "tcg-op-gvec.h" #include "exec/cpu_ldst.h" #include "exec/translator.h" =20 @@ -4882,6 +4883,22 @@ INSNOP_LDST_UNIFY(Qq, Nq, NqMq) gen_helper_ ## helper(cpu_env, s->ptr0, s->ptr1); \ } =20 +#define GEN_INSN_WR_GVEC(mnem, gvec, opW1, opR1, vece, oprsz, maxsz) \ + static void gen_insn_wr(mnem, opW1, opR1)( \ + CPUX86State *env, DisasContext *s, insnop_t(opW1) ret, \ + insnop_t(opR1) arg1) \ + { \ + tcg_gen_gvec_ ## gvec(vece, ret, arg1, oprsz, maxsz); \ + } + +#define GEN_INSN_WRR_GVEC(mnem, gvec, opW1, opR1, opR2, vece, oprsz, maxsz= ) \ + static void gen_insn_wrr(mnem, opW1, opR1, opR2)( \ + CPUX86State *env, DisasContext *s, insnop_t(opW1) ret, \ + insnop_t(opR1) arg1, insnop_t(opR2) arg2) \ + { \ + tcg_gen_gvec_ ## gvec(vece, ret, arg1, arg2, oprsz, maxsz); \ + } + /* * Instruction translators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411085; cv=none; d=zoho.com; s=zohoarc; b=mxMp7udrgDriD13cpaWBCG617wVm1olGH1j8vk3WJO15Uvqy0MjWPw0ja8J4tMOeN6AUc+4l7oYfH5nj1qWybHZLPdN1I7CLwmwDwEcubMgTI4BeLMQaChWleowtARqEqXra0F8SbLPVj7IerHtsBNtP+lJeMKRPPe0jpn6wekc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411085; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=iIHl2d9RbZZyRpEtRAyrnFjn3106lJjZLwkGcmx2+h8=; b=R0/Pg7Mbcqkp/iwACHB6G8RQzOz8YNTvs1ke/3+8K52mc0AkLRK6i7ikjfLg6IML5r8lW9Enzke3jTj/achc+IBQf/1Sj5rSMCxN6pMaMk2qm908RWlZqkzZu0v3fAcXdDs2I+r9ptH4hC8IYGU+lsFranN+MCWGLekLfLfgzqs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411085236682.4969909957797; Fri, 9 Aug 2019 21:24:45 -0700 (PDT) Received: from localhost ([::1]:34948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIvX-0006TU-6l for importer@patchew.org; Sat, 10 Aug 2019 00:24:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34949) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIl9-0006WU-Kf for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl8-0004XS-J2 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:39 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:34829) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl8-0004WM-Ep for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:38 -0400 Received: by mail-ot1-x343.google.com with SMTP id j19so63825350otq.2 for ; Fri, 09 Aug 2019 21:13:37 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.36 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iIHl2d9RbZZyRpEtRAyrnFjn3106lJjZLwkGcmx2+h8=; b=EgA0JnN+y36yxuAXP4wTQUHcA3sfwYgQWLu2tyyb3+Ql5TkIfyTlwtsdtIfTMsDqQe sFREPeiZ0a8PrcPJUQYQ8PpTSlaSHvVfQ1xrJQXTOispKT2NRpL6Hq2bErMTfw88BsvS eCj5itAvySvuQGxhFeIrko4H8mY/vw5r1eHKUauFZeIF+WiCDJad0g6HR/9oaaa9QrXJ dgk6ptYf9Y2ow0FO9zYW5PPPKO5Pgp9Z/dtAI1pnJ0pqJETzfhh+SD2xAlD5csJ1iwlT PqxRK/cl4/gEAQN2Wp4f4D9em+ISXuyrBkX+yp+pBdOiDL6m8mEHn1N2SfzBBKsxBjXh lw9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iIHl2d9RbZZyRpEtRAyrnFjn3106lJjZLwkGcmx2+h8=; b=E541y4woo/Pc4Jg2BKwhNSG/LZJEdKk1V1SIct/BHN+eJUv+hLYEXv7uQO1EzFXfFW XHG+UQ4rNgUMf7gQGxXIAovGl5JwGunSMlsOJoLLR5Ww7A4dCq16i3DYspt/Q+JVIQo0 27pmylIq7W6SkxmhvYSeGQ7OqLYnOHH9Lc8ATmrdVrcAbS8Dkuh25/FlB/mXw91RRCFa jHGbioRklRkuywoUBPObUtoiZC6eQ4hty038q3jhrq/4yZCpc4a5gCn71C3dm7sqozBl Z+mRDguyZgsqxOYzpaZCy+seJ0lAHmc9NpevF5r8ivc0ucYxEhGja1s2P7bBZHh0t/g/ i+5Q== X-Gm-Message-State: APjAAAXu7zXqlfR7hj/b68uMQNrb4sXgQRM4s/y6ED+a5QvR/TXlsrPh 6xN5Bdf3xTvKMA2bYJcXW20hh2Md X-Google-Smtp-Source: APXvYqw9yY6P7pZtQeheRJQBAsLT6fSbTLj6RYgpmShZGWATMwxweBzJgvCyVVCf/+8k05HwZ+pIBQ== X-Received: by 2002:a05:6830:1146:: with SMTP id x6mr21261883otq.86.1565410417350; Fri, 09 Aug 2019 21:13:37 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:47 -0400 Message-Id: <20190810041255.6820-32-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 31/39] target/i386: introduce MMX translators X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use the translator macros to define instruction translators required by MMX instructions. Signed-off-by: Jan Bobek --- target/i386/translate.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 36f2579654..3475727380 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -5005,6 +5005,15 @@ static void translate_insn( insnop_finalize(opW1)(env, s, modrm, &ret); \ } =20 +TRANSLATE_INSN_WR(Pq, Ed) +TRANSLATE_INSN_WR(Pq, Eq) +TRANSLATE_INSN_WR(Ed, Pq) +TRANSLATE_INSN_WR(Eq, Pq) +TRANSLATE_INSN_WR(Pq, Qq) +TRANSLATE_INSN_WR(Qq, Pq) +TRANSLATE_INSN_WR(Gd, Nq) +TRANSLATE_INSN_WR(Gq, Nq) + #define TRANSLATE_INSN_WRR(opW1, opR1, opR2) \ static void translate_insn_wrr(opW1, opR1, opR2)( \ CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ @@ -5029,6 +5038,13 @@ static void translate_insn( insnop_finalize(opW1)(env, s, modrm, &ret); \ } =20 +TRANSLATE_INSN_WRR(Pq, Pq, Qd) +TRANSLATE_INSN_WRR(Pq, Pq, Qq) +TRANSLATE_INSN_WRR(Pq, Qq, Ib) +TRANSLATE_INSN_WRR(Gd, Nq, Ib) +TRANSLATE_INSN_WRR(Gq, Nq, Ib) +TRANSLATE_INSN_WRR(Nq, Nq, Ib) + #define TRANSLATE_INSN_WRRR(opW1, opR1, opR2, opR3) \ static void translate_insn_wrrr(opW1, opR1, opR2, opR3)( \ CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410919; cv=none; d=zoho.com; s=zohoarc; b=maDBzajFU2SxNzsAqr0wgbdi4fGhC2OTuX50PMpobN5ko2GHx/ur7k7oAbJefOsNNiEA64RMAFxvAhTACu0+ki1MDrMDnxhNMFWerD6vK5DqY4QO4LoDJgxbrd6/8Ued4/Cx/ZfCW3PLKOWKeDe/vhOfwKnleWhgaqLZFR0Pf0I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410919; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=zIMkv7Ci/SY2YQuD6s0tteNDjdvIT0Ql16O4dJapRLk=; b=Yb2mohTiBWNhDiVzvz8hzomSKI37abzRRJEi/JJwnyeoDQsWK5uwq2og79tfEbulo4DQye0QoFfV0SeAQn1LcVJa2tEg6DVAIdc+CAA49nA8TjqY0lFZAXjq2kKRwhBQBMRsrh8Bi+LqC9BPtAhi3wkCVPQfyZO60UpugQqBUtM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15654109191061015.4011031685399; Fri, 9 Aug 2019 21:21:59 -0700 (PDT) Received: from localhost ([::1]:34904 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwItC-0000rT-5Q for importer@patchew.org; Sat, 10 Aug 2019 00:21:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34962) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlA-0006bk-UV for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIl9-0004Xp-Is for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:40 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:43540) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIl9-0004Xb-E2 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:39 -0400 Received: by mail-ot1-x342.google.com with SMTP id j11so40047106otp.10 for ; Fri, 09 Aug 2019 21:13:39 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.38 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zIMkv7Ci/SY2YQuD6s0tteNDjdvIT0Ql16O4dJapRLk=; b=W/H2o46c7Oxuwl/N3PU5OQhaYy+mkyH/BGXtsosYSD4xjuz5+stG8tHUw46ootk7wl TBSyTnYRJLhh8NO24npH8ygiT+09QCZZn+L1DvN0M0X4M3I5PnHBkREYUqis5CyR8Jmk i5qgRk7iFWr6wPWYmT8r8ZEeINp5nLreCNI9TGoFjsYczOtvBbPh+0GIyF0qBbHplF42 FeGX1euBYXh57k+CtwmosSkSiyRSC+pPJRJL2Y1tF6Iq130bOLRw/HLeUjSV52Eb2hhR bdgGTPJrFLIGPCeTxhuzskOe2BMHN6kQXe6WW4My8Df54euV0jqPwfDoAJTUDWrrkqud zVnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zIMkv7Ci/SY2YQuD6s0tteNDjdvIT0Ql16O4dJapRLk=; b=AKkmImGTh6wFJ28+SdlDLSbrjwVwBagDEGBEx9QC22oL/YJt4aQnKwvK4xIpzAKJlf zJRdYThhHKByBOOYSPzlrdn7ePSEEnPS605VSpKlZ3I3U0fN5ue7BUwMmRNJKYjMdKiK JNLnvLw0W+HWVOQj7P5czj2cKMz+WR9RGR91xnmsy7mfJQ2TIJFkN9rV6D3tpfDxODf6 5wGckKq0fz8U0jPY3+fyh7v01+n37LOtWFGkcwnM2shfPwmA1zgYWqJnsq00BbdojXJv JepBA9aPOfM8WWy1fJXVMga7TFlTBjPVqUxnv+4AcLDxp8eiNhtZtxm7YrKzp59+SBGP Ilnw== X-Gm-Message-State: APjAAAXEBRyjp2BQxQwdWO6oj61aIdYW0//la+uDzoBpKZkiO7Y/iHpM 9evGX4bkisrzpwrNQZA7/NvGKsTJ X-Google-Smtp-Source: APXvYqzCLUuVJ/HYjUFTJ4hAW4HOEiW2BJvfMuVknGW6ZliaECjmVofjYqpC5kGh1+dX22TfdtUJwQ== X-Received: by 2002:aca:4a97:: with SMTP id x145mr8134043oia.120.1565410418558; Fri, 09 Aug 2019 21:13:38 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:48 -0400 Message-Id: <20190810041255.6820-33-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 32/39] target/i386: introduce MMX code generators X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Define code generators required for MMX instructions. Signed-off-by: Jan Bobek --- target/i386/translate.c | 114 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 3475727380..aa6fb8b013 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4890,6 +4890,9 @@ INSNOP_LDST_UNIFY(Qq, Nq, NqMq) { \ tcg_gen_gvec_ ## gvec(vece, ret, arg1, oprsz, maxsz); \ } +#define GEN_INSN_WR_GVEC_MM(mnem, gvec, opW1, opR1, vece) \ + GEN_INSN_WR_GVEC(mnem, gvec, opW1, opR1, vece, \ + sizeof(MMXReg), sizeof(MMXReg)) =20 #define GEN_INSN_WRR_GVEC(mnem, gvec, opW1, opR1, opR2, vece, oprsz, maxsz= ) \ static void gen_insn_wrr(mnem, opW1, opR1, opR2)( \ @@ -4898,6 +4901,117 @@ INSNOP_LDST_UNIFY(Qq, Nq, NqMq) { \ tcg_gen_gvec_ ## gvec(vece, ret, arg1, arg2, oprsz, maxsz); \ } +#define GEN_INSN_WRR_GVEC_MM(mnem, gvec, opW1, opR1, opR2, vece) \ + GEN_INSN_WRR_GVEC(mnem, gvec, opW1, opR1, opR2, vece, \ + sizeof(MMXReg), sizeof(MMXReg)) + +static void gen_insn_wr(movq, Eq, Pq)(CPUX86State *env, DisasContext *s, + insnop_t(Eq) ret, insnop_t(Pq) arg1) +{ + const size_t ofs =3D offsetof(MMXReg, MMX_Q(0)); + tcg_gen_ld_i64(ret, cpu_env, arg1 + ofs); +} + +static void gen_insn_wr(movd, Ed, Pq)(CPUX86State *env, DisasContext *s, + insnop_t(Ed) ret, insnop_t(Pq) arg1) +{ + const size_t ofs =3D offsetof(MMXReg, MMX_L(0)); + tcg_gen_ld_i32(ret, cpu_env, arg1 + ofs); +} + +static void gen_insn_wr(movq, Pq, Eq)(CPUX86State *env, DisasContext *s, + insnop_t(Pq) ret, insnop_t(Eq) arg1) +{ + const size_t ofs =3D offsetof(MMXReg, MMX_Q(0)); + tcg_gen_st_i64(arg1, cpu_env, ret + ofs); +} + +static void gen_insn_wr(movd, Pq, Ed)(CPUX86State *env, DisasContext *s, + insnop_t(Pq) ret, insnop_t(Ed) arg1) +{ + const insnop_t(Eq) r64 =3D s->tmp1_i64; + tcg_gen_extu_i32_i64(r64, arg1); + gen_insn_wr(movq, Pq, Eq)(env, s, ret, r64); +} + +GEN_INSN_WR_GVEC_MM(movq, mov, Pq, Qq, MO_64) +GEN_INSN_WR_GVEC_MM(movq, mov, Qq, Pq, MO_64) + +GEN_INSN_WRR_GVEC_MM(paddb, add, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(paddw, add, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_GVEC_MM(paddd, add, Pq, Pq, Qq, MO_32) +GEN_INSN_WRR_GVEC_MM(paddsb, ssadd, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(paddsw, ssadd, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_GVEC_MM(paddusb, usadd, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(paddusw, usadd, Pq, Pq, Qq, MO_16) + +GEN_INSN_WRR_GVEC_MM(psubb, sub, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(psubw, sub, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_GVEC_MM(psubd, sub, Pq, Pq, Qq, MO_32) +GEN_INSN_WRR_GVEC_MM(psubsb, sssub, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(psubsw, sssub, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_GVEC_MM(psubusb, ussub, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(psubusw, ussub, Pq, Pq, Qq, MO_16) + +GEN_INSN_WRR_HELPER(pmulhw, pmulhw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(pmullw, pmullw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(pmaddwd, pmaddwd_mmx, Pq, Pq, Qq) + +GEN_INSN_WRR_GVEC_MM(pcmpeqb, cmpeq, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(pcmpeqw, cmpeq, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_GVEC_MM(pcmpeqd, cmpeq, Pq, Pq, Qq, MO_32) +GEN_INSN_WRR_GVEC_MM(pcmpgtb, cmpgt, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(pcmpgtw, cmpgt, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_GVEC_MM(pcmpgtd, cmpgt, Pq, Pq, Qq, MO_32) + +GEN_INSN_WRR_GVEC_MM(pand, and, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_MM(pandn, andn, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_MM(por, or, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_MM(pxor, xor, Pq, Pq, Qq, MO_64) + +GEN_INSN_WRR_HELPER(psllw, psllw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(pslld, pslld_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psllq, psllq_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psrlw, psrlw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psrld, psrld_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psrlq, psrlq_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psraw, psraw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psrad, psrad_mmx, Pq, Pq, Qq) + +#define GEN_PSHIFT_IMM_MM(mnem, opW1, opR1) \ + static void gen_insn_wrr(mnem, opW1, opR1, Ib)( \ + CPUX86State *env, DisasContext *s, \ + insnop_t(opW1) ret, insnop_t(opR1) arg1, insnop_t(Ib) arg2) \ + { \ + const uint64_t arg2_ui64 =3D (uint8_t)arg2; \ + const insnop_t(Eq) arg2_r64 =3D s->tmp1_i64; \ + const insnop_t(Qq) arg2_mm =3D offsetof(CPUX86State, mmx_t0.MMX_Q(= 0)); \ + \ + tcg_gen_movi_i64(arg2_r64, arg2_ui64); \ + gen_insn_wr(movq, Pq, Eq)(env, s, arg2_mm, arg2_r64); \ + gen_insn_wrr(mnem, Pq, Pq, Qq)(env, s, ret, arg1, arg2_mm); \ + } + +GEN_PSHIFT_IMM_MM(psllw, Nq, Nq) +GEN_PSHIFT_IMM_MM(pslld, Nq, Nq) +GEN_PSHIFT_IMM_MM(psllq, Nq, Nq) +GEN_PSHIFT_IMM_MM(psrlw, Nq, Nq) +GEN_PSHIFT_IMM_MM(psrld, Nq, Nq) +GEN_PSHIFT_IMM_MM(psrlq, Nq, Nq) +GEN_PSHIFT_IMM_MM(psraw, Nq, Nq) +GEN_PSHIFT_IMM_MM(psrad, Nq, Nq) + +GEN_INSN_WRR_HELPER(packsswb, packsswb_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(packssdw, packssdw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(packuswb, packuswb_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(punpcklbw, punpcklbw_mmx, Pq, Pq, Qd) +GEN_INSN_WRR_HELPER(punpcklwd, punpcklwd_mmx, Pq, Pq, Qd) +GEN_INSN_WRR_HELPER(punpckldq, punpckldq_mmx, Pq, Pq, Qd) +GEN_INSN_WRR_HELPER(punpckhbw, punpckhbw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(punpckhwd, punpckhwd_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(punpckhdq, punpckhdq_mmx, Pq, Pq, Qq) + +GEN_INSN_HELPER(emms, emms) =20 /* * Instruction translators --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411158; cv=none; d=zoho.com; s=zohoarc; b=NR1Nds5O/8QC2Z+harjLwX0JH+F+I6KQfT8oJXzLYTojUa8hALJxzumNunTVjsGTtAJDpfinH1fPZhrTe3/m+bfhuZpO8mf2qG5OefoXQhIDiyeWmK/glBh/OeHwLwMqaMx646ArltpiwuljBfvh0LfajI0P+IwUQZ4q6bG27WM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411158; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=5KJp6fDGEapB7Oa0h5gCt36vaEKl48jVrNFLmkspytg=; b=AUJfMFe35QsvVLDVdWN2mfRZHRaBVw6Ogg59zpRtasH7Ss+6bYtua/JDD5tQ8uKazKzQlEljmRYJB4Qejbi2TpeW6dUBb8kP5pCH4eAF126E0urOtmwLH+u8Stql+Ve/m1imLdzys5ypS1QdQ2BA/XhgZ3gM/oHcEr7BJr5XsHg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411158836404.49032238970005; Fri, 9 Aug 2019 21:25:58 -0700 (PDT) Received: from localhost ([::1]:34968 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIx3-00018c-Qy for importer@patchew.org; Sat, 10 Aug 2019 00:25:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34974) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlC-0006fx-4f for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlA-0004Zi-Nm for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:42 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:39416) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlA-0004Yj-Iw for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:40 -0400 Received: by mail-ot1-x344.google.com with SMTP id r21so134538234otq.6 for ; Fri, 09 Aug 2019 21:13:40 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.39 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5KJp6fDGEapB7Oa0h5gCt36vaEKl48jVrNFLmkspytg=; b=qW1G6qupmBScX5o+Os1/qzWQBKa+apNYY2El1hoLsrqTQNsgHotSNXehy+5A0hVlJp 1kn5MYY3V+1OBB5Hm7Ve0okJ7k0PR8lGAeYxqIfPeWJ3rh/Y9iVhgvbD21e6EYmaJuBG r3B4YxhMpkorBTjV+E4WF7UKck4y+NtpRVgnCGuC9voMzqy39b5qhU20bS+fUpSaOBR4 XWOsUHaoyg4fP/U4b0XpiaR/eS92QaaWlYWCpSqVSDqkyuFaM2d3L5TZHRkXAy7sTV+z RUefzfP2PIVAqGzRrW7cwQHu8dG/8IDgkZRZCl4KhbPGcruERGC5FL2VNDG5N1tRWo/N U0nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5KJp6fDGEapB7Oa0h5gCt36vaEKl48jVrNFLmkspytg=; b=twanELLfmkWVWbxziYTST8O6EmsisQDcZtPVV+bG0/fynQMg/6xCnDp3pYxUxp/Btj 8tcXnlYVzmJ/6ZdLQkDw3fL6erDk0iaQl0JuAwHki5vZjFgHSK16v8HR4BZk5X0eTmn9 /6kNlsvWnrA1wU+MJhOylHPPpFYR07mYNXFKizRZODClHoAtOk/FA9c25ENDVwjmvEwb Dg3ZDLTVvhns3drF0m4ve2VFBiUG7DMT6NskHR8IsHdMpvdJz8FOlSjZt9+FRdS65+Zg Th5L7p8BxhxMkZDqwiq0GZZoeQ0sTwzX3PW+fpBHK78k5gq/FuA6pWfAhMMj/YKSzRRz 2aJg== X-Gm-Message-State: APjAAAXNVM64ytci27aTFDRCh6A0IdEvjIzMRtLOGVKH0eoxZeuwC0mm Hu4B/F4cciaPfS9KVwKUepSE+IAt X-Google-Smtp-Source: APXvYqwK03aD/obPTZ9gjDYdO/GFTZ1sZUH9uZ4xx10WJ7/UDTAb+rpC9opPKJkXZLfSPxNmWnXIhQ== X-Received: by 2002:a9d:27c3:: with SMTP id c61mr19170013otb.291.1565410419789; Fri, 09 Aug 2019 21:13:39 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:49 -0400 Message-Id: <20190810041255.6820-34-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 33/39] target/i386: introduce MMX instructions to insn.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Add all MMX instruction entries to insn.h. Signed-off-by: Jan Bobek --- target/i386/insn.h | 131 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/target/i386/insn.h b/target/i386/insn.h index 4b48c0c0e1..6506ff3137 100644 --- a/target/i386/insn.h +++ b/target/i386/insn.h @@ -66,6 +66,137 @@ # define INSN_GRP_END(grpname) #endif /* INSN_GRP_END */ =20 +/* NP 0F 6E /r: MOVD mm,r/m32 */ +INSN_WR(movd, LEG(NP, 0F, 0), 0x6e, MMX, Pq, Ed) +/* NP 0F 7E /r: MOVD r/m32,mm */ +INSN_WR(movd, LEG(NP, 0F, 0), 0x7e, MMX, Ed, Pq) +/* NP REX.W + 0F 6E /r: MOVQ mm,r/m64 */ +INSN_WR(movq, LEG(NP, 0F, 1), 0x6e, MMX, Pq, Eq) +/* NP REX.W + 0F 7E /r: MOVQ r/m64,mm */ +INSN_WR(movq, LEG(NP, 0F, 1), 0x7e, MMX, Eq, Pq) +/* NP 0F 6F /r: MOVQ mm, mm/m64 */ +INSN_WR(movq, LEG(NP, 0F, 0), 0x6f, MMX, Pq, Qq) +/* NP 0F 7F /r: MOVQ mm/m64, mm */ +INSN_WR(movq, LEG(NP, 0F, 0), 0x7f, MMX, Qq, Pq) +/* NP 0F FC /r: PADDB mm, mm/m64 */ +INSN_WRR(paddb, LEG(NP, 0F, 0), 0xfc, MMX, Pq, Pq, Qq) +/* NP 0F FD /r: PADDW mm, mm/m64 */ +INSN_WRR(paddw, LEG(NP, 0F, 0), 0xfd, MMX, Pq, Pq, Qq) +/* NP 0F FE /r: PADDD mm, mm/m64 */ +INSN_WRR(paddd, LEG(NP, 0F, 0), 0xfe, MMX, Pq, Pq, Qq) +/* NP 0F EC /r: PADDSB mm, mm/m64 */ +INSN_WRR(paddsb, LEG(NP, 0F, 0), 0xec, MMX, Pq, Pq, Qq) +/* NP 0F ED /r: PADDSW mm, mm/m64 */ +INSN_WRR(paddsw, LEG(NP, 0F, 0), 0xed, MMX, Pq, Pq, Qq) +/* NP 0F DC /r: PADDUSB mm,mm/m64 */ +INSN_WRR(paddusb, LEG(NP, 0F, 0), 0xdc, MMX, Pq, Pq, Qq) +/* NP 0F DD /r: PADDUSW mm,mm/m64 */ +INSN_WRR(paddusw, LEG(NP, 0F, 0), 0xdd, MMX, Pq, Pq, Qq) +/* NP 0F F8 /r: PSUBB mm, mm/m64 */ +INSN_WRR(psubb, LEG(NP, 0F, 0), 0xf8, MMX, Pq, Pq, Qq) +/* NP 0F F9 /r: PSUBW mm, mm/m64 */ +INSN_WRR(psubw, LEG(NP, 0F, 0), 0xf9, MMX, Pq, Pq, Qq) +/* NP 0F FA /r: PSUBD mm, mm/m64 */ +INSN_WRR(psubd, LEG(NP, 0F, 0), 0xfa, MMX, Pq, Pq, Qq) +/* NP 0F E8 /r: PSUBSB mm, mm/m64 */ +INSN_WRR(psubsb, LEG(NP, 0F, 0), 0xe8, MMX, Pq, Pq, Qq) +/* NP 0F E9 /r: PSUBSW mm, mm/m64 */ +INSN_WRR(psubsw, LEG(NP, 0F, 0), 0xe9, MMX, Pq, Pq, Qq) +/* NP 0F D8 /r: PSUBUSB mm, mm/m64 */ +INSN_WRR(psubusb, LEG(NP, 0F, 0), 0xd8, MMX, Pq, Pq, Qq) +/* NP 0F D9 /r: PSUBUSW mm, mm/m64 */ +INSN_WRR(psubusw, LEG(NP, 0F, 0), 0xd9, MMX, Pq, Pq, Qq) +/* NP 0F D5 /r: PMULLW mm, mm/m64 */ +INSN_WRR(pmullw, LEG(NP, 0F, 0), 0xd5, MMX, Pq, Pq, Qq) +/* NP 0F E5 /r: PMULHW mm, mm/m64 */ +INSN_WRR(pmulhw, LEG(NP, 0F, 0), 0xe5, MMX, Pq, Pq, Qq) +/* NP 0F F5 /r: PMADDWD mm, mm/m64 */ +INSN_WRR(pmaddwd, LEG(NP, 0F, 0), 0xf5, MMX, Pq, Pq, Qq) +/* NP 0F 74 /r: PCMPEQB mm,mm/m64 */ +INSN_WRR(pcmpeqb, LEG(NP, 0F, 0), 0x74, MMX, Pq, Pq, Qq) +/* NP 0F 75 /r: PCMPEQW mm,mm/m64 */ +INSN_WRR(pcmpeqw, LEG(NP, 0F, 0), 0x75, MMX, Pq, Pq, Qq) +/* NP 0F 76 /r: PCMPEQD mm,mm/m64 */ +INSN_WRR(pcmpeqd, LEG(NP, 0F, 0), 0x76, MMX, Pq, Pq, Qq) +/* NP 0F 64 /r: PCMPGTB mm,mm/m64 */ +INSN_WRR(pcmpgtb, LEG(NP, 0F, 0), 0x64, MMX, Pq, Pq, Qq) +/* NP 0F 65 /r: PCMPGTW mm,mm/m64 */ +INSN_WRR(pcmpgtw, LEG(NP, 0F, 0), 0x65, MMX, Pq, Pq, Qq) +/* NP 0F 66 /r: PCMPGTD mm,mm/m64 */ +INSN_WRR(pcmpgtd, LEG(NP, 0F, 0), 0x66, MMX, Pq, Pq, Qq) +/* NP 0F DB /r: PAND mm, mm/m64 */ +INSN_WRR(pand, LEG(NP, 0F, 0), 0xdb, MMX, Pq, Pq, Qq) +/* NP 0F DF /r: PANDN mm, mm/m64 */ +INSN_WRR(pandn, LEG(NP, 0F, 0), 0xdf, MMX, Pq, Pq, Qq) +/* NP 0F EB /r: POR mm, mm/m64 */ +INSN_WRR(por, LEG(NP, 0F, 0), 0xeb, MMX, Pq, Pq, Qq) +/* NP 0F EF /r: PXOR mm, mm/m64 */ +INSN_WRR(pxor, LEG(NP, 0F, 0), 0xef, MMX, Pq, Pq, Qq) +/* NP 0F F1 /r: PSLLW mm, mm/m64 */ +INSN_WRR(psllw, LEG(NP, 0F, 0), 0xf1, MMX, Pq, Pq, Qq) +/* NP 0F F2 /r: PSLLD mm, mm/m64 */ +INSN_WRR(pslld, LEG(NP, 0F, 0), 0xf2, MMX, Pq, Pq, Qq) +/* NP 0F F3 /r: PSLLQ mm, mm/m64 */ +INSN_WRR(psllq, LEG(NP, 0F, 0), 0xf3, MMX, Pq, Pq, Qq) +/* NP 0F D1 /r: PSRLW mm, mm/m64 */ +INSN_WRR(psrlw, LEG(NP, 0F, 0), 0xd1, MMX, Pq, Pq, Qq) +/* NP 0F D2 /r: PSRLD mm, mm/m64 */ +INSN_WRR(psrld, LEG(NP, 0F, 0), 0xd2, MMX, Pq, Pq, Qq) +/* NP 0F D3 /r: PSRLQ mm, mm/m64 */ +INSN_WRR(psrlq, LEG(NP, 0F, 0), 0xd3, MMX, Pq, Pq, Qq) +/* NP 0F E1 /r: PSRAW mm,mm/m64 */ +INSN_WRR(psraw, LEG(NP, 0F, 0), 0xe1, MMX, Pq, Pq, Qq) +/* NP 0F E2 /r: PSRAD mm,mm/m64 */ +INSN_WRR(psrad, LEG(NP, 0F, 0), 0xe2, MMX, Pq, Pq, Qq) +/* NP 0F 63 /r: PACKSSWB mm1, mm2/m64 */ +INSN_WRR(packsswb, LEG(NP, 0F, 0), 0x63, MMX, Pq, Pq, Qq) +/* NP 0F 6B /r: PACKSSDW mm1, mm2/m64 */ +INSN_WRR(packssdw, LEG(NP, 0F, 0), 0x6b, MMX, Pq, Pq, Qq) +/* NP 0F 67 /r: PACKUSWB mm, mm/m64 */ +INSN_WRR(packuswb, LEG(NP, 0F, 0), 0x67, MMX, Pq, Pq, Qq) +/* NP 0F 68 /r: PUNPCKHBW mm, mm/m64 */ +INSN_WRR(punpckhbw, LEG(NP, 0F, 0), 0x68, MMX, Pq, Pq, Qq) +/* NP 0F 69 /r: PUNPCKHWD mm, mm/m64 */ +INSN_WRR(punpckhwd, LEG(NP, 0F, 0), 0x69, MMX, Pq, Pq, Qq) +/* NP 0F 6A /r: PUNPCKHDQ mm, mm/m64 */ +INSN_WRR(punpckhdq, LEG(NP, 0F, 0), 0x6a, MMX, Pq, Pq, Qq) +/* NP 0F 60 /r: PUNPCKLBW mm, mm/m32 */ +INSN_WRR(punpcklbw, LEG(NP, 0F, 0), 0x60, MMX, Pq, Pq, Qd) +/* NP 0F 61 /r: PUNPCKLWD mm, mm/m32 */ +INSN_WRR(punpcklwd, LEG(NP, 0F, 0), 0x61, MMX, Pq, Pq, Qd) +/* NP 0F 62 /r: PUNPCKLDQ mm, mm/m32 */ +INSN_WRR(punpckldq, LEG(NP, 0F, 0), 0x62, MMX, Pq, Pq, Qd) +/* NP 0F 77: EMMS */ +INSN(emms, LEG(NP, 0F, 0), 0x77, MMX) + +INSN_GRP(grp12_LEG_NP, LEG(NP, 0F, 0), 0x71) +INSN_GRP_BEGIN(grp12_LEG_NP) + /* NP 0F 71 /6 ib: PSLLW mm1, imm8 */ + INSN_GRPMEMB_WRR(grp12_LEG_NP, psllw, 6, MMX, Nq, Nq, Ib) + /* NP 0F 71 /2 ib: PSRLW mm, imm8 */ + INSN_GRPMEMB_WRR(grp12_LEG_NP, psrlw, 2, MMX, Nq, Nq, Ib) + /* NP 0F 71 /4 ib: PSRAW mm,imm8 */ + INSN_GRPMEMB_WRR(grp12_LEG_NP, psraw, 4, MMX, Nq, Nq, Ib) +INSN_GRP_END(grp12_LEG_NP) + +INSN_GRP(grp13_LEG_NP, LEG(NP, 0F, 0), 0x72) +INSN_GRP_BEGIN(grp13_LEG_NP) + /* NP 0F 72 /6 ib: PSLLD mm, imm8 */ + INSN_GRPMEMB_WRR(grp13_LEG_NP, pslld, 6, MMX, Nq, Nq, Ib) + /* NP 0F 72 /2 ib: PSRLD mm, imm8 */ + INSN_GRPMEMB_WRR(grp13_LEG_NP, psrld, 2, MMX, Nq, Nq, Ib) + /* NP 0F 72 /4 ib: PSRAD mm,imm8 */ + INSN_GRPMEMB_WRR(grp13_LEG_NP, psrad, 4, MMX, Nq, Nq, Ib) +INSN_GRP_END(grp13_LEG_NP) + +INSN_GRP(grp14_LEG_NP, LEG(NP, 0F, 0), 0x73) +INSN_GRP_BEGIN(grp14_LEG_NP) + /* NP 0F 73 /6 ib: PSLLQ mm, imm8 */ + INSN_GRPMEMB_WRR(grp14_LEG_NP, psllq, 6, MMX, Nq, Nq, Ib) + /* NP 0F 73 /2 ib: PSRLQ mm, imm8 */ + INSN_GRPMEMB_WRR(grp14_LEG_NP, psrlq, 2, MMX, Nq, Nq, Ib) +INSN_GRP_END(grp14_LEG_NP) + #undef LEG #undef VEX #undef INSN --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411249; cv=none; d=zoho.com; s=zohoarc; b=UI7VA/ZXfuexebnerRjZxmSuxMar7J39nCq7FkWhkFdb6kd/7HIFSCxNByPBK8KkOdlbgl7ibbmaH3vjY2ksOJa9RCIaHu7qjh/S4GSsK5Nx9G3xo55L2S/T+i2s1Ok2Qq4/kN+TYAENPZiC+R8zQhxpqpRDMfeLChVCRIsIqEA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411249; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=N4tHF3eRuLT2Ndh8Oa4DP4jmO01AL16MODDlTeXhk24=; b=YmwL7E4oPrmOsKTKnt1TxNH4fHkQXFfNS/bFv97mEtbqrGmoLUNsh0TLRbkq33piyDBp4Y6LLv//l52FxIhf/X9EpWUg1ad9fGe4kxRyqsN46TM42ewjJkNSSo1hLkuZ7b0mn3sFmYjRbHrivDj2RtkFSXIHZ9vLyGaWkfNsXbM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411249235775.0153183035943; Fri, 9 Aug 2019 21:27:29 -0700 (PDT) Received: from localhost ([::1]:34984 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIyW-00038P-8y for importer@patchew.org; Sat, 10 Aug 2019 00:27:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34982) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlC-0006hi-NH for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlB-0004a2-Ip for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:42 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:42335) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlB-0004Zu-Eh for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:41 -0400 Received: by mail-ot1-x343.google.com with SMTP id l15so140515952otn.9 for ; Fri, 09 Aug 2019 21:13:41 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.40 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N4tHF3eRuLT2Ndh8Oa4DP4jmO01AL16MODDlTeXhk24=; b=saPoLzXOCpkkr5T7zjc+7BykXmpkJBsviRnxqhcd4TuB7VcWTaudFiF7JJ3jTfYdQh LCU39sKfziys6wYFXBkvmIRYx8vfqhxmKyXkg1upwn76uBDW2CsHh9iPPlHZbGOrSAoC tQSYvrUvTJHcZ2vKfkgGk2K3wvR2iDfun8Itw+gbDOPTth0MTgZzFDaML+mUceFlFwwp UZR2QlNo8FwsImuw1+HR9OAK20B7UbW+KU/e4SGbRW6n5+oeC1gNaGWG2U2YJXGqip22 VuMVR158F8fVWDyKjSIoQ5xPM5p/cZAkz9u6Z+w03vhMYSOrciwSE0EbvlChHjqiIpcD JJVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N4tHF3eRuLT2Ndh8Oa4DP4jmO01AL16MODDlTeXhk24=; b=ry/IoY4nupkNDs6RQz4AnATSi4IGd909nPradEHPCATYP3/1RqWbW1zi5NUEcAYA8K KjR4hXRngS4eZgJ6lsDDoTFRy3bT3BySeuejIf9U5OqwXLlo3KzoOutf93ckEW25tLdp QRjvKMnTzenCSn9jc+Ha/ryf3ODXXHU/uF6Jbp0voY8IqkPZlVp9AE1daYLaNdfvNV4F QNBPvXBAdUk/r3H/hDRzLD2muI5ywu1w6f/D8bmuGsDbcQq22U37y6M2FHR79Ni+nTT3 Idpl6bsmSOlk4GctD8kSsQ3j3ofjnA6e0NL0UBApJwUbCZU4DU9E4M4v9C7XE9tgrYak fHEQ== X-Gm-Message-State: APjAAAXJKw7WxQXE/KXWYAA/6ZIosRXae2aJFpVrfYHVlDtZpyyfJ5p2 KJcu6HsaPJCcmga1OIUo0+NvmQSv X-Google-Smtp-Source: APXvYqzc/Hqfn6Vb36rcReWX4JLF8+XGBfudWyNfWIe8EmPoTZ8G/WNxeniRxLXf1Wgj4bUguHyc0A== X-Received: by 2002:aca:fdc3:: with SMTP id b186mr7815403oii.114.1565410420716; Fri, 09 Aug 2019 21:13:40 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:50 -0400 Message-Id: <20190810041255.6820-35-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 34/39] target/i386: introduce V*, U*, W* (SSE/AVX) operands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" These address the SSE/AVX-technology register file. Offset of the entire corresponding register is passed as the operand value, regardless of operand-size suffix. Signed-off-by: Jan Bobek --- target/i386/translate.c | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index aa6fb8b013..97614e5941 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4839,6 +4839,51 @@ INSNOP_LDST(NqMq, Nq, Mq, offsetof(CPUX86State, mmx_= t0), INSNOP_LDST_UNIFY(Qd, Nd, NdMd) INSNOP_LDST_UNIFY(Qq, Nq, NqMq) =20 +/* + * SSE/AVX registers + */ +#define INSNOP_INIT_XMM(xmmid_fp) \ + do { \ + const int xmmid =3D xmmid_fp(env, s, modrm); \ + INSNOP_INIT_OK(offsetof(CPUX86State, xmm_regs[xmmid])); \ + } while (0) + +#define INSNOP_XMM(opT, init_stmt) \ + INSNOP(opT, uint32_t, \ + init_stmt, \ + INSNOP_PREPARE_NOOP, \ + INSNOP_FINALIZE_NOOP) + +INSNOP_XMM(V, INSNOP_INIT_XMM(decode_modrm_reg_rexr)) +INSNOP_ALIAS(Vd, V) +INSNOP_ALIAS(Vq, V) +INSNOP_ALIAS(Vdq, V) +INSNOP_ALIAS(Vqq, V) + +INSNOP_XMM(U, INSNOP_INIT_DIRECT_ONLY(INSNOP_INIT_XMM(decode_modrm_rm_rexb= ))) +INSNOP_ALIAS(Ud, U) +INSNOP_ALIAS(Uq, U) +INSNOP_ALIAS(Udq, U) +INSNOP_ALIAS(Uqq, U) + +INSNOP_LDST(UdMd, Ud, Md, offsetof(CPUX86State, xmm_t0), + (assert(ptr =3D=3D s->A0), + gen_ldd_env_A0(s, reg + offsetof(ZMMReg, ZMM_L(0)))), + (assert(ptr =3D=3D s->A0), + gen_std_env_A0(s, reg + offsetof(ZMMReg, ZMM_L(0))))) +INSNOP_LDST(UqMq, Uq, Mq, offsetof(CPUX86State, xmm_t0), + (assert(ptr =3D=3D s->A0), + gen_ldq_env_A0(s, reg + offsetof(ZMMReg, ZMM_Q(0)))), + (assert(ptr =3D=3D s->A0), + gen_stq_env_A0(s, reg + offsetof(ZMMReg, ZMM_Q(0))))) +INSNOP_LDST(UdqMdq, Udq, Mdq, offsetof(CPUX86State, xmm_t0), + (assert(ptr =3D=3D s->A0), gen_ldo_env_A0(s, reg)), + (assert(ptr =3D=3D s->A0), gen_sto_env_A0(s, reg))) + +INSNOP_LDST_UNIFY(Wd, Ud, UdMd) +INSNOP_LDST_UNIFY(Wq, Uq, UqMq) +INSNOP_LDST_UNIFY(Wdq, Udq, UdqMdq) + /* * Code generators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411023; cv=none; d=zoho.com; s=zohoarc; b=lj7VqZnqbl4nqUpNsxqKG7R10LNaMBJOJwpcOVBp2MK0RXxgymZXRAXgrRWOw1FFr4LuZP5xTKslfhoMpnv8qmqzqYBLzTvuqH5iU033UWAY/9uhrFc2GzkLES8wnbFjm7GqjJqeaPfe8pJgX4HM1eU6y9KYp06MxWJn+OkpDE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411023; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=NvlDhs+Y7jVChgXE4zpu4PvKaqtaIMBMelU0eaOfnuo=; b=LMAj833piW9iKTki+zgjmrCw0RttZSKrKovpGlmdmOCsVOilHCMzIiw9X2bzcopPNW9xqfQhppZaZTmOUVAmKYZjgCjrpFl/tbM061tk8PibWzWdh4d4d7c2703aFryUlOm40AiLJ2n4w0Cu1H+KEeRWxrODRDgata9S/2pbknE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411023301719.8782375271469; Fri, 9 Aug 2019 21:23:43 -0700 (PDT) Received: from localhost ([::1]:34930 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIus-0004Ef-As for importer@patchew.org; Sat, 10 Aug 2019 00:23:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34993) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlD-0006jo-9L for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlC-0004aP-Bp for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:43 -0400 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:33391) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlC-0004aC-6z for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:42 -0400 Received: by mail-ot1-x343.google.com with SMTP id q20so140363080otl.0 for ; Fri, 09 Aug 2019 21:13:42 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.41 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NvlDhs+Y7jVChgXE4zpu4PvKaqtaIMBMelU0eaOfnuo=; b=F95CQ/gKSHYDT7OFpk5hmp6x9AS01mCWjt1AOl+4JPGA6P0+NAaqBaJFEETDJM5Fqi oNCwzSI4xCdts/sAEuBtkmO6FQnXLe7aX/0/l1cw1pn/4Ed5Kc0OMsURlqy47Xlve5mL 75YJG3Y92Xydmvc2WFW6cXfdkuCEO9UFjKKfIAm8ZH2s+2vmxGR6v+VuC/tIzLgE9Q6f CnicH6Vwo6lnThuGfCphzxURZOAXxa70UAPXNVxtW7UvuADA9eT2i/akwpTNapZaRRVN LgBL2dBq0h6D1xSZE0BRKonIXawhOlqMgnjFuxVdcNEGJSoFe509dy/BZpIrpaErsdvb ieyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NvlDhs+Y7jVChgXE4zpu4PvKaqtaIMBMelU0eaOfnuo=; b=Sjm6KjAIfLZLpeBC7BqTrNGJA4ShFAqjdmZLOObs44+c1AJXieom3UHs/gxbi14aZK faNt7U9BfykXGEqCIqj9LZad+Kjan4x+ecocUSOHGrva6wC+GKSEj90v/kq4CheXwkZC k85k0Y3GlZN1k7n/IXABok6BVPkpvo+SLJQBfdDodQdz9qNpzvtnkGvuXoSUtSt3i0Ce t9tJoxXzmhZfD/9ApWeUcUE/DHEeL/+xqbuVeGhXOIm6RVxz18WRoBT4xwvLlVyzqZQk 7p2VrjK4s+vrlkO38yufO6B5K26g/6Nei/ugarGimbLCJrXDPQg0We4e8x5dzmQorYgF P4wQ== X-Gm-Message-State: APjAAAVi3WtOemtthgC//FPGvkvGm1S4vWj6fUs8R+NOU5avYzcoUzXz jlu4OCnQgNlgitUgAt/vJiQeb7vU X-Google-Smtp-Source: APXvYqw/Hl9WaaspMrLMR4MoGO6V6r8Oh7FAD28OvNrRfnpJY5t4CG+Co3HQSEnqjkh8iVsh5b7prA== X-Received: by 2002:a9d:7003:: with SMTP id k3mr21652829otj.28.1565410421541; Fri, 09 Aug 2019 21:13:41 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:51 -0400 Message-Id: <20190810041255.6820-36-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::343 Subject: [Qemu-devel] [RFC PATCH v2 35/39] target/i386: introduce UdqMq operand X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The MOVHLPS instruction has a special operand: it reads the high quadword of the source operand (hence it requires the full double-quadword width), but if the operand is indirect, only 64-bits are read from memory. Introduce UdqMq operand to address this case. Signed-off-by: Jan Bobek --- target/i386/translate.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 97614e5941..5802b324f0 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4876,6 +4876,11 @@ INSNOP_LDST(UqMq, Uq, Mq, offsetof(CPUX86State, xmm_= t0), gen_ldq_env_A0(s, reg + offsetof(ZMMReg, ZMM_Q(0)))), (assert(ptr =3D=3D s->A0), gen_stq_env_A0(s, reg + offsetof(ZMMReg, ZMM_Q(0))))) +INSNOP_LDST(UdqMq, Udq, Mq, offsetof(CPUX86State, xmm_t0), + (assert(ptr =3D=3D s->A0), + gen_ldq_env_A0(s, reg + offsetof(ZMMReg, ZMM_Q(0)))), + (assert(ptr =3D=3D s->A0), + gen_stq_env_A0(s, reg + offsetof(ZMMReg, ZMM_Q(0))))) INSNOP_LDST(UdqMdq, Udq, Mdq, offsetof(CPUX86State, xmm_t0), (assert(ptr =3D=3D s->A0), gen_ldo_env_A0(s, reg)), (assert(ptr =3D=3D s->A0), gen_sto_env_A0(s, reg))) --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411151; cv=none; d=zoho.com; s=zohoarc; b=U5ReJDDSModI9TRDKZ/zJlRpFllrOXyDQHDVJhx2UsrYHqVrQyUJtVjy5GteBuN6KSq6iFvMaBckDhrrwek21dFRnoVk1fKPCui1KCOA5OVo/vakbu1Zj5q7SPKbJG2Q7+i5LiQwb7cvNgHgxqTaIAJrMYL4iuzVTn3Jfd0sBr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411151; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7IZOAFbdDxZqCQx0nxTk3ibCkcO074bt+QDT97kh5I8=; b=PWMpMBJqP7VEBcNu5vBlU12T/3C5CYrxFUGqJOrDHkBEfkzEJLUMivf6wbgs9ZPvSQ6fUwvS6AwjunJJCLX0H0IZEYgD7mL6GLWCIFKQIwkoJA9KaHa8B40jLjIoxQIR4IT1bqxvIpokRFZHF+HTZl5B68Bd4YWUUUo2M34zyqE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411151559147.47563715373724; Fri, 9 Aug 2019 21:25:51 -0700 (PDT) Received: from localhost ([::1]:34966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIwu-0000dw-8Y for importer@patchew.org; Sat, 10 Aug 2019 00:25:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35007) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlE-0006ly-Dz for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlD-0004bl-EB for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:44 -0400 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:36318) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlD-0004bV-8l for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:43 -0400 Received: by mail-ot1-x344.google.com with SMTP id k18so8369897otr.3 for ; Fri, 09 Aug 2019 21:13:43 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.41 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7IZOAFbdDxZqCQx0nxTk3ibCkcO074bt+QDT97kh5I8=; b=kq8V/2+0BKi26WiCXAEnFSuo3D8x+x0zWi8J5eeYDdzZxz4/BI5gn32GzfFY5Dpugn gdUVZTd8ZAf5x/PKT1Qn1jBI7kTzCEGEllLCyCUW+CYmxm8i1mys8925+khTzziJTyuS LSG6OX3Z6QZOgjsMduOooJf2reKtuHzjQZGRqOB/OoFw2YCw8/QDTpghGX0zSD9rk+yb 4u2hw3Wk7symSWr3cPxUhaWGv0Wo4WJngMdMUtVeA8usAymE6A2N142W/ru3FCt2ShwA PbsMV1dva/lUS3cc1ElN7FTpO3xiuLuTdNEJjU2NYo3EWDS6egCBgwmadFY7euOD5kGX svMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7IZOAFbdDxZqCQx0nxTk3ibCkcO074bt+QDT97kh5I8=; b=PKjmpAPfmqGbO44M9QKGlnw2El6wHzbuw4/SlRkzOL3lC17gTwdiQVUxWphntbgX4N UXUVnF6EUHTXpt3mEUFNQ6vO2bpF7DdWTGTRVeN4C+/CAXJrlpKLdXTYSXPG75YZRkP2 TMfihs992ybWtjX3V8nXdyEjdYGZyTsnbZCnci9fnc0RLekUuGMUdAfP2uepuj3jZtbC m+z40p3I2qIjxKMo9Jxr7NYN3KZlgTdLaM/OuIuVuxluksuA1K4TfBMHZl2mZtCxJdjL l+QkeFqORMqqWOwcxNBhqpB9TfndEBozJ6qbrBzxEdSPhxWspmWzJOmevLyKqaLR5pEo RlNA== X-Gm-Message-State: APjAAAUMe1y8iBh1ueNwfxV0cDWtp3Gr+E2uQbl/aLyIBsv/gTRkDtF6 pF6mE0Jl9osRWWHCW9qyFV872QrP X-Google-Smtp-Source: APXvYqwTHF1z7AOF8/2Ysua6m9+QEXoYrS/qtZVwyv8hTfIbKEdtjKamfeGjpCQeJ11wAGxdTinl+Q== X-Received: by 2002:a05:6830:4b:: with SMTP id d11mr7534813otp.106.1565410422554; Fri, 09 Aug 2019 21:13:42 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:52 -0400 Message-Id: <20190810041255.6820-37-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 Subject: [Qemu-devel] [RFC PATCH v2 36/39] target/i386: introduce SSE translators X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use the translator macros to define translators required by SSE instructions. Signed-off-by: Jan Bobek --- target/i386/translate.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 5802b324f0..12d2ac2eb5 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -5110,6 +5110,9 @@ static void translate_insn( (*gen_insn_fp)(env, s, arg1); \ } =20 +TRANSLATE_INSN_R(Mb) +TRANSLATE_INSN_R(Md) + #define TRANSLATE_INSN_RR(opR1, opR2) \ static void translate_insn_rr(opR1, opR2)( \ CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ @@ -5131,6 +5134,13 @@ static void translate_insn( (*gen_insn_fp)(env, s, arg1, arg2); \ } =20 +TRANSLATE_INSN_RR(Pq, Nq) +TRANSLATE_INSN_RR(Mq, Pq) +TRANSLATE_INSN_RR(Vd, Wd) +TRANSLATE_INSN_RR(Mq, Vq) +TRANSLATE_INSN_RR(Mq, Vdq) +TRANSLATE_INSN_RR(Mdq, Vdq) + #define TRANSLATE_INSN_W(opW1) \ static void translate_insn_w(opW1)( \ CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ @@ -5178,6 +5188,20 @@ TRANSLATE_INSN_WR(Qq, Pq) TRANSLATE_INSN_WR(Gd, Nq) TRANSLATE_INSN_WR(Gq, Nq) =20 +TRANSLATE_INSN_WR(Vd, Wd) +TRANSLATE_INSN_WR(Vdq, Wdq) +TRANSLATE_INSN_WR(Vq, UdqMq) +TRANSLATE_INSN_WR(Wd, Vd) +TRANSLATE_INSN_WR(Wdq, Vdq) +TRANSLATE_INSN_WR(Gd, Udq) +TRANSLATE_INSN_WR(Gq, Udq) +TRANSLATE_INSN_WR(Vdq, Qq) +TRANSLATE_INSN_WR(Vd, Ed) +TRANSLATE_INSN_WR(Vd, Eq) +TRANSLATE_INSN_WR(Pq, Wq) +TRANSLATE_INSN_WR(Gd, Wd) +TRANSLATE_INSN_WR(Gq, Wd) + #define TRANSLATE_INSN_WRR(opW1, opR1, opR2) \ static void translate_insn_wrr(opW1, opR1, opR2)( \ CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ @@ -5209,6 +5233,11 @@ TRANSLATE_INSN_WRR(Gd, Nq, Ib) TRANSLATE_INSN_WRR(Gq, Nq, Ib) TRANSLATE_INSN_WRR(Nq, Nq, Ib) =20 +TRANSLATE_INSN_WRR(Vd, Vd, Wd) +TRANSLATE_INSN_WRR(Vdq, Vdq, Wdq) +TRANSLATE_INSN_WRR(Vdq, Vq, UqMq) +TRANSLATE_INSN_WRR(Vdq, Vdq, UdMd) + #define TRANSLATE_INSN_WRRR(opW1, opR1, opR2, opR3) \ static void translate_insn_wrrr(opW1, opR1, opR2, opR3)( \ CPUX86State *env, DisasContext *s, int modrm, int ck_cpuid_feat, \ @@ -5236,6 +5265,10 @@ TRANSLATE_INSN_WRR(Nq, Nq, Ib) insnop_finalize(opW1)(env, s, modrm, &ret); \ } =20 +TRANSLATE_INSN_WRRR(Vd, Vd, Wd, Ib) +TRANSLATE_INSN_WRRR(Vdq, Vdq, Wdq, Ib) +TRANSLATE_INSN_WRRR(Pq, Pq, RdMw, Ib) + #define INSN_GRP_BEGIN(grpname) \ static void translate_group(grpname)( \ CPUX86State *env, DisasContext *s, int modrm) \ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411496; cv=none; d=zoho.com; s=zohoarc; b=cLBUx0YyMVyrqioNRXO09aviDzJ0EZGVZAAguwxLOgr9yiKb0U0iTJxQIhMi4jpeMe4/3OnjDCAh0cL2zfqPQSOrgwKwCViuZRbM/KGD91m+uj55/L9g2D3V/TvkGYSuT2RzXX4ZQ/EW5yXCE/y8QuDi4odYFhvuxFz75Vpyo/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411496; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=DxPrrGEHPmPl3Q+LidZQAcbTVrchg9uhnKuWrY0vGLs=; b=gbDtlSBOs1lbSr1t8pbXMWBHbLa9SoLZK/h7N5sKsokVeolPCOmYUgM85bTA9RHJWsoXWhZG8G9/rhac9W64y1NZFoFWWLRsQA8djWt2ny/ATeUGNVxCxNzPIaPzl/KhTD2w2JTbQbvXTkDFaX61np59bQuiT9K3M7oNq4OA8yo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411496247647.3636918489602; Fri, 9 Aug 2019 21:31:36 -0700 (PDT) Received: from localhost ([::1]:35028 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwJ2V-0001Dz-3l for importer@patchew.org; Sat, 10 Aug 2019 00:31:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35030) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlH-0006yG-TZ for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlF-0004i9-NE for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:47 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:43542) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlF-0004f9-H2 for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:45 -0400 Received: by mail-ot1-x341.google.com with SMTP id j11so40047706otp.10 for ; Fri, 09 Aug 2019 21:13:45 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DxPrrGEHPmPl3Q+LidZQAcbTVrchg9uhnKuWrY0vGLs=; b=FNLcXvN7MeBjyRWmK74zvoEkpUB0hJ5DBmLZQ5DIv3TtJDIqqqEiVKx1kc/6VHP2To LWaJ6asXZggT8qvfJi3Vu8Zgqlw6AMsGRb1aFNyRgFMiy5tsiHVxhLLuIZ1HcDOVvacQ 0tHZ0jkXLIT4Djq1+q+dOcNjoPb40DOz5xTf/xpsj1JqMQXXwp59RBtWlLW3AReveyhR yjaEwyAZKDoAdi0pOMOb1Szq3Vn316M0J8FhYJ55CfLKysJ2aLoyNuOr07K5HscKtyIM C2eABBCk5dvSMBypb7DeEwXHJq+F+HTKja89huuRo7XSNOfPvHu8fpxSwCtCajOhMbTq v2HQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DxPrrGEHPmPl3Q+LidZQAcbTVrchg9uhnKuWrY0vGLs=; b=mjZjLOXc6yzS7Iobt+qa1r4DeIrpCkPuSsYImpDKo8UeSdi1iO7Ns12mHehx0iCQ5q ksVhjYlzSkWGdwhTZwBbtUfNn8CIuY4lkFv3ctVfUONyZvdL3U71agvUzVqCgpai3Xop 15+IedP+dQcnEffhIx1NYqcfvW0ZYzJKTG6gk3VejcYc/RMK6Jh5qMuUrw8x8Be12oYO B0/pnRPPlgvUZUBX0xSTZC9fWKe8K0F60dPyunh7Zn9/VT9XYNCrOmrJS9LnyjLyk8+h 3ZCkvH7N42yATLie8nCjxveIQ599Btf+DjO6L9CB1VZbOlvDD3C08Ld5wNW/hqoA4v8U qlow== X-Gm-Message-State: APjAAAVOUJJB+UTYRNPh8BmolpczcaZ70YYs3QrAwd7zUmYPfDLg+0wP IalB05TdrqpDwniXxNmBShykXqiP X-Google-Smtp-Source: APXvYqzN0/F9nao9MUwG1Q642yRYsU9gWVUOfWjrufApjLgPQjs8apSsTXl7Hu4yxhuFTNOuXpNg4A== X-Received: by 2002:a05:6808:313:: with SMTP id i19mr8700292oie.30.1565410424571; Fri, 09 Aug 2019 21:13:44 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:53 -0400 Message-Id: <20190810041255.6820-38-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 37/39] target/i386: introduce SSE code generators X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Introduce code generators required by SSE instructions. Signed-off-by: Jan Bobek --- target/i386/translate.c | 440 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 440 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 12d2ac2eb5..681fa1aee2 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4943,6 +4943,9 @@ INSNOP_LDST_UNIFY(Wdq, Udq, UdqMdq) #define GEN_INSN_WR_GVEC_MM(mnem, gvec, opW1, opR1, vece) \ GEN_INSN_WR_GVEC(mnem, gvec, opW1, opR1, vece, \ sizeof(MMXReg), sizeof(MMXReg)) +#define GEN_INSN_WR_GVEC_XMM(mnem, gvec, opW1, opR1, vece) \ + GEN_INSN_WR_GVEC(mnem, gvec, opW1, opR1, vece, \ + sizeof(XMMReg), sizeof(XMMReg)) =20 #define GEN_INSN_WRR_GVEC(mnem, gvec, opW1, opR1, opR2, vece, oprsz, maxsz= ) \ static void gen_insn_wrr(mnem, opW1, opR1, opR2)( \ @@ -4954,6 +4957,9 @@ INSNOP_LDST_UNIFY(Wdq, Udq, UdqMdq) #define GEN_INSN_WRR_GVEC_MM(mnem, gvec, opW1, opR1, opR2, vece) \ GEN_INSN_WRR_GVEC(mnem, gvec, opW1, opR1, opR2, vece, \ sizeof(MMXReg), sizeof(MMXReg)) +#define GEN_INSN_WRR_GVEC_XMM(mnem, gvec, opW1, opR1, opR2, vece) \ + GEN_INSN_WRR_GVEC(mnem, gvec, opW1, opR1, opR2, vece, \ + sizeof(XMMReg), sizeof(XMMReg)) =20 static void gen_insn_wr(movq, Eq, Pq)(CPUX86State *env, DisasContext *s, insnop_t(Eq) ret, insnop_t(Pq) arg1) @@ -4986,6 +4992,101 @@ static void gen_insn_wr(movd, Pq, Ed)(CPUX86State *= env, DisasContext *s, =20 GEN_INSN_WR_GVEC_MM(movq, mov, Pq, Qq, MO_64) GEN_INSN_WR_GVEC_MM(movq, mov, Qq, Pq, MO_64) +GEN_INSN_WR_GVEC_XMM(movaps, mov, Vdq, Wdq, MO_64) +GEN_INSN_WR_GVEC_XMM(movaps, mov, Wdq, Vdq, MO_64) +GEN_INSN_WR_GVEC_XMM(movups, mov, Vdq, Wdq, MO_64) +GEN_INSN_WR_GVEC_XMM(movups, mov, Wdq, Vdq, MO_64) + +static void gen_insn_wr(movss, Wd, Vd)(CPUX86State *env, DisasContext *s, + insnop_t(Wd) ret, insnop_t(Vd) arg1) +{ + const size_t ofs =3D offsetof(ZMMReg, ZMM_L(0)); + gen_op_movl(s, ret + ofs, arg1 + ofs); +} + +static void gen_insn_wrr(movss, Vdq, Vdq, UdMd)(CPUX86State *env, + DisasContext *s, + insnop_t(Vdq) ret, + insnop_t(Vdq) arg1, + insnop_t(UdMd) arg2) +{ + assert(ret =3D=3D arg1); + + if (arg2.is_mem) { + const size_t ofs0 =3D offsetof(ZMMReg, ZMM_Q(0)); + const size_t ofs1 =3D offsetof(ZMMReg, ZMM_Q(1)); + + tcg_gen_movi_i64(s->tmp1_i64, 0); + tcg_gen_st_i64(s->tmp1_i64, cpu_env, ret + ofs0); + tcg_gen_st_i64(s->tmp1_i64, cpu_env, ret + ofs1); + } + gen_insn_wr(movss, Wd, Vd)(env, s, ret, arg2.op_reg); +} + +static void gen_insn_wr(movlps, Mq, Vq)(CPUX86State *env, DisasContext *s, + insnop_t(Mq) ret, insnop_t(Vq) arg= 1) +{ + assert(ret =3D=3D s->A0); + gen_stq_env_A0(s, arg1 + offsetof(ZMMReg, ZMM_Q(0))); +} + +static void gen_insn_wr(movhlps, Vq, UdqMq)(CPUX86State *env, + DisasContext *s, + insnop_t(Vq) ret, + insnop_t(UdqMq) arg1) +{ + const size_t dofs =3D offsetof(ZMMReg, ZMM_Q(0)); + const size_t aofs =3D offsetof(ZMMReg, ZMM_Q(arg1.is_mem ? 0 : 1)); + gen_op_movq(s, ret + dofs, arg1.op_reg + aofs); +} + +static void gen_insn_wr(movhps, Mq, Vdq)(CPUX86State *env, DisasContext *s, + insnop_t(Mq) ret, insnop_t(Vdq) a= rg1) +{ + assert(ret =3D=3D s->A0); + gen_stq_env_A0(s, arg1 + offsetof(ZMMReg, ZMM_Q(1))); +} + +static void gen_insn_wrr(movlhps, Vdq, Vq, UqMq)(CPUX86State *env, + DisasContext *s, + insnop_t(Vdq) ret, + insnop_t(Vq) arg1, + insnop_t(UqMq) arg2) +{ + assert(ret =3D=3D arg1); + + const size_t dofs =3D offsetof(ZMMReg, ZMM_Q(1)); + const size_t aofs =3D offsetof(ZMMReg, ZMM_Q(0)); + gen_op_movq(s, ret + dofs, arg2.op_reg + aofs); +} + +static void gen_insn_wr(pmovmskb, Gd, Nq)(CPUX86State *env, DisasContext *= s, + insnop_t(Gd) ret, insnop_t(Nq) a= rg1) +{ + tcg_gen_addi_ptr(s->ptr0, cpu_env, arg1); + gen_helper_pmovmskb_mmx(ret, cpu_env, s->ptr0); +} + +static void gen_insn_wr(pmovmskb, Gq, Nq)(CPUX86State *env, DisasContext *= s, + insnop_t(Gq) ret, insnop_t(Nq) a= rg1) +{ + gen_insn_wr(pmovmskb, Gd, Nq)(env, s, s->tmp2_i32, arg1); + tcg_gen_extu_i32_i64(ret, s->tmp2_i32); +} + +static void gen_insn_wr(movmskps, Gd, Udq)(CPUX86State *env, DisasContext = *s, + insnop_t(Gd) ret, insnop_t(Udq)= arg1) +{ + tcg_gen_addi_ptr(s->ptr0, cpu_env, arg1); + gen_helper_movmskps(ret, cpu_env, s->ptr0); +} + +static void gen_insn_wr(movmskps, Gq, Udq)(CPUX86State *env, DisasContext = *s, + insnop_t(Gq) ret, insnop_t(Udq)= arg1) +{ + gen_insn_wr(movmskps, Gd, Udq)(env, s, s->tmp2_i32, arg1); + tcg_gen_extu_i32_i64(ret, s->tmp2_i32); +} =20 GEN_INSN_WRR_GVEC_MM(paddb, add, Pq, Pq, Qq, MO_8) GEN_INSN_WRR_GVEC_MM(paddw, add, Pq, Pq, Qq, MO_16) @@ -4994,6 +5095,8 @@ GEN_INSN_WRR_GVEC_MM(paddsb, ssadd, Pq, Pq, Qq, MO_8) GEN_INSN_WRR_GVEC_MM(paddsw, ssadd, Pq, Pq, Qq, MO_16) GEN_INSN_WRR_GVEC_MM(paddusb, usadd, Pq, Pq, Qq, MO_8) GEN_INSN_WRR_GVEC_MM(paddusw, usadd, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_HELPER(addps, addps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(addss, addss, Vd, Vd, Wd) =20 GEN_INSN_WRR_GVEC_MM(psubb, sub, Pq, Pq, Qq, MO_8) GEN_INSN_WRR_GVEC_MM(psubw, sub, Pq, Pq, Qq, MO_16) @@ -5002,11 +5105,39 @@ GEN_INSN_WRR_GVEC_MM(psubsb, sssub, Pq, Pq, Qq, MO_= 8) GEN_INSN_WRR_GVEC_MM(psubsw, sssub, Pq, Pq, Qq, MO_16) GEN_INSN_WRR_GVEC_MM(psubusb, ussub, Pq, Pq, Qq, MO_8) GEN_INSN_WRR_GVEC_MM(psubusw, ussub, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_HELPER(subps, subps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(subss, subss, Vd, Vd, Wd) =20 GEN_INSN_WRR_HELPER(pmulhw, pmulhw_mmx, Pq, Pq, Qq) GEN_INSN_WRR_HELPER(pmullw, pmullw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(pmulhuw, pmulhuw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(mulps, mulps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(mulss, mulss, Vd, Vd, Wd) + GEN_INSN_WRR_HELPER(pmaddwd, pmaddwd_mmx, Pq, Pq, Qq) =20 +GEN_INSN_WRR_HELPER(divps, divps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(divss, divss, Vd, Vd, Wd) + +GEN_INSN_WR_HELPER(rcpps, rcpps, Vdq, Wdq) +GEN_INSN_WR_HELPER(rcpss, rcpss, Vd, Wd) +GEN_INSN_WR_HELPER(sqrtps, sqrtps, Vdq, Wdq) +GEN_INSN_WR_HELPER(sqrtss, sqrtss, Vd, Wd) +GEN_INSN_WR_HELPER(rsqrtps, rsqrtps, Vdq, Wdq) +GEN_INSN_WR_HELPER(rsqrtss, rsqrtss, Vd, Wd) + +GEN_INSN_WRR_GVEC_MM(pminub, umin, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(pminsw, smin, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_HELPER(minps, minps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(minss, minss, Vd, Vd, Wd) +GEN_INSN_WRR_GVEC_MM(pmaxub, umax, Pq, Pq, Qq, MO_8) +GEN_INSN_WRR_GVEC_MM(pmaxsw, smax, Pq, Pq, Qq, MO_16) +GEN_INSN_WRR_HELPER(maxps, maxps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(maxss, maxss, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(pavgb, pavgb_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(pavgw, pavgw_mmx, Pq, Pq, Qq) +GEN_INSN_WRR_HELPER(psadbw, psadbw_mmx, Pq, Pq, Qq) + GEN_INSN_WRR_GVEC_MM(pcmpeqb, cmpeq, Pq, Pq, Qq, MO_8) GEN_INSN_WRR_GVEC_MM(pcmpeqw, cmpeq, Pq, Pq, Qq, MO_16) GEN_INSN_WRR_GVEC_MM(pcmpeqd, cmpeq, Pq, Pq, Qq, MO_32) @@ -5014,10 +5145,108 @@ GEN_INSN_WRR_GVEC_MM(pcmpgtb, cmpgt, Pq, Pq, Qq, M= O_8) GEN_INSN_WRR_GVEC_MM(pcmpgtw, cmpgt, Pq, Pq, Qq, MO_16) GEN_INSN_WRR_GVEC_MM(pcmpgtd, cmpgt, Pq, Pq, Qq, MO_32) =20 +GEN_INSN_WRR_HELPER(cmpeqps, cmpeqps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpeqss, cmpeqss, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpltps, cmpltps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpltss, cmpltss, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpleps, cmpleps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpless, cmpless, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpunordps, cmpunordps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpunordss, cmpunordss, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpneqps, cmpneqps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpneqss, cmpneqss, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpnltps, cmpnltps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpnltss, cmpnltss, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpnleps, cmpnleps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpnless, cmpnless, Vd, Vd, Wd) +GEN_INSN_WRR_HELPER(cmpordps, cmpordps, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(cmpordss, cmpordss, Vd, Vd, Wd) + +static void gen_insn_wrrr(cmpps, Vdq, Vdq, Wdq, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Vdq) ret, + insnop_t(Vdq) arg1, + insnop_t(Wdq) arg2, + insnop_t(Ib) arg3) +{ + switch (arg3 & 7) { + case 0: + gen_insn_wrr(cmpeqps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 1: + gen_insn_wrr(cmpltps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 2: + gen_insn_wrr(cmpleps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 3: + gen_insn_wrr(cmpunordps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 4: + gen_insn_wrr(cmpneqps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 5: + gen_insn_wrr(cmpnltps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 6: + gen_insn_wrr(cmpnleps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + case 7: + gen_insn_wrr(cmpordps, Vdq, Vdq, Wdq)(env, s, ret, arg1, arg2); + return; + } + + g_assert_not_reached(); +} + +static void gen_insn_wrrr(cmpss, Vd, Vd, Wd, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Vd) ret, + insnop_t(Vd) arg1, + insnop_t(Wd) arg2, + insnop_t(Ib) arg3) +{ + switch (arg3 & 7) { + case 0: + gen_insn_wrr(cmpeqss, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 1: + gen_insn_wrr(cmpltss, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 2: + gen_insn_wrr(cmpless, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 3: + gen_insn_wrr(cmpunordss, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 4: + gen_insn_wrr(cmpneqss, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 5: + gen_insn_wrr(cmpnltss, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 6: + gen_insn_wrr(cmpnless, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + case 7: + gen_insn_wrr(cmpordss, Vd, Vd, Wd)(env, s, ret, arg1, arg2); + return; + } + + g_assert_not_reached(); +} + +GEN_INSN_WR_HELPER(comiss, comiss, Vd, Wd) +GEN_INSN_WR_HELPER(ucomiss, ucomiss, Vd, Wd) + GEN_INSN_WRR_GVEC_MM(pand, and, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_XMM(andps, and, Vdq, Vdq, Wdq, MO_64) GEN_INSN_WRR_GVEC_MM(pandn, andn, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_XMM(andnps, andn, Vdq, Vdq, Wdq, MO_64) GEN_INSN_WRR_GVEC_MM(por, or, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_XMM(orps, or, Vdq, Vdq, Wdq, MO_64) GEN_INSN_WRR_GVEC_MM(pxor, xor, Pq, Pq, Qq, MO_64) +GEN_INSN_WRR_GVEC_XMM(xorps, xor, Vdq, Vdq, Wdq, MO_64) =20 GEN_INSN_WRR_HELPER(psllw, psllw_mmx, Pq, Pq, Qq) GEN_INSN_WRR_HELPER(pslld, pslld_mmx, Pq, Pq, Qq) @@ -5061,8 +5290,219 @@ GEN_INSN_WRR_HELPER(punpckhbw, punpckhbw_mmx, Pq, P= q, Qq) GEN_INSN_WRR_HELPER(punpckhwd, punpckhwd_mmx, Pq, Pq, Qq) GEN_INSN_WRR_HELPER(punpckhdq, punpckhdq_mmx, Pq, Pq, Qq) =20 +GEN_INSN_WRR_HELPER(unpcklps, punpckldq_xmm, Vdq, Vdq, Wdq) +GEN_INSN_WRR_HELPER(unpckhps, punpckhdq_xmm, Vdq, Vdq, Wdq) + GEN_INSN_HELPER(emms, emms) =20 +static void gen_insn_wrr(pshufw, Pq, Qq, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Pq) ret, + insnop_t(Qq) arg1, + insnop_t(Ib) arg2) +{ + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); + tcg_gen_addi_ptr(s->ptr1, cpu_env, arg1); + tcg_gen_movi_i32(s->tmp2_i32, arg2); + gen_helper_pshufw_mmx(s->ptr0, s->ptr1, s->tmp2_i32); +} + +static void gen_insn_wrrr(shufps, Vdq, Vdq, Wdq, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Vdq) ret, + insnop_t(Vdq) arg1, + insnop_t(Wdq) arg2, + insnop_t(Ib) arg3) +{ + assert(ret =3D=3D arg1); + + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); + tcg_gen_addi_ptr(s->ptr1, cpu_env, arg2); + tcg_gen_movi_i32(s->tmp2_i32, arg3); + gen_helper_shufps(s->ptr0, s->ptr1, s->tmp2_i32); +} + +static void gen_insn_wrrr(pinsrw, Pq, Pq, RdMw, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Pq) ret, + insnop_t(Pq) arg1, + insnop_t(RdMw) arg2, + insnop_t(Ib) arg3) +{ + assert(ret =3D=3D arg1); + + const size_t ofs =3D offsetof(MMXReg, MMX_W(arg3 & 3)); + tcg_gen_st16_i32(arg2.op_reg, cpu_env, ret + ofs); +} + +static void gen_insn_wrr(pextrw, Gd, Nq, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Gd) ret, + insnop_t(Nq) arg1, + insnop_t(Ib) arg2) +{ + const size_t ofs =3D offsetof(MMXReg, MMX_W(arg2 & 3)); + tcg_gen_ld16u_i32(ret, cpu_env, arg1 + ofs); +} + +static void gen_insn_wrr(pextrw, Gq, Nq, Ib)(CPUX86State *env, + DisasContext *s, + insnop_t(Gq) ret, + insnop_t(Nq) arg1, + insnop_t(Ib) arg2) +{ + const size_t ofs =3D offsetof(MMXReg, MMX_W(arg2 & 3)); + tcg_gen_ld16u_i64(ret, cpu_env, arg1 + ofs); +} + +GEN_INSN_WR_HELPER(cvtpi2ps, cvtpi2ps, Vdq, Qq) + +static void gen_insn_wr(cvtsi2ss, Vd, Ed)(CPUX86State *env, DisasContext *= s, + insnop_t(Vd) ret, insnop_t(Ed) a= rg1) +{ + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); + gen_helper_cvtsi2ss(cpu_env, s->ptr0, arg1); +} + +static void gen_insn_wr(cvtsi2ss, Vd, Eq)(CPUX86State *env, DisasContext *= s, + insnop_t(Vd) ret, insnop_t(Eq) a= rg1) +{ +#ifdef TARGET_X86_64 + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); + gen_helper_cvtsq2ss(cpu_env, s->ptr0, arg1); +#else /* TARGET_X86_64 */ + g_assert_not_reached(); +#endif /* TARGET_X86_64 */ +} + +GEN_INSN_WR_HELPER(cvtps2pi, cvtps2pi, Pq, Wq) + +static void gen_insn_wr(cvtss2si, Gd, Wd)(CPUX86State *env, DisasContext *= s, + insnop_t(Gd) ret, insnop_t(Wd) a= rg1) +{ + tcg_gen_addi_ptr(s->ptr0, cpu_env, arg1); + gen_helper_cvtss2si(ret, cpu_env, s->ptr0); +} + +static void gen_insn_wr(cvtss2si, Gq, Wd)(CPUX86State *env, DisasContext *= s, + insnop_t(Gq) ret, insnop_t(Wd) a= rg1) +{ +#ifdef TARGET_X86_64 + tcg_gen_addi_ptr(s->ptr0, cpu_env, arg1); + gen_helper_cvtss2sq(ret, cpu_env, s->ptr0); +#else /* TARGET_X86_64 */ + g_assert_not_reached(); +#endif /* TARGET_X86_64 */ +} + +GEN_INSN_WR_HELPER(cvttps2pi, cvttps2pi, Pq, Wq) + +static void gen_insn_wr(cvttss2si, Gd, Wd)(CPUX86State *env, DisasContext = *s, + insnop_t(Gd) ret, insnop_t(Wd) = arg1) +{ + tcg_gen_addi_ptr(s->ptr0, cpu_env, arg1); + gen_helper_cvttss2si(ret, cpu_env, s->ptr0); +} + +static void gen_insn_wr(cvttss2si, Gq, Wd)(CPUX86State *env, DisasContext = *s, + insnop_t(Gq) ret, insnop_t(Wd) = arg1) +{ +#ifdef TARGET_X86_64 + tcg_gen_addi_ptr(s->ptr0, cpu_env, arg1); + gen_helper_cvttss2sq(ret, cpu_env, s->ptr0); +#else /* TARGET_X86_64 */ + g_assert_not_reached(); +#endif /* TARGET_X86_64 */ +} + +static void gen_insn_wr(maskmovq, Pq, Nq)(CPUX86State *env, DisasContext *= s, + insnop_t(Pq) ret, insnop_t(Nq) a= rg1) +{ + tcg_gen_mov_tl(s->A0, cpu_regs[R_EDI]); + gen_extu(s->aflag, s->A0); + gen_add_A0_ds_seg(s); + + tcg_gen_addi_ptr(s->ptr0, cpu_env, ret); + tcg_gen_addi_ptr(s->ptr1, cpu_env, arg1); + gen_helper_maskmov_mmx(cpu_env, s->ptr0, s->ptr1, s->A0); +} + +static void gen_insn_wr(movntq, Mq, Pq)(CPUX86State *env, DisasContext *s, + insnop_t(Mq) ret, insnop_t(Pq) arg= 1) +{ + assert(ret =3D=3D s->A0); + gen_stq_env_A0(s, arg1); +} + +static void gen_insn_wr(movntps, Mdq, Vdq)(CPUX86State *env, + DisasContext *s, + insnop_t(Mdq) ret, + insnop_t(Vdq) arg1) +{ + assert(ret =3D=3D s->A0); + gen_sto_env_A0(s, arg1); +} + +static void gen_insn(sfence)(CPUX86State *env, DisasContext *s) +{ + if (s->prefix & PREFIX_LOCK) { + gen_illegal_opcode(s); + } else { + tcg_gen_mb(TCG_MO_ST_ST | TCG_BAR_SC); + } +} + +static void gen_insn_r(ldmxcsr, Md)(CPUX86State *env, DisasContext *s, + insnop_t(Md) arg1) +{ + if ((s->flags & HF_EM_MASK) || !(s->flags & HF_OSFXSR_MASK)) { + gen_illegal_opcode(s); + } else if (s->flags & HF_TS_MASK) { + gen_exception(s, EXCP07_PREX); + } else { + tcg_gen_qemu_ld_i32(s->tmp2_i32, arg1, s->mem_index, MO_LEUL); + gen_helper_ldmxcsr(cpu_env, s->tmp2_i32); + } +} + +static void gen_insn_w(stmxcsr, Md)(CPUX86State *env, DisasContext *s, + insnop_t(Md) ret) +{ + if ((s->flags & HF_EM_MASK) || !(s->flags & HF_OSFXSR_MASK)) { + gen_illegal_opcode(s); + } else if (s->flags & HF_TS_MASK) { + gen_exception(s, EXCP07_PREX); + } else { + const size_t ofs =3D offsetof(CPUX86State, mxcsr); + tcg_gen_ld_i32(s->tmp2_i32, cpu_env, ofs); + tcg_gen_qemu_st_i32(s->tmp2_i32, ret, s->mem_index, MO_LEUL); + } +} + +static void gen_insn_r(prefetcht0, Mb)(CPUX86State *env, DisasContext *s, + insnop_t(Mb) arg1) +{ + /* no-op */ +} + +static void gen_insn_r(prefetcht1, Mb)(CPUX86State *env, DisasContext *s, + insnop_t(Mb) arg1) +{ + /* no-op */ +} + +static void gen_insn_r(prefetcht2, Mb)(CPUX86State *env, DisasContext *s, + insnop_t(Mb) arg1) +{ + /* no-op */ +} + +static void gen_insn_r(prefetchnta, Mb)(CPUX86State *env, DisasContext *s, + insnop_t(Mb) arg1) +{ + /* no-op */ +} + /* * Instruction translators */ --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411427; cv=none; d=zoho.com; s=zohoarc; b=a51nmg8e2Q4NHg5bSrjuYMXd4c+p20UyG1O8gzIz3zclEL8zoTYV/lI0JjcnqMSiWHa1W1nkWrnmhiiFbTKy7xkvebYEeD4MouwmuFNzbLSehdw89x8pelmvLp4ozmfmHSXuN9CXiylOTlOsy9LiNJscjglCAXshk1U2+NSimww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411427; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=qd9Vak9zDrp9Soub8eUxv/gAK9kgKTJPLZEknV6Ahqs=; b=RTaVxtT997MMG+xe1lmnaBwRMhigGyXr0ewCwDJCxeoD6bbeo3Ow7i0JRYp7S7dC0ouZMEJ+pb69WrStHPUl9OSUFYHrAV3kubuiJWRKxXH3C4HT4vY80x7CQ6BkaH1INSrPStaSyNIRismZoL7NHRa06T2+7htP2+JPiqmRVOc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411427992749.6076828858183; Fri, 9 Aug 2019 21:30:27 -0700 (PDT) Received: from localhost ([::1]:35014 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwJ1O-0007u1-RE for importer@patchew.org; Sat, 10 Aug 2019 00:30:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35044) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlI-000706-Dr for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlG-0004m7-Kz for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:48 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:34835) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlG-0004jw-Fw for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:46 -0400 Received: by mail-ot1-x341.google.com with SMTP id j19so63826242otq.2 for ; Fri, 09 Aug 2019 21:13:46 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.45 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qd9Vak9zDrp9Soub8eUxv/gAK9kgKTJPLZEknV6Ahqs=; b=J8CqZX5wLKL543QDg/uE2qDl2h3yDJvxO/FGC4XisrABg8CaWHaCJDUYQJt01/OfOo Oc7cqCX2wbOP1kEf6YLmqBIOjl8UlLFBqIy2SIFWz8xeCjq1WioTjECo6hFStMUk4qmA R1Z71cRU6l/aPjCrweO1SqhpdUL5Ed2q4FdFnRcNXuc3uA/D9fmkciWuDDiihPi/PXth +TR9yceYEgPvllzcR1+bYzMOvTbggqMRkaU7jpdVyynusm53yIAO/HcsNXSuKAXFTdqU 4WBK8urDDnMHkRp2QJMNatiERWbudQ9K21Z4bmHz879ptntPLc5dRdWsBkulKnDzSrdq yJMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qd9Vak9zDrp9Soub8eUxv/gAK9kgKTJPLZEknV6Ahqs=; b=ZKPVYzrTJ0uT0hwa6ll1a2tf2PNj3IXVL/d4aahm/38+GOlwSxbWi5L5lqpibAUbNC gjI2BET1oxuSPGqwrmHVvvavc+I8q+NyfBa6RHk98vLUY1B6vcmde39y55KW6f4zJXso BvdrR92d3UaSEr80Ri80Py593fvkAKl9J82pKx0ZLYbg40b9rlaiQOXkPacLeRbK4moA k4rXXEDu+XwKTIcZmr1SWYGtHzhs0sqhr/hb7DBrEZKS8MeJ0HvaIyG16ga0NRI/eOlc JPx8LGRqhqUXxk5DhASdBMm7D5KrRkujALR3fQq4WDVLmeySokFuJ21dDX3IWNE5v6/U xRAg== X-Gm-Message-State: APjAAAWTbpf8nlx++8Tif6ycRk8hQ/3xxUOh1C8UICoVZZmtT1fLo7Mb NtKe8llfNPQWfAfT6eQQEiduV8uq X-Google-Smtp-Source: APXvYqxg3/PUaNL08CDBV3arjkvr2BniPe9XYEKVP61qujh2BFp8ZQl1l2auivWJRkqH4QwQIxMfsQ== X-Received: by 2002:a05:6830:2119:: with SMTP id i25mr22124032otc.282.1565410425544; Fri, 09 Aug 2019 21:13:45 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:54 -0400 Message-Id: <20190810041255.6820-39-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 38/39] target/i386: introduce SSE instructions to insn.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Add all the SSE instruction entries to insn.h. Signed-off-by: Jan Bobek --- target/i386/insn.h | 158 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/target/i386/insn.h b/target/i386/insn.h index 6506ff3137..6e0c75b9f7 100644 --- a/target/i386/insn.h +++ b/target/i386/insn.h @@ -78,6 +78,36 @@ INSN_WR(movq, LEG(NP, 0F, 1), 0x7e, MMX, Eq, Pq) INSN_WR(movq, LEG(NP, 0F, 0), 0x6f, MMX, Pq, Qq) /* NP 0F 7F /r: MOVQ mm/m64, mm */ INSN_WR(movq, LEG(NP, 0F, 0), 0x7f, MMX, Qq, Pq) +/* NP 0F 28 /r: MOVAPS xmm1, xmm2/m128 */ +INSN_WR(movaps, LEG(NP, 0F, 0), 0x28, SSE, Vdq, Wdq) +/* NP 0F 29 /r: MOVAPS xmm2/m128, xmm1 */ +INSN_WR(movaps, LEG(NP, 0F, 0), 0x29, SSE, Wdq, Vdq) +/* NP 0F 10 /r: MOVUPS xmm1, xmm2/m128 */ +INSN_WR(movups, LEG(NP, 0F, 0), 0x10, SSE, Vdq, Wdq) +/* NP 0F 11 /r: MOVUPS xmm2/m128, xmm1 */ +INSN_WR(movups, LEG(NP, 0F, 0), 0x11, SSE, Wdq, Vdq) +/* F3 0F 10 /r: MOVSS xmm1, xmm2/m32 */ +INSN_WRR(movss, LEG(F3, 0F, 0), 0x10, SSE, Vdq, Vdq, UdMd) +/* F3 0F 11 /r: MOVSS xmm2/m32, xmm1 */ +INSN_WR(movss, LEG(F3, 0F, 0), 0x11, SSE, Wd, Vd) +/* NP 0F 12 /r: MOVHLPS xmm1, xmm2 */ +/* NP 0F 12 /r: MOVLPS xmm1, m64 */ +INSN_WR(movhlps, LEG(NP, 0F, 0), 0x12, SSE, Vq, UdqMq) +/* 0F 13 /r: MOVLPS m64, xmm1 */ +INSN_WR(movlps, LEG(NP, 0F, 0), 0x13, SSE, Mq, Vq) +/* NP 0F 16 /r: MOVLHPS xmm1, xmm2 */ +/* NP 0F 16 /r: MOVHPS xmm1, m64 */ +INSN_WRR(movlhps, LEG(NP, 0F, 0), 0x16, SSE, Vdq, Vq, UqMq) +/* NP 0F 17 /r: MOVHPS m64, xmm1 */ +INSN_WR(movhps, LEG(NP, 0F, 0), 0x17, SSE, Mq, Vdq) +/* NP 0F D7 /r: PMOVMSKB r32, mm */ +INSN_WR(pmovmskb, LEG(NP, 0F, 0), 0xd7, SSE, Gd, Nq) +/* NP REX.W 0F D7 /r: PMOVMSKB r64, mm */ +INSN_WR(pmovmskb, LEG(NP, 0F, 1), 0xd7, SSE, Gq, Nq) +/* NP 0F 50 /r: MOVMSKPS r32, xmm */ +INSN_WR(movmskps, LEG(NP, 0F, 0), 0x50, SSE, Gd, Udq) +/* NP REX.W 0F 50 /r: MOVMSKPS r64, xmm */ +INSN_WR(movmskps, LEG(NP, 0F, 1), 0x50, SSE, Gq, Udq) /* NP 0F FC /r: PADDB mm, mm/m64 */ INSN_WRR(paddb, LEG(NP, 0F, 0), 0xfc, MMX, Pq, Pq, Qq) /* NP 0F FD /r: PADDW mm, mm/m64 */ @@ -92,6 +122,10 @@ INSN_WRR(paddsw, LEG(NP, 0F, 0), 0xed, MMX, Pq, Pq, Qq) INSN_WRR(paddusb, LEG(NP, 0F, 0), 0xdc, MMX, Pq, Pq, Qq) /* NP 0F DD /r: PADDUSW mm,mm/m64 */ INSN_WRR(paddusw, LEG(NP, 0F, 0), 0xdd, MMX, Pq, Pq, Qq) +/* NP 0F 58 /r: ADDPS xmm1, xmm2/m128 */ +INSN_WRR(addps, LEG(NP, 0F, 0), 0x58, SSE, Vdq, Vdq, Wdq) +/* F3 0F 58 /r: ADDSS xmm1, xmm2/m32 */ +INSN_WRR(addss, LEG(F3, 0F, 0), 0x58, SSE, Vd, Vd, Wd) /* NP 0F F8 /r: PSUBB mm, mm/m64 */ INSN_WRR(psubb, LEG(NP, 0F, 0), 0xf8, MMX, Pq, Pq, Qq) /* NP 0F F9 /r: PSUBW mm, mm/m64 */ @@ -106,12 +140,60 @@ INSN_WRR(psubsw, LEG(NP, 0F, 0), 0xe9, MMX, Pq, Pq, Q= q) INSN_WRR(psubusb, LEG(NP, 0F, 0), 0xd8, MMX, Pq, Pq, Qq) /* NP 0F D9 /r: PSUBUSW mm, mm/m64 */ INSN_WRR(psubusw, LEG(NP, 0F, 0), 0xd9, MMX, Pq, Pq, Qq) +/* NP 0F 5C /r: SUBPS xmm1, xmm2/m128 */ +INSN_WRR(subps, LEG(NP, 0F, 0), 0x5c, SSE, Vdq, Vdq, Wdq) +/* F3 0F 5C /r: SUBSS xmm1, xmm2/m32 */ +INSN_WRR(subss, LEG(F3, 0F, 0), 0x5c, SSE, Vd, Vd, Wd) /* NP 0F D5 /r: PMULLW mm, mm/m64 */ INSN_WRR(pmullw, LEG(NP, 0F, 0), 0xd5, MMX, Pq, Pq, Qq) /* NP 0F E5 /r: PMULHW mm, mm/m64 */ INSN_WRR(pmulhw, LEG(NP, 0F, 0), 0xe5, MMX, Pq, Pq, Qq) +/* NP 0F E4 /r: PMULHUW mm1, mm2/m64 */ +INSN_WRR(pmulhuw, LEG(NP, 0F, 0), 0xe4, SSE, Pq, Pq, Qq) +/* NP 0F 59 /r: MULPS xmm1, xmm2/m128 */ +INSN_WRR(mulps, LEG(NP, 0F, 0), 0x59, SSE, Vdq, Vdq, Wdq) +/* F3 0F 59 /r: MULSS xmm1,xmm2/m32 */ +INSN_WRR(mulss, LEG(F3, 0F, 0), 0x59, SSE, Vd, Vd, Wd) /* NP 0F F5 /r: PMADDWD mm, mm/m64 */ INSN_WRR(pmaddwd, LEG(NP, 0F, 0), 0xf5, MMX, Pq, Pq, Qq) +/* NP 0F 5E /r: DIVPS xmm1, xmm2/m128 */ +INSN_WRR(divps, LEG(NP, 0F, 0), 0x5e, SSE, Vdq, Vdq, Wdq) +/* F3 0F 5E /r: DIVSS xmm1, xmm2/m32 */ +INSN_WRR(divss, LEG(F3, 0F, 0), 0x5e, SSE, Vd, Vd, Wd) +/* NP 0F 53 /r: RCPPS xmm1, xmm2/m128 */ +INSN_WR(rcpps, LEG(NP, 0F, 0), 0x53, SSE, Vdq, Wdq) +/* F3 0F 53 /r: RCPSS xmm1, xmm2/m32 */ +INSN_WR(rcpss, LEG(F3, 0F, 0), 0x53, SSE, Vd, Wd) +/* NP 0F 51 /r: SQRTPS xmm1, xmm2/m128 */ +INSN_WR(sqrtps, LEG(NP, 0F, 0), 0x51, SSE, Vdq, Wdq) +/* F3 0F 51 /r: SQRTSS xmm1, xmm2/m32 */ +INSN_WR(sqrtss, LEG(F3, 0F, 0), 0x51, SSE, Vd, Wd) +/* NP 0F 52 /r: RSQRTPS xmm1, xmm2/m128 */ +INSN_WR(rsqrtps, LEG(NP, 0F, 0), 0x52, SSE, Vdq, Wdq) +/* F3 0F 52 /r: RSQRTSS xmm1, xmm2/m32 */ +INSN_WR(rsqrtss, LEG(F3, 0F, 0), 0x52, SSE, Vd, Wd) +/* NP 0F DA /r: PMINUB mm1, mm2/m64 */ +INSN_WRR(pminub, LEG(NP, 0F, 0), 0xda, SSE, Pq, Pq, Qq) +/* NP 0F EA /r: PMINSW mm1, mm2/m64 */ +INSN_WRR(pminsw, LEG(NP, 0F, 0), 0xea, SSE, Pq, Pq, Qq) +/* NP 0F 5D /r: MINPS xmm1, xmm2/m128 */ +INSN_WRR(minps, LEG(NP, 0F, 0), 0x5d, SSE, Vdq, Vdq, Wdq) +/* F3 0F 5D /r: MINSS xmm1,xmm2/m32 */ +INSN_WRR(minss, LEG(F3, 0F, 0), 0x5d, SSE, Vd, Vd, Wd) +/* NP 0F DE /r: PMAXUB mm1, mm2/m64 */ +INSN_WRR(pmaxub, LEG(NP, 0F, 0), 0xde, SSE, Pq, Pq, Qq) +/* NP 0F EE /r: PMAXSW mm1, mm2/m64 */ +INSN_WRR(pmaxsw, LEG(NP, 0F, 0), 0xee, SSE, Pq, Pq, Qq) +/* NP 0F 5F /r: MAXPS xmm1, xmm2/m128 */ +INSN_WRR(maxps, LEG(NP, 0F, 0), 0x5f, SSE, Vdq, Vdq, Wdq) +/* F3 0F 5F /r: MAXSS xmm1, xmm2/m32 */ +INSN_WRR(maxss, LEG(F3, 0F, 0), 0x5f, SSE, Vd, Vd, Wd) +/* NP 0F E0 /r: PAVGB mm1, mm2/m64 */ +INSN_WRR(pavgb, LEG(NP, 0F, 0), 0xe0, SSE, Pq, Pq, Qq) +/* NP 0F E3 /r: PAVGW mm1, mm2/m64 */ +INSN_WRR(pavgw, LEG(NP, 0F, 0), 0xe3, SSE, Pq, Pq, Qq) +/* NP 0F F6 /r: PSADBW mm1, mm2/m64 */ +INSN_WRR(psadbw, LEG(NP, 0F, 0), 0xf6, SSE, Pq, Pq, Qq) /* NP 0F 74 /r: PCMPEQB mm,mm/m64 */ INSN_WRR(pcmpeqb, LEG(NP, 0F, 0), 0x74, MMX, Pq, Pq, Qq) /* NP 0F 75 /r: PCMPEQW mm,mm/m64 */ @@ -124,14 +206,30 @@ INSN_WRR(pcmpgtb, LEG(NP, 0F, 0), 0x64, MMX, Pq, Pq, = Qq) INSN_WRR(pcmpgtw, LEG(NP, 0F, 0), 0x65, MMX, Pq, Pq, Qq) /* NP 0F 66 /r: PCMPGTD mm,mm/m64 */ INSN_WRR(pcmpgtd, LEG(NP, 0F, 0), 0x66, MMX, Pq, Pq, Qq) +/* NP 0F C2 /r ib: CMPPS xmm1, xmm2/m128, imm8 */ +INSN_WRRR(cmpps, LEG(NP, 0F, 0), 0xc2, SSE, Vdq, Vdq, Wdq, Ib) +/* F3 0F C2 /r ib: CMPSS xmm1, xmm2/m32, imm8 */ +INSN_WRRR(cmpss, LEG(F3, 0F, 0), 0xc2, SSE, Vd, Vd, Wd, Ib) +/* NP 0F 2E /r: UCOMISS xmm1, xmm2/m32 */ +INSN_RR(ucomiss, LEG(NP, 0F, 0), 0x2e, SSE, Vd, Wd) +/* NP 0F 2F /r: COMISS xmm1, xmm2/m32 */ +INSN_RR(comiss, LEG(NP, 0F, 0), 0x2f, SSE, Vd, Wd) /* NP 0F DB /r: PAND mm, mm/m64 */ INSN_WRR(pand, LEG(NP, 0F, 0), 0xdb, MMX, Pq, Pq, Qq) +/* NP 0F 54 /r: ANDPS xmm1, xmm2/m128 */ +INSN_WRR(andps, LEG(NP, 0F, 0), 0x54, SSE, Vdq, Vdq, Wdq) /* NP 0F DF /r: PANDN mm, mm/m64 */ INSN_WRR(pandn, LEG(NP, 0F, 0), 0xdf, MMX, Pq, Pq, Qq) +/* NP 0F 55 /r: ANDNPS xmm1, xmm2/m128 */ +INSN_WRR(andnps, LEG(NP, 0F, 0), 0x55, SSE, Vdq, Vdq, Wdq) /* NP 0F EB /r: POR mm, mm/m64 */ INSN_WRR(por, LEG(NP, 0F, 0), 0xeb, MMX, Pq, Pq, Qq) +/* NP 0F 56 /r: ORPS xmm1, xmm2/m128 */ +INSN_WRR(orps, LEG(NP, 0F, 0), 0x56, SSE, Vdq, Vdq, Wdq) /* NP 0F EF /r: PXOR mm, mm/m64 */ INSN_WRR(pxor, LEG(NP, 0F, 0), 0xef, MMX, Pq, Pq, Qq) +/* NP 0F 57 /r: XORPS xmm1, xmm2/m128 */ +INSN_WRR(xorps, LEG(NP, 0F, 0), 0x57, SSE, Vdq, Vdq, Wdq) /* NP 0F F1 /r: PSLLW mm, mm/m64 */ INSN_WRR(psllw, LEG(NP, 0F, 0), 0xf1, MMX, Pq, Pq, Qq) /* NP 0F F2 /r: PSLLD mm, mm/m64 */ @@ -166,6 +264,44 @@ INSN_WRR(punpcklbw, LEG(NP, 0F, 0), 0x60, MMX, Pq, Pq,= Qd) INSN_WRR(punpcklwd, LEG(NP, 0F, 0), 0x61, MMX, Pq, Pq, Qd) /* NP 0F 62 /r: PUNPCKLDQ mm, mm/m32 */ INSN_WRR(punpckldq, LEG(NP, 0F, 0), 0x62, MMX, Pq, Pq, Qd) +/* NP 0F 14 /r: UNPCKLPS xmm1, xmm2/m128 */ +INSN_WRR(unpcklps, LEG(NP, 0F, 0), 0x14, SSE, Vdq, Vdq, Wdq) +/* NP 0F 15 /r: UNPCKHPS xmm1, xmm2/m128 */ +INSN_WRR(unpckhps, LEG(NP, 0F, 0), 0x15, SSE, Vdq, Vdq, Wdq) +/* NP 0F 70 /r ib: PSHUFW mm1, mm2/m64, imm8 */ +INSN_WRR(pshufw, LEG(NP, 0F, 0), 0x70, SSE, Pq, Qq, Ib) +/* NP 0F C6 /r ib: SHUFPS xmm1, xmm3/m128, imm8 */ +INSN_WRRR(shufps, LEG(NP, 0F, 0), 0xc6, SSE, Vdq, Vdq, Wdq, Ib) +/* NP 0F C4 /r ib: PINSRW mm, r32/m16, imm8 */ +INSN_WRRR(pinsrw, LEG(NP, 0F, 0), 0xc4, SSE, Pq, Pq, RdMw, Ib) +/* NP 0F C5 /r ib: PEXTRW r32, mm, imm8 */ +INSN_WRR(pextrw, LEG(NP, 0F, 0), 0xc5, SSE, Gd, Nq, Ib) +/* NP REX.W 0F C5 /r ib: PEXTRW r64, mm, imm8 */ +INSN_WRR(pextrw, LEG(NP, 0F, 1), 0xc5, SSE, Gq, Nq, Ib) +/* NP 0F 2A /r: CVTPI2PS xmm, mm/m64 */ +INSN_WR(cvtpi2ps, LEG(NP, 0F, 0), 0x2a, SSE, Vdq, Qq) +/* F3 0F 2A /r: CVTSI2SS xmm1,r/m32 */ +INSN_WR(cvtsi2ss, LEG(F3, 0F, 0), 0x2a, SSE, Vd, Ed) +/* F3 REX.W 0F 2A /r: CVTSI2SS xmm1,r/m64 */ +INSN_WR(cvtsi2ss, LEG(F3, 0F, 1), 0x2a, SSE, Vd, Eq) +/* NP 0F 2D /r: CVTPS2PI mm, xmm/m64 */ +INSN_WR(cvtps2pi, LEG(NP, 0F, 0), 0x2d, SSE, Pq, Wq) +/* F3 0F 2D /r: CVTSS2SI r32,xmm1/m32 */ +INSN_WR(cvtss2si, LEG(F3, 0F, 0), 0x2d, SSE, Gd, Wd) +/* F3 REX.W 0F 2D /r: CVTSS2SI r64,xmm1/m32 */ +INSN_WR(cvtss2si, LEG(F3, 0F, 1), 0x2d, SSE, Gq, Wd) +/* NP 0F 2C /r: CVTTPS2PI mm, xmm/m64 */ +INSN_WR(cvttps2pi, LEG(NP, 0F, 0), 0x2c, SSE, Pq, Wq) +/* F3 0F 2C /r: CVTTSS2SI r32,xmm1/m32 */ +INSN_WR(cvttss2si, LEG(F3, 0F, 0), 0x2c, SSE, Gd, Wd) +/* F3 REX.W 0F 2C /r: CVTTSS2SI r64,xmm1/m32 */ +INSN_WR(cvttss2si, LEG(F3, 0F, 1), 0x2c, SSE, Gq, Wd) +/* NP 0F F7 /r: MASKMOVQ mm1, mm2 */ +INSN_RR(maskmovq, LEG(NP, 0F, 0), 0xf7, SSE, Pq, Nq) +/* NP 0F 2B /r: MOVNTPS m128, xmm1 */ +INSN_WR(movntps, LEG(NP, 0F, 0), 0x2b, SSE, Mdq, Vdq) +/* NP 0F E7 /r: MOVNTQ m64, mm */ +INSN_WR(movntq, LEG(NP, 0F, 0), 0xe7, SSE, Mq, Pq) /* NP 0F 77: EMMS */ INSN(emms, LEG(NP, 0F, 0), 0x77, MMX) =20 @@ -197,6 +333,28 @@ INSN_GRP_BEGIN(grp14_LEG_NP) INSN_GRPMEMB_WRR(grp14_LEG_NP, psrlq, 2, MMX, Nq, Nq, Ib) INSN_GRP_END(grp14_LEG_NP) =20 +INSN_GRP(grp15_LEG_NP, LEG(NP, 0F, 0), 0xae) +INSN_GRP_BEGIN(grp15_LEG_NP) + /* NP 0F AE /7: SFENCE */ + INSN_GRPMEMB(grp15_LEG_NP, sfence, 7, SSE) + /* NP 0F AE /2: LDMXCSR m32 */ + INSN_GRPMEMB_R(grp15_LEG_NP, ldmxcsr, 2, SSE, Md) + /* NP 0F AE /3: STMXCSR m32 */ + INSN_GRPMEMB_W(grp15_LEG_NP, stmxcsr, 3, SSE, Md) +INSN_GRP_END(grp15_LEG_NP) + +INSN_GRP(grp16_LEG_NP, LEG(NP, 0F, 0), 0x18) +INSN_GRP_BEGIN(grp16_LEG_NP) + /* 0F 18 /1: PREFETCHT0 m8 */ + INSN_GRPMEMB_R(grp16_LEG_NP, prefetcht0, 1, SSE, Mb) + /* 0F 18 /2: PREFETCHT1 m8 */ + INSN_GRPMEMB_R(grp16_LEG_NP, prefetcht1, 2, SSE, Mb) + /* 0F 18 /3: PREFETCHT2 m8 */ + INSN_GRPMEMB_R(grp16_LEG_NP, prefetcht2, 3, SSE, Mb) + /* 0F 18 /0: PREFETCHNTA m8 */ + INSN_GRPMEMB_R(grp16_LEG_NP, prefetchnta, 0, SSE, Mb) +INSN_GRP_END(grp16_LEG_NP) + #undef LEG #undef VEX #undef INSN --=20 2.20.1 From nobody Thu Mar 28 21:25:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565411355; cv=none; d=zoho.com; s=zohoarc; b=JKCMpNNJT/Y+Anfwot3/HH7bLJvmSmyS4BtAcamAGxMlJOrNCGZoScOvmZRzN2RlNfUEQerTUux7gFZ0qKEzaGubKNth4GYebOBn7RdG4N01b/HFaS2yxgamkOp935J3mMnzc+BH0/1UlDaA/5uwTGJpZh/vaWM/wBDI3WVt17A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565411355; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ORYsNUP5X43haVcteZ8oI+Qz8mSDMdaq3Ei5edtuVYc=; b=CWqmX2A1brCu3pSlKKw9+9axWyrLLeTvy0HdPDesDsjWvFNgQHhkOBAdP1cUjBHBi8lx9Gczq2LulreYotr6InYyj3/aczHuJRzme+5VU0MzInRV8Js/co1Est/Nf7VkCWqneQ1Ji1Fc7VihjmU+Lr9ueKT8lp4M3YbQZSHURSk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565411355929820.7735063804552; Fri, 9 Aug 2019 21:29:15 -0700 (PDT) Received: from localhost ([::1]:34996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwJ0E-00069s-Mx for importer@patchew.org; Sat, 10 Aug 2019 00:29:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35047) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIlI-00070M-FK for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIlH-0004mq-Cy for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:48 -0400 Received: from mail-ot1-x342.google.com ([2607:f8b0:4864:20::342]:42337) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIlH-0004mR-8k for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:47 -0400 Received: by mail-ot1-x342.google.com with SMTP id l15so140516469otn.9 for ; Fri, 09 Aug 2019 21:13:47 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.46 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ORYsNUP5X43haVcteZ8oI+Qz8mSDMdaq3Ei5edtuVYc=; b=fGpsfdaT1g3KyZeMeRpQetLL0l6QOz7CIyvX2laGsVcrebhBfVo3uzfqgTnt8t89Sp rpI9YRqOY9daKcm5qsZDA/11+ZuxRNsrjb/Uxxyxv5L6Bw5/nrpk3SgjCnn2/c0izLny nsx4Fm9TEHPvzrLH2O8JuTeYXuXcDd3ZnSn9L1zibemPZR8l7dIHhfgEE/y+kacmz338 nFUYOv48u+luG+GGA/LWj5Qmy+cX655LBXgDpH1+OuqkFcIYKSZt9IA4eJr08MthlJzP sJaIV63sl1vN0CXDdVFb486xIMBGwEZtDEauiu1se4hEETM+XxMynWVTTWC0rKuDZdLM 4C2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ORYsNUP5X43haVcteZ8oI+Qz8mSDMdaq3Ei5edtuVYc=; b=dSlAvPesS3aulBF0eGkAFkdVxIKkGybtFxlBlbtB2YxBHkCCQNMDRQvoGYppQRTas4 hWtcGUmZqOQnc3eI9X1Zh2LLKabPQmcaNM3AfN4yxZthSQwA51z32Xz//A8ydlCdEeyT KmYxQx6hXb6YMeRjjbZfpnGDp7VgVO4sFv/8XdXrNB/oNefVG8ECbqD9OV0PItenQuLK mkhMHrimw26VD6Z1gMS5M7U1kukBalFlHusKLvpwJxKSRtFYA1kCI3GSlg6J+pbq79Vl Anvwuvf6He6LB1wZRYM9YOfgtBfiz+ogvHxZ/Y5g2IAtbbbLgulXpeeOoqja7ixeoEmE eo/Q== X-Gm-Message-State: APjAAAV3l3NwBwfnC8tbrHzsEYYS4PmNDUSjIS+YtCnYOL3cYSEzX3iC x1GK1RY9aaKIO+y8LmSGGFXI8x7O X-Google-Smtp-Source: APXvYqwFERvERI/w9s8gv5shlP8dL9u5BRd7WsJO0yTVozHqvubZtGAu2P++XRHR/0KP2sOmFYm4UA== X-Received: by 2002:a9d:7741:: with SMTP id t1mr10594402otl.178.1565410426557; Fri, 09 Aug 2019 21:13:46 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:55 -0400 Message-Id: <20190810041255.6820-40-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::342 Subject: [Qemu-devel] [RFC PATCH v2 39/39] target/i386: introduce memory-pointer operand read/write workarounds X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The memory-pointer operand has a known limitation (see the commit introducing M* operands for details); the workaround involves declaring write-memory operands as read-memory instead. Note: This changeset is intended for development only and shall not be included in the final patch series. Signed-off-by: Jan Bobek --- target/i386/insn.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/target/i386/insn.h b/target/i386/insn.h index 6e0c75b9f7..b61a4182f6 100644 --- a/target/i386/insn.h +++ b/target/i386/insn.h @@ -94,12 +94,14 @@ INSN_WR(movss, LEG(F3, 0F, 0), 0x11, SSE, Wd, Vd) /* NP 0F 12 /r: MOVLPS xmm1, m64 */ INSN_WR(movhlps, LEG(NP, 0F, 0), 0x12, SSE, Vq, UdqMq) /* 0F 13 /r: MOVLPS m64, xmm1 */ -INSN_WR(movlps, LEG(NP, 0F, 0), 0x13, SSE, Mq, Vq) +/* FIXME this is hacked, should be INSN_WR */ +INSN_RR(movlps, LEG(NP, 0F, 0), 0x13, SSE, Mq, Vq) /* NP 0F 16 /r: MOVLHPS xmm1, xmm2 */ /* NP 0F 16 /r: MOVHPS xmm1, m64 */ INSN_WRR(movlhps, LEG(NP, 0F, 0), 0x16, SSE, Vdq, Vq, UqMq) /* NP 0F 17 /r: MOVHPS m64, xmm1 */ -INSN_WR(movhps, LEG(NP, 0F, 0), 0x17, SSE, Mq, Vdq) +/* FIXME this is hacked, should be INSN_WR */ +INSN_RR(movhps, LEG(NP, 0F, 0), 0x17, SSE, Mq, Vdq) /* NP 0F D7 /r: PMOVMSKB r32, mm */ INSN_WR(pmovmskb, LEG(NP, 0F, 0), 0xd7, SSE, Gd, Nq) /* NP REX.W 0F D7 /r: PMOVMSKB r64, mm */ @@ -299,9 +301,11 @@ INSN_WR(cvttss2si, LEG(F3, 0F, 1), 0x2c, SSE, Gq, Wd) /* NP 0F F7 /r: MASKMOVQ mm1, mm2 */ INSN_RR(maskmovq, LEG(NP, 0F, 0), 0xf7, SSE, Pq, Nq) /* NP 0F 2B /r: MOVNTPS m128, xmm1 */ -INSN_WR(movntps, LEG(NP, 0F, 0), 0x2b, SSE, Mdq, Vdq) +/* FIXME this is hacked, should be INSN_WR */ +INSN_RR(movntps, LEG(NP, 0F, 0), 0x2b, SSE, Mdq, Vdq) /* NP 0F E7 /r: MOVNTQ m64, mm */ -INSN_WR(movntq, LEG(NP, 0F, 0), 0xe7, SSE, Mq, Pq) +/* FIXME this is hacked, should be INSN_WR */ +INSN_RR(movntq, LEG(NP, 0F, 0), 0xe7, SSE, Mq, Pq) /* NP 0F 77: EMMS */ INSN(emms, LEG(NP, 0F, 0), 0x77, MMX) =20 @@ -340,7 +344,8 @@ INSN_GRP_BEGIN(grp15_LEG_NP) /* NP 0F AE /2: LDMXCSR m32 */ INSN_GRPMEMB_R(grp15_LEG_NP, ldmxcsr, 2, SSE, Md) /* NP 0F AE /3: STMXCSR m32 */ - INSN_GRPMEMB_W(grp15_LEG_NP, stmxcsr, 3, SSE, Md) + /* FIXME this is hacked, should be INSN_GRPMEMB_W */ + INSN_GRPMEMB_R(grp15_LEG_NP, stmxcsr, 3, SSE, Md) INSN_GRP_END(grp15_LEG_NP) =20 INSN_GRP(grp16_LEG_NP, LEG(NP, 0F, 0), 0x18) --=20 2.20.1