Message ID | 20240904132650.2720446-1-christophe.lyon@linaro.org |
---|---|
Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2E013385EC1E for <patchwork@sourceware.org>; Wed, 4 Sep 2024 13:28:21 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-oo1-xc2d.google.com (mail-oo1-xc2d.google.com [IPv6:2607:f8b0:4864:20::c2d]) by sourceware.org (Postfix) with ESMTPS id 04B953858C41 for <gcc-patches@gcc.gnu.org>; Wed, 4 Sep 2024 13:27:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 04B953858C41 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 04B953858C41 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::c2d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1725456445; cv=none; b=ArtMSRhCrtR2iKgMEZDp1D/MMVeWxN3H7cCPu+xha1BvlcUZpqq1DXkDFKFE2CzVwxjkjr5WZh1UtRsfm2Nf6+X9N9Awc4jC9msarbDISrYJiCpWCK/oqIGjJ9hkwIz82yGzgraqVJI13pX9XA9ckqnlQzGwVnXptgK1t2pVOoc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1725456445; c=relaxed/simple; bh=lp5IxHi0xheYntrULVPBqWUCzEHp/9teU0lo1uC2ncs=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=MqxKAdYMKUaJuJtcbloLrBMXPKaF+pxJancw1F/gQWZdc45WVp2pmpgvSN6zbLKzpb6ZXXtOlPdt1uG5bfHHEcAa4Wisq4GToeIoN9NRgwQR4HlfDKDCLuawZAfM6rYNgTc5KVTcqK0rSEkkahIskBOP09H2tNvBcsYUNgfQkxo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oo1-xc2d.google.com with SMTP id 006d021491bc7-5de8a3f1cc6so360212eaf.1 for <gcc-patches@gcc.gnu.org>; Wed, 04 Sep 2024 06:27:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1725456440; x=1726061240; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VYXZFKEX+jn/U9HySGG4yNkmK11XVlFQueSOJQhB/zg=; b=aeFmMcHyy/upF82p6JVKKHID6QaBPFCPFTCnQth6AcWxs4GWUA42QiyMz+HcG8Z8ES iksdrOuwGeaYEvY24i3lz6/anWEMAHgGQ+OzmVVpxgHALuDfG0IVjhkrpkuH55FVoZZa mNTOE5Hc+ZSFFfESvgK3JxVPF4o7dOwCVMProd/Vb3Uoam884n+S8dKlWfPtkJoIImWa Q6KGqI8UnFkIYGJbEqZbv8FxpTCtZOu1GIM9ZxQAu7RSZdzugafFZYdStavYWQ6+L0Sh CqDTWj3Te74S/ISxnHtyxDOinnAHrEFOxAaM4MmSnL4MQhgqFpeuQo58BHZehXYBgYGE nCig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725456440; x=1726061240; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VYXZFKEX+jn/U9HySGG4yNkmK11XVlFQueSOJQhB/zg=; b=mTXWqRLsc8xmz11bwsPvdkES+Lds8At+HncUUXJkOC2azNB18BsHOPlY0lgNbj6dtN Ore50++Uxz3pklWRVWwL8C/22mf95itbNunnNlKLB/uwCaX67jm9HmfpYyeD1jNgPmYC TkJDRgYEL4qzsSRF49I3DEVD9AMV7zY0CVbS7bWVbSeuHiSn8zwQ+aBCdOoA0y3NWVK4 aQZ44Bdx77AA2hb4dPDXTQfwxUMTVmcWB/4hA+uyVnrnZGes8CA7z6/jyCs1+jEkS6SV qlfda4vSDdWaJ9uEZ/DQ1u4uMghKnxoSEAcAPGkFTLHeIhDxDQlQtUZvhASiov4TxiPp HDoA== X-Gm-Message-State: AOJu0YxFjwB4EMGbaCKn4JeAmomF8Q3UeqkzGCrqQaYqUYwVVCg9Qezi nsdbQV5lcEJ/UPLDhaFt738Ane5XE68giSHEWSP2F6vZTvSoUSkSitNNWbFHiA86LTGVRJZLSZx bQ5Q= X-Google-Smtp-Source: AGHT+IElDuQ0R8t/ZfLlFMAbasUSrpCyGvkhbjn4Knm/FrGyrB7LZBJY1gAOWfhTJ5gZ1ErlbMzBSA== X-Received: by 2002:a05:6820:70a:b0:5d8:a13:f99d with SMTP id 006d021491bc7-5e18eb5dd09mr754321eaf.1.1725456439767; Wed, 04 Sep 2024 06:27:19 -0700 (PDT) Received: from localhost.localdomain ([139.178.84.207]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-5dfa0580692sm2308062eaf.46.2024.09.04.06.27.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Sep 2024 06:27:19 -0700 (PDT) From: Christophe Lyon <christophe.lyon@linaro.org> To: gcc-patches@gcc.gnu.org, richard.earnshaw@arm.com, ramanara@nvidia.com Cc: Christophe Lyon <christophe.lyon@linaro.org> Subject: [PATCH v2 00/36] arm: [MVE intrinsics] Re-implement more intrinsics Date: Wed, 4 Sep 2024 13:26:14 +0000 Message-Id: <20240904132650.2720446-1-christophe.lyon@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240711214305.3193022-1-christophe.lyon@linaro.org> References: <20240711214305.3193022-1-christophe.lyon@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
Series |
arm: [MVE intrinsics] Re-implement more intrinsics
|
|
Message
Christophe Lyon
Sept. 4, 2024, 1:26 p.m. UTC
Hi, This is v2 of the patch series I sent in https://gcc.gnu.org/pipermail/gcc-patches/2024-July/657065.html. I have taken into account the feedback I received, and added more patches to the series, converting more MVE intrinsics to the new framework. Changes v1-v2: - I kept patch #1 as-is (so, no change): the comment is a bit verbose, but I don't this this causes any harm. - patch #3: use conditionals in a few more places, making the code more compact and hopefully easier to read. - patch #5: use "su64" instead of "ss8" for the immediate parameter. - patch #6: restore alphabetical order in arm-mve-builtins-base.def - patch #7: remove trailing ')' in comments in mve.md - patch #10: remove trailing ')' in comments in mve.md - patch #11: remove unused parameter names to avoid warnings. - patch #13: fix a comment. - patch #15: fix a comment. Patches 16-36 are new: - #16: rework vctp - #17-21: rework v[id]dup + cleanups - #22: fix checks of immediate arguments, noticed after the discussion on patch #5 - #23-27: rework v[id]wdup + cleanups - #28-30: rework vshlc - #31-35: rework vadc/vadci/vsbc/vsbci - #36: introduce long_type_suffix and half_type_suffix helpers to avoid some code duplication. Tested on arm-eabi with --target_board=arm-qemu{-mthumb/-mfloat-abi=hard/-march=armv8.1-m.main+mve.fp+fp.dp} Christophe Lyon (36): arm: [MVE intrinsics] improve comment for orrq shape arm: [MVE intrinsics] remove useless resolve from create shape arm: [MVE intrinsics] Cleanup arm-mve-builtins-functions.h arm: [MVE intrinsics] factorize vcvtq arm: [MVE intrinsics] add vcvt shape arm: [MVE intrinsics] rework vcvtq arm: [MVE intrinsics] factorize vcvtbq vcvttq arm: [MVE intrinsics] add vcvt_f16_f32 and vcvt_f32_f16 shapes arm: [MVE intrinsics] rework vcvtbq_f16_f32 vcvttq_f16_f32 vcvtbq_f32_f16 vcvttq_f32_f16 arm: [MVE intrinsics] factorize vcvtaq vcvtmq vcvtnq vcvtpq arm: [MVE intrinsics] add vcvtx shape arm: [MVE intrinsics] rework vcvtaq vcvtmq vcvtnq vcvtpq arm: [MVE intrinsics] rework vbicq arm: [MVE intrinsics] factorize vorn arm: [MVE intrinsics] rework vorn arm: [MVE intrinsics] rework vctp arm: [MVE intrinsics] factorize vddup vidup arm: [MVE intrinsics] add viddup shape arm: [MVE intrinsics] rework vddup vidup arm: [MVE intrinsics] update v[id]dup tests arm: [MVE intrinsics] remove v[id]dup expanders arm: [MVE intrinsics] fix checks of immediate arguments arm: [MVE intrinsics] factorize vdwdup viwdup arm: [MVE intrinsics] add vidwdup shape arm: [MVE intrinsics] rework vdwdup viwdup arm: [MVE intrinsics] update v[id]wdup tests arm: [MVE intrinsics] remove useless v[id]wdup expanders arm: [MVE intrinsics] add vshlc shape arm: [MVE intrinsics] rework vshlcq arm: [MVE intrinsics] remove vshlcq useless expanders arm: [MVE intrinsics] add vadc_vsbc shape arm: [MVE intrinsics] factorize vadc vadci vsbc vsbci arm: [MVE intrinsics] rework vadciq arm: [MVE intrinsics] rework vadcq arm: [MVE intrinsics] rework vsbcq vsbciq arm: [MVE intrinsics] use long_type_suffix / half_type_suffix helpers gcc/config/arm/arm-builtins.cc | 20 - gcc/config/arm/arm-mve-builtins-base.cc | 593 ++ gcc/config/arm/arm-mve-builtins-base.def | 44 +- gcc/config/arm/arm-mve-builtins-base.h | 22 + gcc/config/arm/arm-mve-builtins-functions.h | 815 +-- gcc/config/arm/arm-mve-builtins-shapes.cc | 645 +- gcc/config/arm/arm-mve-builtins-shapes.h | 9 + gcc/config/arm/arm-mve-builtins.cc | 95 +- gcc/config/arm/arm-mve-builtins.def | 1 + gcc/config/arm/arm-mve-builtins.h | 12 +- gcc/config/arm/arm_mve.h | 6353 +++-------------- gcc/config/arm/arm_mve_builtins.def | 20 - gcc/config/arm/iterators.md | 68 +- gcc/config/arm/mve.md | 832 +-- .../arm/mve/intrinsics/vddupq_m_wb_u16.c | 18 +- .../arm/mve/intrinsics/vddupq_m_wb_u32.c | 18 +- .../arm/mve/intrinsics/vddupq_m_wb_u8.c | 18 +- .../arm/mve/intrinsics/vddupq_wb_u16.c | 14 +- .../arm/mve/intrinsics/vddupq_wb_u32.c | 14 +- .../arm/mve/intrinsics/vddupq_wb_u8.c | 14 +- .../arm/mve/intrinsics/vddupq_x_wb_u16.c | 18 +- .../arm/mve/intrinsics/vddupq_x_wb_u32.c | 18 +- .../arm/mve/intrinsics/vddupq_x_wb_u8.c | 18 +- .../arm/mve/intrinsics/vdwdupq_m_wb_u16.c | 6 +- .../arm/mve/intrinsics/vdwdupq_m_wb_u32.c | 6 +- .../arm/mve/intrinsics/vdwdupq_m_wb_u8.c | 6 +- .../arm/mve/intrinsics/vdwdupq_wb_u16.c | 6 +- .../arm/mve/intrinsics/vdwdupq_wb_u32.c | 6 +- .../arm/mve/intrinsics/vdwdupq_wb_u8.c | 6 +- .../arm/mve/intrinsics/vdwdupq_x_wb_u16.c | 6 +- .../arm/mve/intrinsics/vdwdupq_x_wb_u32.c | 6 +- .../arm/mve/intrinsics/vdwdupq_x_wb_u8.c | 6 +- .../arm/mve/intrinsics/vidupq_m_wb_u16.c | 18 +- .../arm/mve/intrinsics/vidupq_m_wb_u32.c | 18 +- .../arm/mve/intrinsics/vidupq_m_wb_u8.c | 18 +- .../arm/mve/intrinsics/vidupq_wb_u16.c | 14 +- .../arm/mve/intrinsics/vidupq_wb_u32.c | 14 +- .../arm/mve/intrinsics/vidupq_wb_u8.c | 14 +- .../arm/mve/intrinsics/vidupq_x_wb_u16.c | 18 +- .../arm/mve/intrinsics/vidupq_x_wb_u32.c | 18 +- .../arm/mve/intrinsics/vidupq_x_wb_u8.c | 18 +- .../arm/mve/intrinsics/viwdupq_m_wb_u16.c | 6 +- .../arm/mve/intrinsics/viwdupq_m_wb_u32.c | 6 +- .../arm/mve/intrinsics/viwdupq_m_wb_u8.c | 6 +- .../arm/mve/intrinsics/viwdupq_wb_u16.c | 6 +- .../arm/mve/intrinsics/viwdupq_wb_u32.c | 6 +- .../arm/mve/intrinsics/viwdupq_wb_u8.c | 6 +- .../arm/mve/intrinsics/viwdupq_x_wb_u16.c | 6 +- .../arm/mve/intrinsics/viwdupq_x_wb_u32.c | 6 +- .../arm/mve/intrinsics/viwdupq_x_wb_u8.c | 6 +- 50 files changed, 2975 insertions(+), 6962 deletions(-)