From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2088.outbound.protection.outlook.com [40.107.241.88]) by sourceware.org (Postfix) with ESMTPS id 4516D386187D for ; Wed, 27 Sep 2023 00:51:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4516D386187D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pu9uc/bi2EfCfIX0KLmfQ4r9co2G/Q69jlco4mNde1Q=; b=W9reBpQQn4inPADIzSMtSFFP8tPwFf61Wkq3sd+Fu9zzCn2vwa63DDO1huh7MItxTKz8xs+wvQlWQrKut87i+M0q0+ZvkHDfQld+Dmjdujpzhzx9t+yFya5HvSHR2GqSsYTY0B+jyfcyr6k7VQWr2YJ6wkD28prNO2Hvv62Ijg0= Received: from AM0PR05CA0092.eurprd05.prod.outlook.com (2603:10a6:208:136::32) by DBAPR08MB5591.eurprd08.prod.outlook.com (2603:10a6:10:1ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Wed, 27 Sep 2023 00:51:49 +0000 Received: from AM7EUR03FT033.eop-EUR03.prod.protection.outlook.com (2603:10a6:208:136:cafe::36) by AM0PR05CA0092.outlook.office365.com (2603:10a6:208:136::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.35 via Frontend Transport; Wed, 27 Sep 2023 00:51:49 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT033.mail.protection.outlook.com (100.127.140.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.20 via Frontend Transport; Wed, 27 Sep 2023 00:51:49 +0000 Received: ("Tessian outbound b5a0f4347031:v175"); Wed, 27 Sep 2023 00:51:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 01a4289dfbdfb8c6 X-CR-MTA-TID: 64aa7808 Received: from f012033468bc.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1FEA0624-F7AE-46C1-98A9-BAE3A55C96A5.1; Wed, 27 Sep 2023 00:51:41 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f012033468bc.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 27 Sep 2023 00:51:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n9qZCkY6BY84UFkvBr+abQJBrdSVfwqblGo07WkkzKPila48Eh8GaCQGKZN08e15n89R8DgUDY8JPcGT6HV3VC0+fgt3Yh0oClXwaT60xwARIy3TMvT26IP7iiU/kfixcE8l/mWDWxkIMozudeSuAVeIH51tZ7j4kd34/V554nX4Ohg8bBu8Jno36ZlVb2T38YmKMVG9UW8PJEFWFPOi0D94hHH7V26tIHo/Ju5a767UQCpOzzrhdKo2lPb3/Mb2LqrJP9nz2/c9tJK5JLtR8CJdzicfEwKDM3XMRk9mDNIBl4fikgEAXcV79lOuzytWz9VDbxaA/Vp2/SpSSosk/w== 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=pu9uc/bi2EfCfIX0KLmfQ4r9co2G/Q69jlco4mNde1Q=; b=RzzKaa1ViyBKrtUJ93dyJre0PEluBMIktScQT0KVGcFTw/HLw7MnrP9QrZynoVUUfKm25extIQ3x9jhJqIzPCsaiAfxj+TYYHccoP3yHE8zeZYV755cseufnmQKwetASW3bLWBbz2lrKsvMDEaXWhFPo+9ip5vVenfqMDPDW8gdgQ+tCQeXxli1OiuiVj3HV2a0yQsdzM1MxdEPPBj4P/YdC0qh7ENRLa2+4VyVoutQkChMJm0QBQwtgCbSOE+svFGvvBYVCY5C+/WUhYfgmBLvhQvIGUtSYb6J8TkzpUk+Op02oDmj93DM9kVt5bZjGc0OIhCYxcMI3we5jaw6Owg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pu9uc/bi2EfCfIX0KLmfQ4r9co2G/Q69jlco4mNde1Q=; b=W9reBpQQn4inPADIzSMtSFFP8tPwFf61Wkq3sd+Fu9zzCn2vwa63DDO1huh7MItxTKz8xs+wvQlWQrKut87i+M0q0+ZvkHDfQld+Dmjdujpzhzx9t+yFya5HvSHR2GqSsYTY0B+jyfcyr6k7VQWr2YJ6wkD28prNO2Hvv62Ijg0= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB9743.eurprd08.prod.outlook.com (2603:10a6:20b:615::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Wed, 27 Sep 2023 00:51:39 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::662f:8e26:1bf8:aaa1]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::662f:8e26:1bf8:aaa1%7]) with mapi id 15.20.6813.027; Wed, 27 Sep 2023 00:51:39 +0000 Date: Wed, 27 Sep 2023 01:51:30 +0100 From: Tamar Christina To: gcc-patches@gcc.gnu.org Cc: nd@arm.com, Richard.Earnshaw@arm.com, Marcus.Shawcroft@arm.com, Kyrylo.Tkachov@arm.com, richard.sandiford@arm.com Subject: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when Advanced SIMD inefficient [PR109154] Message-ID: Content-Type: multipart/mixed; boundary="3AlS6dL4b+V6dCXC" Content-Disposition: inline X-ClientProxiedBy: SA0PR11CA0070.namprd11.prod.outlook.com (2603:10b6:806:d2::15) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB5325:EE_|AS8PR08MB9743:EE_|AM7EUR03FT033:EE_|DBAPR08MB5591:EE_ X-MS-Office365-Filtering-Correlation-Id: 38530fd8-6a90-433e-7f43-08dbbef3eea7 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: cIq2kVQXWvIqCdjrQHDH02pktVmCQa7A68tzg9piAG+ob6qZmT5ebrhP4VwHf2tnqCp+Ou+rYyHiFo5gP7iPfbKzLCvzFFpmgwU8p3GwwfG19WlnSDHrC6H/D9AWR+xok7okb1ag3zdudnIv9SJQtGQbOrTz7ke9Ys0A0sfO4AkIO3r4q87h22ZTpN9g3G/WIUFC7bdXKeHqrvvQhWlu9gN0zl4xySKzYojsFQA/EO2tZqifzbTL3pGiNjmDjyIDdATj2L5po/3I0xR1BfI/fspGRwI50yBmG/I1Q9axneylpieNRvKv2fvYdExernnzlWbHhpFrRkqZgDSlCN6YXZoBPPOmzc0LVx/hI9+WNl/3Xb0KEZTpGSVX3LvZCUTWefb6/wAX7SDGN5LoGu3Uf5T+JI6Gw6q+FT/HUb/4/EpgCx4Ai0rqcuYhEUb4eEwW9WETG5uBDn0JHWPMvgcKRFKZpW3qPznPC7L8aTqzSa5Ar87twOxsC68jvwkEvL6cnXCRyVM7pPN7wy6bCy+OTLw0GXkKAp+HkkF0l/79px1/sjux7aB5VQpIjmc0NaEtLIYhVaqGh4NY3A3VymaSwUTdk13MkaXk8lQZXbuC5GXhfh8t9BxsYEGF9XCdp9vo993BSnyYtDT8QNTGONFX/8IcMO8ag0RiE6jXjCNTdUs= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(136003)(346002)(396003)(376002)(39860400002)(230922051799003)(1800799009)(186009)(451199024)(26005)(6666004)(478600001)(86362001)(2616005)(36756003)(83380400001)(6486002)(6506007)(5660300002)(44144004)(38100700002)(33964004)(6512007)(8676002)(8936002)(2906002)(4326008)(316002)(41300700001)(84970400001)(66946007)(66476007)(66556008)(6916009)(235185007)(44832011)(4216001)(2700100001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9743 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT033.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 20539a06-698d-462f-8b2f-08dbbef3e860 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JlKhG1PQ9VFLOrGu+EwzSm7DwYlux+SdilcNeZWvc1Jm2Bsl7KOyKbUHokGyLmIHjd2Irbv1cZL1/oAVbhonIoYXP1nK0cA5AJGz9Xr35+NcN9dTEVXmFrHWN/1gt2S/c2SRQmpp3EVWs/1BlwGMDhmgkf5CnbkBCHf3DmSIO/8PmskavIBmEXDKiWC9HOEj9Tq2+m/WRHaIMCburpfnIYttZe5hFwavgrs6CzK3SvkDkt7u4ahL+SxVRR4jxKnmunlipyRDl70ljRwi54wE+9aroy8YkxXU7p73OR+tLDjuQNEQdG+X6extA67O2J6AInPyVM4/ig4Rk/abwcyWAYANLBGX0gubT2ySYCRQpYZilt5/4Vs818V5eIHEJ3FjlUb+kxRp+klb/bHCeOziiyz/j0qlKbfHH/NPEVYPTCCZD3kG+Zws+KFeuPebRBcy2jRgaiE6Y3fvl8ceZxNeS7nHak8e6MWdOG/tmSZzt+/o30kB+bGuegJJcDo17pseLPKcPoVIsIfCP0dM7ZbkeXqNQ4bRwrOIZWClZjGvsaUCQuOqzVMCQQwaU/7looTmqFuGRZu5toaOM4WZQboRjooPyhSYyTDkPTcPln1/5S53Osxza9QJm+IjrExcuZs95HDT6QzUi3q7/XvVFG6X6EJUR0305Aa5V66YMBNpIC0JTZ3nL+SIPo+wjXZ5nVPEXb7uc5uTlKUQNJ4dbeQ9Zq6vWPm3EgWvmjOnwh0wd99J75XygyVZU+Jnn5FlLF1X3INusCSlA93RxWmQIVzc8TcYnSr2MXk/81AWdInSsuJEO0TSd038A1YHpM6ppbfn 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:(13230031)(4636009)(376002)(396003)(39860400002)(346002)(136003)(230922051799003)(1800799009)(451199024)(82310400011)(186009)(36840700001)(46966006)(40470700004)(235185007)(84970400001)(2906002)(41300700001)(44832011)(5660300002)(4326008)(8676002)(8936002)(316002)(70586007)(336012)(26005)(70206006)(6916009)(40460700003)(478600001)(44144004)(6486002)(6506007)(82740400003)(6666004)(83380400001)(2616005)(6512007)(36756003)(47076005)(33964004)(36860700001)(40480700001)(356005)(81166007)(86362001)(4216001)(2700100001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2023 00:51:49.2560 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 38530fd8-6a90-433e-7f43-08dbbef3eea7 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: AM7EUR03FT033.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5591 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --3AlS6dL4b+V6dCXC Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Hi All, SVE has much bigger immediate encoding range for bitmasks than Advanced SIMD has and so on a system that is SVE capable if we need an Advanced SIMD Inclusive-OR by immediate and would require a reload then an unpredicated SVE ORR instead. This has both speed and size improvements. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: PR tree-optimization/109154 * config/aarch64/aarch64.md (3): Convert to new syntax and SVE split case. * config/aarch64/iterators.md (VCONV, vconv): New. gcc/testsuite/ChangeLog: PR tree-optimization/109154 * gcc.target/aarch64/sve/fneg-abs_2.c: Updated. * gcc.target/aarch64/sve/fneg-abs_4.c: Updated. --- inline copy of patch -- diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 60c92213c75a2a4c18a6b59ae52fe45d1e872718..377c5cafedd43d8d1320489a36267cc6e5f15239 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -4551,17 +4551,27 @@ (define_insn_and_split "*aarch64_and_imm2" } ) -(define_insn "3" - [(set (match_operand:GPI 0 "register_operand" "=r,rk,w") - (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r,w") - (match_operand:GPI 2 "aarch64_logical_operand" "r,,w")))] - "" - "@ - \\t%0, %1, %2 - \\t%0, %1, %2 - \\t%0., %1., %2." - [(set_attr "type" "logic_reg,logic_imm,neon_logic") - (set_attr "arch" "*,*,simd")] +(define_insn_and_split "3" + [(set (match_operand:GPI 0 "register_operand") + (LOGICAL:GPI (match_operand:GPI 1 "register_operand") + (match_operand:GPI 2 "aarch64_logical_operand")))] + "" + {@ [cons: =0, 1, 2; attrs: type, arch] + [r , %r, r ; logic_reg , * ] \t%0, %1, %2 + [rk, r , ; logic_imm , * ] \t%0, %1, %2 + [w , 0 , ; * , sve ] # + [w , w , w ; neon_logic, simd] \t%0., %1., %2. + } + "&& TARGET_SVE && rtx_equal_p (operands[0], operands[1]) + && satisfies_constraint_ (operands[2]) + && FP_REGNUM_P (REGNO (operands[0]))" + [(const_int 0)] + { + rtx op1 = lowpart_subreg (mode, operands[1], mode); + rtx op2 = gen_const_vec_duplicate (mode, operands[2]); + emit_insn (gen_3 (op1, op1, op2)); + DONE; + } ) ;; zero_extend version of above diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index d17becc37e230684beaee3c69e2a0f0ce612eda5..568cd5d1a3a9e00475376177ad13de72609df3d8 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -1432,6 +1432,11 @@ (define_mode_attr VCONQ [(V8QI "V16QI") (V16QI "V16QI") (HI "V8HI") (QI "V16QI") (SF "V4SF") (DF "V2DF")]) +;; 128-bit container modes for the lower part of an SVE vector to the inner or +;; scalar source mode. +(define_mode_attr VCONV [(SI "VNx4SI") (DI "VNx2DI")]) +(define_mode_attr vconv [(SI "vnx4si") (DI "vnx2di")]) + ;; Half modes of all vector modes. (define_mode_attr VHALF [(V8QI "V4QI") (V16QI "V8QI") (V4HI "V2HI") (V8HI "V4HI") diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c index a60cd31b9294af2dac69eed1c93f899bd5c78fca..fe9f27bf91b8fb18205a5891a5d5e847a5d88e4b 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c @@ -7,8 +7,7 @@ /* ** f1: -** movi v[0-9]+.2s, 0x80, lsl 24 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.s, z0.s, #0x80000000 ** ret */ float32_t f1 (float32_t a) @@ -18,9 +17,7 @@ float32_t f1 (float32_t a) /* ** f2: -** mov x0, -9223372036854775808 -** fmov d[0-9]+, x0 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.d, z0.d, #0x8000000000000000 ** ret */ float64_t f2 (float64_t a) diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c index 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..707bcb0b6c53e212b55a255f500e9e548e9ccd80 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c @@ -6,9 +6,7 @@ /* ** negabs: -** mov x0, -9223372036854775808 -** fmov d[0-9]+, x0 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.d, z0.d, #0x8000000000000000 ** ret */ double negabs (double x) @@ -22,8 +20,7 @@ double negabs (double x) /* ** negabsf: -** movi v[0-9]+.2s, 0x80, lsl 24 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.s, z0.s, #0x80000000 ** ret */ float negabsf (float x) -- --3AlS6dL4b+V6dCXC Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="rb17724.patch" diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 60c92213c75a2a4c18a6b59ae52fe45d1e872718..377c5cafedd43d8d1320489a36267cc6e5f15239 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -4551,17 +4551,27 @@ (define_insn_and_split "*aarch64_and_imm2" } ) -(define_insn "3" - [(set (match_operand:GPI 0 "register_operand" "=r,rk,w") - (LOGICAL:GPI (match_operand:GPI 1 "register_operand" "%r,r,w") - (match_operand:GPI 2 "aarch64_logical_operand" "r,,w")))] - "" - "@ - \\t%0, %1, %2 - \\t%0, %1, %2 - \\t%0., %1., %2." - [(set_attr "type" "logic_reg,logic_imm,neon_logic") - (set_attr "arch" "*,*,simd")] +(define_insn_and_split "3" + [(set (match_operand:GPI 0 "register_operand") + (LOGICAL:GPI (match_operand:GPI 1 "register_operand") + (match_operand:GPI 2 "aarch64_logical_operand")))] + "" + {@ [cons: =0, 1, 2; attrs: type, arch] + [r , %r, r ; logic_reg , * ] \t%0, %1, %2 + [rk, r , ; logic_imm , * ] \t%0, %1, %2 + [w , 0 , ; * , sve ] # + [w , w , w ; neon_logic, simd] \t%0., %1., %2. + } + "&& TARGET_SVE && rtx_equal_p (operands[0], operands[1]) + && satisfies_constraint_ (operands[2]) + && FP_REGNUM_P (REGNO (operands[0]))" + [(const_int 0)] + { + rtx op1 = lowpart_subreg (mode, operands[1], mode); + rtx op2 = gen_const_vec_duplicate (mode, operands[2]); + emit_insn (gen_3 (op1, op1, op2)); + DONE; + } ) ;; zero_extend version of above diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index d17becc37e230684beaee3c69e2a0f0ce612eda5..568cd5d1a3a9e00475376177ad13de72609df3d8 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -1432,6 +1432,11 @@ (define_mode_attr VCONQ [(V8QI "V16QI") (V16QI "V16QI") (HI "V8HI") (QI "V16QI") (SF "V4SF") (DF "V2DF")]) +;; 128-bit container modes for the lower part of an SVE vector to the inner or +;; scalar source mode. +(define_mode_attr VCONV [(SI "VNx4SI") (DI "VNx2DI")]) +(define_mode_attr vconv [(SI "vnx4si") (DI "vnx2di")]) + ;; Half modes of all vector modes. (define_mode_attr VHALF [(V8QI "V4QI") (V16QI "V8QI") (V4HI "V2HI") (V8HI "V4HI") diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c index a60cd31b9294af2dac69eed1c93f899bd5c78fca..fe9f27bf91b8fb18205a5891a5d5e847a5d88e4b 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c @@ -7,8 +7,7 @@ /* ** f1: -** movi v[0-9]+.2s, 0x80, lsl 24 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.s, z0.s, #0x80000000 ** ret */ float32_t f1 (float32_t a) @@ -18,9 +17,7 @@ float32_t f1 (float32_t a) /* ** f2: -** mov x0, -9223372036854775808 -** fmov d[0-9]+, x0 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.d, z0.d, #0x8000000000000000 ** ret */ float64_t f2 (float64_t a) diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c index 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..707bcb0b6c53e212b55a255f500e9e548e9ccd80 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c @@ -6,9 +6,7 @@ /* ** negabs: -** mov x0, -9223372036854775808 -** fmov d[0-9]+, x0 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.d, z0.d, #0x8000000000000000 ** ret */ double negabs (double x) @@ -22,8 +20,7 @@ double negabs (double x) /* ** negabsf: -** movi v[0-9]+.2s, 0x80, lsl 24 -** orr v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b +** orr z0.s, z0.s, #0x80000000 ** ret */ float negabsf (float x) --3AlS6dL4b+V6dCXC--