From nobody Fri Dec 19 17:24:23 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.53 as permitted sender) client-ip=209.85.221.53; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f53.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1635025735; cv=none; d=zohomail.com; s=zohoarc; b=UxlLhrDmEqYS4ydH8w3m6g10Qte0FSer/8aSt5+2etcuQcojr2cK9XHFLetPGoEZSrQJ/3Y0C6du2AMBLaNMVcQNfOaQ23t/imXtt092I0vxhCMEQrme4QrLp+bVp7J66kcfcaD1P7mOH8L3+9IQiy4EUP7ln7c3H5MkVe0oMFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635025735; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+Ns3yPDdWxoYZoBcHHwK2IFet9te9Ef1ptNKNtMRrnA=; b=dmXy0/Pw6+9RjUru1BQRGI7xVeHrNJ6L96ScJTV6o6/jMylCAMn4zKf8lyyxqDOcZ2vd5jgrDEDyQsibzbe2U9J2fsjDQOR0V0V0CuwBmVIFg7acY8Jz2LbgpKHICQ09ldW8n/thRqn3H/2potBoVaV8GncsTf+XnzTb5mg+6KU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by mx.zohomail.com with SMTPS id 1635025735771623.0887983008532; Sat, 23 Oct 2021 14:48:55 -0700 (PDT) Received: by mail-wr1-f53.google.com with SMTP id s19so4724796wra.2 for ; Sat, 23 Oct 2021 14:48:55 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id k10sm14650554wmr.32.2021.10.23.14.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+Ns3yPDdWxoYZoBcHHwK2IFet9te9Ef1ptNKNtMRrnA=; b=pyAhcYePKJKQjPSLDJIFyQ0KgQaWc9OBwb/eCJXHvS0YsgkFZqI+2aO/Iwndg7vBFr dYrShSfe7XJz4L+QG12lTJLm+gjE+GbM6YvYD+zmccoNxhZnkzJBOC7aNVPBKiXC3mdN cMgH6f7mywB7DGtd2uTRoEJKXM0BcyBw6sm/w4eFcVfhcAP2vsHuqZVHWDcSrGzthiwq p+9jI24omnOprv1kRvGYAjiBrWy7iQrJ/miTemcTu9NciWCvsaxxBxzHISej/hvgVlqz YiFXskOPBiLsYn1yNadi4e3qhTvICgrIp9L2BhJNM8N3VRSZd2TlASMLrKFf9VS+TQ3J XvDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=+Ns3yPDdWxoYZoBcHHwK2IFet9te9Ef1ptNKNtMRrnA=; b=1Nhp45DyvYperRTwVCDzBMBi9iV3iJOV7GJ+XFtItb+dmdmI+I9qNtM7wFt9AuQEZi o75Zcv9VsGCK0NkZex7/X5Xgf1Jmj7KGcKCF2G47/jIHYei+JJia4+IdkPc/iE8tI812 AfWm6kIjWlGN3TgY2M5rDivNq+bPNue3Zctmzm1pOyOvZgim3DNnEwLufnMDDcs5vL16 570apvtPkBNZJAcH0UyKGsH9Y0OKY3kVWk6mSDkH8ocBwti/T7tepHTkZ2N/zsZEmE1l WnP5xHxrxmwb3em1wnO/hlLcajepA1zPFAHmHcZgPIBlqtmJRFUBc+qYVBe5e2rRa/9K Pqrg== X-Gm-Message-State: AOAM532D7JOQhl+KjIsZjjvLeSHevBnabmS+yRZWHnWeP030Dt7z7H0q Q0QfHLvEN7BFi9g3r1h1oCY= X-Google-Smtp-Source: ABdhPJy9M3aMf80j+V7BZAYIqnpnV/0Uz3HnqA3UZAlT3wzE2v9YdZkWbAW+D9HjDCCJRuKyjBSHJg== X-Received: by 2002:adf:c78d:: with SMTP id l13mr10114222wrg.134.1635025733991; Sat, 23 Oct 2021 14:48:53 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jiaxun Yang , Luis Pires Subject: [PATCH 10/33] target/mips: Extract df_extract() helper Date: Sat, 23 Oct 2021 23:47:40 +0200 Message-Id: <20211023214803.522078-11-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1635025736518100001 Extract the common code which parses data formats to an helper. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/msa_translate.c | 68 +++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index 3b0dfcca69d..7c1bbfaec61 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -272,6 +272,40 @@ static const char msaregnames[][6] =3D { "w30.d0", "w30.d1", "w31.d0", "w31.d1", }; =20 +/* Encoding of Operation Field */ +static const struct dfe { + enum CPUMIPSMSADataFormat df; + int start; + int length; + uint32_t value; +} df_elm[] =3D { + /* Table 3.26 ELM Instruction Format */ + {DF_BYTE, 4, 2, 0b00}, + {DF_HALF, 3, 3, 0b100}, + {DF_WORD, 2, 4, 0b1100}, + {DF_DOUBLE, 1, 5, 0b11100} +}, df_bit[] =3D { + /* Table 3.28 BIT Instruction Format */ + {DF_BYTE, 3, 4, 0b1110}, + {DF_HALF, 4, 3, 0b110}, + {DF_WORD, 5, 2, 0b10}, + {DF_DOUBLE, 6, 1, 0b0} +}; + +/* Extract Operation Field (used by ELM & BIT instructions) */ +static bool df_extract(const struct dfe *s, int value, + enum CPUMIPSMSADataFormat *df, uint32_t *x) +{ + for (unsigned i =3D 0; i < 4; i++) { + if (extract32(value, s->start, s->length) =3D=3D s->value) { + *x =3D extract32(value, 0, s->start); + *df =3D s->df; + return true; + } + } + return false; +} + static TCGv_i64 msa_wr_d[64]; =20 void msa_translate_init(void) @@ -562,7 +596,6 @@ static void gen_msa_bit(DisasContext *ctx) { #define MASK_MSA_BIT(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) uint8_t dfm =3D (ctx->opcode >> 16) & 0x7f; - uint32_t df =3D 0, m =3D 0; uint8_t ws =3D (ctx->opcode >> 11) & 0x1f; uint8_t wd =3D (ctx->opcode >> 6) & 0x1f; =20 @@ -570,20 +603,9 @@ static void gen_msa_bit(DisasContext *ctx) TCGv_i32 tm; TCGv_i32 twd; TCGv_i32 tws; + uint32_t df, m; =20 - if ((dfm & 0x40) =3D=3D 0x00) { - m =3D dfm & 0x3f; - df =3D DF_DOUBLE; - } else if ((dfm & 0x60) =3D=3D 0x40) { - m =3D dfm & 0x1f; - df =3D DF_WORD; - } else if ((dfm & 0x70) =3D=3D 0x60) { - m =3D dfm & 0x0f; - df =3D DF_HALF; - } else if ((dfm & 0x78) =3D=3D 0x70) { - m =3D dfm & 0x7; - df =3D DF_BYTE; - } else { + if (!df_extract(df_bit, dfm, &df, &m)) { gen_reserved_instruction(ctx); return; } @@ -1768,25 +1790,13 @@ static void gen_msa_elm_df(DisasContext *ctx, uint3= 2_t df, uint32_t n) static void gen_msa_elm(DisasContext *ctx) { uint8_t dfn =3D (ctx->opcode >> 16) & 0x3f; - uint32_t df =3D 0, n =3D 0; + uint32_t df, n; =20 - if ((dfn & 0x30) =3D=3D 0x00) { - n =3D dfn & 0x0f; - df =3D DF_BYTE; - } else if ((dfn & 0x38) =3D=3D 0x20) { - n =3D dfn & 0x07; - df =3D DF_HALF; - } else if ((dfn & 0x3c) =3D=3D 0x30) { - n =3D dfn & 0x03; - df =3D DF_WORD; - } else if ((dfn & 0x3e) =3D=3D 0x38) { - n =3D dfn & 0x01; - df =3D DF_DOUBLE; - } else if (dfn =3D=3D 0x3E) { + if (dfn =3D=3D 0x3E) { /* CTCMSA, CFCMSA, MOVE.V */ gen_msa_elm_3e(ctx); return; - } else { + } else if (!df_extract(df_elm, dfn, &df, &n)) { gen_reserved_instruction(ctx); return; } --=20 2.31.1