From patchwork Thu Mar 7 14:41:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159851 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7524830jad; Thu, 7 Mar 2019 06:53:52 -0800 (PST) X-Google-Smtp-Source: APXvYqynDJBGO4FkAvLLXQP4qMFELFzeHPa6kr3C2tiobYuCeylYp6alNY0Uij76qDZXd1xB54CP X-Received: by 2002:a25:9346:: with SMTP id g6mr11153705ybo.259.1551970432459; Thu, 07 Mar 2019 06:53:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970432; cv=none; d=google.com; s=arc-20160816; b=SMV9d7kAcANEq7733CIKIw4uwo2t3ToExqXPq8Hbus/N1tcp4/xORJ9+9qkb3GMPGj W65UtCncSkhyH63kFmLb7UQHems6Vd5NaG/cnz2L3y+W9RrZXc65UlLQ06C9fOVeXLUD HNZUZez5WGOXyTWg2BMYaTH9CArxeruJj9LC0H1h7YUc4Y0OGdq6WcnNIJFM+B9Eu4lB IRnjU9ze9LXTmh+TU3WEmruuRzKIq5k8LG3u4sK99NN8C8FcryPOY+4VKWTsMgs4/w13 qSS9MKcivT+fcYYKkD/tawOyFISVqYzlnEKIQgXeRUdtzsJHphdda2lajQCe5WESs/L8 T//g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=37ktCQpRGHMwh3SS8bLpCtlekBpDfpNOSJlXfFv+Uhs=; b=AUduu0yQvHIBnfMpL5B7hbW6GlxPYC1tKJ6t9AU2saCyLupOVHb3iw54ttvnImpH4K KDma89JmpIRDo/cJTqwz1UD6IqS3q/xCg5fzEvQYjnq1bAQqDI9twE+6y20Tv2JVLGYn MI6Wf/L+Mt7D8XdXWA1Yy/r3vx6mC6dwx7pTyYw2qWitoN1LyzkoWoJORje3T4bHTSAN 1loSYxquO5gveE1GppMctk8+TWl+VgiPM1mJp3/fZk8FT0AjUey4sSVcVKNy9o4JC92g NN2sfveiy+k42UuNq/QtKaeVxWdswE0cYWsiikbPj3FbG1GA+Xn/aOXaQya+vyVCVBHF 16mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=SkHngYNB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x65si2846018ybb.400.2019.03.07.06.53.52 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:53:52 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=SkHngYNB; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53132 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uPA-0007m9-0h for patch@linaro.org; Thu, 07 Mar 2019 09:53:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49415) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDE-0006h6-Ec for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDD-0003Qy-9Z for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:32 -0500 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:33624) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDD-0003QK-2c for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:31 -0500 Received: by mail-pf1-x433.google.com with SMTP id i19so11590751pfd.0 for ; Thu, 07 Mar 2019 06:41:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=37ktCQpRGHMwh3SS8bLpCtlekBpDfpNOSJlXfFv+Uhs=; b=SkHngYNBBdLWgtZPNaCj4yLMLYrxO85YQlzOj91muJ2f/USaAw4vTvux8h2h3hRi8t oTp+J2FnMoo6/PPzGi8Qku2pf5oYdo+ls5vKs2e9YS9VceDlvrQvgRw62kI/doaBFONN MODo4siJ/nqBJkaHRJe2uwuYmYcu6g6NE/bkL7zlm4AMMl5ef2ByliHeB96cvEQFWBMZ 9ErY5WjMCDY3ZWF4xZfSZudHMoRoTNzMbfqZcuLvLpaSNo1tl0ww2pSZ8n+6NrYFYRad mXXOawJ/GC7cyRYnwo6TZ6GhG0WfBmpU+Vcs91541+iB5KAKiAw0CXRq0ezjW836baVR JnVw== 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; bh=37ktCQpRGHMwh3SS8bLpCtlekBpDfpNOSJlXfFv+Uhs=; b=LUJ+ikGyT+ROd6INGj0FhQtB7+LsYunfOY+iWN6uri7NlCusgl/OjrTLkcEkDtF+Z+ BaUFsv340k7Xq8QbTHo4ZMIgZquHVR4rLWON2fHwd9aaEc74fgkIwkXeeVhTk6fC1EnR gIYY0yNMQ+zOYcn/VgySpiqI6t4UJi4/0bCias5rtqeMK1ySkXeVi/rwKmhu3cyKWo9D fuDeQbp2ebCXtPiCTbRaXCFnPWG08SXc3rVFgLDAgI19QmqAeg59sr5TtTfFhM2jcIe1 AtvzQy/q4jo1g22A+c4h/785RuFfsfZegXoWPbFQp/UI+6sWSO4PE8xvsiXQP8uH/Ldj mbXQ== X-Gm-Message-State: APjAAAW2k4elzgrW+qlvSMZQ3fGMYaD5o+QpziAi2H1uX4YzSF5x3CT4 KVtZvIxOc0H3wLiFq9fjAXjyb+o4Tss= X-Received: by 2002:a65:468f:: with SMTP id h15mr11843335pgr.391.1551969689642; Thu, 07 Mar 2019 06:41:29 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:18 -0800 Message-Id: <20190307144126.31847-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::433 Subject: [Qemu-devel] [PATCH 1/9] tcg: Implement tcg_gen_extract2_{i32, i64} X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: David Hildenbrand Will be helpful for s390x. Input 128 bit and output 64 bit only, which is sufficient for now. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand Message-Id: <20190225154204.26751-1-david@redhat.com> [rth: Add matching tcg_gen_extract2_i32.] Signed-off-by: Richard Henderson --- tcg/tcg-op.h | 6 ++++++ tcg/tcg-op.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) -- 2.17.2 Reviewed-by: Philippe Mathieu-Daudé diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h index d3e51b15af..1f1824c30a 100644 --- a/tcg/tcg-op.h +++ b/tcg/tcg-op.h @@ -308,6 +308,8 @@ void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); +void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, + unsigned int ofs); void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLabel *); void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLabel *); void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, @@ -501,6 +503,8 @@ void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); +void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, + unsigned int ofs); void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLabel *); void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLabel *); void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, @@ -1068,6 +1072,7 @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset, TCGType t); #define tcg_gen_deposit_z_tl tcg_gen_deposit_z_i64 #define tcg_gen_extract_tl tcg_gen_extract_i64 #define tcg_gen_sextract_tl tcg_gen_sextract_i64 +#define tcg_gen_extract2_tl tcg_gen_extract2_i64 #define tcg_const_tl tcg_const_i64 #define tcg_const_local_tl tcg_const_local_i64 #define tcg_gen_movcond_tl tcg_gen_movcond_i64 @@ -1178,6 +1183,7 @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset, TCGType t); #define tcg_gen_deposit_z_tl tcg_gen_deposit_z_i32 #define tcg_gen_extract_tl tcg_gen_extract_i32 #define tcg_gen_sextract_tl tcg_gen_sextract_i32 +#define tcg_gen_extract2_tl tcg_gen_extract2_i32 #define tcg_const_tl tcg_const_i32 #define tcg_const_local_tl tcg_const_local_i32 #define tcg_gen_movcond_tl tcg_gen_movcond_i32 diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1bd7ef24af..7c56c92c8e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -809,6 +809,28 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, tcg_gen_sari_i32(ret, ret, 32 - len); } +/* + * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. + * Unlike tcg_gen_extract_i32 above, len is fixed at 32. + */ +void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, + unsigned int ofs) +{ + tcg_debug_assert(ofs <= 32); + if (ofs == 0) { + tcg_gen_mov_i32(ret, al); + } else if (ofs == 32) { + tcg_gen_mov_i32(ret, ah); + } else if (al == ah) { + tcg_gen_rotri_i32(ret, al, ofs); + } else { + TCGv_i32 t0 = tcg_temp_new_i32(); + tcg_gen_shri_i32(t0, al, ofs); + tcg_gen_deposit_i32(ret, t0, ah, 32 - ofs, ofs); + tcg_temp_free_i32(t0); + } +} + void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2) { @@ -2297,6 +2319,28 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, tcg_gen_sari_i64(ret, ret, 64 - len); } +/* + * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. + * Unlike tcg_gen_extract_i64 above, len is fixed at 64. + */ +void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, + unsigned int ofs) +{ + tcg_debug_assert(ofs <= 64); + if (ofs == 0) { + tcg_gen_mov_i64(ret, al); + } else if (ofs == 64) { + tcg_gen_mov_i64(ret, ah); + } else if (al == ah) { + tcg_gen_rotri_i64(ret, al, ofs); + } else { + TCGv_i64 t0 = tcg_temp_new_i64(); + tcg_gen_shri_i64(t0, al, ofs); + tcg_gen_deposit_i64(ret, t0, ah, 64 - ofs, ofs); + tcg_temp_free_i64(t0); + } +} + void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2) { From patchwork Thu Mar 7 14:41:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159847 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7516307jad; Thu, 7 Mar 2019 06:45:27 -0800 (PST) X-Google-Smtp-Source: APXvYqw37ajZMh6W1najem8I2K30zraFMWno6nA4rBUZ+A2a3GTpjHGBCgkgg1Ghb2qaGY2Zuif1 X-Received: by 2002:a25:4254:: with SMTP id p81mr11671929yba.178.1551969927894; Thu, 07 Mar 2019 06:45:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551969927; cv=none; d=google.com; s=arc-20160816; b=jgrX7/0KXPz1SZq5G0EmcxIdlIzqwiH6m8QZX3djTqzfuur+dExInJJOvTd1I9BscA oW/CgYvEV94HBGWpBwWP8SfbNaQCTU54+UTj9Y4P1NkVIrk0+1BYJEu6e5aUyltS9nAj V+WriDTmvdU+Fxl9zeB7RFBetpuKwF73+KXRm01yt59+cuQdLpNgAslkH2e9Jg0Srt+T 4FEiDGc4Bl3z4KtrefpMKsBK3WMYDm6BIHe4OVz5w+u8+42MzZSinixo+r4Y5lwOMPey gbaCPCKOGseLvA5znGYVakczfCKDNdY3GPAnsLA0+hbgO/MP+sgn9YWfcMYmKFJffiH2 DtAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=o6bP9RyJpK3n6eF+vtesZCG1RjtbtDQdoMWCh8VSRuc=; b=P58uqo3jUcFXHI3HtFeAL5JK0C42aFwbhjDOysLV77WnABia7VObAO1sJTEy4TOkSG rdAXvneRvUayhD1yFEVQ7Oi3z1tQNIHEI+PQbiNErjeBk1sjcz6G066Hhf2P4jg3Sfug e37puTYA0tGmV3nbq580XlR8wRMN0QW1AEVLWhejNvzKo0fqS8UQEU1e1ZWEC5Xw9Qc/ k938JissPR7Qj0XfJVmUxi5QcWmfFjyEb1mjC/XotZe6W9Gnb9B+kWPKD6rnOiUvEAoq H8I5CYFA35DLL7vB6ErvfeiotI7Ycq/K13KwabsuhynmOpPMHbM6vgXBRsOqUDuQ68gb YKsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=qDxZpJkD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id y84si2755604ywa.431.2019.03.07.06.45.27 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:45:27 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=qDxZpJkD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:52991 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uH1-0001Z2-9Z for patch@linaro.org; Thu, 07 Mar 2019 09:45:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDG-0006j1-Bz for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDE-0003SN-LB for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:34 -0500 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:37595) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDE-0003RG-5f for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:32 -0500 Received: by mail-pg1-x544.google.com with SMTP id q206so11421863pgq.4 for ; Thu, 07 Mar 2019 06:41:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=o6bP9RyJpK3n6eF+vtesZCG1RjtbtDQdoMWCh8VSRuc=; b=qDxZpJkDtYVcXXSpvWk31mxevLk0YqQgxyvTPlQEqPHZVUr3MrRFNaNVjbd7F299j6 r9l1MWgZLhNpvYq/27Fbh2voFKuk2WVa0P+DdPo1Myo8sEB1s7BClI9Apw2Fd3/g+Rg4 HcxHiJqscfMtqRmGucsDPUmDAvU2xo4EzvnVqMxORqL3VDWLRBbOScFaGHIYqaPz50oQ Q65WLzUeufXW4SzOPea4bHhHrv/QDqgVUoy8kxiG1OsYGRdh9aY/+JmiZxrGMIxsBH/I A7fZh3oPNTv0j1dTIrgCZ2L0+63uXNUHNuReJWl096WVSomywL73L6t2TmSO/yP7FaLl K8ow== 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; bh=o6bP9RyJpK3n6eF+vtesZCG1RjtbtDQdoMWCh8VSRuc=; b=n6vcw0GDQ3p0ASC9HDg5IpxFheFRgUvrbkSdGffVyAAKEM38XBkQnLQN3lJo5DjaLZ 55Ky0mIWVBadZm/k/7EU3vW34kUVJNVP604PEVn0uFxxotBEpwBoTxq9j4ZBXNO0VqW5 SU0Aes19Hi1vDizRl+acesypJ8G1mBQ2PJLtP2GAiBwoxIKurSlFxIrij6d1+xC0XKcj 2vDsXD4Tywnmmcxguk6DHOkI0NMC9qhL0YCYehiUNfQNLnePMpS5hPNhgN2nRvToQzrT y2Gi2Mok4/vh1DTwJMNSjECfBLpGtk62uXBnj7iukzZHzqhdtoASnSxY/IA/kin6W/3/ Bhrw== X-Gm-Message-State: APjAAAXpPM+/D4KDCmeDJMPziY32HU/nl4SyiEYVJ8+p0/3xmzXAe14n FAHBFl6Q7RLjCwTOtBp2kVncGB1T0Kc= X-Received: by 2002:a62:4754:: with SMTP id u81mr13278630pfa.66.1551969690721; Thu, 07 Mar 2019 06:41:30 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:19 -0800 Message-Id: <20190307144126.31847-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH 2/9] tcg: Add INDEX_op_extract2_{i32,i64} X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This will let backends implement the double-word shift operation. Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target.h | 2 ++ tcg/arm/tcg-target.h | 1 + tcg/i386/tcg-target.h | 2 ++ tcg/mips/tcg-target.h | 2 ++ tcg/ppc/tcg-target.h | 2 ++ tcg/riscv/tcg-target.h | 2 ++ tcg/s390/tcg-target.h | 2 ++ tcg/sparc/tcg-target.h | 2 ++ tcg/tcg-opc.h | 2 ++ tcg/tcg.h | 1 + tcg/tci/tcg-target.h | 2 ++ tcg/optimize.c | 10 ++++++++++ tcg/tcg-op.c | 4 ++++ tcg/tcg.c | 4 ++++ tcg/README | 5 +++++ 15 files changed, 43 insertions(+) -- 2.17.2 Reviewed-by: David Hildenbrand diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h index 2d93cf404e..6600a54a02 100644 --- a/tcg/aarch64/tcg-target.h +++ b/tcg/aarch64/tcg-target.h @@ -77,6 +77,7 @@ typedef enum { #define TCG_TARGET_HAS_deposit_i32 1 #define TCG_TARGET_HAS_extract_i32 1 #define TCG_TARGET_HAS_sextract_i32 1 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 @@ -113,6 +114,7 @@ typedef enum { #define TCG_TARGET_HAS_deposit_i64 1 #define TCG_TARGET_HAS_extract_i64 1 #define TCG_TARGET_HAS_sextract_i64 1 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h index 16172f73a3..4ee6c98958 100644 --- a/tcg/arm/tcg-target.h +++ b/tcg/arm/tcg-target.h @@ -116,6 +116,7 @@ extern bool use_idiv_instructions; #define TCG_TARGET_HAS_deposit_i32 use_armv7_instructions #define TCG_TARGET_HAS_extract_i32 use_armv7_instructions #define TCG_TARGET_HAS_sextract_i32 use_armv7_instructions +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_mulu2_i32 1 #define TCG_TARGET_HAS_muls2_i32 1 diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 7995fe3eab..2c58eaa9ed 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -124,6 +124,7 @@ extern bool have_avx2; #define TCG_TARGET_HAS_deposit_i32 1 #define TCG_TARGET_HAS_extract_i32 1 #define TCG_TARGET_HAS_sextract_i32 1 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 @@ -162,6 +163,7 @@ extern bool have_avx2; #define TCG_TARGET_HAS_deposit_i64 1 #define TCG_TARGET_HAS_extract_i64 1 #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h index 5cb8672470..c6b091d849 100644 --- a/tcg/mips/tcg-target.h +++ b/tcg/mips/tcg-target.h @@ -162,6 +162,7 @@ extern bool use_mips32r2_instructions; #define TCG_TARGET_HAS_deposit_i32 use_mips32r2_instructions #define TCG_TARGET_HAS_extract_i32 use_mips32r2_instructions #define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_ext8s_i32 use_mips32r2_instructions #define TCG_TARGET_HAS_ext16s_i32 use_mips32r2_instructions #define TCG_TARGET_HAS_rot_i32 use_mips32r2_instructions @@ -177,6 +178,7 @@ extern bool use_mips32r2_instructions; #define TCG_TARGET_HAS_deposit_i64 use_mips32r2_instructions #define TCG_TARGET_HAS_extract_i64 use_mips32r2_instructions #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_ext8s_i64 use_mips32r2_instructions #define TCG_TARGET_HAS_ext16s_i64 use_mips32r2_instructions #define TCG_TARGET_HAS_rot_i64 use_mips32r2_instructions diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h index 52c1bb04b1..7627fb62d3 100644 --- a/tcg/ppc/tcg-target.h +++ b/tcg/ppc/tcg-target.h @@ -77,6 +77,7 @@ extern bool have_isa_3_00; #define TCG_TARGET_HAS_deposit_i32 1 #define TCG_TARGET_HAS_extract_i32 1 #define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_mulu2_i32 0 #define TCG_TARGET_HAS_muls2_i32 0 @@ -115,6 +116,7 @@ extern bool have_isa_3_00; #define TCG_TARGET_HAS_deposit_i64 1 #define TCG_TARGET_HAS_extract_i64 1 #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/riscv/tcg-target.h b/tcg/riscv/tcg-target.h index 60918cacb4..032439d806 100644 --- a/tcg/riscv/tcg-target.h +++ b/tcg/riscv/tcg-target.h @@ -93,6 +93,7 @@ typedef enum { #define TCG_TARGET_HAS_deposit_i32 0 #define TCG_TARGET_HAS_extract_i32 0 #define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 #define TCG_TARGET_HAS_mulu2_i32 0 @@ -128,6 +129,7 @@ typedef enum { #define TCG_TARGET_HAS_deposit_i64 0 #define TCG_TARGET_HAS_extract_i64 0 #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_extrl_i64_i32 1 #define TCG_TARGET_HAS_extrh_i64_i32 1 #define TCG_TARGET_HAS_ext8s_i64 1 diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h index 853ed6e7aa..07accabbd1 100644 --- a/tcg/s390/tcg-target.h +++ b/tcg/s390/tcg-target.h @@ -85,6 +85,7 @@ extern uint64_t s390_facilities; #define TCG_TARGET_HAS_deposit_i32 (s390_facilities & FACILITY_GEN_INST_EXT) #define TCG_TARGET_HAS_extract_i32 (s390_facilities & FACILITY_GEN_INST_EXT) #define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 @@ -121,6 +122,7 @@ extern uint64_t s390_facilities; #define TCG_TARGET_HAS_deposit_i64 (s390_facilities & FACILITY_GEN_INST_EXT) #define TCG_TARGET_HAS_extract_i64 (s390_facilities & FACILITY_GEN_INST_EXT) #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h index a0ed2a3342..633841ebf2 100644 --- a/tcg/sparc/tcg-target.h +++ b/tcg/sparc/tcg-target.h @@ -116,6 +116,7 @@ extern bool use_vis3_instructions; #define TCG_TARGET_HAS_deposit_i32 0 #define TCG_TARGET_HAS_extract_i32 0 #define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 @@ -153,6 +154,7 @@ extern bool use_vis3_instructions; #define TCG_TARGET_HAS_deposit_i64 0 #define TCG_TARGET_HAS_extract_i64 0 #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h index 4e0238ad1a..1bad6e4208 100644 --- a/tcg/tcg-opc.h +++ b/tcg/tcg-opc.h @@ -79,6 +79,7 @@ DEF(rotr_i32, 1, 2, 0, IMPL(TCG_TARGET_HAS_rot_i32)) DEF(deposit_i32, 1, 2, 2, IMPL(TCG_TARGET_HAS_deposit_i32)) DEF(extract_i32, 1, 1, 2, IMPL(TCG_TARGET_HAS_extract_i32)) DEF(sextract_i32, 1, 1, 2, IMPL(TCG_TARGET_HAS_sextract_i32)) +DEF(extract2_i32, 1, 2, 1, IMPL(TCG_TARGET_HAS_extract2_i32)) DEF(brcond_i32, 0, 2, 2, TCG_OPF_BB_END) @@ -146,6 +147,7 @@ DEF(rotr_i64, 1, 2, 0, IMPL64 | IMPL(TCG_TARGET_HAS_rot_i64)) DEF(deposit_i64, 1, 2, 2, IMPL64 | IMPL(TCG_TARGET_HAS_deposit_i64)) DEF(extract_i64, 1, 1, 2, IMPL64 | IMPL(TCG_TARGET_HAS_extract_i64)) DEF(sextract_i64, 1, 1, 2, IMPL64 | IMPL(TCG_TARGET_HAS_sextract_i64)) +DEF(extract2_i64, 1, 2, 1, IMPL64 | IMPL(TCG_TARGET_HAS_extract2_i64)) /* size changing ops */ DEF(ext_i32_i64, 1, 1, 0, IMPL64) diff --git a/tcg/tcg.h b/tcg/tcg.h index 32b7cf3489..7b1c15b40b 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -125,6 +125,7 @@ typedef uint64_t TCGRegSet; #define TCG_TARGET_HAS_deposit_i64 0 #define TCG_TARGET_HAS_extract_i64 0 #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_movcond_i64 0 #define TCG_TARGET_HAS_add2_i64 0 #define TCG_TARGET_HAS_sub2_i64 0 diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h index 086f34e69a..8b90ab71cb 100644 --- a/tcg/tci/tcg-target.h +++ b/tcg/tci/tcg-target.h @@ -71,6 +71,7 @@ #define TCG_TARGET_HAS_deposit_i32 1 #define TCG_TARGET_HAS_extract_i32 0 #define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_extract2_i32 0 #define TCG_TARGET_HAS_eqv_i32 0 #define TCG_TARGET_HAS_nand_i32 0 #define TCG_TARGET_HAS_nor_i32 0 @@ -97,6 +98,7 @@ #define TCG_TARGET_HAS_deposit_i64 1 #define TCG_TARGET_HAS_extract_i64 0 #define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extract2_i64 0 #define TCG_TARGET_HAS_div_i64 0 #define TCG_TARGET_HAS_rem_i64 0 #define TCG_TARGET_HAS_ext8s_i64 1 diff --git a/tcg/optimize.c b/tcg/optimize.c index 01e80c3e46..a5f50a0608 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1202,6 +1202,16 @@ void tcg_optimize(TCGContext *s) } goto do_default; + CASE_OP_32_64(extract2): + if (arg_is_const(op->args[1]) && arg_is_const(op->args[2])) { + TCGArg v1 = arg_info(op->args[1])->val; + TCGArg v2 = arg_info(op->args[2])->val; + tmp = (v1 >> op->args[3]) | (v2 << (64 - op->args[3])); + tcg_opt_gen_movi(s, op, op->args[0], tmp); + break; + } + goto do_default; + CASE_OP_32_64(setcond): tmp = do_constant_folding_cond(opc, op->args[1], op->args[2], op->args[3]); diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 7c56c92c8e..deacc63e3b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -823,6 +823,8 @@ void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, tcg_gen_mov_i32(ret, ah); } else if (al == ah) { tcg_gen_rotri_i32(ret, al, ofs); + } else if (TCG_TARGET_HAS_extract2_i32) { + tcg_gen_op4i_i32(INDEX_op_extract2_i32, ret, al, ah, ofs); } else { TCGv_i32 t0 = tcg_temp_new_i32(); tcg_gen_shri_i32(t0, al, ofs); @@ -2333,6 +2335,8 @@ void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, tcg_gen_mov_i64(ret, ah); } else if (al == ah) { tcg_gen_rotri_i64(ret, al, ofs); + } else if (TCG_TARGET_HAS_extract2_i64) { + tcg_gen_op4i_i64(INDEX_op_extract2_i64, ret, al, ah, ofs); } else { TCGv_i64 t0 = tcg_temp_new_i64(); tcg_gen_shri_i64(t0, al, ofs); diff --git a/tcg/tcg.c b/tcg/tcg.c index 9b2bf7f439..ade6050982 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1425,6 +1425,8 @@ bool tcg_op_supported(TCGOpcode op) return TCG_TARGET_HAS_extract_i32; case INDEX_op_sextract_i32: return TCG_TARGET_HAS_sextract_i32; + case INDEX_op_extract2_i32: + return TCG_TARGET_HAS_extract2_i32; case INDEX_op_add2_i32: return TCG_TARGET_HAS_add2_i32; case INDEX_op_sub2_i32: @@ -1522,6 +1524,8 @@ bool tcg_op_supported(TCGOpcode op) return TCG_TARGET_HAS_extract_i64; case INDEX_op_sextract_i64: return TCG_TARGET_HAS_sextract_i64; + case INDEX_op_extract2_i64: + return TCG_TARGET_HAS_extract2_i64; case INDEX_op_extrl_i64_i32: return TCG_TARGET_HAS_extrl_i64_i32; case INDEX_op_extrh_i64_i32: diff --git a/tcg/README b/tcg/README index 603f4df659..ddabf33017 100644 --- a/tcg/README +++ b/tcg/README @@ -343,6 +343,11 @@ at bit 8. This operation would be equivalent to (using an arithmetic right shift). +* extract2_i64 dest, t1, t2, pos + +Extract a 64-bit quantity from the concatenation of t2:t1, +beginning at pos. + * extrl_i64_i32 t0, t1 For 64-bit hosts only, extract the low 32-bits of input T1 and place it From patchwork Thu Mar 7 14:41:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159862 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7557063jad; Thu, 7 Mar 2019 07:20:34 -0800 (PST) X-Google-Smtp-Source: APXvYqzF3CqHRTO4Zc3lLW9D/5OewCjqy6iFFfFa3pgqtaO+jXZ48qGE8D7a/T0ut724hyHjCJFs X-Received: by 2002:a25:61c8:: with SMTP id v191mr11489099ybb.489.1551972034887; Thu, 07 Mar 2019 07:20:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551972034; cv=none; d=google.com; s=arc-20160816; b=PRWwOCKFv89RtCrogW4lrjxjLn+FwquzuOt2bPPVmw/UlSi2IpExAY6IhI6KtkEBxo gknKZ8Q9rktY5xb+jTAL1AsT0mH2zLcrA6LSGRXW7dg8IpOOnG+0cT4uQOudB5aaL1Mp nH/lBiHVf3BQerKjrDjJD0cwfTIkmG5yWeMmKFGqofX4zFrnxqMnHxwFuc6VwBPz2pxF AMwKGqEtQARbQY8fqpd5Noeu2gn/NWgnVINpp++p5gVeEewhgg1GkP/IAG5NsiJyCYro FiAzpk3M4rSBw5DFYKR7UN8ufp7qbbmyRCNzxyFOve/A4QryZYYEbMZ5owREjDAJY041 NrmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=cUHnwenzYQtQY1IbWPFjUbKRuUhc078b1/cRTpEjyFA=; b=0GRn1Dgsm3ovOB7GKI/Nsv3aQr9B1NPmL8NwEdisv8zc4hRgGSIJFNwMp3V/xVhZ84 0p00NhNhNJNDSkPoV7alBmez///GqRqnITeEsZMTNkL9W3XqG9jxR7GK+gSGilE5aU7K 8ES/vunlMHWJ3ZbpZK/QBdtAnhhXrz/Lq1N4lr+PYFavxLV3haZR8dm33avkYLL5uLSn tHNcLNrT0eZV7eeju/R5XQ/1raYNpH4r/NVZwgVVMnhWCvxOy6xaO6Q00rYCAU6umHkJ aSdNSCSqy1fzaQUZ0YX3jgGe1vWyV2WIgUEbCysFR16IRjfaajW7y4OzhyrFOs0m4VGV 5ykg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=p7wsAO0k; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x1si2945273ybf.441.2019.03.07.07.20.34 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 07:20:34 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=p7wsAO0k; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53606 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1up0-0005RN-9g for patch@linaro.org; Thu, 07 Mar 2019 10:20:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49450) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDG-0006ix-BH for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDF-0003T2-CE for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:34 -0500 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:36065) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDF-0003SU-5S for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:33 -0500 Received: by mail-pg1-x541.google.com with SMTP id r124so11423539pgr.3 for ; Thu, 07 Mar 2019 06:41:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cUHnwenzYQtQY1IbWPFjUbKRuUhc078b1/cRTpEjyFA=; b=p7wsAO0kTCgpXjAWbeacVRcEZC2oFE6Cmaqg7Nmb+ULH3efGYCUUBBKhM7egfIjc+b YReF5aKhMSBnYOHrzWjb8aEv7i4210CNa58ma6BNbpZN85voJfaPxfr8dDe7fJSLRFG5 7HybCf42tQTwfqiFrwI9TvoN8nPr3pkbO6jgmxzeVAzXAfMAdjEv9v0WtkYbnM8rD96L FvW31ejr2fwS98uD2B/lp8wH5fCX/gPYEp04JqQDLq8WiLjP1H04uPhky2t4YCWFyQMs N4lEZPI6Z38w2LwunhszxRMx/ddZeUGz2mr01Nb2ronAy5TU7Ra3YptASEjGFR/3IofG XI/Q== 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; bh=cUHnwenzYQtQY1IbWPFjUbKRuUhc078b1/cRTpEjyFA=; b=JLngBTTBoEkUrgEvogC/+SI0DKQSclnBDKG1ks66m4txLPBBf7M2ckkNj7xsWtzN5j vPdHDm1GTl+pGlbxSMLSeS/ERMIFMs3b8p54uUpOt3hF/Lg9GlMXvxFX8uk1jhp948MD 1qEGRFhOkQGyYNqWtoZVtXjmiNiVs8LByjnQiQIw2wrWe1x3Ku+mR4WbNxY8OQHGDJK6 S85mghPWF/A1ZwR2/tEjXl/M0PZ6PqTbF/RjBEBEvzX89Cjak+1asjUXgpeW6c5g8ft2 U0WSA5N+nKbM7oBTmx3Ci3cZYfQLDEQ5JiE9G229EdI2UVOHq62zRluGI5JRaqBtchPY t1aA== X-Gm-Message-State: APjAAAWOovAJIMe3di+ixt8fHM0/1T+78FqavaSoxw3i0aEyqDzt882q yVh5/ND1jU+qEu0aUtObmDKGP6q3/rI= X-Received: by 2002:a63:ed0b:: with SMTP id d11mr11637455pgi.435.1551969691953; Thu, 07 Mar 2019 06:41:31 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:20 -0800 Message-Id: <20190307144126.31847-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::541 Subject: [Qemu-devel] [PATCH 3/9] tcg: Use extract2 in tcg_gen_shifti_i64 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) -- 2.17.2 diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index deacc63e3b..34e0dbc6e0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1355,31 +1355,32 @@ static inline void tcg_gen_shifti_i64(TCGv_i64 ret, TCGv_i64 arg1, tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_LOW(arg1), c); tcg_gen_movi_i32(TCGV_LOW(ret), 0); } - } else { - TCGv_i32 t0, t1; - - t0 = tcg_temp_new_i32(); - t1 = tcg_temp_new_i32(); - if (right) { - tcg_gen_shli_i32(t0, TCGV_HIGH(arg1), 32 - c); - if (arith) { - tcg_gen_sari_i32(t1, TCGV_HIGH(arg1), c); - } else { - tcg_gen_shri_i32(t1, TCGV_HIGH(arg1), c); - } - tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_LOW(arg1), c); - tcg_gen_or_i32(TCGV_LOW(ret), TCGV_LOW(ret), t0); - tcg_gen_mov_i32(TCGV_HIGH(ret), t1); + } else if (right) { + if (TCG_TARGET_HAS_extract2_i32) { + tcg_gen_extract2_i32(TCGV_LOW(ret), TCGV_LOW(arg1), + TCGV_HIGH(arg1), c); } else { - tcg_gen_shri_i32(t0, TCGV_LOW(arg1), 32 - c); - /* Note: ret can be the same as arg1, so we use t1 */ - tcg_gen_shli_i32(t1, TCGV_LOW(arg1), c); - tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); - tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(ret), t0); - tcg_gen_mov_i32(TCGV_LOW(ret), t1); + tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_LOW(arg1), c); + tcg_gen_deposit_i32(TCGV_LOW(ret), TCGV_LOW(ret), + TCGV_HIGH(arg1), 32 - c, c); } - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); + if (arith) { + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); + } else { + tcg_gen_shri_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); + } + } else { + if (TCG_TARGET_HAS_extract2_i32) { + tcg_gen_extract2_i32(TCGV_HIGH(ret), TCGV_LOW(arg1), + TCGV_HIGH(arg1), 32 - c); + } else { + TCGv_i32 t0 = tcg_temp_new_i32(); + tcg_gen_shri_i32(t0, TCGV_LOW(arg1), 32 - c); + tcg_gen_deposit_i32(TCGV_HIGH(ret), t0, + TCGV_HIGH(arg1), c, 32 - c); + tcg_temp_free_i32(t0); + } + tcg_gen_shli_i32(TCGV_LOW(ret), TCGV_LOW(arg1), c); } } From patchwork Thu Mar 7 14:41:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159850 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7523527jad; Thu, 7 Mar 2019 06:52:35 -0800 (PST) X-Google-Smtp-Source: APXvYqzH5VT5xdDZgPI7Bc8QDbQDMszIVC95/2iHsWXVFz4bAktRrkBzEU6Yuh2rt5s3KpcheQuz X-Received: by 2002:a25:bfc1:: with SMTP id q1mr7446798ybm.135.1551970355563; Thu, 07 Mar 2019 06:52:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970355; cv=none; d=google.com; s=arc-20160816; b=MDcRtVGtZnO9goukuIvV+XAPagXv4Q6FvZyCiXEVxHE6wFtS2oJRlnjwsdpNs3lVHH oAqiQQ5+fj2bvXhOONZ31gNsZZ8GtfgQZ6sOFeS2LvP4uzhBpfpA7NuyWsfFb44zU+N6 m//Na3UkVmYQy3PpUOURE2r4PZ5fAPTTOns9yPXoammdGD3Btr+e66PUno5Fo+tGSy+K pPUuolAw+sEMR0+dXOEZFRo1ReUNWhkm558w5pbQapZ882cy4E6DttO3RU6st9zjLmO0 gOwURQweFjMuhVFnMUHhQkmZPg960Lb08it+DZ9wtp8tVxxb9EtS8JNcpAa6DxX7sJht 6ZjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=jIwc8Ul+d1IuyfgI8rDvhEncHi1wfHXduZoztXJbzO4=; b=Md9hQ3rgfuJxaJrfbka+vcdFqAX1TRWVd3HZFES37R+IW5RF7aWESlr3IdAAQ+KBbE QB6PxYkb1UrGVpagOVtQWZthTIWHPFmkaTwfbiLv68Qf+v8OtFOn7qIWf+8HEOm5iK5G 4xxsx70w9X/mSOgvweMKDxN65K53pu5L6jkY30RryvgTc8LGA0XJEF2kG+LJ705T372B fEqTaQ4QGGeJ5c84HVYUPWxcVzBD669BfxasEHzM0Z8JPzdCQw/80g6PR1/PAA12MJyY 1z19OHZtW4go6sh4Afyy+/pBv6LVYCEHuRb6spdl6oDNqeTZfwh0z9JsBmrIu/u1dGnc qn5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=pRNwimGO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f16si2779548ybn.24.2019.03.07.06.52.35 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:52:35 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=pRNwimGO; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53103 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uNv-0006Wy-2r for patch@linaro.org; Thu, 07 Mar 2019 09:52:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDH-0006m5-G3 for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDG-0003V4-IX for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:35 -0500 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:40378) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDG-0003TJ-BQ for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:34 -0500 Received: by mail-pg1-x544.google.com with SMTP id u9so11414140pgo.7 for ; Thu, 07 Mar 2019 06:41:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jIwc8Ul+d1IuyfgI8rDvhEncHi1wfHXduZoztXJbzO4=; b=pRNwimGO8HXYv5smjiJ9GXElzjGmJnEeai80bJWS5JrH385TER3pvl116M9CUTtYU9 yMpYfTYnmR7oWcz0bvpL4sIAHUq9GZBlp80TrMCb8VeevhsypOyMLaQGaZSd7wLO4tBq XrrhMB6mXHV/eLWFLlijKDHrC+nB2h3yNl405C3ndpDwhDfXIXLPKH0bmxE4aq3a6YOJ AYEz4iwb49oUBexppOEH6qcKS7uufQChYX/HRmS9knajNaGQ0TkWmkrHphrXBrB40Wf4 ivrXx7OI6Tk2uujnEpjlAAoRSS04mpzmC9BTY3kuDiquxLdmWjrcwGJi1s6vHdArHtRM Qbxg== 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; bh=jIwc8Ul+d1IuyfgI8rDvhEncHi1wfHXduZoztXJbzO4=; b=TiLjP1QXgv5CNfmIRBQhop1c9Taj5SBP+DMW/fJGR2rDfOkHooJqEePYVS1p5ivkMd /jRhm6TPi3347PwO2ZKggWEcB0gLxKl0UQ8yT3tY/np4x3Mixu6X7WXgqX2wARc8j/4U Iz6BIQd4eA5WkoMj6P6XehB9WSQ8ZU05SYEWAyWNGS8O+slONoVPNPhbwgtxydVWDaL5 qSf+g+K6xrFwVdWsXs/1GyMwDLs5vhEsi7ggzqDROG410HNvqa/AHIllwtzDSnomd33B VDWt9r4l5u8oTn2vjTEzphl8JHXYQVTwvUPuntLpVE8GtSpioV8OzxSWn80P50Ln18Ac s51Q== X-Gm-Message-State: APjAAAWHgGhEOi4sroBsUE3HVDe7VZxOYyomcM8Jxl2i4FXQ0wI84NNK VQxrnga+nFR6OUSIBlS+9Ovl91bPPt4= X-Received: by 2002:a17:902:aa87:: with SMTP id d7mr12805652plr.146.1551969693083; Thu, 07 Mar 2019 06:41:33 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:21 -0800 Message-Id: <20190307144126.31847-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH 4/9] tcg: Use extract2 in tcg_gen_deposit_{i32, i64} X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) -- 2.17.2 diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 34e0dbc6e0..caee80235e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -614,6 +614,18 @@ void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, mask = (1u << len) - 1; t1 = tcg_temp_new_i32(); + if (TCG_TARGET_HAS_extract2_i32) { + if (ofs + len == 32) { + tcg_gen_shli_i32(t1, arg1, len); + tcg_gen_extract2_i32(ret, t1, arg2, len); + goto done; + } + if (ofs == 0) { + tcg_gen_extract2_i32(ret, arg1, arg2, len); + tcg_gen_rotli_i32(ret, ret, len); + goto done; + } + } if (ofs + len < 32) { tcg_gen_andi_i32(t1, arg2, mask); tcg_gen_shli_i32(t1, t1, ofs); @@ -622,7 +634,7 @@ void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, } tcg_gen_andi_i32(ret, arg1, ~(mask << ofs)); tcg_gen_or_i32(ret, ret, t1); - + done: tcg_temp_free_i32(t1); } @@ -2027,6 +2039,18 @@ void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, mask = (1ull << len) - 1; t1 = tcg_temp_new_i64(); + if (TCG_TARGET_HAS_extract2_i64) { + if (ofs + len == 64) { + tcg_gen_shli_i64(t1, arg1, len); + tcg_gen_extract2_i64(ret, t1, arg2, len); + goto done; + } + if (ofs == 0) { + tcg_gen_extract2_i64(ret, arg1, arg2, len); + tcg_gen_rotli_i64(ret, ret, len); + goto done; + } + } if (ofs + len < 64) { tcg_gen_andi_i64(t1, arg2, mask); tcg_gen_shli_i64(t1, t1, ofs); @@ -2035,7 +2059,7 @@ void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, } tcg_gen_andi_i64(ret, arg1, ~(mask << ofs)); tcg_gen_or_i64(ret, ret, t1); - + done: tcg_temp_free_i64(t1); } From patchwork Thu Mar 7 14:41:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159852 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7525925jad; Thu, 7 Mar 2019 06:54:54 -0800 (PST) X-Google-Smtp-Source: APXvYqzMQb14bLaVXLtzoukkmO6irxdnsqWJTJCU+whInP/zUOuCExqK+U8I1+FJxwsHVigZEwrC X-Received: by 2002:a25:2005:: with SMTP id g5mr11719193ybg.54.1551970494937; Thu, 07 Mar 2019 06:54:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970494; cv=none; d=google.com; s=arc-20160816; b=WsSNEPOxi7LmQDnjv9KKNQ/dk/PdL5flAhtk8E9u3r3lk9o9cQXZ/a9YZPWIZQt7dz vI1VhQzECQCQaKuCuAAyUO4OmoANxVJNdOCcGkkrCCQ34NwcIkolu5bPEeaeQzWFs/dh MNzLFhAipdMDdUnbijqUL7irL/96mbG4HnYyL5+HlxWWQ56G5PwsiYMQNcO2v+jedKq1 q+WvRgDZzzl66LBj+RY3/n2jChVcwZNHJD6mIq7RBTGu/8PT2d5yiJMo7Ml1y+IRXXdl 6wEeHDHE0Cd0Q60JK31oyFQkKrksFO6VQzmEeS1SnMt+qvxIKfGqLu760+i23FX5gsZO rTSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=s0qTRbXmiKKgECm+6qdf0NYhapsmzFo3yJBCyUawoJ4=; b=vOkhIcMJwCTxPIe9z87V7OdEilJo1gAOrIE2XVBRLwUnXCsw9F3HpyJv1+yvN0+Wc+ DWscvmWL24LmlSztCfyHRqYVeeB1oRypqgoL2HbSZPKNcYg951GpRoceJqb3x4tx2reA 2w15FUSR7AnEpoIy4RCZoTG3rLKewH8RLLFXqNyGGehGfQzFNfIMNQNLcWp7yPITD+NG Gls6S1CxNXnRl5o73WsMh/V16vVRX7ilnId2SUIa1NkMkResNvfi69R6fvP4y62nE9Uv WHYzqVuW1zrKmSL9lE8yzTd19s7gjlu3O1b0D6CdpUIkT69lnSB+Dg9D99jqH7+ujXf0 piCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ukLjx2DZ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h62si2681153ywa.312.2019.03.07.06.54.54 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:54:54 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ukLjx2DZ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53136 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uQA-0000At-FO for patch@linaro.org; Thu, 07 Mar 2019 09:54:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49493) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDI-0006nU-MS for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDH-0003WP-Sb for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:36 -0500 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:33419) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDH-0003Ve-Ko for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:35 -0500 Received: by mail-pf1-x443.google.com with SMTP id i19so11590946pfd.0 for ; Thu, 07 Mar 2019 06:41:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=s0qTRbXmiKKgECm+6qdf0NYhapsmzFo3yJBCyUawoJ4=; b=ukLjx2DZyrDY/UgHJKXs1UxOl3wto3mXk2AMYf5zQgO5H9+nEJNNVgs7Od6UJTsJ9E G3UDqkQVzgkavmE6vWcaOX47I6ulRHwOdGhVYYqF3ri4hNga4Y4dfEMuxk5vhZz2Y8Xn vkEIH37Z/RK09sN9352NRME1m++2PEWGQ0J7Qatc52rC7AkidPp8pME2xGy7D++95B5v 3GU/VRFZerJdWYRaPxExCYtXzMRmPEmW0vdvJklIVzrxmeryfNCT+PLRL0kql5+ruPxx l8gkj9DuJ4Lte3miwQuE19jwkdgW+kjeiwAtBZGArS1LmTSZYLOauv5N/lqUlz/aHS0C lfPQ== 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; bh=s0qTRbXmiKKgECm+6qdf0NYhapsmzFo3yJBCyUawoJ4=; b=k+KBRAAQyx6HW6oM/PkzgkvqjKTBzxZYcNLZPwoxlPROcdPaogX0FT8uRp6sWd+z3y vofQm2zjJxQbGg/wBJEJE3GE4+SUOZ43Il1zfYXwK04wwb9Q9+ZLWQGqi+zTLvcTwia6 IrnzUpV27x1TXfZmOk/HPDIJgK/7qhGj0Fpoqlg7TN6te2zlI/E9HGG4Ai7quzNmw8K4 6KgDyZM2r8+tJTtuHYuc6FJY2F817WH78RNZ6znvz0FM8KhWeOdCTAzxJdNEeEqra98k 5MzqodSaX5OlXmLzAGKxSbEP5pG5JUEkhYGToG3BybHXFgMz+MR4zXJRZcEAGxx4Z7Ly 1bMg== X-Gm-Message-State: APjAAAWCxRAv8n3dLLp+jHrlOfoXb5fs2coPTF8x8PHoz23JgBKvSk02 R+hUn+XSRfRXyFOtm87K6r2PxLtRFSQ= X-Received: by 2002:a63:1616:: with SMTP id w22mr11618882pgl.200.1551969694258; Thu, 07 Mar 2019 06:41:34 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:22 -0800 Message-Id: <20190307144126.31847-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 Subject: [Qemu-devel] [PATCH 5/9] tcg/i386: Support INDEX_op_extract2_{i32, i64} X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.h | 4 ++-- tcg/i386/tcg-target.inc.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) -- 2.17.2 diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 2c58eaa9ed..241bf19413 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -124,7 +124,7 @@ extern bool have_avx2; #define TCG_TARGET_HAS_deposit_i32 1 #define TCG_TARGET_HAS_extract_i32 1 #define TCG_TARGET_HAS_sextract_i32 1 -#define TCG_TARGET_HAS_extract2_i32 0 +#define TCG_TARGET_HAS_extract2_i32 1 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 @@ -163,7 +163,7 @@ extern bool have_avx2; #define TCG_TARGET_HAS_deposit_i64 1 #define TCG_TARGET_HAS_extract_i64 1 #define TCG_TARGET_HAS_sextract_i64 0 -#define TCG_TARGET_HAS_extract2_i64 0 +#define TCG_TARGET_HAS_extract2_i64 1 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c index e0670e5098..1fa833840e 100644 --- a/tcg/i386/tcg-target.inc.c +++ b/tcg/i386/tcg-target.inc.c @@ -452,6 +452,7 @@ static inline int tcg_target_const_match(tcg_target_long val, TCGType type, #define OPC_SHUFPS (0xc6 | P_EXT) #define OPC_SHLX (0xf7 | P_EXT38 | P_DATA16) #define OPC_SHRX (0xf7 | P_EXT38 | P_SIMDF2) +#define OPC_SHRD_Ib (0xac | P_EXT) #define OPC_TESTL (0x85) #define OPC_TZCNT (0xbc | P_EXT | P_SIMDF3) #define OPC_UD2 (0x0b | P_EXT) @@ -2587,6 +2588,12 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc, } break; + OP_32_64(extract2): + /* Note that SHRD outputs to the r/m operand. */ + tcg_out_modrm(s, OPC_SHRD_Ib + rexw, a2, a0); + tcg_out8(s, args[3]); + break; + case INDEX_op_mb: tcg_out_mb(s, a0); break; @@ -2845,6 +2852,7 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) static const TCGTargetOpDef r_0 = { .args_ct_str = { "r", "0" } }; static const TCGTargetOpDef r_r_ri = { .args_ct_str = { "r", "r", "ri" } }; static const TCGTargetOpDef r_r_re = { .args_ct_str = { "r", "r", "re" } }; + static const TCGTargetOpDef r_0_r = { .args_ct_str = { "r", "0", "r" } }; static const TCGTargetOpDef r_0_re = { .args_ct_str = { "r", "0", "re" } }; static const TCGTargetOpDef r_0_ci = { .args_ct_str = { "r", "0", "ci" } }; static const TCGTargetOpDef r_L = { .args_ct_str = { "r", "L" } }; @@ -2970,6 +2978,9 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) case INDEX_op_ctpop_i32: case INDEX_op_ctpop_i64: return &r_r; + case INDEX_op_extract2_i32: + case INDEX_op_extract2_i64: + return &r_0_r; case INDEX_op_deposit_i32: case INDEX_op_deposit_i64: From patchwork Thu Mar 7 14:41:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159853 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7526336jad; Thu, 7 Mar 2019 06:55:15 -0800 (PST) X-Google-Smtp-Source: APXvYqxFllGR/gzX42jdg+KWYa1O1HBvyPER9ttRXDMSl2fSVmesgnXsYM1EmSHVxr/xNtapiS72 X-Received: by 2002:a0d:ca07:: with SMTP id m7mr10064935ywd.192.1551970515250; Thu, 07 Mar 2019 06:55:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970515; cv=none; d=google.com; s=arc-20160816; b=EVl5Xa9sZpP9l4mPnz2RagKcMmBRxjjXgwIEDrW4YWqr8k+N7SoUKN9Qe754b/0P+M kG1CAHGGjSGlSc7GHIEk4v9N8Mz1w+Y0Wc6+h2jOmPG5aoqpG+ZGf8x1K/arVBHeufqu D66Ruq+N3+e4luEUvjF4KvkeLpreN5G2ZXVBssAUjbHYsfjixULIz2uzkxrJ53boPUJb dhFq8Ht8Zy2UeoWByP3evww904iu6tVoOgvzTpBOKetSnRG5Fv9AorrOckYkzIpCP4qd odf8HbS8NWPT+h8/S/uOnBDI+uIcRUNFbBPUFF/TfHrmr7wQLBC9l+/1Z6FO23w4XDYH 3qWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=eu3UcP6XYcEcl5Ty9GSI2+W4Hww6Yf+5rGz/kG2iBME=; b=PDkNIMM78G1g9UlZrVmB1GCbBtUgR7GkkTjvKpMLhH+eisRbrfUa28a7xnTPh0mNDO 4FKuoV426BpQYs/PKehvLSkSVoMWrjJ10wRwvRCrx3HNvN3DYfO6JyLgmLOTd6FdJXZn 5z7hp7ZSilaXtcn2IoXAqPQOTI06CZuM1CFAFZz6MoVeTPlYSudOTGuGqTEJdzXXRro4 qKbnYe11rDivewc9nqtcFPL2fxazd2/UDt6rIxsGPYRfHdGxD7DMHLyeHeYJ1JnUgr4t 4ZjTrdp3BRX0Bgoe0OdnZWCg24/UqunnEMk5LiVl7IX6yXOoSKNOVRX948gaUmtzr2ZY iqkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Ul4DdExq; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id e1si2863512ybp.338.2019.03.07.06.55.15 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:55:15 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Ul4DdExq; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53154 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uQU-0001Bz-Qj for patch@linaro.org; Thu, 07 Mar 2019 09:55:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49508) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDJ-0006oe-Qo for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDI-0003XF-WE for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:37 -0500 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:39259) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDI-0003Wk-Oy for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:36 -0500 Received: by mail-pg1-x544.google.com with SMTP id h8so11414959pgp.6 for ; Thu, 07 Mar 2019 06:41:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=eu3UcP6XYcEcl5Ty9GSI2+W4Hww6Yf+5rGz/kG2iBME=; b=Ul4DdExqLJVgxo2SFABsdWSRA8W6xTZGHff8KB3Gd1mx7dK+XCe9FT321+Qahlw5At tunxOdPVLeph+Z0rgAv3EnegXB3KG+bDbIJy6Pp6BvpOt+BjXYFL4/JFw2YDyuVf6kg/ FlaI/PkS3CJ7h4OJXlv/hZ8X+5Kn0bTnxx6HrrDEH0oGxXkm+votZn4loRPKdXaX2gdD 2iR8nBl+JePlQDK12GCRTYpL84Xb36YTqoqf5OaEYfaC5pVCYO8hU6S5a3Jdywz5Ct4G HFuj5IUtMdVfbWlbYZxKXxPT8Y/VRTRjLRrN+XjSZoZcBnYgpEJ22pTLX27O4T1yPTmp tiog== 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; bh=eu3UcP6XYcEcl5Ty9GSI2+W4Hww6Yf+5rGz/kG2iBME=; b=RsKJXjJx3XiPsV7OCCSiDzB6h3BHTxT61EoPVxFxPZpNUS4AM/hA9zI8wMHqU1GKI5 e90DWo6zEqakoFsmJgLau0ZOOZMpNvtmffex7qzd7qwnHKaok5ZQwW5RMmuDC9Y05kb0 MP2dFtJ0PgaM7oChTQmelQCKQDiYbMyY7fClCt5f4sGGBURPCXXyJ92gH4oYlHvKU+QP KnIZ3DA2s+y0Ev7hYHVI9okOkbKaoiclS22KcvNuu+LRrrJtJC/QTfatqUxBF4OgUor5 ZxVSfbg02unBLCYI+HDs0EsO30SOSt2/ryn2dsy6Y7Judee75tgCcVOYq+Fsg59/92v0 s1mQ== X-Gm-Message-State: APjAAAUTNPuJaECRYxxgDapDfpOaoJpuOcK+TjiD2e1OojXFWM63M/wJ 30qdv9B/aQk5R6VjYynKitYE7QHxpHU= X-Received: by 2002:a62:ea0f:: with SMTP id t15mr13288137pfh.124.1551969695523; Thu, 07 Mar 2019 06:41:35 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:23 -0800 Message-Id: <20190307144126.31847-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH 6/9] tcg/arm: Support INDEX_op_extract2_i32 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- tcg/arm/tcg-target.h | 2 +- tcg/arm/tcg-target.inc.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) -- 2.17.2 Reviewed-by: Philippe Mathieu-Daudé diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h index 4ee6c98958..17e771374d 100644 --- a/tcg/arm/tcg-target.h +++ b/tcg/arm/tcg-target.h @@ -116,7 +116,7 @@ extern bool use_idiv_instructions; #define TCG_TARGET_HAS_deposit_i32 use_armv7_instructions #define TCG_TARGET_HAS_extract_i32 use_armv7_instructions #define TCG_TARGET_HAS_sextract_i32 use_armv7_instructions -#define TCG_TARGET_HAS_extract2_i32 0 +#define TCG_TARGET_HAS_extract2_i32 1 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_mulu2_i32 1 #define TCG_TARGET_HAS_muls2_i32 1 diff --git a/tcg/arm/tcg-target.inc.c b/tcg/arm/tcg-target.inc.c index 2245a8aeb9..6873b0cf95 100644 --- a/tcg/arm/tcg-target.inc.c +++ b/tcg/arm/tcg-target.inc.c @@ -2064,6 +2064,27 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc, case INDEX_op_sextract_i32: tcg_out_sextract(s, COND_AL, args[0], args[1], args[2], args[3]); break; + case INDEX_op_extract2_i32: + /* ??? These optimization vs zero should be generic. */ + /* ??? But we can't substitute 2 for 1 in the opcode stream yet. */ + if (const_args[1]) { + if (const_args[2]) { + tcg_out_movi(s, TCG_TYPE_REG, args[0], 0); + } else { + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, args[0], 0, + args[2], SHIFT_IMM_LSL(32 - args[3])); + } + } else if (const_args[2]) { + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, args[0], 0, + args[1], SHIFT_IMM_LSR(args[3])); + } else { + /* We can do extract2 in 2 insns, vs the 3 required otherwise. */ + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, TCG_REG_TMP, 0, + args[2], SHIFT_IMM_LSL(32 - args[3])); + tcg_out_dat_reg(s, COND_AL, ARITH_ORR, args[0], TCG_REG_TMP, + args[1], SHIFT_IMM_LSR(args[3])); + } + break; case INDEX_op_div_i32: tcg_out_sdiv(s, COND_AL, args[0], args[1], args[2]); @@ -2108,6 +2129,8 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) = { .args_ct_str = { "s", "s", "s", "s" } }; static const TCGTargetOpDef br = { .args_ct_str = { "r", "rIN" } }; + static const TCGTargetOpDef ext2 + = { .args_ct_str = { "r", "rZ", "rZ" } }; static const TCGTargetOpDef dep = { .args_ct_str = { "r", "0", "rZ" } }; static const TCGTargetOpDef movc @@ -2174,6 +2197,8 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) return &br; case INDEX_op_deposit_i32: return &dep; + case INDEX_op_extract2_i32: + return &ext2; case INDEX_op_movcond_i32: return &movc; case INDEX_op_add2_i32: From patchwork Thu Mar 7 14:41:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159849 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7522237jad; Thu, 7 Mar 2019 06:51:20 -0800 (PST) X-Google-Smtp-Source: APXvYqxOQIhemOA/z7nYVOv8xJxX1xa9WyXwYu/UjPmmLLBwRnMl+Xd5KgNkmyOiD/1jNV+6ta+s X-Received: by 2002:a81:7bc5:: with SMTP id w188mr10289724ywc.265.1551970280323; Thu, 07 Mar 2019 06:51:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970280; cv=none; d=google.com; s=arc-20160816; b=Ll0M3XU4H1CRRuKW8+4rqn9Z5cT47T6VOS64obAcM6As6GapOHRgzka+ycweTTJ12q 21IrIaqNYVBw3LdFra1yoasGy0cqH9pR48nRZWomnVIBxhdgkrc0fVW1x8Us/gOMNQBC k7VQxP38KfSKw9MZTglo5q8FQRbinAthheIw20MdF0qhhrDB0B5OkC8Enjqdu6ebj97M RHUx78ATLjUYp/lyyvwwvv936HSVe9pGBSH4rLvBuKHNlkykL6XV4yBIB9F7NFymUfwk mG/VdL2Gv3k3HcIR03o3q/uyz/AMFvGhzRhbCCuAlmEEhPn0slXr7/09zb+p/WnJlJM8 mO+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=a1kL8G0ROR4h+JWlbfQo/WFC938UP3tckgGZidyXLkM=; b=XEvS7Gbwg4KKbfLD22ufDv1E6B3ve/RfH9Ixo0DojCQt5o4phQq+1kCYpA6NK4+FUT UCuwRSx2+/Yi4febZViwPj3AEh10cqyQVVRitnrCw+JQVzR2QKOrs/XUT7qFOBYDVlDu mH4KlXp4cqXuTjDWuAvRTfG7MTMen1vaofuC/4CJ47bmdJw5ZIAPyqnqqNKKJqZ1IrTH c8kgxKKoLAkgau9GiYT2A+RclL2J1kjLBKbJS+3gYR0xi7HNPafOZbKMyhiROuqo2ARS l6agWdU9f0BSqHQdORvGfc7ZGzAnfBn8HNvyIORFedpF8Pe/qaM4Q1pkN2XfkwgoNrJT 0y1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=K9y+mLBi; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q188si2665159ywg.348.2019.03.07.06.51.20 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:51:20 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=K9y+mLBi; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uMh-0005Pg-OM for patch@linaro.org; Thu, 07 Mar 2019 09:51:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49522) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDL-0006q2-0y for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDK-0003YE-9f for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:38 -0500 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]:38271) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDK-0003Xc-2g for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:38 -0500 Received: by mail-pf1-x42e.google.com with SMTP id n125so11578478pfn.5 for ; Thu, 07 Mar 2019 06:41:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=a1kL8G0ROR4h+JWlbfQo/WFC938UP3tckgGZidyXLkM=; b=K9y+mLBiBb/QDKgGwtmNaZL040CQR+jLFAYdNxWIfk38pQmDXDFOvGybYmOL1W4Iug fxlVDkwrtvaRq6vQBGMEHwjADWo2sTB4lKqq7kiw9d69VG5+3KSAwDdja/+ghAR17drH BenAG+vLDNeEnxCJ6FDcmoOp6uRjnXlYMK5kX8bkVyVnj/DIzZiTLny9+4HU5JwDUVXj 5ZFv7/ZyiddBRMp4eRIIrhTDZUWAudpurP8iTDHVLv15i2oGLd3s1Y8nBM/lkWtjqRmm Zh8qkkK4QHPRcbbevcsH7hYkpflJl/MWZcfe+3pNAeq7w3JR8kmqQLCYqm5XCF13OoTa uiFg== 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; bh=a1kL8G0ROR4h+JWlbfQo/WFC938UP3tckgGZidyXLkM=; b=WnIwy8xX9xjgwzH4kHVNtynO708yJNdmQoVAcIQ8M8q/0/uDMnItzNNGzc6DjrrA5H 85sg7PCEag3cPb/W7QA+H3a2+w6r7gEDcmSEvahMNz4ii88awD/s0moVL5embRg7qIUd JyEY9SQvRDtds/tPdBClxoVzjlutISU985H6KthHuihAHOozO74J9hKEvBnRsZ5Qb4cJ MltyPR9ZJrfUVyUp+tULck/hHMkKT3rUn+iG59Qeb1tX4dlzOabpmYLveonXtKHKCNfN RXS7n+2saEgrz8I6c6dTxWi9JcRCOIxpmqdsofq0kB8dHWT3Ut/+G1efbRZmasoWIEhm aWbg== X-Gm-Message-State: APjAAAW4gqxJiXbWF8ERH3JkKAKP7qYIF0S3QfIzoazyEeBrbAW9UCrv 0lHk5KFDEVey7eubun3gBJ9KLiBVR+A= X-Received: by 2002:a62:503:: with SMTP id 3mr12929985pff.176.1551969696747; Thu, 07 Mar 2019 06:41:36 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:24 -0800 Message-Id: <20190307144126.31847-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::42e Subject: [Qemu-devel] [PATCH 7/9] tcg/aarch64: Support INDEX_op_extract2_{i32, i64} X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target.h | 4 ++-- tcg/aarch64/tcg-target.inc.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) -- 2.17.2 Reviewed-by: Philippe Mathieu-Daudé diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h index 6600a54a02..ce2bb1f90b 100644 --- a/tcg/aarch64/tcg-target.h +++ b/tcg/aarch64/tcg-target.h @@ -77,7 +77,7 @@ typedef enum { #define TCG_TARGET_HAS_deposit_i32 1 #define TCG_TARGET_HAS_extract_i32 1 #define TCG_TARGET_HAS_sextract_i32 1 -#define TCG_TARGET_HAS_extract2_i32 0 +#define TCG_TARGET_HAS_extract2_i32 1 #define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_add2_i32 1 #define TCG_TARGET_HAS_sub2_i32 1 @@ -114,7 +114,7 @@ typedef enum { #define TCG_TARGET_HAS_deposit_i64 1 #define TCG_TARGET_HAS_extract_i64 1 #define TCG_TARGET_HAS_sextract_i64 1 -#define TCG_TARGET_HAS_extract2_i64 0 +#define TCG_TARGET_HAS_extract2_i64 1 #define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_add2_i64 1 #define TCG_TARGET_HAS_sub2_i64 1 diff --git a/tcg/aarch64/tcg-target.inc.c b/tcg/aarch64/tcg-target.inc.c index d57f9e500f..8b93598bce 100644 --- a/tcg/aarch64/tcg-target.inc.c +++ b/tcg/aarch64/tcg-target.inc.c @@ -2058,6 +2058,11 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, tcg_out_sbfm(s, ext, a0, a1, a2, a2 + args[3] - 1); break; + case INDEX_op_extract2_i64: + case INDEX_op_extract2_i32: + tcg_out_extr(s, ext, a0, a1, a2, args[3]); + break; + case INDEX_op_add2_i32: tcg_out_addsub2(s, TCG_TYPE_I32, a0, a1, REG0(2), REG0(3), (int32_t)args[4], args[5], const_args[4], @@ -2300,6 +2305,8 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) = { .args_ct_str = { "r", "r", "rAL" } }; static const TCGTargetOpDef dep = { .args_ct_str = { "r", "0", "rZ" } }; + static const TCGTargetOpDef ext2 + = { .args_ct_str = { "r", "rZ", "rZ" } }; static const TCGTargetOpDef movc = { .args_ct_str = { "r", "r", "rA", "rZ", "rZ" } }; static const TCGTargetOpDef add2 @@ -2430,6 +2437,10 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) case INDEX_op_deposit_i64: return &dep; + case INDEX_op_extract2_i32: + case INDEX_op_extract2_i64: + return &ext2; + case INDEX_op_add2_i32: case INDEX_op_add2_i64: case INDEX_op_sub2_i32: From patchwork Thu Mar 7 14:41:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159855 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7535215jad; Thu, 7 Mar 2019 07:02:43 -0800 (PST) X-Google-Smtp-Source: APXvYqwklYWwxXV0X7fAszb5MvQApwuDKsXCEjk7N0GJeapmfK0GR5vuCHTFT5XpggzIosOhDYWg X-Received: by 2002:a25:3f45:: with SMTP id m66mr705510yba.238.1551970963579; Thu, 07 Mar 2019 07:02:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970963; cv=none; d=google.com; s=arc-20160816; b=C759vk2xh3JTJwIxImwLpyY4ccppwfNaUF4WHlbY5vYWlwExctdGBvJy3+woDSzaEj xZwz53I0t8Ha4GNPVap0lMp7OxHdwzEBhO7rvsJN+Uug2T1Hc5TFjw9eeqYZ/QGFLzvc g2CG9Czk5o5uHtxyPLgKu0u+s/mf5t1j7YN4/5thdtylSC6n8TAAaJL7vLIz2rUNG0xd a2Tsu5lZZhHQ9nS1IUgMthp4trw+cZbGFeNkvkeOh5YOR5gfbydwJiumNZFNKfdJmFP3 Rh+0pJyfhnIiQYZYMl5oyKJS63BMIbrbZeP1FPhruNfpR8Vvq8J0GHbmNmc8Inmc44CW sU2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=pYVYxt9SbAUZKsGEgiUmj22ae9l+P8yjkapVVpNUM0w=; b=cIaIxHD8Y5l0kKJFDy1kcKKg45AbiyIrgT6Ewg54y0Dj0aPwr8ZxP0fjQpoED9BJR4 pfqpr+WT9WR3eSPJ1+SJ2Ze7nUXUi617WHAxDYEOaoXjs/W6ns/527d0H1dcnxs+7ZN3 QtwRtaCqlO5ZW0u+OmFgwle7if6H9FUwdq3hNhLFjUFcoLIimGxASJVuOrIujKkknW0u buqEi1PNwZXJZchi3fwBeTFjmg3En9SE79+e/sS9Lm58rYn4avidjZMv/doDPyIFi76v h+t306Q9JHqN91mI76aiLkfC0yszM7JUMTlSPpyP0/KQg+XmHAChcNGuT09Cp3KCEq2N fzHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=oMcnlXNu; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id k64si2769785ywa.445.2019.03.07.07.02.43 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 07:02:43 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=oMcnlXNu; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53286 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uXj-0007If-1u for patch@linaro.org; Thu, 07 Mar 2019 10:02:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49570) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDQ-0006vl-R9 for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDL-0003Z7-8p for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:44 -0500 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:37595) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDL-0003YS-3M for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:39 -0500 Received: by mail-pg1-x543.google.com with SMTP id q206so11422091pgq.4 for ; Thu, 07 Mar 2019 06:41:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pYVYxt9SbAUZKsGEgiUmj22ae9l+P8yjkapVVpNUM0w=; b=oMcnlXNuDXmWR9YUIo1/zp2rn8kN7H+V/yHHmzyE8jay8LAOXTea1UFydgdo/r+UJ7 DjYNedV8Pn9XhVlH4I20rhIqgbC0VEu0SYDZyU6OYnSv+DLZgj+3jqxbxaaA56XiWArL mMDB+XszN5+Awnt1pgTSO7DrU6QAqCkar7Qnmo/VMpoXb+hEHz2FPrW/QZC0JUOSJVQL tBq6isW5CNsnB1XInsDPfMHbv20EXsvvrzgvreEk1dy8fA8r2pkQ5cWzgx57kgR63nXr lDbc7xiqlaqiRRcrkfWMTCyLqevo9OqhrxtEd7iI5at2GNAuq11QxlKWaLwVyjxOOSlj c3QQ== 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; bh=pYVYxt9SbAUZKsGEgiUmj22ae9l+P8yjkapVVpNUM0w=; b=sqfm/dnXYgSiGA3IN0eIxURO0rBK21pfuHzZKb3OIinSEHdaBrAuIBTkC4lKgOJPuz uAnEa+nBX4aOgkM2qIMMyGCt7ZR46bIu1Me7B0jbLc8uJqg6/XsQ5AqswVUXbZyjkXxo 6C/BDisJqvyYgJChRVtt1LikF5MhhM3AiO7S7Ul7VMU03bA7JWsTPz4sGa5UM4h3y+lR MhsiGZeapcMFuSJ7Gi/sb5KoYpYPZz4KewgIU5vckwvZtilcjhtfaP5ShrXZI7bHxtHD IdZe1+pc4msFaTitP9JWCpsW5xhv0KU9JnAM0wbMiGXPRqSrh4dnMzPW39FDTFmVGvRF Ivug== X-Gm-Message-State: APjAAAUhdS2pIQe/ueGpQzZ8p+sA3oci4TajV9HeM2DzCeCh7bIdy+/T cBabFZGdOuC/M+gpCoslGCUPwyN3s88= X-Received: by 2002:a17:902:361:: with SMTP id 88mr13373589pld.78.1551969697822; Thu, 07 Mar 2019 06:41:37 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:37 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:25 -0800 Message-Id: <20190307144126.31847-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::543 Subject: [Qemu-devel] [PATCH 8/9] target/arm: Use extract2 for EXTR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This is, after all, how we implement extract2 in tcg/aarc64. Cc: qemu-arm@nongnu.org Cc: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/translate-a64.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) -- 2.17.2 Reviewed-by: Peter Maydell diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 1959046343..54fe94c436 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -4114,25 +4114,27 @@ static void disas_extract(DisasContext *s, uint32_t insn) } else { tcg_gen_ext32u_i64(tcg_rd, cpu_reg(s, rm)); } - } else if (rm == rn) { /* ROR */ - tcg_rm = cpu_reg(s, rm); - if (sf) { - tcg_gen_rotri_i64(tcg_rd, tcg_rm, imm); - } else { - TCGv_i32 tmp = tcg_temp_new_i32(); - tcg_gen_extrl_i64_i32(tmp, tcg_rm); - tcg_gen_rotri_i32(tmp, tmp, imm); - tcg_gen_extu_i32_i64(tcg_rd, tmp); - tcg_temp_free_i32(tmp); - } } else { - tcg_rm = read_cpu_reg(s, rm, sf); - tcg_rn = read_cpu_reg(s, rn, sf); - tcg_gen_shri_i64(tcg_rm, tcg_rm, imm); - tcg_gen_shli_i64(tcg_rn, tcg_rn, bitsize - imm); - tcg_gen_or_i64(tcg_rd, tcg_rm, tcg_rn); - if (!sf) { - tcg_gen_ext32u_i64(tcg_rd, tcg_rd); + tcg_rm = cpu_reg(s, rm); + tcg_rn = cpu_reg(s, rn); + + if (sf) { + /* Specialization to ROR happens in EXTRACT2. */ + tcg_gen_extract2_i64(tcg_rd, tcg_rm, tcg_rn, imm); + } else { + TCGv_i32 t0 = tcg_temp_new_i32(); + + tcg_gen_extrl_i64_i32(t0, tcg_rm); + if (rm == rn) { + tcg_gen_rotri_i32(t0, t0, imm); + } else { + TCGv_i32 t1 = tcg_temp_new_i32(); + tcg_gen_extrl_i64_i32(t1, tcg_rn); + tcg_gen_extract2_i32(t0, t0, t1, imm); + tcg_temp_free_i32(t1); + } + tcg_gen_extu_i32_i64(tcg_rd, t0); + tcg_temp_free_i32(t0); } } } From patchwork Thu Mar 7 14:41:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 159854 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp7531238jad; Thu, 7 Mar 2019 06:59:43 -0800 (PST) X-Google-Smtp-Source: APXvYqyby8d+XuxLi/5eX1yPgUoj7JK/OUsyuL7GwrL5JNm9xb7elz+/2qVxG4k+y5WXXD/hy55M X-Received: by 2002:a25:cc1:: with SMTP id 184mr11574103ybm.395.1551970783046; Thu, 07 Mar 2019 06:59:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551970783; cv=none; d=google.com; s=arc-20160816; b=qfqZyql49NsxP837ZZl/+Aid7NdKGTK4boNKX+88ptY0vgIesb/S+ekm7p8mqs7N49 5uvjIENZ1uFLT7/Zct6HDmnbaUGxA8UwyWyJ4wV9b4p+jOdBsuAdNPdXKIMsFFNq8lNU Ia+IpZeKMnsgzgbhuUBpXAK894JAZGf08Mu0Vl8QduCm2DohHg0qLqc14/4hUXqqq/2J xt1VkXfxddRD0FDd/u9Dp58HhYWNKlrdmO7gXkeQVZPcpTH1OziJElDgpbTKpjHbj9H/ VrOODVHR7PUsAWQ7n1Vy46gFzuET7pGs5Gmo+OK5d/fbCsFnv7Et59xXiTUalWespCd9 AsWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=swairKUpkVUyv6vQDUxZREMTyQpkwikTQdcjVzA2r4A=; b=peVo6uxygbhFL0yUe3FpF2V6EWVc124eoonAkKAZ97bswIS+LppFTQ632/HgR6iO/L 7FV72Un2Lvz5Ix21nxwUpeFQqza7OA6/AkwrbOCUklaFsVlooGHMA53n2tZ4amm/KvOk 56LnUlJBxg30If7cJqNmXTGc2DsiumLlKa64rYB8UKzkSk5PDqoW8u4VkLt3dQocBAZw 0PIoI6r212bTWoo4dd4eeYwomfe1qjqUdFoXGhSPkA7iCayh46wHt/BfkFePsF9Ckx59 BVhJYJDkGfWgkD2GHie2z7KpEIkGVVAfibUihnJXO60CLbjdHrFASvCFi7jna2hSy8ss rXdw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="ZZne0/wM"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 203si2729244ywl.14.2019.03.07.06.59.42 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 07 Mar 2019 06:59:43 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="ZZne0/wM"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53219 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uUo-0004ZP-Fl for patch@linaro.org; Thu, 07 Mar 2019 09:59:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1uDN-0006sV-HJ for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1uDM-0003aX-Ps for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:41 -0500 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:42845) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h1uDM-0003Zh-Jk for qemu-devel@nongnu.org; Thu, 07 Mar 2019 09:41:40 -0500 Received: by mail-pg1-x542.google.com with SMTP id b2so11406756pgl.9 for ; Thu, 07 Mar 2019 06:41:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=swairKUpkVUyv6vQDUxZREMTyQpkwikTQdcjVzA2r4A=; b=ZZne0/wMGGVwzNeAw9hh7z4Y4Dkwu9/icJlwFltEoqE1pO9tqjMd+LBkrNiq8jktBI eEkoov7+5688ALcz4rTIsO54MaKBMsCT5WDSNv9+Cn0n1x19oXV+zetMG8lBwy0SK86V ybmTF9AP0CXMVDpUWSvRaCW1YZgxpSmdL+nvWSJy4lZ7/hgw+X7jist7DYzSjYI1TTn+ fDVexlaArXtDN/ZoZFZTrb/P+HF5qfg8QAvTxasHKUOQVhMag7UIIgCuTtBuCVCQtroy XA7So2wIP7glU5QJo3Vg7+W6eTRiz4cqAOO0mf4GAQ+TyrBXuWRlMfQmYH31nDKw5kRE Dkfg== 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; bh=swairKUpkVUyv6vQDUxZREMTyQpkwikTQdcjVzA2r4A=; b=Kn3cTHx+QZ2YYFls6WUoFK25yamnslju/ZiyqsxFSv4sqmIDm8TExev3oVPVd+UX/m +ZkAnzAM5oMYzCs0i+lnBrIeLJHJ/PF7vcI+e+7CldZqfyGu6G+kcon006aXbJGXQFsC m/EoFGmgVIe63KVwyUoqSKKR6feO8lxHtkMchDlVUuHz9cH9pMNl4TMQY+5AaFs5orqG cADV9nZPalZ6uJ0nqmNuFTuFplLoSmuZHI9Ek7E0CQQSiGtltXAow79jsbF44ofHsDFj movYnalcQgY/GjGTJy0T2NILaRRsNKDZqPPgUuHVofcVC5HOJczqxqdeLfm6Q4PM/Ppl UlCw== X-Gm-Message-State: APjAAAW7vEjbTNUXaZlP3tclzxXXV0NvLwn9eWINDefqrDjZYQrY8/Zw 1KAO0gGZD65Y1HdkyBBF3tsuEAZPUws= X-Received: by 2002:a62:57dd:: with SMTP id i90mr13163514pfj.154.1551969699261; Thu, 07 Mar 2019 06:41:39 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id p2sm6222838pgs.7.2019.03.07.06.41.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 07 Mar 2019 06:41:38 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 7 Mar 2019 06:41:26 -0800 Message-Id: <20190307144126.31847-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190307144126.31847-1-richard.henderson@linaro.org> References: <20190307144126.31847-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::542 Subject: [Qemu-devel] [PATCH 9/9] target/arm: Simplify BFXIL expansion X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" The mask implied by the extract is redundant with the one implied by the deposit. Also, fix spelling of BFXIL. Cc: qemu-arm@nongnu.org Cc: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/translate-a64.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- 2.17.2 Reviewed-by: Philippe Mathieu-Daudé diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 54fe94c436..39e0512d21 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -4043,8 +4043,8 @@ static void disas_bitfield(DisasContext *s, uint32_t insn) tcg_gen_extract_i64(tcg_rd, tcg_tmp, ri, len); return; } - /* opc == 1, BXFIL fall through to deposit */ - tcg_gen_extract_i64(tcg_tmp, tcg_tmp, ri, len); + /* opc == 1, BFXIL fall through to deposit */ + tcg_gen_shri_i64(tcg_tmp, tcg_tmp, ri); pos = 0; } else { /* Handle the ri > si case with a deposit @@ -4062,7 +4062,7 @@ static void disas_bitfield(DisasContext *s, uint32_t insn) len = ri; } - if (opc == 1) { /* BFM, BXFIL */ + if (opc == 1) { /* BFM, BFXIL */ tcg_gen_deposit_i64(tcg_rd, tcg_rd, tcg_tmp, pos, len); } else { /* SBFM or UBFM: We start with zero, and we haven't modified