From patchwork Mon May 9 14:34:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lyon X-Patchwork-Id: 53656 Return-Path: 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 B86693948829 for ; Mon, 9 May 2022 14:36:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B86693948829 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1652106974; bh=ck9BfFlSYUdfYGTvUPwTPtKYq5grdkItiTN3LRXvJ+o=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=eZ/4fPm1OYF43Afaf5JSjk5UoMrMXyDQ5hD7B3rL4d+7BJijpHzaNVZafqKII2Ees JBxFiu2TbGdPiE1/YJIcQE/tA6H9a41lCtN9t2CX4oCR/83OUzQAx2CrIuaeCkIEw+ trho486onvyuGFdbxJ0Q8BxA3LdAvbD3wBekgt3A= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2060.outbound.protection.outlook.com [40.107.21.60]) by sourceware.org (Postfix) with ESMTPS id 2766C39484B8 for ; Mon, 9 May 2022 14:35:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2766C39484B8 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Fl2vu0CvgvpCECiT+UYypoGrIguXfTBsuPtf8y/0VgQ7bGb44RUjDjDLJo8EMbBx5saUM38IFpvi1pVSbLVaO5qPbCHcsv/xali3g06+2uz/RMvNK5MlJVXbCzskMd6Ith7oBgbZ7tt5cKaiCmLNcjELQH+vtiebBZOi2xFmE6+WvY9xiwg1mK/NgnYxh70nPekrjuXxPh9me8oaBPDGGGTVTfhaR2FEMf+6TVw0czf4jgS1q78gjOCA1BKnjPTvyWzE74Zb1rLIqhO1pap5gX8IMamlwO7I4T27xWB17geDy3no/gbSdfi46i42+ZfkSb+TQO/edq1bQilTN/KWEQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ck9BfFlSYUdfYGTvUPwTPtKYq5grdkItiTN3LRXvJ+o=; b=UfxHpCSa6H2Jy8oxk6DlnskHkt/7s82XCgBNGU7EO5o/J6kbV1DxVlu7PFue6OAbm0nW7GCM38SWkQovLWbUxcpgxP7tNcyBHdjvCsKDAPV189yS0Q4tZv5IYjbSTjbqMPDRfceIAVcvFLbiV/sJLq2+HvO1WNDi410SnsTMlZURNeT/ChVpkdgu+cRB9xJ3YJaD+GX4oN0YE0JK/9QpGdJw+GaGG80whDqJmRpclAtplCdbTCQABSO1TKTIe+3KT5MJuiuvCv81Re84hXK7sq8pREWVpCI8Z7dI2KQpC3ie90mIepQjWiTaA1enfWSSZphmyF57F/2SQgpnVLIvhQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AS9PR06CA0052.eurprd06.prod.outlook.com (2603:10a6:20b:463::20) by HE1PR0801MB2073.eurprd08.prod.outlook.com (2603:10a6:3:52::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.22; Mon, 9 May 2022 14:35:36 +0000 Received: from AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:463:cafe::f1) by AS9PR06CA0052.outlook.office365.com (2603:10a6:20b:463::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20 via Frontend Transport; Mon, 9 May 2022 14:35:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT003.mail.protection.outlook.com (10.152.16.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:35:35 +0000 Received: ("Tessian outbound 2d401af10eb3:v118"); Mon, 09 May 2022 14:35:35 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: da1d6501bb1493d5 X-CR-MTA-TID: 64aa7808 Received: from ad1da96653ca.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6A93C40F-C95A-4862-A183-4B97E72DC5C1.1; Mon, 09 May 2022 14:35:28 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ad1da96653ca.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 09 May 2022 14:35:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BJABSYkdEKwRguzNiCXseEJxQlSxHbWagHuX4ltg8X8tJ31i0mX6hQ0gAMWjG9jg1p4zw8A9N+CDb1+KVBmzpvjBF5Y5GtssQOvmfN/mnYypaeVpcjf7nlR7Mjq7kfa76KbSFvGgpSBGjicv+cd2B8f7DHSv0i2mvvdZ3r7KOD6FkMTTScfFh5PQSi8bvZC0nLFnnEk+9QO7PzBh5+aDl5KmmGQIS4OHEMzYQVzAa4Yo4gK9y6/to8pQyqoUqt5K3yzzEhk1nw7HLA5xp0Dr1phl3Bohmzumo5Thi4cdHCCvZWjUd4mkBTEY0kFjutI8xCFNmeZrSsbBrWgKwlBUMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ck9BfFlSYUdfYGTvUPwTPtKYq5grdkItiTN3LRXvJ+o=; b=TyajAbNdf2XvGFjWPbTA3VYhkmiI7yZD+2EcZRjtksqVsxGSr1Bh8geS2xP2QZLEvbazUqNJ+ZSyBRzrJ3L/eTG9f74A6OsVH46h+oO4SJK7L8+ryrpZ2S/wzXZ2mUhAeg8viyxtVtEC03SQfRs5hhKVg23+RtQ9NsA/Wn6JtY3gYiHfKg1QIaXALaZ8FIY3iEe4tI66dsaNWnwbWd1ptWhawEODesZJAG+p7jyyCMRl6K7jBfZ8/7/RwgOGjxTfD2zPFX+yG9blCDgCxIKH54SiqFgzuTn7Z8+DQdf/JEsaMNebeYiODkKuwZ4fLmleCA3FKk9osKsZafGrSTM1WQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none Received: from AS9PR06CA0345.eurprd06.prod.outlook.com (2603:10a6:20b:466::7) by PAXPR08MB7060.eurprd08.prod.outlook.com (2603:10a6:102:1df::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.21; Mon, 9 May 2022 14:35:26 +0000 Received: from AM5EUR03FT007.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:466:cafe::84) by AS9PR06CA0345.outlook.office365.com (2603:10a6:20b:466::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20 via Frontend Transport; Mon, 9 May 2022 14:35:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; Received: from nebula.arm.com (40.67.248.234) by AM5EUR03FT007.mail.protection.outlook.com (10.152.16.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5227.15 via Frontend Transport; Mon, 9 May 2022 14:35:26 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 9 May 2022 14:35:29 +0000 Received: from e129018.arm.com (10.57.34.214) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2308.27 via Frontend Transport; Mon, 9 May 2022 14:35:29 +0000 To: Subject: [PATCH 00/10] Enable Decimal Floating Point (DFP) on AArch64 Date: Mon, 9 May 2022 16:34:57 +0200 Message-ID: <20220509143507.239804-1-christophe.lyon@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-Office365-Filtering-Correlation-Id: 02fa9fcd-f3e8-4036-6654-08da31c92e01 X-MS-TrafficTypeDiagnostic: PAXPR08MB7060:EE_|AM5EUR03FT003:EE_|HE1PR0801MB2073:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: VyV4V/+Yo8b56+BwfSAim3rCia9RhHlQlVxOjMzrmB5ny0yIaYCqim/369MRL06SYUPPVwtX27+jT9xaQiOb2T1Wim0eZQkI/icyk5HbYljgHs1kUQ87BnPmac4UB6nvsrApZ9dKAKBSQuUfThmc149fef6VPAckm2Pqm1IxO6I4KH4CvbeZYiEXt8y4l0utXehK75t4gS5mv4Egiqa/VbIoD6smuBlAWCsAZZ2/+RNiX5eh5cfXUWHDUhwWUTGv/TgDIspE7ZVXXPjTSdNXh7jK9y0a2E/Fzz/iTtW7EIh3EUhGfJQAdruXhFQaKDUExEJOxgyXy/Y/PfoQyCr6GEeCfi2CtUprkAeaBwI0cs2YZBHUGpfkBqQK8qflUGUMtzjGKfOqr2QZ4W3IomLfzXvBpilE/geTBhoAxY2QzHR8bTRxkk4ZSY/RIBMYpmIstYpcURfL2YNQn8a03Z6heZ/ZhK+5zTZ0yBvLQooSJA1789XmZlKbThYQKuDs0GLTVRroF5WCcQRSpcM69FdSaDps1PYZ6t3Bu0zypTPIOIZ7JARVxuc00ashVa5sEpmGTB/QY39CfsWQuQl5/LY6liXdpjPys+ohwNfNMAEcQRNY11f54MQKK1BKPCzvPCzmyRtunBziF3hGamR65TcHzxO7j0tvJPB5MoEM/KGZCb5K5B8eoAoyPVI3oX2SW/pf96l3NZ5DtiaK+HELbofKh9UgoBOvhbmW43u4jxsg5nEpNZ0filxYq548NtE2Tw4PDtlUh7OcX8vTGvD6Xqgk1Zj6q7atjHLack/c2i/sIxw= X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(2616005)(5660300002)(186003)(336012)(426003)(47076005)(83380400001)(1076003)(70586007)(8676002)(4326008)(30864003)(2906002)(316002)(44832011)(70206006)(36756003)(8936002)(26005)(7696005)(86362001)(508600001)(356005)(6666004)(6916009)(40460700003)(81166007)(966005)(82310400005)(36860700001)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7060 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a1ccf0d2-b367-4c00-c07e-08da31c9288d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fRiUilUBUFIrpPK2Rwis/XtYpznuCqueuTroJHLqyXUIPsV2AQ9ONvsSmnOU97P80SWAuYqjDV98lB67sjpoes+6q0rSqad/qb13bJi1WX/8rOO0mXniP421rurazA4KhszxIK+9ZrYETg7nDQVrlM/G2Dx8HlytJm1akyCHA92RqbBZIcboq1xONEgCmQsaIY5+keqvNLukJbHkhvcAFekWz+rF0381AUjc0K90K5cDhjOdzfIF/FxzdKx15ljfo4LnQE0m2yqOGj2gfHGxVplpHi8lUZ0Ktr087pKvZxn4XahsAVQfb83wQLUfZvdYb+tHFxGiesMz3ihHDAhXWnxwPaa1PVAdSowZA6JcBhMksVMIM6HDVpmzwCxjLcQQJs4JbAoB1ErOXtW8rqRvq7ENLJWYuA+ZBZAPqM6QXn5tMZxQTczA+wsyCxGruugZ5I4u0UR+GG7Ugwmr9clcxBxD4FSpIwua29becRfYcrhIkgHuYUxATw4RrIc4VvAraR96vLKFdyRbnXoc6qonyUGYWBUpTNJdQaTCMg5asB3o+pUbm1A/zR4lUPpUwb1gFNeg79tasd/KEOuZ8811J9J/E+SDNpz9yqKy0kBSUF5osxM3IJDydJuR7hML64lejQvfLJHQodybQVf4mrFL9IFmofN0sqSVu9TL8cYUGINSyvqbbIvUEm1zmngdUqVvimHM3nm1Ad2SEE7jUroG/8IJHkZSaFZZTEBSvaVuLNhJ9A6QmmHCUEuyavMtt1Ol X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(336012)(1076003)(426003)(2616005)(40460700003)(86362001)(82310400005)(47076005)(30864003)(316002)(26005)(186003)(5660300002)(44832011)(966005)(4326008)(8936002)(81166007)(36756003)(36860700001)(2906002)(70206006)(70586007)(6916009)(83380400001)(7696005)(6666004)(8676002)(508600001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2022 14:35:35.3877 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 02fa9fcd-f3e8-4036-6654-08da31c92e01 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2073 X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Christophe Lyon via Gcc-patches From: Christophe Lyon Reply-To: Christophe Lyon Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This patch series enables support of DFP on AArch64, using the BID format (Binary Integer Decimal). There is no HW support for DFP on AArch64, and we made a choice similar to x86: BID format using libgcc's libbid for software emulation. This work was done independently from Andrew's patch, which I discovered some time after I started [1]. The essence is similar although the AArch64 back-end evolved quite a bit since then, and I add several tests. The ABI has been documented a few months ago: _Decimal32 is treated like float, _Decimal64 is treated like double and _Decimal128 is treated like long double, using the same registers and conventions (sN, dN, qN, varargs handling). I have patches for GDB, which I'll send once this series is committed in GCC since the first GDB patch is to merge the libdecnumber updated. As of testing, I have also used libdfp, which required only a couple of minor patches, and its testsuite passes. I have tested the whole series on aarch64, aarch64_be and x86_64, no regression, all the DFP tests pass. OK? Thanks, Christophe [1] https://gcc.gnu.org/legacy-ml/gcc-patches/2017-07/msg00788.html Christophe Lyon (10): aarch64: Enable DFP (Decimal Floating-point) (BID format) aarch64: Add backend support for DFP libgcc: Enable XF mode conversions to/from DFP modes only if supported libgcc: enable DFP for AArch64 testsuite:: Fix pr39986.c testcase for AArch64 testsuite: Add new tests for DFP under aarch64/aapcs64 testsuite: enable more BID DFP tests for AArch64 testsuite: Add C++ unwinding tests with Decimal Floating-Point libgcc: Add support for HF mode (aka __fp16) in libbid libgcc: use __builtin_clz and __builtin_ctz in libbid config/dfp.m4 | 3 +- gcc/config/aarch64/aarch64.cc | 95 ++++++++++--- gcc/config/aarch64/aarch64.md | 86 ++++++------ gcc/config/aarch64/iterators.md | 28 +++- gcc/configure | 3 +- gcc/doc/sourcebuild.texi | 3 + gcc/testsuite/c-c++-common/dfp/pr39986.c | 22 +-- gcc/testsuite/g++.dg/eh/dfp-1.C | 54 +++++++ gcc/testsuite/g++.dg/eh/dfp-2.C | 54 +++++++ gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C | 49 +++++++ .../gcc.dg/dfp/bid-non-canonical-d128-1.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d128-2.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d128-3.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d128-4.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d32-1.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d32-2.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d64-1.c | 3 +- .../gcc.dg/dfp/bid-non-canonical-d64-2.c | 3 +- .../gcc.target/aarch64/aapcs64/aapcs64.exp | 8 ++ .../gcc.target/aarch64/aapcs64/dfp-1.c | 24 ++++ .../gcc.target/aarch64/aapcs64/func-ret-1.c | 7 + .../gcc.target/aarch64/aapcs64/func-ret-3.c | 67 +++++++++ .../gcc.target/aarch64/aapcs64/ice_dfp_5.c | 20 +++ .../aarch64/aapcs64/test_align_dfp-1.c | 126 +++++++++++++++++ .../aarch64/aapcs64/test_align_dfp-4.c | 42 ++++++ .../gcc.target/aarch64/aapcs64/test_dfp_1.c | 31 ++++ .../gcc.target/aarch64/aapcs64/test_dfp_10.c | 26 ++++ .../gcc.target/aarch64/aapcs64/test_dfp_11.c | 34 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_12.c | 44 ++++++ .../gcc.target/aarch64/aapcs64/test_dfp_13.c | 34 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_14.c | 35 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_15.c | 21 +++ .../gcc.target/aarch64/aapcs64/test_dfp_16.c | 32 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_17.c | 37 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_18.c | 34 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_19.c | 35 +++++ .../gcc.target/aarch64/aapcs64/test_dfp_2.c | 17 +++ .../gcc.target/aarch64/aapcs64/test_dfp_20.c | 22 +++ .../gcc.target/aarch64/aapcs64/test_dfp_21.c | 21 +++ .../gcc.target/aarch64/aapcs64/test_dfp_22.c | 19 +++ .../gcc.target/aarch64/aapcs64/test_dfp_23.c | 42 ++++++ .../gcc.target/aarch64/aapcs64/test_dfp_24.c | 22 +++ .../gcc.target/aarch64/aapcs64/test_dfp_25.c | 61 ++++++++ .../gcc.target/aarch64/aapcs64/test_dfp_26.c | 54 +++++++ .../gcc.target/aarch64/aapcs64/test_dfp_27.c | 46 ++++++ .../gcc.target/aarch64/aapcs64/test_dfp_3.c | 18 +++ .../gcc.target/aarch64/aapcs64/test_dfp_5.c | 24 ++++ .../gcc.target/aarch64/aapcs64/test_dfp_6.c | 26 ++++ .../gcc.target/aarch64/aapcs64/test_dfp_7.c | 30 ++++ .../gcc.target/aarch64/aapcs64/test_dfp_8.c | 24 ++++ .../gcc.target/aarch64/aapcs64/test_dfp_9.c | 32 +++++ .../aarch64/aapcs64/test_quad_double_dfp.c | 26 ++++ .../gcc.target/aarch64/aapcs64/type-def.h | 132 ++++++++++++++++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-1.c | 60 ++++++++ .../aarch64/aapcs64/va_arg_dfp-10.c | 29 ++++ .../aarch64/aapcs64/va_arg_dfp-11.c | 32 +++++ .../aarch64/aapcs64/va_arg_dfp-12.c | 64 +++++++++ .../aarch64/aapcs64/va_arg_dfp-13.c | 59 ++++++++ .../aarch64/aapcs64/va_arg_dfp-14.c | 35 +++++ .../aarch64/aapcs64/va_arg_dfp-16.c | 28 ++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-2.c | 75 ++++++++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-3.c | 94 +++++++++++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-4.c | 90 ++++++++++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-5.c | 47 +++++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-6.c | 40 ++++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-8.c | 25 ++++ .../gcc.target/aarch64/aapcs64/va_arg_dfp-9.c | 31 ++++ .../gcc.target/aarch64/convert-dfp-2.c | 42 ++++++ .../gcc.target/aarch64/convert-dfp.c | 60 ++++++++ gcc/testsuite/lib/target-supports.exp | 11 ++ libdecnumber/configure | 3 +- libgcc/Makefile.in | 9 +- libgcc/config.host | 6 + libgcc/config/libbid/_dd_to_hf.c | 36 +++++ libgcc/config/libbid/_dd_to_xf.c | 2 + libgcc/config/libbid/_hf_to_dd.c | 36 +++++ libgcc/config/libbid/_hf_to_sd.c | 36 +++++ libgcc/config/libbid/_hf_to_td.c | 36 +++++ libgcc/config/libbid/_sd_to_hf.c | 36 +++++ libgcc/config/libbid/_sd_to_xf.c | 2 + libgcc/config/libbid/_td_to_hf.c | 36 +++++ libgcc/config/libbid/_td_to_xf.c | 2 + libgcc/config/libbid/_xf_to_dd.c | 2 + libgcc/config/libbid/_xf_to_sd.c | 2 + libgcc/config/libbid/_xf_to_td.c | 2 + libgcc/config/libbid/bid_binarydecimal.c | 51 +------ libgcc/config/libbid/bid_gcc_intrinsics.h | 30 +++- libgcc/configure | 3 +- 88 files changed, 2698 insertions(+), 148 deletions(-) create mode 100644 gcc/testsuite/g++.dg/eh/dfp-1.C create mode 100644 gcc/testsuite/g++.dg/eh/dfp-2.C create mode 100644 gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/dfp-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/ice_dfp_5.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_10.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_11.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_12.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_13.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_14.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_15.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_17.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_18.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_19.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_20.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_21.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_22.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_23.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_24.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_25.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_26.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_27.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_5.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_6.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_7.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_9.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_quad_double_dfp.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-10.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-11.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-12.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-13.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-14.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-5.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-6.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-9.c create mode 100644 gcc/testsuite/gcc.target/aarch64/convert-dfp-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/convert-dfp.c create mode 100644 libgcc/config/libbid/_dd_to_hf.c create mode 100644 libgcc/config/libbid/_hf_to_dd.c create mode 100644 libgcc/config/libbid/_hf_to_sd.c create mode 100644 libgcc/config/libbid/_hf_to_td.c create mode 100644 libgcc/config/libbid/_sd_to_hf.c create mode 100644 libgcc/config/libbid/_td_to_hf.c