Message ID | 20231113142658.69039-3-rearnsha@arm.com |
---|---|
State | Unresolved |
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp1238854vqg; Mon, 13 Nov 2023 06:28:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IFn6GeDL/Q82Pelk/LpZnCJzVaCdby6WlqPW/JvAUeo/ozrWovkQmiRDIoG6+VfYB6dCeul X-Received: by 2002:a25:cfd6:0:b0:d8b:1407:f61d with SMTP id f205-20020a25cfd6000000b00d8b1407f61dmr6250042ybg.26.1699885715527; Mon, 13 Nov 2023 06:28:35 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1699885715; cv=pass; d=google.com; s=arc-20160816; b=pMm5tIm2XnJuJDz4Ramg/gmprOLbPHtirS+5zDRx+XXwW8QjrnbsmUg15NDUCBoDYa 3Os2a0IYHwrVZyB30FIun/bsA9WFW1CEZsfXCXEqFZ6ChRpAS9CIzU7r/qU6KADG7I4j R9FpPyoAVKNWtjFtgktdeFiudo+LQNdFYc7k1hEYNmh0YlgaC7ISPgZ5RydOaS7cAQDW sYVm5gun3EiKRFGbaJVl64xFbXACUMDwrNHbwqRsl9DDpr01n/9hysND3C9zxzsuvBmO 620X9nZn2PpezK1ISAWDXbIaaU27cacLfVoZGGiB8BvNWXXtjf6JGNXAc9cL2qqd5Q8d NL5A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to; bh=hjHwEHkXoZOMxD/jg28bgh5240Ym8gHwmoJOIH6Os2g=; fh=vcPCoAFD9ELdvNMTpDIWpczE2wb0OD9E1jzZw6wSlzw=; b=KifPunRmWExJUAxP8AwlzO2v9wKVQaGwbNVtDro0vjKrmsUwC2yG70EHdrIbikJ93H eRm4jDrm9dLVuim5dIoskLvgfdZWiqKNKGoCpvsjeNTsCf4rLuhto9nvaAIJiETVVeRz g9drlDZWThopb+3yyCSAimKT+VY50Ri3ib14itQJbaD7SO2Bt2TZROTp1wrluf6G0sLi pOzcigtWeodHREJh777ox6eZ3bkUxTbVH9/NXHJvUJUYflH43Kfk83cWfKqk7q8oOml2 RjHfTDyYGQ3+zrrMipZ2iolktgn1B54LROB5kOvjTlDV32ZsiRqGAqKFjVx0Lm9uV1jI MImQ== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id f22-20020ac859d6000000b0041996c8044dsi4651550qtf.307.2023.11.13.06.28.35 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Nov 2023 06:28:35 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 43C86396C8FC for <ouuuleilei@gmail.com>; Mon, 13 Nov 2023 14:27:55 +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 3DFCA38618A2 for <gcc-patches@gcc.gnu.org>; Mon, 13 Nov 2023 14:27:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3DFCA38618A2 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 3DFCA38618A2 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=1699885646; cv=none; b=sRP7OROZyB03xwI9KvkXUMmuqKfl4WtM7YheIk05l2WWTrG0tKHEoJphzFZgNa0vVy2vL94ACnF/P74xcNUijfEYl1YoN6zwj/zuDp0d8J2KDYuh8ybDxQpJbGr0BhtX/dR5IiJGD0bJp8YkwNwPlSvGKUyGYc5ViNQhddbsFuQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699885646; c=relaxed/simple; bh=WynT6Oq/B43Sc7si64hKZDvyIJx7OjTFXGvpijfQfSI=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=JnalE/9UjfXzM8tzKz4a46eGPbVm+VLG328CBHvT8zPBTHaJ91E/E+mA7ISDf8k/mHqbj214cBFvUlfAtJSnOZ6oH34Te702aCzQig0RxWGK5IwqlMg5k4mj6EGQio3ycuTofx9Vld2XizRSQWQa/zpqo8nDLFzDYLyC8KGtjd8= 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 62414150C; Mon, 13 Nov 2023 06:28:10 -0800 (PST) Received: from e126323.arm.com (unknown [10.57.41.187]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 740D53F7B4; Mon, 13 Nov 2023 06:27:24 -0800 (PST) From: Richard Earnshaw <rearnsha@arm.com> To: gcc-patches@gcc.gnu.org Cc: Richard Earnshaw <rearnsha@arm.com> Subject: [committed 02/22] arm: testsuite: correctly detect hard_float Date: Mon, 13 Nov 2023 14:26:38 +0000 Message-Id: <20231113142658.69039-3-rearnsha@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231113142658.69039-1-rearnsha@arm.com> References: <20231113142658.69039-1-rearnsha@arm.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------2.34.1" Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-14.3 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 <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782459364324584948 X-GMAIL-MSGID: 1782459364324584948 |
Series |
arm: testsuite: clean up some architecture-specific tests
|
|
Checks
Context | Check | Description |
---|---|---|
snail/gcc-patch-check | warning | Git am fail log |
Commit Message
Richard Earnshaw
Nov. 13, 2023, 2:26 p.m. UTC
Add an arm-specific test to check_effective_target_hard_float for Arm to handle cases where we only have single-precision FP in hardware. gcc/testsuite: * lib/target-supports.exp (check_effective_target_hard_float): Add arm-specific test. --- gcc/testsuite/lib/target-supports.exp | 11 +++++++++++ 1 file changed, 11 insertions(+)
Comments
Hi Richard, On Mon, 13 Nov 2023 at 15:27, Richard Earnshaw <rearnsha@arm.com> wrote: > > > Add an arm-specific test to check_effective_target_hard_float for > Arm to handle cases where we only have single-precision FP in hardware. > > gcc/testsuite: > > * lib/target-supports.exp (check_effective_target_hard_float): Add > arm-specific test. > --- > gcc/testsuite/lib/target-supports.exp | 11 +++++++++++ > 1 file changed, 11 insertions(+) > Our CI has detected a problem when testing this patch for cortex-m33: with -mthumb/-march=armv8-m.main+dsp+fp/-mtune=cortex-m33/-mfloat-abi=hard/-mfpu=auto and GCC configured with --disable-multilib --with-mode=thumb --with-cpu=cortex-m33 --with-float=hard FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -O0 execution test FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -O1 execution test FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -O2 execution test FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -O3 -g execution test FAIL: gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c -Os execution test We use qemu for testing. Do these tests pass in your configuration? Thanks, Christophe
On 20/11/2023 10:41, Christophe Lyon wrote: > Hi Richard, > > > On Mon, 13 Nov 2023 at 15:27, Richard Earnshaw <rearnsha@arm.com> wrote: >> >> >> Add an arm-specific test to check_effective_target_hard_float for >> Arm to handle cases where we only have single-precision FP in hardware. >> >> gcc/testsuite: >> >> * lib/target-supports.exp (check_effective_target_hard_float): Add >> arm-specific test. >> --- >> gcc/testsuite/lib/target-supports.exp | 11 +++++++++++ >> 1 file changed, 11 insertions(+) >> > > Our CI has detected a problem when testing this patch for cortex-m33: > with > -mthumb/-march=armv8-m.main+dsp+fp/-mtune=cortex-m33/-mfloat-abi=hard/-mfpu=auto > and GCC configured with --disable-multilib --with-mode=thumb > --with-cpu=cortex-m33 --with-float=hard > > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -O0 execution test > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -O1 execution test > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -O2 execution test > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -O2 -flto -fno-use-linker-plugin -flto-partition=none execution > test > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -O3 -g execution test > FAIL: > gcc:gcc.dg/torture/dg-torture.exp=gcc.dg/torture/fp-double-convert-float-1.c > -Os execution test > I think this technically is a real bug in the port. This test changes the rounding modes, but cortex-m33 only has a single-precision FP unit, so single-precision is handled in HW, while double-precision is handled in SW. The soft-float functions don't support changing the rounding mode, and certainly not through fesetround(), so we don't get the expected results. I think the test would always have failed, but we didn't run it in the past as the default test for HW fp only checked for double precision HW. Fixing the real problem is not trivial though, especially in a mixed hard/soft environment. > We use qemu for testing. Do these tests pass in your configuration? > > Thanks, > > Christophe R.
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index d414cddf4dc..ee173b9fb6b 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1420,6 +1420,17 @@ proc check_effective_target_mpaired_single { args } { # Return true if the target has access to FPU instructions. proc check_effective_target_hard_float { } { + # This should work on cores that only have single-precision, + # and should also correctly handle legacy cores that had thumb1 and + # lacked FP support for that, but had it in Arm state. + if { [istarget arm*-*-*] } { + return [check_no_compiler_messages hard_float assembly { + #if __ARM_FP == 0 + #error __arm_soft_float + #endif + }] + } + if { [istarget loongarch*-*-*] } { return [check_no_compiler_messages hard_float assembly { #if (defined __loongarch_soft_float)