From nobody Wed Nov 19 00:18:03 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.42 as permitted sender) client-ip=209.85.128.42; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f42.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1613325671; cv=none; d=zohomail.com; s=zohoarc; b=CTNmjhpP10ooM1kYhEvUduif+xVFPnpxKVNdrR+tQkuLJBnxvlZOsrutEVg4uvjLMjHvyXRGmnHmvxVnfvTcIAE8ZcGaje8m7BdIb1Gg+CFlwB5kcrsW38kMH5kqJ1vY22gujZ/eFwYkwC0VDSwO7mvTXl37alDRktJDxLtzI+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613325671; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bI06XcKqe7voqlmnN0Ni9BCHVcOL6c8u6SgLqvaJdHk=; b=VRd491d1RQkwmHnfPkfg41XPK1uPjppJ0Cg4Kl+7fjfR7QmTyY5ldkqfs82HMVzGCAaQX/6JSbDFIam6HJVRz/NLKHNtf/NxRNVtL1ebhcSmT5ZQIl+UITpXeumPUqk7q8mA0RbnTZytIalK6REBZ7K9MqDS1SN1nowGiFJhcG4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by mx.zohomail.com with SMTPS id 1613325671650219.51826921829434; Sun, 14 Feb 2021 10:01:11 -0800 (PST) Received: by mail-wm1-f42.google.com with SMTP id o15so4191373wmq.5 for ; Sun, 14 Feb 2021 10:01:11 -0800 (PST) Return-Path: Return-Path: Received: from localhost.localdomain (68.red-83-57-175.dynamicip.rima-tde.net. [83.57.175.68]) by smtp.gmail.com with ESMTPSA id t198sm12710979wmt.7.2021.02.14.10.01.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Feb 2021 10:01:09 -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=bI06XcKqe7voqlmnN0Ni9BCHVcOL6c8u6SgLqvaJdHk=; b=Zm7pmnLFU1Bwl4D7ELqV3AoaZFQZvr8I5WFqtHkXC6bEKZ1s55WzUpL8hfzZQB8gSV YqpBJJb+9GOkqvl7C41GLZcnh+h/YkKwLhSvkHAz6vEOMx/ZK7dF0yQgeZQVspPJR1X8 KOYisSUdOUssgVoTTzY9FHPrWABzxNVr+wbQNcFPWime5hvkOc/yaWQFWLHLjvIU0Fnu Kzm3W2yT29qzisZ5bzj53hkBrOG8fEzWrVdXyjm8yDHfdOmJKXnlEjHmzu6tnEXoPkyu mJ3S+0tNOd0rne0A7LXWB1n1UDounF6vA4kv2QGO9qakJOsHOy0WHUgjhkyLbcM6vLXm FMoQ== 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=bI06XcKqe7voqlmnN0Ni9BCHVcOL6c8u6SgLqvaJdHk=; b=Rs7WKy57hypZNTC/KqcNmFeD3X7XlgiWJYs+xdqlIiE93vcKMAt2eBXjRB1VkUiaa3 lldyv+mThwDUSTfpfI8/yL+8og9GQnAyDn+fsCsnSXsJ9Fxym8fID0MDcVKUvSLCnjCs R0zbsp+GumCCneRHiQcuEhmGm8VRLlj4buPVRUuIM7ZP/bnHOGT6FMd3kCLR0VhXPJb6 Fel6vEffpgWvhpVPTJbs86nFb9TEcHyoPWmcwe6eHNWQT9gv5MH9r7Q5W7VGLxqoMnNR q3l74fEMNpeXrXaPt2gtczzyvVq/HfZMZg9uSis6K0AaHEuJ9dEkMLylW7u7IbHlf8Zr HJPw== X-Gm-Message-State: AOAM533XcjAcmcE+pbx2aU06tEVltfK41Rs+PYozuMpojjjGZnbmOdPY jY+xSisg7nN6cH9fXw03+so= X-Google-Smtp-Source: ABdhPJwKfjnk7tT1zArmHlDM1zls0c8BFfsZytZCACcy6TBsJ0l9vqWIcHXYDrKHAapLFuNvGhTkSg== X-Received: by 2002:a7b:c08f:: with SMTP id r15mr10864259wmh.113.1613325670286; Sun, 14 Feb 2021 10:01:10 -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: Fredrik Noring , Laurent Vivier , Jiaxun Yang , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Maciej W. Rozycki" , Thomas Huth , Aurelien Jarno , Richard Henderson , Aleksandar Rikalo Subject: [RFC PATCH 23/42] target/mips/tx79: Introduce PEXE[HW] opcodes (Parallel Exchange Even) Date: Sun, 14 Feb 2021 18:58:53 +0100 Message-Id: <20210214175912.732946-24-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210214175912.732946-1-f4bug@amsat.org> References: <20210214175912.732946-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 --- 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 47d84c465a2..59451a043a4 100644 --- a/target/mips/tx79_translate.c +++ b/target/mips/tx79_translate.c @@ -683,3 +683,73 @@ static bool trans_PINTEH(DisasContext *ctx, arg_rtype = *a) =20 return true; } + +/* 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 halve */ + 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 halve */ + 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