From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id BAB253858D37 for ; Fri, 7 Jun 2024 23:12:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BAB253858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BAB253858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::330 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717801929; cv=none; b=fOfNh0PmlfJuz5aA+8mYVqWlqV6iEGDU6XXjuIaolvFdCppAs2LWotTzy9ZFh2j+c7hGRL1wDp90tejBkT6kQkrrlZy1P9DnHFSgzULKAkgQCQnR630VMUcRyYxi63qeHp+OTVX/MSROhyHdoKoRuKjbbd3ygPq+9yQLDDXlBNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717801929; c=relaxed/simple; bh=I0xLnyCil2JGrIK5sNQd+QEwgzfKp2imZWPiIq1Gyg0=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=IFPxqHyjlDHwFJXcSQT+JjWS0w9tGeXjcxy1zwyjRbQdEXUukxoBGqIDxv7jhT93e8K+Fuj+R65VtqCft9oqlLZ5m1RWocswKEMKIEVQUwsRNezq/FnFUBLvDQqJHQaj8BD3WG1tndXphmKbAilVhA3NDSI8+Bxy/tdtR2UWHgg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4214f52b810so31248165e9.1 for ; Fri, 07 Jun 2024 16:12:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717801925; x=1718406725; darn=gcc.gnu.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=IkK1AyeoizVZCJo2IL7kJ2mxpQzbWW2UU+9S5Mk4iIs=; b=ZMFWBOTjTBbr7GIZSAPgOSwLZNiuXEnejX7OLlrVfWLDF2fZiDzEfUGGC6gWvg7GA7 Zv4Xx2hqoVTEjzNhhklYtu3YY+UY2ZpkkrURb+bB+a7mLuDhPY8ReCHfJnWIPLKX0+VQ F7Mi6H3s1a9978Sr6y2uAVRcbyM4bx2SZQHXFu6/camPvZwyLLTjFy9oIvaBynFaYLao vWblYW6RvDiBK+GBkukRPdA32zacLkcRiCx+dt2Jl1sbwRDrkZfrIDwpRqZ4GPHiorP2 4D6aieOhtwN/fA0lYwBoOuR/e+2uL1WwXhFjY1ZGq/gIvLWn7/RCvYDC8/+i7osmeYeH zFKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717801925; x=1718406725; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IkK1AyeoizVZCJo2IL7kJ2mxpQzbWW2UU+9S5Mk4iIs=; b=LaUerC7r8WfQwh+CfZXQPQEzR2vVvfxSsu3mdu0vM1hteymhXukCEytGp+m01FUWCw 6eseM2TI0No/y+utUI0K2heOLV9M5OytGT2xrzgklljyhUAT/qonYUe4Dq8j6H4HTxmq cHJ2f+3ejerZtp8BwxBMgeSTl3rQhx6BnrX+jHg4tmG/kFoOqgUZvJH0yGYOGmMwZqaP zHOgynBh16RlnM2PYKv8rqxf1d9IQGAJ8zgcP0GBHwIPiYR4TCZhWh/CboIeKbBk+Aaj Xog7QaoeFZSXx+RwYmnhMLUwuS+Dj+3dPJFdKtrQaiXZ+inQ967Im+QD+9yqJpZlh0rA 8a6g== X-Forwarded-Encrypted: i=1; AJvYcCVebbIyFWNY8cNuoPM3YxM6CLHJBT/gTbTyyqc6tEfYH5V98UNNsdGOtvGvk2wkZz/4AmNU4Y0ChnOI3H6ZfJi9vF9RkqAGCQ== X-Gm-Message-State: AOJu0Yxa6VEMvItl8OkzpBsqOZgOZNxNOmwFeFf5kZNPVpRfQO6tRnC6 srUGPjgvCNecSv6Bt13fVfV2v4sSTZeIbgM6uGqGx1YzdFaMxpwiaZMRqXdu X-Google-Smtp-Source: AGHT+IFQ9zYRAHsnKdbdOjEGa8xNNdP4GfrjuzWstGTRN0bUA/hyH7uDqRN1KkE+GgFatREcal4kUA== X-Received: by 2002:a05:600c:1e01:b0:420:71f7:9752 with SMTP id 5b1f17b1804b1-42164a0b3d4mr39322315e9.18.1717801925079; Fri, 07 Jun 2024 16:12:05 -0700 (PDT) Received: from [172.31.0.109] ([136.36.72.243]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-421580fe3bfsm100439845e9.8.2024.06.07.16.12.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Jun 2024 16:12:04 -0700 (PDT) Message-ID: <134c07eb-315e-48c9-bcee-07adf7da8cc0@gmail.com> Date: Fri, 7 Jun 2024 17:11:59 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta Subject: Re: [PATCH v2 3/3] RISC-V: Add Zalrsc amo-op patterns Content-Language: en-US To: Patrick O'Neill , gcc-patches@gcc.gnu.org Cc: palmer@dabbelt.com, gnu-toolchain@rivosinc.com References: <20240603215329.2664893-1-patrick@rivosinc.com> <20240603215329.2664893-4-patrick@rivosinc.com> From: Jeff Law In-Reply-To: <20240603215329.2664893-4-patrick@rivosinc.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,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 List-Id: On 6/3/24 3:53 PM, Patrick O'Neill wrote: > All amo patterns can be represented with lrsc sequences. > Add these patterns as a fallback when Zaamo is not enabled. > > gcc/ChangeLog: > > * config/riscv/sync.md (atomic_): New expand pattern. > (amo_atomic_): Rename amo pattern. > (atomic_fetch_): New lrsc sequence pattern. > (lrsc_atomic_): New expand pattern. > (amo_atomic_fetch_): Rename amo pattern. > (lrsc_atomic_fetch_): New lrsc sequence pattern. > (atomic_exchange): New expand pattern. > (amo_atomic_exchange): Rename amo pattern. > (lrsc_atomic_exchange): New lrsc sequence pattern. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/amo-zaamo-preferred-over-zalrsc.c: New test. > * gcc.target/riscv/amo-zalrsc-amo-add-1.c: New test. > * gcc.target/riscv/amo-zalrsc-amo-add-2.c: New test. > * gcc.target/riscv/amo-zalrsc-amo-add-3.c: New test. > * gcc.target/riscv/amo-zalrsc-amo-add-4.c: New test. > * gcc.target/riscv/amo-zalrsc-amo-add-5.c: New test. > > Signed-off-by: Patrick O'Neill > ------ > rv64imfdc_zalrsc has the same testsuite results as rv64imafdc after this > patch is applied. > --- > AFAIK there isn't a way to subtract an extension similar to dg-add-options. > As a result I needed to specify a -march string for > amo-zaamo-preferred-over-zalrsc.c instead of using testsuite infra. I believe you are correct. > diff --git a/gcc/testsuite/gcc.target/riscv/amo-zaamo-preferred-over-zalrsc.c b/gcc/testsuite/gcc.target/riscv/amo-zaamo-preferred-over-zalrsc.c > new file mode 100644 > index 00000000000..1c124c2b8b1 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/amo-zaamo-preferred-over-zalrsc.c [ ... ] Not a big fan of the function-bodies tests. If we're going to use them, we need to be especially careful about requiring specific registers so that we're not stuck adjusting them all the time due to changes in the regsiter allocator, optimizers, etc. > diff --git a/gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-1.c b/gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-1.c > new file mode 100644 > index 00000000000..3cd6ce04830 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-1.c > @@ -0,0 +1,19 @@ > +/* { dg-do compile } */ > +/* Verify that lrsc atomic op mappings match Table A.6's recommended mapping. */ > +/* { dg-options "-O3 -march=rv64id_zalrsc" } */ > +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ > +/* { dg-final { check-function-bodies "**" "" } } */ > + > +/* > +** foo: > +** 1: > +** lr.w\ta5, 0\(a0\) > +** add\ta5, a5, a1 > +** sc.w\ta5, a5, 0\(a0\) > +** bnez\ta5, 1b > +** ret > +*/ > +void foo (int* bar, int* baz) > +{ > + __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED); > +} This one is a good example. We could just as easily use a variety of registers other than a5 for the temporary. Obviously for registers that hold the incoming argument or an outgoing result, we can be more strict. If you could take a look at the added tests and generalize the registers it'd be appreciated. OK with that adjustment. jeff