From patchwork Fri Feb 17 07:12:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Oliva X-Patchwork-Id: 58380 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp750211wrn; Thu, 16 Feb 2023 23:35:21 -0800 (PST) X-Google-Smtp-Source: AK7set+msU4tKPLXx7RnXgSt1606R8yOs64JvHGm4k16qgNeQ15wIOMyWi4l9t8SKw3+TYMkITBJ X-Received: by 2002:aa7:c04d:0:b0:4ac:b950:a11 with SMTP id k13-20020aa7c04d000000b004acb9500a11mr8600068edo.33.1676619321374; Thu, 16 Feb 2023 23:35:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676619321; cv=none; d=google.com; s=arc-20160816; b=NuqrcQ/e9xD8kefVXUOmD72DhOI7/XKj7JTzDBYMCNdvTWaVZHi4zb8rgm+kQU3cT/ oRbihn5Z+HNDRzNKahBxUmL5y9TFlkofMTnD5kwExbTFxqlsA5fJom2nlo2tco+O/gCq SGkLAFP4nI3rIqBhcQL4AE8Dvl5X+bhqZ8cNxbreLDgmCdMq3+VOo8cWCbmOsXNBu63W S32XWRF4wE/6K6Y3qrOk8NjxubjmB5jjpjl7/EIfNU69ZxwVDLUctJDkXujxo3HVYU+t TcadkJJMZLHSpY6RXShhAUHrGxrm8dmdsK5bYfF2uWT+tKnH1MmOpIPFjIYFUIOJyQQA mCNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:mime-version :user-agent:message-id:date:organization:subject:cc:to:dmarc-filter :delivered-to:dkim-signature:dkim-filter; bh=F1jfFy/n4d2bBwrRXMZVNhceYJUmOgVXy0uUJBryHAM=; b=GKyzZcSM6X+2fGKnH/mI230xmz+a+EGrBHexMhiged8nKYfk23T6bTyvOJu6WXB7X1 o1frqYyf1W4CwABox/S+UaNvg1yLBhNY1SG25mc6cuXT8QmFpNJ67KiDgIDBwgK6hel6 osvxxl7KSlFAex1QHqQx2KOBOE32GQBVoj7Avx71oFTgxGUgDl/inVmbq6nByg0mvBAX ZypgNy7xCqHV7DTpui7a3GeeC5l8GYJRTU8KJkxVcif88aWc+i/5B18MayyIEyubX/yB 44wkJjNwm0VrRDjEQA4/Ssiknitykf8ptmfgzd3rODyO0omOdXkgNuq6D+J9YOowQgTw WPAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=G38NtsKR; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id l6-20020aa7c3c6000000b004ad7265c2easi2675006edr.200.2023.02.16.23.35.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Feb 2023 23:35:21 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=G38NtsKR; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 305CB3858C39 for ; Fri, 17 Feb 2023 07:35:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 305CB3858C39 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1676619320; bh=F1jfFy/n4d2bBwrRXMZVNhceYJUmOgVXy0uUJBryHAM=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=G38NtsKRLJtAa+yoaG7IhV4wJo6eKohCDyCsYsCXPrBgmah5BMlWsOdhz8vWV8chJ 5eFLmS4gBq6jbt+lab/SoM1J5LTw3bxWvI2vzxjKmITSIgWVOcbFWc+OJmy2j5I/pZ q/TYCax0mIuzAGhA536MeIUTrIAEySI6vgLhq96s= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTPS id B9BAF3858C39 for ; Fri, 17 Feb 2023 07:32:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B9BAF3858C39 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 8CC15116B6C; Fri, 17 Feb 2023 02:32:35 -0500 (EST) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id s2rTeVhqrar8; Fri, 17 Feb 2023 02:32:35 -0500 (EST) Received: from free.home (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPS id 1E1E2116B59; Fri, 17 Feb 2023 02:32:34 -0500 (EST) Received: from livre (livre.home [172.31.160.2]) by free.home (8.15.2/8.15.2) with ESMTPS id 31H7C3Vw091048 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 17 Feb 2023 04:12:03 -0300 To: gcc-patches@gcc.gnu.org Cc: nickc@redhat.com, richard.earnshaw@arm.com Subject: [PATCH] [arm] adjust expectations for armv8_2-fp16-move-[12].c Organization: Free thinker, does not speak for AdaCore Date: Fri, 17 Feb 2023 04:12:03 -0300 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alexandre Oliva via Gcc-patches From: Alexandre Oliva Reply-To: Alexandre Oliva Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758062781697288693?= X-GMAIL-MSGID: =?utf-8?q?1758062781697288693?= Commit 3a7ba8fd0cda387809e4902328af2473662b6a4a, a patch for tree-ssa-sink, enabled the removal of basic blocks in ways that affected the generated code for both of these tests, deviating from the expectations of the tests. The simplest case is that of -2, in which the edge unsplitting ends up enabling a conditional return rather than a conditional branch to a set-and-return block. That looks like an improvement to me, but the condition in which the branch or the return takes place can be reasonably reversed (and, with the current code, it is), I've relaxed the pattern in the test so as to accept reversed and unreversed conditions applied to return or branch opcodes. The situation in -1 is a little more elaborate: conditional branches based on FP compares in test_select_[78] are initially expanded with CCFPE compare-and-cbranch on G{T,E}, but when ce2 turns those into a cmove, because now we have a different fallthrough block, the condition is reversed, and that lands us with a compare-and-cmove sequence that needs CCFP for UNL{E,T}. The insn output reverses the condition and swaps the cmove input operands, so the vcmp and vsel insns come out the same except for the missing 'e' (for the compare mode) in vcmp, so, since such reversals could have happened to any of the tests depending on legitimate basic block layout, I've combined the vcmp and vcmpe counts. I see room for improving cmove sequence generation, e.g. trying direct and reversed conditions and selecting the cheapest one (which would require CCFP conditions to be modeled as more expensive than CCFPE), or for some other machine-specific (peephole2?) optimization to turn CCFP-requiring compare and cmove into CCFPE compare and swapped-inputs cmove, but I haven't tried that. Regstrapped on x86_64-linux-gnu. Tested on arm-vxworks7 (gcc-12) and arm-eabi (trunk). Ok to install? for gcc/testsuite/ChangeLog * gcc.target/arm/armv8_2-fp16-move-1.c: Combine vcmp and vcmpe expected counts into a single pattern. * gcc.target/arm/armv8_2-fp16-move-2.c: Accept conditional return and reversed conditions. --- gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c | 3 +-- gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c index 009bb8d1575a4..444c4a3353555 100644 --- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c +++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c @@ -196,5 +196,4 @@ test_compare_5 (__fp16 a, __fp16 b) /* { dg-final { scan-assembler-not {vcmp\.f16} } } */ /* { dg-final { scan-assembler-not {vcmpe\.f16} } } */ -/* { dg-final { scan-assembler-times {vcmp\.f32} 4 } } */ -/* { dg-final { scan-assembler-times {vcmpe\.f32} 8 } } */ +/* { dg-final { scan-assembler-times {vcmpe?\.f32} 12 } } */ diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c index fcb857f29ff15..dff57ac8147c2 100644 --- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c +++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c @@ -8,4 +8,4 @@ test_select (__fp16 a, __fp16 b, __fp16 c) { return (a < b) ? b : c; } -/* { dg-final { scan-assembler "bmi" } } */ +/* { dg-final { scan-assembler "bx?(mi|pl)" } } */