From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2565610798 for ; Mon, 7 Aug 2023 12:38:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1691411900; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ePFRnq6E9cmG1Qs9e3n4TY2fhHkanWOkJ/7w8uarlKU=; b=bugNhNCst/oZ6LGgUfRYoZpNy+eucYpEdVUl4qRw8lvEpP17VrlEkf50Bb9+/1MARBAP5/ S5HxMHGj4Z8BxTOuawT5LCA3+zBkpeQ5cXlwXjYoSaUYNm0OT0Se0yJL4FGrGaQL2EE2MM 8PHez85aAx4VcvsrvP+9he3bYVUucXM= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-637-wZWr1zJaMSiPiVo_gSlCsg-1; Mon, 07 Aug 2023 08:38:16 -0400 X-MC-Unique: wZWr1zJaMSiPiVo_gSlCsg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6FED585CBF9; Mon, 7 Aug 2023 12:38:15 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.45.224.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1DFFC1121314; Mon, 7 Aug 2023 12:38:14 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 377Cc9Gu3645380 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 7 Aug 2023 14:38:09 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 377Cc5lu3645379; Mon, 7 Aug 2023 14:38:05 +0200 Date: Mon, 7 Aug 2023 14:38:05 +0200 From: Jakub Jelinek To: Marco Elver Cc: Florian Weimer , Andrew Morton , Kees Cook , Guenter Roeck , Peter Zijlstra , Mark Rutland , Steven Rostedt , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , Nathan Chancellor , Nick Desaulniers , Tom Rix , Miguel Ojeda , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Dmitry Vyukov , Alexander Potapenko , kasan-dev@googlegroups.com, linux-toolchains@vger.kernel.org Subject: Re: [PATCH v2 1/3] compiler_types: Introduce the Clang __preserve_most function attribute Message-ID: Reply-To: Jakub Jelinek References: <20230804090621.400-1-elver@google.com> <87il9rgjvw.fsf@oldenburg.str.redhat.com> Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 On Mon, Aug 07, 2023 at 02:24:26PM +0200, Marco Elver wrote: > > | If the arguments are passed in callee-saved registers, then they will > > | be preserved by the callee across the call. This doesn’t apply for > > | values returned in callee-saved registers. > > | > > | · On X86-64 the callee preserves all general purpose registers, except > > | for R11. R11 can be used as a scratch register. Floating-point > > | registers (XMMs/YMMs) are not preserved and need to be saved by the > > | caller. > > | > > | · On AArch64 the callee preserve all general purpose registers, except > > | X0-X8 and X16-X18. > > > > Ideally, this would be documented in the respective psABI supplement. > > I filled in some gaps and filed: > > > > Document the ABI for __preserve_most__ function calls > > > > Good idea. I had already created > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110899, and we need > better spec to proceed for GCC anyway. "Registers used for passing arguments are preserved by the called function, but registers used for returning results are not." You mean just GPRs or also vector SSE or MMX registers? Because if some of those are to be preserved by callee, there is an issue that they need to be e.g. handled during unwinding, with all the consequences. It is hard to impossible to guess what size needs to be saved/restored, both normally or during unwinding. As caller could be say -mavx512f and expect preservation of all 512 bits and callee -msse2 or -mavx{,2}, or caller -mavx{,2} and expect preservation of all 256 bits and callee -msse2 etc. MSABI "solves" that by making just the low 128 bits preserved and upper bits clobbered. Jakub From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3BDAEC001DF for ; Mon, 7 Aug 2023 12:40:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Reply-To:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CH+P+Q0etAh1Q2wE+yacjmMazCCMW3bOo6hWvCF2rho=; b=nuASw8+rcpYnvK wwK61MavgkLEJqR9zG1owmNO4FOwvbb2kgrrp1+IJkucoFOKiJ9N+XhbnRlcV2yCX+hsN/rNYH9xb V7WesWu4ypcJt7RrNDiRBlD5uYuunKAWvrdJu5vhDVu01r+B2dKP81olEnLyq9JMNMLu6hWh1ovqb uPlE9hvhq//+eNrczJ+15DPkPPUGgnrJU0i9R0xQoGW/PxeG9BuzR7NVhAxZz5G6mazLwpEqPwwjy /Yi/niw6mwic81K6ILY/uagvt/2mGpKkCEQ6F3IqP2kMpl7QlysosMgkkqynC3ByQXQHfr2FipqVM z2FhpvoDsC4HcqnsH/6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qSzWs-00HFAE-3A; Mon, 07 Aug 2023 12:40:10 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qSzWp-00HF9n-2e for linux-arm-kernel@lists.infradead.org; Mon, 07 Aug 2023 12:40:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1691412005; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ePFRnq6E9cmG1Qs9e3n4TY2fhHkanWOkJ/7w8uarlKU=; b=REHpDmOJh7KacB17l2IVXdsfqWFkwkePPOeO/PwaYEXeYWstqzS5vqFnN+YEGTz8flyJl5 UA0RFwku3IzzfXu6lwI4nzVtp9/P21eztgYnzNZEHrWbbz7abweZniEoTivWgsPbMyk9xA W5s7EDukguutZ8dgpU8ElQ4Ijw+IzjU= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-637-wZWr1zJaMSiPiVo_gSlCsg-1; Mon, 07 Aug 2023 08:38:16 -0400 X-MC-Unique: wZWr1zJaMSiPiVo_gSlCsg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6FED585CBF9; Mon, 7 Aug 2023 12:38:15 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.45.224.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1DFFC1121314; Mon, 7 Aug 2023 12:38:14 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 377Cc9Gu3645380 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 7 Aug 2023 14:38:09 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 377Cc5lu3645379; Mon, 7 Aug 2023 14:38:05 +0200 Date: Mon, 7 Aug 2023 14:38:05 +0200 From: Jakub Jelinek To: Marco Elver Cc: Florian Weimer , Andrew Morton , Kees Cook , Guenter Roeck , Peter Zijlstra , Mark Rutland , Steven Rostedt , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , Nathan Chancellor , Nick Desaulniers , Tom Rix , Miguel Ojeda , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Dmitry Vyukov , Alexander Potapenko , kasan-dev@googlegroups.com, linux-toolchains@vger.kernel.org Subject: Re: [PATCH v2 1/3] compiler_types: Introduce the Clang __preserve_most function attribute Message-ID: References: <20230804090621.400-1-elver@google.com> <87il9rgjvw.fsf@oldenburg.str.redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230807_054008_032705_998614E3 X-CRM114-Status: GOOD ( 20.32 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Jakub Jelinek Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBBdWcgMDcsIDIwMjMgYXQgMDI6MjQ6MjZQTSArMDIwMCwgTWFyY28gRWx2ZXIgd3Jv dGU6Cj4gPiB8IElmIHRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCBpbiBjYWxsZWUtc2F2ZWQgcmVn aXN0ZXJzLCB0aGVuIHRoZXkgd2lsbAo+ID4gfCBiZSBwcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlZSBh Y3Jvc3MgdGhlIGNhbGwuIFRoaXMgZG9lc27igJl0IGFwcGx5IGZvcgo+ID4gfCB2YWx1ZXMgcmV0 dXJuZWQgaW4gY2FsbGVlLXNhdmVkIHJlZ2lzdGVycy4KPiA+IHwKPiA+IHwgIMK3ICBPbiBYODYt NjQgdGhlIGNhbGxlZSBwcmVzZXJ2ZXMgYWxsIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMsIGV4 Y2VwdAo+ID4gfCAgICAgZm9yIFIxMS4gUjExIGNhbiBiZSB1c2VkIGFzIGEgc2NyYXRjaCByZWdp c3Rlci4gRmxvYXRpbmctcG9pbnQKPiA+IHwgICAgIHJlZ2lzdGVycyAoWE1Ncy9ZTU1zKSBhcmUg bm90IHByZXNlcnZlZCBhbmQgbmVlZCB0byBiZSBzYXZlZCBieSB0aGUKPiA+IHwgICAgIGNhbGxl ci4KPiA+IHwKPiA+IHwgIMK3ICBPbiBBQXJjaDY0IHRoZSBjYWxsZWUgcHJlc2VydmUgYWxsIGdl bmVyYWwgcHVycG9zZSByZWdpc3RlcnMsIGV4Y2VwdAo+ID4gfCAgICAgWDAtWDggYW5kIFgxNi1Y MTguCj4gPgo+ID4gSWRlYWxseSwgdGhpcyB3b3VsZCBiZSBkb2N1bWVudGVkIGluIHRoZSByZXNw ZWN0aXZlIHBzQUJJIHN1cHBsZW1lbnQuCj4gPiBJIGZpbGxlZCBpbiBzb21lIGdhcHMgYW5kIGZp bGVkOgo+ID4KPiA+ICAgRG9jdW1lbnQgdGhlIEFCSSBmb3IgX19wcmVzZXJ2ZV9tb3N0X18gZnVu Y3Rpb24gY2FsbHMKPiA+ICAgPGh0dHBzOi8vZ2l0bGFiLmNvbS94ODYtcHNBQklzL3g4Ni02NC1B QkkvLS9tZXJnZV9yZXF1ZXN0cy80NT4KPiAKPiBHb29kIGlkZWEuIEkgaGFkIGFscmVhZHkgY3Jl YXRlZAo+IGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTExMDg5 OSwgYW5kIHdlIG5lZWQKPiBiZXR0ZXIgc3BlYyB0byBwcm9jZWVkIGZvciBHQ0MgYW55d2F5LgoK IlJlZ2lzdGVycyB1c2VkIGZvciBwYXNzaW5nIGFyZ3VtZW50cwphcmUgcHJlc2VydmVkIGJ5IHRo ZSBjYWxsZWQgZnVuY3Rpb24sIGJ1dCByZWdpc3RlcnMgdXNlZCBmb3IKcmV0dXJuaW5nIHJlc3Vs dHMgYXJlIG5vdC4iCgpZb3UgbWVhbiBqdXN0IEdQUnMgb3IgYWxzbyB2ZWN0b3IgU1NFIG9yIE1N WCByZWdpc3RlcnM/ICBCZWNhdXNlIGlmIHNvbWUKb2YgdGhvc2UgYXJlIHRvIGJlIHByZXNlcnZl ZCBieSBjYWxsZWUsIHRoZXJlIGlzIGFuIGlzc3VlIHRoYXQgdGhleSBuZWVkCnRvIGJlIGUuZy4g aGFuZGxlZCBkdXJpbmcgdW53aW5kaW5nLCB3aXRoIGFsbCB0aGUgY29uc2VxdWVuY2VzLiAgSXQg aXMgaGFyZAp0byBpbXBvc3NpYmxlIHRvIGd1ZXNzIHdoYXQgc2l6ZSBuZWVkcyB0byBiZSBzYXZl ZC9yZXN0b3JlZCwgYm90aCBub3JtYWxseQpvciBkdXJpbmcgdW53aW5kaW5nLiAgQXMgY2FsbGVy IGNvdWxkIGJlIHNheSAtbWF2eDUxMmYgYW5kIGV4cGVjdApwcmVzZXJ2YXRpb24gb2YgYWxsIDUx MiBiaXRzIGFuZCBjYWxsZWUgLW1zc2UyIG9yIC1tYXZ4eywyfSwKb3IgY2FsbGVyIC1tYXZ4eywy fSBhbmQgZXhwZWN0IHByZXNlcnZhdGlvbiBvZiBhbGwgMjU2IGJpdHMgYW5kIGNhbGxlZSAtbXNz ZTIgZXRjLgpNU0FCSSAic29sdmVzIiB0aGF0IGJ5IG1ha2luZyBqdXN0IHRoZSBsb3cgMTI4IGJp dHMgcHJlc2VydmVkIGFuZCB1cHBlciBiaXRzCmNsb2JiZXJlZC4KCglKYWt1YgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK