From patchwork Mon Oct 31 11:59:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 59652 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 55B2A3898399 for ; Mon, 31 Oct 2022 12:01:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 55B2A3898399 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1667217676; bh=vy3Sf7RtVsXKLawl93k7zVldvfjdsytRrcOmJ+HvfhQ=; h=Date:To:Subject:In-Reply-To:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=ZESblwnX1LLz3Iw9u38TJVmoUPKTjaDe7ch3krAXdWuWncfLzVeZkjni8mlXuBAjR eXT5M8E1KAnfci3uBHFpOs2K7OOwBZF6geI1IalvFLPoG4TcZzf7vtOOOmsszR1HaS EC8DOeDFfpp30DP2vg641V7r8OaqwA54tlAN3yDI= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70087.outbound.protection.outlook.com [40.107.7.87]) by sourceware.org (Postfix) with ESMTPS id 50A13382DE3B for ; Mon, 31 Oct 2022 11:59:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 50A13382DE3B ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Hdfl/CiFPzsP06L1QRay/OvabpZSJCCQsBplN5Avm6btnZ9g1ESc+zfCPvRcEW/XvIDTLSBhdcC9ijXHF4zvS16CJtSVOSMD1DwHmPpxuccseJqk7OI6dKn1g8Q8y6DugLd3yhoL6YRbqjrBGR2ZfUcl2ktOgK5xhx0YJUjNn2VD7H9ESCS6sAvJBW9XFE4hitN6nVovAGMGGnLb3Wj1Jjat3DmTS0JoUyDn6/5sMNBfub10x15/Iim5RxV8TwQ3qFqo/WIv92BD0hYqgDCQSKoDhE8o6dMIskssFC+wrYHPztq9yvLXWdB74O2hapENMlw6lGCVBIdXCKNmh5/rSw== 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=vy3Sf7RtVsXKLawl93k7zVldvfjdsytRrcOmJ+HvfhQ=; b=jDBwEA2H/oiE/ase4+ecTt+sjg6E+SCQEeYMya1vCwTLPpYI1G16mJr7O4fmf3mgJ75vkfyjdFi2GdL2sWWS4h0t4Dvzb+OXcyl/bEoXvMZ0sLAFDAkP22K1XwV3eFnSTTUYYXoufJF67gMFOxsZij0peocaJXEJfqSI9xTYhlIDyRG+uj0ycXdVEIcQP9iopxxeNBm7M5pgUrh57E3rArbGBG8sEUBNnjpUkvlkXPNF7niCrCK1lcV06YeIoxsPiJaCvMlIGhkghVfD9nHWYEosoxLLD4dv1u1mde4iVdbKCvxYPsgVvzoJkmpOiSD800i09ccESxgaiewN4Mqt8Q== 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] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from DB8PR03CA0025.eurprd03.prod.outlook.com (2603:10a6:10:be::38) by AS8PR08MB6408.eurprd08.prod.outlook.com (2603:10a6:20b:33a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19; Mon, 31 Oct 2022 11:59:52 +0000 Received: from DBAEUR03FT059.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:be:cafe::df) by DB8PR03CA0025.outlook.office365.com (2603:10a6:10:be::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.15 via Frontend Transport; Mon, 31 Oct 2022 11:59:52 +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 DBAEUR03FT059.mail.protection.outlook.com (100.127.142.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.14 via Frontend Transport; Mon, 31 Oct 2022 11:59:52 +0000 Received: ("Tessian outbound 2ff13c8f2c05:v130"); Mon, 31 Oct 2022 11:59:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3f99d9352cb862cb X-CR-MTA-TID: 64aa7808 Received: from ddc7967abf4e.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 29CAEA04-A315-48CB-8FDE-B197E82F023B.1; Mon, 31 Oct 2022 11:59:46 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ddc7967abf4e.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 31 Oct 2022 11:59:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xgrcpk1bqo9qAzJLKf9MyX+C6z9K7TuAupgVpig45MQobLVLzxmWsmUcfCf2ihOb8hLn/xUnFMHDkLIY9Ily4t59cCxvspVGdlTybONWwSY80ImmyPRSRCYrwWGwSc6qERthvM8dbwvJdoT10QV7TsAP00jIldy/ILEzKXJKR6zctqqknHSOJG6X3q0uJdgSnTXwNFgpSVixYx+WKJPsAxoo2ev1Htu//SOOIjHy6dsqGvVcMxu/kofwA1F0HXIN6s8NvCPP/CYKKPacJyC4FPq8ASJAgQifsfAUoWfIuKwdUxkXB6PaytNkr0Rody/JoLfLFK1kRXFW2/wgUgModA== 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=vy3Sf7RtVsXKLawl93k7zVldvfjdsytRrcOmJ+HvfhQ=; b=gLZh+FheczprzOxeW65uF6F7Q9f6C8AmXbmDGkbHPMzPPwd26q/ra0BSWp7kOfnKTXtahMeK5MW2Jafb9jVlywm4EzXPJuIr+pvrjWBHfDswhevOdDOpb/DJ0ppQpI4Uas5G+GG+lIieSpZemeAO3rLf89ogrz5V5FPKGMiZemR9OD8vFjnxkeQ2srNAN/2MR1+kOHEqqNW73ma4ZbiIws8d5RzTi00yEvSAtt/4zwY8l0bBJYsbLsD+EmV5iqB+8HBHBzbb5YlJSkYuHpSddp3Mh19bp/TbhUi8c96H+JzTwOzVy7etDudmMRpLWfiq5y6G4CHaYiE3h6pTQMiaGg== 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 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 DBBPR08MB6268.eurprd08.prod.outlook.com (2603:10a6:10:202::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19; Mon, 31 Oct 2022 11:59:44 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52%4]) with mapi id 15.20.5769.019; Mon, 31 Oct 2022 11:59:44 +0000 Date: Mon, 31 Oct 2022 11:59:36 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 7/8]AArch64: Consolidate zero and sign extension patterns and add missing ones. Message-ID: Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: LO3P123CA0006.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::11) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB5325:EE_|DBBPR08MB6268:EE_|DBAEUR03FT059:EE_|AS8PR08MB6408:EE_ X-MS-Office365-Filtering-Correlation-Id: b4f64721-9547-4f9d-f816-08dabb376b64 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: Bl8lSbwJnI2ZY8wLlgsqk7fMN3OeT6/rutuvhiNs8oVt+YXFnrEnPlV7G4GSWBux6FE3SJcP6mZDwMZPF+pX2yZLeNV6gLiBi+q8yU6KTlQ9R2U/0jxP9Zf3WUEpyO5ZPIF0hb08JiSg1qEVFFek5u3xUpccHU7qFhYmoLITnkp8Ky/3CNLJyLOLnvlUpICqV3wJ5KQggB97c9mMXV0QTr+UWJiOvvnhB7Llg5akCMyWbKMtQro/kcX2ufcC6vYYtEZh0XfqLSZBWlT+HGuAgTM+eZYwP3yIALbxeSTuFFfMqwZhH3rrmhRkqjIClA+pqt0iqeDbyqp7Ykzg9y6Yv4qb7Ov8jF4r+sCWPFs1OTvs5TXnnGqc3GAj3d01j02yhfu2nE8p+T9pQ95O3SiBNIXFgWXwjvaMY2on6qhD3JPrQYfI2IiFU6GtzmZOg0f9nMauouyYxRuokjqGS2AYEBIApCMfxPLpBBzQAL0ACO9jUfmcZrdtxZNWyRSC2+zPAlNmp31Bez6cp/L/4E0KzSlWVBYWARB0FJZniibbP7YzSVSyGHRXRtLXsnIXJY/oZqDBig3XypXXvpMiO6G26m9q3CwfKmkgN0BVrgcZxB9y0UIpK+Db78EpEZugZljghARxDM4x92eBoL8Jm6UCW/F6qMKZubg+tgcs0usEZzpH/j+j6WQ0JoNS6Rg7ktjsrtcUL0eHskCemzIXMXzwpbnSNPowvpNOq3PySW3FJNZmDZyg5KBedppctxs9S8nmdTvn8L2OcdgyxTyCvNMAR2NZB3I0Vu+v5VVe4FVaN7GtIGi2a9d/80QzfUfGLXnKancMwku36CVYRaJa7LEVebXYHtkS/LefXkNuFWyMgWc= 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:(13230022)(4636009)(346002)(366004)(39860400002)(136003)(376002)(396003)(451199015)(478600001)(84970400001)(2906002)(38100700002)(83380400001)(66476007)(66556008)(66946007)(4326008)(8676002)(33964004)(44832011)(2616005)(186003)(41300700001)(86362001)(235185007)(5660300002)(6506007)(6486002)(44144004)(316002)(36756003)(6916009)(30864003)(6666004)(8936002)(26005)(4743002)(6512007)(67856001)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6268 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: DBAEUR03FT059.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dd95116c-94f3-48f4-8f2f-08dabb376691 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: co1f2U42wxc070x4BNB9CpEDKLL2lg4CcxdaaIIOMtwsHDya5AcYnQX/4xywIjDsxAzVTY8j5nIoQ0FhcUNBTd1gEp+kF5g7K2o1LSml8fyp3KjJQeoFCDyR4BxFmir22ZQKF6JmGj1AHlywB75VJZq2RIOoETrcV4WG4aU3Z36lT4ATWGSBybZF6UT9nrD7GiPvW2jx2eacmp2MDLJ3LeFuZXHJl0HwboPd4SrpGemNpP8izVbrGeKEmgEbEL5vLvsfCjBNkVoWX0TvMNtL6/NPxPqv8GQmx3NMC/A/LwO7JBaGwT3Km5ejwjYjRxKDUEI3Mb3BaSy/XAD1VWyqDloFZMFP8CV6Itm2K4eM8thqSZHOrNCClI50l+Kl26DN7DwgvtGpaQQHeGkkjZq0qVON/DQetTv7wCqjf3HxNvr2m38Bl3iIhP2cmzf/OB9Recsmr15ya+w23QPX9Yr4qYRVIqS6KroNiAOGGlOUNA/RrRoyTczFBlZb8pmdV19I0rM3zi+uPOYe/BWWLtE7u/tIhUv9Fbq4gXOr59/DLIyfp/WzP/q6YHwJfFFfeUHZ1b5vWOdblMsTALD8xOq91Pj6VUduYDJMAhYYvuN0+uvgtC7gVatleaw94H/4LGxVT+04xWrzBjFVoLPijzqESpjo8OOnkwkC8vE0IgDgDO2vwB02UnMFtIpfLaOhl5F+vXCW2rRdygqUylq9VYIaHnutRWviqhoVYZPgckEcXUmYVRktHAmt5IY7F1fyBhLWlu8hCU1a3E3Aum369d/Dni2rXT92Rlyxv+imoINcE5+VBihdlnVqvmY434QyVyP12LnUfVGBmFTcVd6zQ7j7Kj8q2quwfNySy3YQ1YwiF6S+oSOwNHLl4j4TV0Dn2PPTUS3Pw75o0b4WgDXImiy8WA== 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:(13230022)(4636009)(136003)(39860400002)(376002)(346002)(396003)(451199015)(40470700004)(36840700001)(46966006)(6916009)(4326008)(41300700001)(8676002)(70206006)(70586007)(8936002)(235185007)(84970400001)(30864003)(44832011)(5660300002)(6666004)(478600001)(2906002)(356005)(81166007)(6486002)(336012)(6512007)(44144004)(2616005)(26005)(36756003)(4743002)(6506007)(186003)(33964004)(47076005)(83380400001)(316002)(82310400005)(36860700001)(86362001)(40480700001)(82740400003)(40460700003)(2700100001)(67856001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2022 11:59:52.5721 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b4f64721-9547-4f9d-f816-08dabb376b64 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: DBAEUR03FT059.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6408 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_ASCII_DIVIDERS, 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 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: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: Richard.Earnshaw@arm.com, nd@arm.com, richard.sandiford@arm.com, Marcus.Shawcroft@arm.com Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi All, The target has various zero and sign extension patterns. These however live in various locations around the MD file and almost all of them are split differently. Due to the various patterns we also ended up missing valid extensions. For instance smov is almost never generated. This change tries to make this more manageable by consolidating the patterns as much as possible and in doing so fix the missing alternatives. There were also some duplicate patterns. Note that the zero_extend<*_ONLY:mode>2 patterns are nearly identical however QImode lacks an alternative that the others don't have, so I have left them as 3 different patterns next to each other. In a lot of cases the wrong iterator was used leaving out cases that should exist. I've also changed the masks used for zero extensions to hex instead of decimal as it's more clear what they do that way, and aligns better with output of other compilers. This leave the bulk of the extensions in just 3 patterns. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * config/aarch64/aarch64-simd.md (*aarch64_get_lane_zero_extend): Changed to ... (*aarch64_get_lane_zero_extend): ... This. (*aarch64_get_lane_extenddi): New. * config/aarch64/aarch64.md (sidi2, *extendsidi2_aarch64, qihi2, *extendqihi2_aarch64, *zero_extendsidi2_aarch64): Remove duplicate patterns. (2, *extend2_aarch64): Remove, consolidate into ... (extend2): ... This. (*zero_extendqihi2_aarch64, *zero_extend2_aarch64): Remove, consolidate into ... (zero_extend2, zero_extend2, zero_extend2): (*ands_compare0): Renamed to ... (*ands_compare0): ... This. * config/aarch64/iterators.md (HI_ONLY, QI_ONLY): New. (short_mask): Use hex rather than dec and add SI. gcc/testsuite/ChangeLog: * gcc.target/aarch64/ands_3.c: Update codegen. * gcc.target/aarch64/sve/slp_1.c: Likewise. * gcc.target/aarch64/tst_5.c: Likewise. * gcc.target/aarch64/tst_6.c: Likewise. --- inline copy of patch -- diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 8a84a8560e982b8155b18541f5504801b3330124..d0b37c4dd48aeafd3d87c90dc3270e71af5a72b9 100644 --- diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 8a84a8560e982b8155b18541f5504801b3330124..d0b37c4dd48aeafd3d87c90dc3270e71af5a72b9 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4237,19 +4237,34 @@ (define_insn "*aarch64_get_lane_extend" [(set_attr "type" "neon_to_gp")] ) -(define_insn "*aarch64_get_lane_zero_extend" +(define_insn "*aarch64_get_lane_extenddi" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extend:DI + (vec_select: + (match_operand:VS 1 "register_operand" "w") + (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] + "TARGET_SIMD" + { + operands[2] = aarch64_endian_lane_rtx (mode, + INTVAL (operands[2])); + return "smov\\t%x0, %1.[%2]"; + } + [(set_attr "type" "neon_to_gp")] +) + +(define_insn "*aarch64_get_lane_zero_extend" [(set (match_operand:GPI 0 "register_operand" "=r") (zero_extend:GPI - (vec_select: - (match_operand:VDQQH 1 "register_operand" "w") + (vec_select: + (match_operand:VDQV_L 1 "register_operand" "w") (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] "TARGET_SIMD" { - operands[2] = aarch64_endian_lane_rtx (mode, + operands[2] = aarch64_endian_lane_rtx (mode, INTVAL (operands[2])); - return "umov\\t%w0, %1.[%2]"; + return "umov\\t%w0, %1.[%2]"; } - [(set_attr "type" "neon_to_gp")] + [(set_attr "type" "neon_to_gp")] ) ;; Lane extraction of a value, neither sign nor zero extension diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 3ea16dbc2557c6a4f37104d44a49f77f768eb53d..09ae1118371f82ca63146fceb953eb9e820d05a4 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -1911,22 +1911,6 @@ (define_insn "storewb_pair_" ;; Sign/Zero extension ;; ------------------------------------------------------------------- -(define_expand "sidi2" - [(set (match_operand:DI 0 "register_operand") - (ANY_EXTEND:DI (match_operand:SI 1 "nonimmediate_operand")))] - "" -) - -(define_insn "*extendsidi2_aarch64" - [(set (match_operand:DI 0 "register_operand" "=r,r") - (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m")))] - "" - "@ - sxtw\t%0, %w1 - ldrsw\t%0, %1" - [(set_attr "type" "extend,load_4")] -) - (define_insn "*load_pair_extendsidi2_aarch64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI (match_operand:SI 1 "aarch64_mem_pair_operand" "Ump"))) @@ -1940,21 +1924,6 @@ (define_insn "*load_pair_extendsidi2_aarch64" [(set_attr "type" "load_8")] ) -(define_insn "*zero_extendsidi2_aarch64" - [(set (match_operand:DI 0 "register_operand" "=r,r,w,w,r,w") - (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m,r,m,w,w")))] - "" - "@ - uxtw\t%0, %w1 - ldr\t%w0, %1 - fmov\t%s0, %w1 - ldr\t%s0, %1 - fmov\t%w0, %s1 - fmov\t%s0, %s1" - [(set_attr "type" "mov_reg,load_4,f_mcr,f_loads,f_mrc,fmov") - (set_attr "arch" "*,*,fp,fp,fp,fp")] -) - (define_insn "*load_pair_zero_extendsidi2_aarch64" [(set (match_operand:DI 0 "register_operand" "=r,w") (zero_extend:DI (match_operand:SI 1 "aarch64_mem_pair_operand" "Ump,Ump"))) @@ -1971,61 +1940,64 @@ (define_insn "*load_pair_zero_extendsidi2_aarch64" (set_attr "arch" "*,fp")] ) -(define_expand "2" - [(set (match_operand:GPI 0 "register_operand") - (ANY_EXTEND:GPI (match_operand:SHORT 1 "nonimmediate_operand")))] - "" -) - -(define_insn "*extend2_aarch64" - [(set (match_operand:GPI 0 "register_operand" "=r,r,r") - (sign_extend:GPI (match_operand:SHORT 1 "nonimmediate_operand" "r,m,w")))] +(define_insn "extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,r") + (sign_extend:SD_HSDI + (match_operand:ALLX 1 "nonimmediate_operand" "r,m,w")))] "" "@ - sxt\t%0, %w1 - ldrs\t%0, %1 - smov\t%0, %1.[0]" + sxt\t%0, %w1 + ldrs\t%0, %1 + smov\t%0, %1.[0]" [(set_attr "type" "extend,load_4,neon_to_gp") (set_attr "arch" "*,*,fp")] ) -(define_insn "*zero_extend2_aarch64" - [(set (match_operand:GPI 0 "register_operand" "=r,r,w,r") - (zero_extend:GPI (match_operand:SHORT 1 "nonimmediate_operand" "r,m,m,w")))] +(define_insn "zero_extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,w,w,r,w") + (zero_extend:SD_HSDI + (match_operand:SI_ONLY 1 "nonimmediate_operand" "r,m,r,m,w,w")))] "" "@ - and\t%0, %1, - ldr\t%w0, %1 - ldr\t%0, %1 - umov\t%w0, %1.[0]" - [(set_attr "type" "logic_imm,load_4,f_loads,neon_to_gp") - (set_attr "arch" "*,*,fp,fp")] -) - -(define_expand "qihi2" - [(set (match_operand:HI 0 "register_operand") - (ANY_EXTEND:HI (match_operand:QI 1 "nonimmediate_operand")))] - "" + uxt\t%0, %w1 + ldr\t%w0, %1 + fmov\t%0, %w1 + ldr\t%0, %1 + fmov\t%w0, %1 + fmov\t%0, %1" + [(set_attr "type" "mov_reg,load_4,f_mcr,f_loads,f_mrc,fmov") + (set_attr "arch" "*,*,fp,fp,fp,fp")] ) -(define_insn "*extendqihi2_aarch64" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] +(define_insn "zero_extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,w,w,r,w") + (zero_extend:SD_HSDI + (match_operand:HI_ONLY 1 "nonimmediate_operand" "r,m,r,m,w,w")))] "" "@ - sxtb\t%w0, %w1 - ldrsb\t%w0, %1" - [(set_attr "type" "extend,load_4")] + uxt\t%0, %w1 + ldr\t%w0, %1 + fmov\t%0, %w1 + ldr\t%0, %1 + umov\t%w0, %1.[0] + fmov\t%0, %1" + [(set_attr "type" "mov_reg,load_4,f_mcr,f_loads,f_mrc,fmov") + (set_attr "arch" "*,*,fp16,fp,fp,fp16")] ) -(define_insn "*zero_extendqihi2_aarch64" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] +(define_insn "zero_extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,w,r,w") + (zero_extend:SD_HSDI + (match_operand:QI_ONLY 1 "nonimmediate_operand" "r,m,m,w,w")))] "" "@ - and\t%w0, %w1, 255 - ldrb\t%w0, %1" - [(set_attr "type" "logic_imm,load_4")] + uxt\t%0, %w1 + ldr\t%w0, %1 + ldr\t%0, %1 + umov\t%w0, %1.[0] + dup\t%0, %1.[0]" + [(set_attr "type" "mov_reg,load_4,f_loads,f_mrc,fmov") + (set_attr "arch" "*,*,fp,fp,fp")] ) ;; ------------------------------------------------------------------- @@ -5029,15 +5001,15 @@ (define_insn "*and_compare0" [(set_attr "type" "alus_imm")] ) -(define_insn "*ands_compare0" +(define_insn "*ands_compare0" [(set (reg:CC_NZ CC_REGNUM) (compare:CC_NZ - (zero_extend:GPI (match_operand:SHORT 1 "register_operand" "r")) + (zero_extend:SD_HSDI (match_operand:ALLX 1 "register_operand" "r")) (const_int 0))) - (set (match_operand:GPI 0 "register_operand" "=r") - (zero_extend:GPI (match_dup 1)))] + (set (match_operand:SD_HSDI 0 "register_operand" "=r") + (zero_extend:SD_HSDI (match_dup 1)))] "" - "ands\\t%0, %1, " + "ands\\t%0, %1, " [(set_attr "type" "alus_imm")] ) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 1df09f7fe2eb35aed96113476541e0faa5393551..e904407b2169e589b7007ff966b2d9347a6d0fd2 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -41,6 +41,8 @@ (define_mode_iterator SHORT [QI HI]) ;; Iterators for single modes, for "@" patterns. (define_mode_iterator SI_ONLY [SI]) (define_mode_iterator DI_ONLY [DI]) +(define_mode_iterator HI_ONLY [HI]) +(define_mode_iterator QI_ONLY [QI]) ;; Iterator for all integer modes (up to 64-bit) (define_mode_iterator ALLI [QI HI SI DI]) @@ -1033,7 +1035,7 @@ (define_mode_attr w2 [(HF "x") (SF "x") (DF "w")]) ;; For width of fp registers in fcvt instruction (define_mode_attr fpw [(DI "s") (SI "d")]) -(define_mode_attr short_mask [(HI "65535") (QI "255")]) +(define_mode_attr short_mask [(SI "0xffffffff") (HI "0xffff") (QI "0xff")]) ;; For constraints used in scalar immediate vector moves (define_mode_attr hq [(HI "h") (QI "q")]) diff --git a/gcc/testsuite/gcc.target/aarch64/ands_3.c b/gcc/testsuite/gcc.target/aarch64/ands_3.c index 42cb7f0f0bc86a4aceb09851c31eb2e888d93403..421aa5cea7a51ad810cc9c5653a149cb21bb871c 100644 --- a/gcc/testsuite/gcc.target/aarch64/ands_3.c +++ b/gcc/testsuite/gcc.target/aarch64/ands_3.c @@ -9,4 +9,4 @@ f9 (unsigned char x, int y) return x; } -/* { dg-final { scan-assembler "ands\t(x|w)\[0-9\]+,\[ \t\]*(x|w)\[0-9\]+,\[ \t\]*255" } } */ +/* { dg-final { scan-assembler "ands\t(x|w)\[0-9\]+,\[ \t\]*(x|w)\[0-9\]+,\[ \t\]*0xff" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c b/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c index 8e35e0b574d49913b43c7d8d4f4ba75f127f42e9..03288976b3397cdbe0e822f94f2a6448d9fa9a52 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c @@ -51,7 +51,6 @@ TEST_ALL (VEC_PERM) /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.s} 6 } } */ /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.d} 6 } } */ /* { dg-final { scan-assembler-not {\tldr} } } */ -/* { dg-final { scan-assembler-times {\tstr} 2 } } */ -/* { dg-final { scan-assembler-times {\tstr\th[0-9]+} 2 } } */ +/* { dg-final { scan-assembler-times {\tins\tv[0-9]+\.h\[1\], v[0-9]+\.h\[0\]} 1 } } */ /* { dg-final { scan-assembler-not {\tuqdec} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/tst_5.c b/gcc/testsuite/gcc.target/aarch64/tst_5.c index 0de40a6c47a7d63c1b7a81aeba438a096c0041b8..19034cd74ed07ea4d670c25d9ab3d1cff805a483 100644 --- a/gcc/testsuite/gcc.target/aarch64/tst_5.c +++ b/gcc/testsuite/gcc.target/aarch64/tst_5.c @@ -4,7 +4,7 @@ int f255 (int x) { - if (x & 255) + if (x & 0xff) return 1; return x; } @@ -12,10 +12,10 @@ f255 (int x) int f65535 (int x) { - if (x & 65535) + if (x & 0xffff) return 1; return x; } -/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*255" } } */ -/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*65535" } } */ +/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*0xff" } } */ +/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*0xffff" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/tst_6.c b/gcc/testsuite/gcc.target/aarch64/tst_6.c index f15ec114c391fed79cc43b7740fde83fb3d4ea53..1c047cfae214b60e5bf003e6781a277202fcc588 100644 --- a/gcc/testsuite/gcc.target/aarch64/tst_6.c +++ b/gcc/testsuite/gcc.target/aarch64/tst_6.c @@ -7,4 +7,4 @@ foo (long x) return ((short) x != 0) ? x : 1; } -/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*65535" } } */ +/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*0xffff" } } */ --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4237,19 +4237,34 @@ (define_insn "*aarch64_get_lane_extend" [(set_attr "type" "neon_to_gp")] ) -(define_insn "*aarch64_get_lane_zero_extend" +(define_insn "*aarch64_get_lane_extenddi" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extend:DI + (vec_select: + (match_operand:VS 1 "register_operand" "w") + (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] + "TARGET_SIMD" + { + operands[2] = aarch64_endian_lane_rtx (mode, + INTVAL (operands[2])); + return "smov\\t%x0, %1.[%2]"; + } + [(set_attr "type" "neon_to_gp")] +) + +(define_insn "*aarch64_get_lane_zero_extend" [(set (match_operand:GPI 0 "register_operand" "=r") (zero_extend:GPI - (vec_select: - (match_operand:VDQQH 1 "register_operand" "w") + (vec_select: + (match_operand:VDQV_L 1 "register_operand" "w") (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] "TARGET_SIMD" { - operands[2] = aarch64_endian_lane_rtx (mode, + operands[2] = aarch64_endian_lane_rtx (mode, INTVAL (operands[2])); - return "umov\\t%w0, %1.[%2]"; + return "umov\\t%w0, %1.[%2]"; } - [(set_attr "type" "neon_to_gp")] + [(set_attr "type" "neon_to_gp")] ) ;; Lane extraction of a value, neither sign nor zero extension diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 3ea16dbc2557c6a4f37104d44a49f77f768eb53d..09ae1118371f82ca63146fceb953eb9e820d05a4 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -1911,22 +1911,6 @@ (define_insn "storewb_pair_" ;; Sign/Zero extension ;; ------------------------------------------------------------------- -(define_expand "sidi2" - [(set (match_operand:DI 0 "register_operand") - (ANY_EXTEND:DI (match_operand:SI 1 "nonimmediate_operand")))] - "" -) - -(define_insn "*extendsidi2_aarch64" - [(set (match_operand:DI 0 "register_operand" "=r,r") - (sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m")))] - "" - "@ - sxtw\t%0, %w1 - ldrsw\t%0, %1" - [(set_attr "type" "extend,load_4")] -) - (define_insn "*load_pair_extendsidi2_aarch64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI (match_operand:SI 1 "aarch64_mem_pair_operand" "Ump"))) @@ -1940,21 +1924,6 @@ (define_insn "*load_pair_extendsidi2_aarch64" [(set_attr "type" "load_8")] ) -(define_insn "*zero_extendsidi2_aarch64" - [(set (match_operand:DI 0 "register_operand" "=r,r,w,w,r,w") - (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m,r,m,w,w")))] - "" - "@ - uxtw\t%0, %w1 - ldr\t%w0, %1 - fmov\t%s0, %w1 - ldr\t%s0, %1 - fmov\t%w0, %s1 - fmov\t%s0, %s1" - [(set_attr "type" "mov_reg,load_4,f_mcr,f_loads,f_mrc,fmov") - (set_attr "arch" "*,*,fp,fp,fp,fp")] -) - (define_insn "*load_pair_zero_extendsidi2_aarch64" [(set (match_operand:DI 0 "register_operand" "=r,w") (zero_extend:DI (match_operand:SI 1 "aarch64_mem_pair_operand" "Ump,Ump"))) @@ -1971,61 +1940,64 @@ (define_insn "*load_pair_zero_extendsidi2_aarch64" (set_attr "arch" "*,fp")] ) -(define_expand "2" - [(set (match_operand:GPI 0 "register_operand") - (ANY_EXTEND:GPI (match_operand:SHORT 1 "nonimmediate_operand")))] - "" -) - -(define_insn "*extend2_aarch64" - [(set (match_operand:GPI 0 "register_operand" "=r,r,r") - (sign_extend:GPI (match_operand:SHORT 1 "nonimmediate_operand" "r,m,w")))] +(define_insn "extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,r") + (sign_extend:SD_HSDI + (match_operand:ALLX 1 "nonimmediate_operand" "r,m,w")))] "" "@ - sxt\t%0, %w1 - ldrs\t%0, %1 - smov\t%0, %1.[0]" + sxt\t%0, %w1 + ldrs\t%0, %1 + smov\t%0, %1.[0]" [(set_attr "type" "extend,load_4,neon_to_gp") (set_attr "arch" "*,*,fp")] ) -(define_insn "*zero_extend2_aarch64" - [(set (match_operand:GPI 0 "register_operand" "=r,r,w,r") - (zero_extend:GPI (match_operand:SHORT 1 "nonimmediate_operand" "r,m,m,w")))] +(define_insn "zero_extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,w,w,r,w") + (zero_extend:SD_HSDI + (match_operand:SI_ONLY 1 "nonimmediate_operand" "r,m,r,m,w,w")))] "" "@ - and\t%0, %1, - ldr\t%w0, %1 - ldr\t%0, %1 - umov\t%w0, %1.[0]" - [(set_attr "type" "logic_imm,load_4,f_loads,neon_to_gp") - (set_attr "arch" "*,*,fp,fp")] -) - -(define_expand "qihi2" - [(set (match_operand:HI 0 "register_operand") - (ANY_EXTEND:HI (match_operand:QI 1 "nonimmediate_operand")))] - "" + uxt\t%0, %w1 + ldr\t%w0, %1 + fmov\t%0, %w1 + ldr\t%0, %1 + fmov\t%w0, %1 + fmov\t%0, %1" + [(set_attr "type" "mov_reg,load_4,f_mcr,f_loads,f_mrc,fmov") + (set_attr "arch" "*,*,fp,fp,fp,fp")] ) -(define_insn "*extendqihi2_aarch64" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] +(define_insn "zero_extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,w,w,r,w") + (zero_extend:SD_HSDI + (match_operand:HI_ONLY 1 "nonimmediate_operand" "r,m,r,m,w,w")))] "" "@ - sxtb\t%w0, %w1 - ldrsb\t%w0, %1" - [(set_attr "type" "extend,load_4")] + uxt\t%0, %w1 + ldr\t%w0, %1 + fmov\t%0, %w1 + ldr\t%0, %1 + umov\t%w0, %1.[0] + fmov\t%0, %1" + [(set_attr "type" "mov_reg,load_4,f_mcr,f_loads,f_mrc,fmov") + (set_attr "arch" "*,*,fp16,fp,fp,fp16")] ) -(define_insn "*zero_extendqihi2_aarch64" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] +(define_insn "zero_extend2" + [(set (match_operand:SD_HSDI 0 "register_operand" "=r,r,w,r,w") + (zero_extend:SD_HSDI + (match_operand:QI_ONLY 1 "nonimmediate_operand" "r,m,m,w,w")))] "" "@ - and\t%w0, %w1, 255 - ldrb\t%w0, %1" - [(set_attr "type" "logic_imm,load_4")] + uxt\t%0, %w1 + ldr\t%w0, %1 + ldr\t%0, %1 + umov\t%w0, %1.[0] + dup\t%0, %1.[0]" + [(set_attr "type" "mov_reg,load_4,f_loads,f_mrc,fmov") + (set_attr "arch" "*,*,fp,fp,fp")] ) ;; ------------------------------------------------------------------- @@ -5029,15 +5001,15 @@ (define_insn "*and_compare0" [(set_attr "type" "alus_imm")] ) -(define_insn "*ands_compare0" +(define_insn "*ands_compare0" [(set (reg:CC_NZ CC_REGNUM) (compare:CC_NZ - (zero_extend:GPI (match_operand:SHORT 1 "register_operand" "r")) + (zero_extend:SD_HSDI (match_operand:ALLX 1 "register_operand" "r")) (const_int 0))) - (set (match_operand:GPI 0 "register_operand" "=r") - (zero_extend:GPI (match_dup 1)))] + (set (match_operand:SD_HSDI 0 "register_operand" "=r") + (zero_extend:SD_HSDI (match_dup 1)))] "" - "ands\\t%0, %1, " + "ands\\t%0, %1, " [(set_attr "type" "alus_imm")] ) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 1df09f7fe2eb35aed96113476541e0faa5393551..e904407b2169e589b7007ff966b2d9347a6d0fd2 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -41,6 +41,8 @@ (define_mode_iterator SHORT [QI HI]) ;; Iterators for single modes, for "@" patterns. (define_mode_iterator SI_ONLY [SI]) (define_mode_iterator DI_ONLY [DI]) +(define_mode_iterator HI_ONLY [HI]) +(define_mode_iterator QI_ONLY [QI]) ;; Iterator for all integer modes (up to 64-bit) (define_mode_iterator ALLI [QI HI SI DI]) @@ -1033,7 +1035,7 @@ (define_mode_attr w2 [(HF "x") (SF "x") (DF "w")]) ;; For width of fp registers in fcvt instruction (define_mode_attr fpw [(DI "s") (SI "d")]) -(define_mode_attr short_mask [(HI "65535") (QI "255")]) +(define_mode_attr short_mask [(SI "0xffffffff") (HI "0xffff") (QI "0xff")]) ;; For constraints used in scalar immediate vector moves (define_mode_attr hq [(HI "h") (QI "q")]) diff --git a/gcc/testsuite/gcc.target/aarch64/ands_3.c b/gcc/testsuite/gcc.target/aarch64/ands_3.c index 42cb7f0f0bc86a4aceb09851c31eb2e888d93403..421aa5cea7a51ad810cc9c5653a149cb21bb871c 100644 --- a/gcc/testsuite/gcc.target/aarch64/ands_3.c +++ b/gcc/testsuite/gcc.target/aarch64/ands_3.c @@ -9,4 +9,4 @@ f9 (unsigned char x, int y) return x; } -/* { dg-final { scan-assembler "ands\t(x|w)\[0-9\]+,\[ \t\]*(x|w)\[0-9\]+,\[ \t\]*255" } } */ +/* { dg-final { scan-assembler "ands\t(x|w)\[0-9\]+,\[ \t\]*(x|w)\[0-9\]+,\[ \t\]*0xff" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c b/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c index 8e35e0b574d49913b43c7d8d4f4ba75f127f42e9..03288976b3397cdbe0e822f94f2a6448d9fa9a52 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c @@ -51,7 +51,6 @@ TEST_ALL (VEC_PERM) /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.s} 6 } } */ /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.d} 6 } } */ /* { dg-final { scan-assembler-not {\tldr} } } */ -/* { dg-final { scan-assembler-times {\tstr} 2 } } */ -/* { dg-final { scan-assembler-times {\tstr\th[0-9]+} 2 } } */ +/* { dg-final { scan-assembler-times {\tins\tv[0-9]+\.h\[1\], v[0-9]+\.h\[0\]} 1 } } */ /* { dg-final { scan-assembler-not {\tuqdec} } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/tst_5.c b/gcc/testsuite/gcc.target/aarch64/tst_5.c index 0de40a6c47a7d63c1b7a81aeba438a096c0041b8..19034cd74ed07ea4d670c25d9ab3d1cff805a483 100644 --- a/gcc/testsuite/gcc.target/aarch64/tst_5.c +++ b/gcc/testsuite/gcc.target/aarch64/tst_5.c @@ -4,7 +4,7 @@ int f255 (int x) { - if (x & 255) + if (x & 0xff) return 1; return x; } @@ -12,10 +12,10 @@ f255 (int x) int f65535 (int x) { - if (x & 65535) + if (x & 0xffff) return 1; return x; } -/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*255" } } */ -/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*65535" } } */ +/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*0xff" } } */ +/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*0xffff" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/tst_6.c b/gcc/testsuite/gcc.target/aarch64/tst_6.c index f15ec114c391fed79cc43b7740fde83fb3d4ea53..1c047cfae214b60e5bf003e6781a277202fcc588 100644 --- a/gcc/testsuite/gcc.target/aarch64/tst_6.c +++ b/gcc/testsuite/gcc.target/aarch64/tst_6.c @@ -7,4 +7,4 @@ foo (long x) return ((short) x != 0) ? x : 1; } -/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*65535" } } */ +/* { dg-final { scan-assembler "tst\t(x|w)\[0-9\]+,\[ \t\]*0xffff" } } */