From patchwork Thu Jan 25 17:45:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Andre Vieira (lists)" X-Patchwork-Id: 1890941 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TLSsp5wdbz1yS7 for ; Fri, 26 Jan 2024 04:45:50 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CE96438582BF for ; Thu, 25 Jan 2024 17:45:48 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 2E42A3858427 for ; Thu, 25 Jan 2024 17:45:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2E42A3858427 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2E42A3858427 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706204730; cv=none; b=MZE57YCT2IOxTsPrGfqQXwhtljO0Olf+COx1mryb/7CQF7fHrdiPguootNxXbDUCCybu6Bu9he5p68s4tK5jExWZQytpoMfMXAhbpPgy6cfSeLbLorMC0rxzMAkb8gx1FTEmu50SzMgCyzaFv2HU4oF06xpYWnY/r0RTtBXD5QQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706204730; c=relaxed/simple; bh=p6/9EUYO8rIr21t8Ylisx7lfhuAP0tJFGdLnzRExgdY=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=EiH3H81TOdhRGtCsT+pThCR78R8YYUF+J9GRDh3rZZCWcnbiOdSQxOd5rtLn70ubBN4sb3tKIINfSOC5PDYBxVtUJhLXY7+Ba1J8uqYKZb7vP5xCEk9rpnA9az8NJYISxyMvJRGxWozpE0YhO3NQ5PyXPbJzJForJZWZfXhfqRY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 44B7F1FB; Thu, 25 Jan 2024 09:46:13 -0800 (PST) Received: from e107157-lin.cambridge.arm.com (e107157-lin.cambridge.arm.com [10.2.78.70]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 167223F73F; Thu, 25 Jan 2024 09:45:27 -0800 (PST) From: Andre Vieira To: gcc-patches@gcc.gnu.org Cc: Richard.Sandiford@arm.com, Jakub@redhat.com, kyrylo.tkachov@arm.com, Andre Vieira Subject: [PATCH 1/2] bitint: Use TARGET_ARRAY_MODE for large bitints where target supports it Date: Thu, 25 Jan 2024 17:45:00 +0000 Message-Id: <20240125174501.32634-2-andre.simoesdiasvieira@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240125174501.32634-1-andre.simoesdiasvieira@arm.com> References: <20240125174501.32634-1-andre.simoesdiasvieira@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch ensures we use TARGET_ARRAY_MODE to determine the storage mode of large bitints that are represented as arrays in memory. This is required to support such bitints for aarch64 and potential other targets with similar bitint specifications. Existing tests like gcc.dg/torture/bitint-25.c are affected by this for aarch64 targets. gcc/ChangeLog: stor-layout.cc (layout_type): Use TARGET_ARRAY_MODE for large bitints for targets that implement it. --- gcc/stor-layout.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/stor-layout.cc b/gcc/stor-layout.cc index 4cf249133e9..31da2c123ab 100644 --- a/gcc/stor-layout.cc +++ b/gcc/stor-layout.cc @@ -2427,8 +2427,16 @@ layout_type (tree type) } else { - SET_TYPE_MODE (type, BLKmode); cnt = CEIL (TYPE_PRECISION (type), GET_MODE_PRECISION (limb_mode)); + machine_mode mode; + /* Some targets use TARGET_ARRAY_MODE to select the mode they use + for arrays with a specific element mode and a specific element + count and we should use this mode for large bitints that are + stored as such arrays. */ + if (!targetm.array_mode (limb_mode, cnt).exists (&mode) + || !targetm.array_mode_supported_p (limb_mode, cnt)) + mode = BLKmode; + SET_TYPE_MODE (type, mode); gcc_assert (info.abi_limb_mode == info.limb_mode || !info.big_endian == !WORDS_BIG_ENDIAN); }