From nobody Wed Nov 19 08:43:55 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.208.49 as permitted sender) client-ip=209.85.208.49; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-ed1-f49.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1615301904; cv=none; d=zohomail.com; s=zohoarc; b=YjrjPQHlHFFEq2Pbnbwfe2Et2YnjruO1ji/YWiNeYltbwxLfqyzYlNQdyuXoG1aCVVui+odsO1wEkcXA8bPiViTos+v7ZtTYH47MpfOr+PKCfwSqExL9NLAalCmfrnoDR01e0TLULelyED7BOTqr/vCnr6fH1oDtNOLF/ANZsuA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1615301904; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8smUmlgkKy5kU6GHKPn53J5syMPm8er0j9E7+m5z5Ww=; b=boW1VNE/5UrqDPoHXVboXeBelIQ1Xs1DCJlUKrkPxzAiPR9MrT7nIpsbHT1XesSocK60X5RzeJbAx2zPwB8x99hWLaJUNFKJU8J+poqK4HXKVw3PFYJsSuru8T++xo3WE8e7jzgoETIFasRYbnJOtdYXA+iH2lvb+VBTV7yYkBY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by mx.zohomail.com with SMTPS id 1615301904078575.0636071938941; Tue, 9 Mar 2021 06:58:24 -0800 (PST) Received: by mail-ed1-f49.google.com with SMTP id v13so20698442edw.9 for ; Tue, 09 Mar 2021 06:58:23 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (68.red-83-57-175.dynamicip.rima-tde.net. [83.57.175.68]) by smtp.gmail.com with ESMTPSA id y11sm8343050ejd.72.2021.03.09.06.58.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Mar 2021 06:58:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8smUmlgkKy5kU6GHKPn53J5syMPm8er0j9E7+m5z5Ww=; b=fVBFUw9Z2u+YrohjbQkqB4bUIqAkkjoQD0GojIVEl3NKoBNMABv6D71ts8Rn2moREp iDnbky9qRMcd9KyHk37xMC6NAQ6cPY+nfL6i+mJg+AbRhXSSKVsI8nTbVK8sw7ves5HL yWEVNszLhkjbVaatsIlG3aAfj9H422rPonIQuMCXmPtOGtW3rNVJ0Q0ELG6vXQ5pZN11 7WHUuWlQEXN5ayUWAkbIxDJDlKwlD7M4tRZkxjkQ9EbvDI31M51NHSp1DdIHHagzcG5j imHVQVl2i+/xvndipZX4kUpE/ULygP8z3M3NL0cjIEcAdcL1GIoIJa2z/tfE1UTpWkBS 77aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=8smUmlgkKy5kU6GHKPn53J5syMPm8er0j9E7+m5z5Ww=; b=SamR+K/jUbM0plMvabgGaI1zc5bLHkghxeMrT1nCWe5y5O0nJ+1uk64LfFPliXMAe6 6PLDt0b4rRlWsxkEVbxhLsQT9+oe//FY7DrfdcUqvbIVLl8QflecPh+3ZBfJCl91sHyJ blLgGh14eDrvogHFUZS2RqP9DD2PuRb58KEXHESrbSf51BwuoWJ9USpordfxWhOdOCW+ vpcS9YH1/a8S8dduE/zhrGwnpmLOS7fsETf/Z67l9Y3H0mEjXgilt/5MWqki4iorr1Bx mN4AXYyiHmevlssoxcrT5bCNeJdU9am4JVPclsJq+hSCGN3lSGI6naln2/bNfAKeUwas KCig== X-Gm-Message-State: AOAM531wzcPpBaI6PXOaBZi8L0Ovd75aE3fohxcuSbQBcKu9vUMy6hXz 7J1E5/m/9HCC48MBwkKGozo= X-Google-Smtp-Source: ABdhPJwuF0p5MTbapzJj8Q6be+KuJK8aXiT13e+6tD/iMaHC02uQk2h7Nr8lrrMaaOhWp98hgmsIkQ== X-Received: by 2002:aa7:c5c4:: with SMTP id h4mr4361172eds.375.1615301902331; Tue, 09 Mar 2021 06:58:22 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Richard Henderson , Aleksandar Rikalo , Jiaxun Yang , Aurelien Jarno , Fredrik Noring , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [RFC PATCH v2 17/22] target/mips/tx79: Introduce PEXE[HW] opcodes (Parallel Exchange Even) Date: Tue, 9 Mar 2021 15:56:48 +0100 Message-Id: <20210309145653.743937-18-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210309145653.743937-1-f4bug@amsat.org> References: <20210309145653.743937-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) Introduce the PEXEH (Parallel Exchange Even Halfword) and PEXEW (Parallel Exchange Even Word) opcodes. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- v2: unoptimized, see: https://www.mail-archive.com/qemu-devel@nongnu.org/msg782831.html --- target/mips/tx79.decode | 2 ++ target/mips/tx79_translate.c | 70 ++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/target/mips/tx79.decode b/target/mips/tx79.decode index fbd2be569ad..0ea9fc95568 100644 --- a/target/mips/tx79.decode +++ b/target/mips/tx79.decode @@ -54,6 +54,8 @@ PEXTUW 011100 ..... ..... ..... 10010 101000 @= rs_rt_rd PCPYLD 011100 ..... ..... ..... 01110 001001 @rs_rt_rd PAND 011100 ..... ..... ..... 10010 001001 @rs_rt_rd PXOR 011100 ..... ..... ..... 10011 001001 @rs_rt_rd +PEXEH 011100 00000 ..... ..... 11010 001001 @rt_rd +PEXEW 011100 00000 ..... ..... 11110 001001 @rt_rd =20 # MMI3 =20 diff --git a/target/mips/tx79_translate.c b/target/mips/tx79_translate.c index 7c7879face0..b23e0a1b048 100644 --- a/target/mips/tx79_translate.c +++ b/target/mips/tx79_translate.c @@ -615,3 +615,73 @@ static bool trans_PINTEH(DisasContext *ctx, arg_rtype = *a) { return trans_parallel_arith(ctx, a, gen_vec_pinteh); } + +/* Parallel Exchange Even Halfword */ +static bool trans_PEXEH(DisasContext *ctx, arg_rtype *a) +{ + TCGv_i64 ax; + + if (a->rd =3D=3D 0) { + /* nop */ + return true; + } + if (a->rt =3D=3D 0) { + tcg_gen_movi_i64(cpu_gpr[a->rd], 0); + tcg_gen_movi_i64(cpu_gpr_hi[a->rd], 0); + return true; + } + + ax =3D tcg_temp_new_i64(); + + /* Lower half */ + tcg_gen_mov_i64(ax, cpu_gpr[a->rt]); + if (a->rd !=3D a->rt) { + tcg_gen_mov_i64(cpu_gpr[a->rd], cpu_gpr[a->rt]); + } + tcg_gen_deposit_i64(cpu_gpr[a->rd], cpu_gpr[a->rd], ax, 32, 16); + tcg_gen_shri_i64(ax, ax, 32); + tcg_gen_deposit_i64(cpu_gpr[a->rd], cpu_gpr[a->rd], ax, 0, 16); + + /* Upper half */ + tcg_gen_mov_i64(ax, cpu_gpr_hi[a->rt]); + if (a->rd !=3D a->rt) { + tcg_gen_mov_i64(cpu_gpr_hi[a->rd], cpu_gpr_hi[a->rt]); + } + tcg_gen_deposit_i64(cpu_gpr_hi[a->rd], cpu_gpr_hi[a->rd], ax, 32, 16); + tcg_gen_shri_i64(ax, ax, 32); + tcg_gen_deposit_i64(cpu_gpr_hi[a->rd], cpu_gpr_hi[a->rd], ax, 0, 16); + + tcg_temp_free(ax); + + return true; +} + +/* Parallel Exchange Even Word */ +static bool trans_PEXEW(DisasContext *ctx, arg_rtype *a) +{ + TCGv_i64 ah, al; + + if (a->rd =3D=3D 0) { + /* nop */ + return true; + } + if (a->rt =3D=3D 0) { + tcg_gen_movi_i64(cpu_gpr[a->rd], 0); + tcg_gen_movi_i64(cpu_gpr_hi[a->rd], 0); + return true; + } + + ah =3D tcg_temp_new_i64(); + al =3D tcg_temp_new_i64(); + + gen_load_gpr(ah, a->rt); + gen_load_gpr_hi(al, a->rt); + + tcg_gen_deposit_i64(cpu_gpr[a->rd], ah, al, 0, 32); + tcg_gen_deposit_i64(cpu_gpr_hi[a->rd], al, ah, 0, 32); + + tcg_temp_free(al); + tcg_temp_free(ah); + + return true; +} --=20 2.26.2