Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp2998835rwb; Mon, 7 Aug 2023 06:53:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFgPvm+GC47BD2zv1FXu4ewnBNNTBhgw1qkNs4MUPnmL0zRghxdonUwuhD+9KhoWUa4OzhO X-Received: by 2002:a05:6a20:160b:b0:137:53d1:3e2 with SMTP id l11-20020a056a20160b00b0013753d103e2mr9238246pzj.41.1691416380194; Mon, 07 Aug 2023 06:53:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691416380; cv=none; d=google.com; s=arc-20160816; b=KsCgQPXdz8EZ5w36/Cv1RskviokdS8njsK31tdt6l7BddE77uzWsCQDqPUhJSf0ZOD +elFKEmvA2B87ie5S8GUcxvo5uFobKyIA80krhGPE7TpzwA0yaXyxZit5E4Cu+UqoHfv N8PFoEKJbpc/fPZ3uDRTT/m8nBbY9jnzeLrc6KpgdBx4Sd2DNS5sZpdemkXkRquiePQM XoxxfjE3m0yfbF2WDGpFAmWBnb03TVwfNb6WPbSm3YCERS4yZ9yKQuky28gt9TnG/XSP r9wq52QI5jvnVAeWSS7LkTeO1Lw1NGIYsU5ENtquXsUElP+1WraQBXYZ088Jhtt3R+CM nAWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:reply-to:message-id :subject:cc:to:from:date:dkim-signature; bh=ePFRnq6E9cmG1Qs9e3n4TY2fhHkanWOkJ/7w8uarlKU=; fh=EnRYQXx2UDmhKHq7TfNYTxUTET/dp0zrxu9EmAhtS/M=; b=u4CfppqlO1yBR+GmPInSgGIuTMBRGJ6PTOH3JQqAaSxRKJ/l9RmRMyiOeW4qOQSwOy QnguqAep2jbMIB6Au8Qe0nAoeMkBx6/wLiZpUbxsqgHSiJN6ZK2JflES0oV3u3Vt77Dq ta5YlOH6ggVFt4MwGArqoHSM/mFhePgSFoGm/0TOj4SX42v8X+7nldy/tsl9JyKBuxIx aMuDEY88x7E6h70HUeK3rHqU6GBV4w59F+U6QfqvEbsUn3Y6xCU55tefg3fwsSnIr3u7 2vBwcVYF4CqP3p1f/gXZGilYuyg3rYIH5883mYGQiMheBl3tp5QZf6ntMbMHFxmtZ12M IdgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=NCu+0CXT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l189-20020a6388c6000000b005641dfc74casi5762888pgd.745.2023.08.07.06.52.48; Mon, 07 Aug 2023 06:53:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=NCu+0CXT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231244AbjHGMkY (ORCPT + 99 others); Mon, 7 Aug 2023 08:40:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230041AbjHGMkW (ORCPT ); Mon, 7 Aug 2023 08:40:22 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC3972125 for ; Mon, 7 Aug 2023 05:39:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1691411902; 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=NCu+0CXT09x/c2G6JFFd6oliB2FWC0LHHHu5v269PEeGLt9208GcOE7/eBpEhj24/3+IjZ WhMD+2erLDyrX9ZeGbpQ181gvMpsml3CVpFb9apaj1tpbk+6lx66VHNeBvV6xqoBog+QJL 08c7/9W0zPlwVcBDoQx+tWjuLb+KvJc= 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> 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 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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