| 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(-)