Message ID | 20231211094728.1623032-1-slewis@rivosinc.com |
---|---|
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 E8CC23857C76 for <patchwork@sourceware.org>; Mon, 11 Dec 2023 09:47:58 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by sourceware.org (Postfix) with ESMTPS id D656B3858D33 for <gcc-patches@gcc.gnu.org>; Mon, 11 Dec 2023 09:47:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D656B3858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D656B3858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702288063; cv=none; b=Va6u5Zdurwqw/KZ+d+K8YXvUsfo+wWD6eOlyqVLgJhvyGIxQbSa8NjuHeWZekYz5mlZTpHzcMqdzstmmJ+2QBveP+P7CtY0eNzAz63r2s9zNlDGisHRpEAH6KrVI8BZpRSLZXAV87laYBVEJSo0MA0TTwaGZ95mB0b7Dt8plrDg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702288063; c=relaxed/simple; bh=rXqyjGxdjbiOAN7c0CKbOFoNFdzEqmtgVNApFk2tFys=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=utlOgiij4soYGepYrGlEZsjP5KRXuFUuP9BX0B57MJ/B4mogSBBpaU9WlfgfFCRImREJS6QZoSZUFwBfbBRXAwh/tBUXLltrbspnOCf0umdCX+WgVLgHztiaoO95joqKivh+bRQLEFxNbtHT+3KBSy8i1cZ3GKdHLpLpY0YPW/4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3332fc9b9b2so3918725f8f.1 for <gcc-patches@gcc.gnu.org>; Mon, 11 Dec 2023 01:47:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1702288060; x=1702892860; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=56euOX0XxtlVWqVyJnuF2ysjwyy+lALNLK66PQxAfUc=; b=uqYGdNOsLyACA++b3qnP7biejLKQ6Ddq7MIhvnwgDZLZkcS63qYjkEAEfSPyFP3gnh QZqJeYrEFIonshyZZL2Bsst+GvJAE1m6MnFyAMjX+8hb/rP7kp00iPejh0CbIi53FHCR Hs2yvPWnI9aROBjEg+w7JLH0yhRZbjaN4IVU3cqSc66ezJaeii/BQmKn4qb1o9X1x5rt hMuHt8rdrInv8Hdb/qmPHcroBair+NrTv1uPxkb2OxILLTf4Ezt01fBgK2FEikrtG3zI gPcGertVCAKO7uS7oyNA2Fsi1xcqHZheLmtQs1K1u/c8WFIsKGLchHzestOFAe/n2i3i S1Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702288060; x=1702892860; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=56euOX0XxtlVWqVyJnuF2ysjwyy+lALNLK66PQxAfUc=; b=SrlY4qJDoe+VuitrhVi9NQeZ/JXyglukLY5yPDElCi5TTjoAJA1pbeP4YZxfp4t/P9 JaAQG2wq/bIC8L9aymXnJucDgdWtuvSOqSIMTHUTV/++yTIAPdSrbYVtY8jzbs31jEaq 4rGoQynCmVbXdb36+T0TPBn9QVR0BllZG5Y8bsRFWjAECSSIsB1FK4GeTRLVs7RkjTG5 4ierLUpVuPs51KKPaH/or4CVw7Iojv4f/OcD2MIT/E2DwLOeB8hTQYVxXtacz0oszpGk Kl5GZHFh02u/sRfuzsZyXDI5Q1V9T7bi514BkWvuKl3gTT4Bg8R2nr7QMQCTy3d8k6XQ /faQ== X-Gm-Message-State: AOJu0YwdXJV7Et8RGeF0ARQKCdZPk3MbxD7ZtCCpyw6jX+ug64O4XCN0 xxi8trllALIHBr9nxulzxgrydlX9OPFAybMmFJ7Kag== X-Google-Smtp-Source: AGHT+IG61TbwVgeUWsgH0sxUm6Xl/Y5simobWU4hBA2laQd04dBvbOkmqyrDDhqJTqjt0YR/cDgMVQ== X-Received: by 2002:adf:f9d0:0:b0:333:4e3a:b803 with SMTP id w16-20020adff9d0000000b003334e3ab803mr856628wrr.277.1702288060200; Mon, 11 Dec 2023 01:47:40 -0800 (PST) Received: from slewis-laptop.ba.rivosinc.com ([51.52.155.69]) by smtp.gmail.com with ESMTPSA id a16-20020adffad0000000b003333b8eb84fsm8128298wrs.113.2023.12.11.01.47.39 for <gcc-patches@gcc.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 01:47:39 -0800 (PST) From: Sergei Lewis <slewis@rivosinc.com> To: gcc-patches@gcc.gnu.org Subject: [PATCH 0/3] RISC-V: vectorised memory operations Date: Mon, 11 Dec 2023 09:47:25 +0000 Message-Id: <20231211094728.1623032-1-slewis@rivosinc.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, 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 |
RISC-V: vectorised memory operations
|
|
Message
Sergei Lewis
Dec. 11, 2023, 9:47 a.m. UTC
This patchset permits generation of inlined vectorised code for movmem,
setmem and cmpmem, if and only if the operation size is
at least one and at most eight vector registers' worth of data.
Further vectorisation rapidly becomes debatable due to code size concerns;
however, for these simple cases we do have an unambiguous performance win
without sacrificing too much code size compared to a libc call.
Signed-off-by: Sergei Lewis <slewis@rivosinc.com>
---
Sergei Lewis (3):
RISC-V: movmem for RISCV with V extension
RISC-V: setmem for RISCV with V extension
RISC-V: cmpmem for RISCV with V extension
gcc/config/riscv/riscv-protos.h | 2 +
gcc/config/riscv/riscv-string.cc | 193 ++++++++++++++++++
gcc/config/riscv/riscv.md | 51 +++++
.../gcc.target/riscv/rvv/base/cmpmem-1.c | 85 ++++++++
.../gcc.target/riscv/rvv/base/cmpmem-2.c | 69 +++++++
.../gcc.target/riscv/rvv/base/movmem-1.c | 59 ++++++
.../gcc.target/riscv/rvv/base/setmem-1.c | 99 +++++++++
7 files changed, 558 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/cmpmem-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/cmpmem-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/movmem-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/setmem-1.c