From patchwork Tue Feb 2 18:36:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 1434906 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=QhRDC9aR; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DVYSM0MZ4z9sWD for ; Wed, 3 Feb 2021 05:36:49 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 91E6C398B827; Tue, 2 Feb 2021 18:36:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 91E6C398B827 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1612291006; bh=tBJ4pYxMKU4m/jgeGPf3kbwBlNjy294x/jSDw33GaT4=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=QhRDC9aRng9ZhRSR1aEFVujNosbOOZLQQUEHQhk2CPiBT3FYVnR1cz0FQA4hBB+En oJZ6IZHwWvqAQ+vsiY4cgwW5xqiU1sDfhKmbD8Cs9USS9wn8tFr7wOZ45GcpYkUMp3 gZbHr6mruVpTNXjOXAFbWYY6qnDQNGFXHEPln7pA= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130055.outbound.protection.outlook.com [40.107.13.55]) by sourceware.org (Postfix) with ESMTPS id 3244C398B815 for ; Tue, 2 Feb 2021 18:36:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3244C398B815 Received: from AS8PR04CA0068.eurprd04.prod.outlook.com (2603:10a6:20b:313::13) by VE1PR08MB5742.eurprd08.prod.outlook.com (2603:10a6:800:1a9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.19; Tue, 2 Feb 2021 18:36:39 +0000 Received: from AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:313:cafe::68) by AS8PR04CA0068.outlook.office365.com (2603:10a6:20b:313::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.17 via Frontend Transport; Tue, 2 Feb 2021 18:36:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; 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 AM5EUR03FT015.mail.protection.outlook.com (10.152.16.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11 via Frontend Transport; Tue, 2 Feb 2021 18:36:39 +0000 Received: ("Tessian outbound f362b81824dc:v71"); Tue, 02 Feb 2021 18:36:38 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: f5b9cfca9fa42ca6 X-CR-MTA-TID: 64aa7808 Received: from 963afe690868.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 7BD40ADD-E572-40C5-BD3B-C16FD7EA6004.1; Tue, 02 Feb 2021 18:36:32 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 963afe690868.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 02 Feb 2021 18:36:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TYUOdAnwkxfe6N7yfENmZMvrNvwsRkw5Ig9LrWIw4FH1H3IzceErG1wjq34qQloNDxXjsQNez2pS4T2Qw/L1hTEGTLIscPxYzcWkaF/QbprsS8ALgxKnigcU8UO7I9Y81/iZ9AI3vk0xJjzs8JRmRVNnS+3AI3mYxlLOskXrmRPcbHdvk5WrHuzALDG/D263rb/5/WzLlhYP7MaRBBLlYmHMwfICZEimRIzyTzeF9a5J/4JWUyqXXqTeePVXyvITiIm1IB+SPKAvdx9/hk0++AykUcLGXf82xAh1D6sKFHWqkYcj/gQA+YQKFS9KKrCE1/x7835aRVzQhQFpDOd+mw== 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-SenderADCheck; bh=tBJ4pYxMKU4m/jgeGPf3kbwBlNjy294x/jSDw33GaT4=; b=hjtDojWBQFaGa5HiGDNPlSdSyYg0vL6/WTX+WijwyyV5VZgNiT1XjBaBAP+vNg7CMxr3NuvgOqgYsS7KJEyoy1PHSW/OkyV74JflJyp+xu3fzCrkvL6/o4RjinYfNvZyXrgY7kT0R2YLz4cXjVD2frd1223+YFz7LMuydv61lLFuZYviBBANMzNP4TTg8qgdlQJQSItYTavwd31iHLRNR79OGVYwGsM89AXUaw4xF2Y+2TSDpZhcVz9TDgRCa9cUlpmBUHAohs93YDD2Z3bPqkIFEvZGL/rkva825HJ8CfktrswDJQPu+Jh0XHh/1M4fQcHqm8N7HBS90sw+a5MlUA== 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: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR08MB5328.eurprd08.prod.outlook.com (2603:10a6:803:13a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.20; Tue, 2 Feb 2021 18:36:31 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::ed1e:9499:4501:2118]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::ed1e:9499:4501:2118%9]) with mapi id 15.20.3805.027; Tue, 2 Feb 2021 18:36:30 +0000 Date: Tue, 2 Feb 2021 18:36:27 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH]middle-end slp: Split out patterns away from using SLP_ONLY into their own flag Message-ID: Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-Originating-IP: [217.140.106.53] X-ClientProxiedBy: LO2P265CA0191.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a::35) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from arm.com (217.140.106.53) by LO2P265CA0191.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.16 via Frontend Transport; Tue, 2 Feb 2021 18:36:30 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7613579b-d070-431d-71c9-08d8c7a97a7f X-MS-TrafficTypeDiagnostic: VI1PR08MB5328:|VE1PR08MB5742: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 08ESWQCiag1EbiLsRz2d3WUEnYYT5igO45lUEfRDkoVs+q2bDYjld/yxIWZp47122DN8Vv0M8wlj99I02kq/G5iYZsBWAhPUgvS0j0cSmBXDoLNqcP24quYB16e65yh7H4ZbHXl2nJpkFAr7jmquKadQf3oMe+YHMbl7knFHy/AMCJD5V+qc3+JK4v0L5XHGpBJZ7yYRMtCkjotydpzZcb5Pq5Ic5c8nPaQSIG3D/2iWwEZN54cyDkFa6ycyZiTqfyw4xuN9jh8L1vGvQEz0+FAdXDWeK5Pu4xM28v+Alvh/zSt/Fb3ik22lepxJBCfy/8LoIM8Ax5i0ptV6aKsyKT4JTk2V9NJagqSK5XcBuczjJkpI3LJkw/Mbi/OeqcI3S8irnitbWUxrnIrPOOWrMHYEbd/nRs8BNyKyWBQKhaqFBYjpo8B5mhpl9HIMlM0di7In6AyBPK5Qu4541ns6NUHnIJqdypvLb4apnGFQloqUKUNjiERUL9gMLQDBEdpegYo1jAAICEpt4aso8U55MQbM2PuRqamHJxZOd9zONTZrZYvVcDRJS38a74D9lzCyNLR3ukJjsJinE5dNoXKVfjEUZ3mEILRkbkHm0dsrjPY= 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:(4636009)(376002)(346002)(366004)(136003)(39850400004)(396003)(4326008)(16526019)(6666004)(8886007)(44832011)(26005)(8936002)(316002)(4743002)(55016002)(2616005)(186003)(2906002)(235185007)(956004)(7696005)(52116002)(6916009)(66556008)(5660300002)(44144004)(33964004)(86362001)(8676002)(66476007)(478600001)(66946007)(66616009)(36756003)(4216001)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?ciIUd6tWoqYwIAUht+HmxOwxz7hpKC?= =?utf-8?q?imO0fyZmP/AS2fwt/o7M8X377+o1n54C5fDCDy596Jd7IAA72XnRA2uhSG/3uJs6X?= =?utf-8?q?7z7N4FcJwwhkBSJ3MCQZ2NNhqZdReuEVjNeWrfQ6Qb7xuij+SXoOcxk5QlQ3KZCVa?= =?utf-8?q?mqqGEHTtfOJzb5/DGecvqf4TbQSf5pdjTrUlCIjpL8yUHpiiVDqX5fWheuimzFWls?= =?utf-8?q?lCoj4Fwts/yLsmxJjIVF4FC7b7mYVuWXUrIZ5VGxO6uRRPHIsZM3IPhQLS9OVX/uo?= =?utf-8?q?BSzGae2kl27ftIh3vnopibNlvyuxhI9I/0zMNEB7gg5wmdQ5TS0mT7x4WZYaduZEe?= =?utf-8?q?6+HdjWNJO3wbJuLkXSyNU6ntrRZCMZD7RN7d7VcN+ACzx1ahWkhDqkDoZxrrjWfZp?= =?utf-8?q?Ewn1lH4dEjemEX7Ouv4tb9fSPhyOWG3yaukMBnJ0NPugNKvMZCQxLCiLjNmi26bgY?= =?utf-8?q?S0oA6aVj5D0gtoICnPEMMJLDodrcdHK8H2RJnUYeQqm1witZF+ZMlLSX+pAULVUce?= =?utf-8?q?QW9i6N6916l9RQvZsG9Px8WS0Dq8x6PKufni8WcPa/ENQorRwlvDcKK/dIooobu2p?= =?utf-8?q?dukfiIVUQ6dGytcsn3RP9dmu6RoVa1KMpwIP9eP6IxzLOdop7v9SWRvbvJP0JK8hC?= =?utf-8?q?1FhtsjkVugIEcGUhPagIFn9G33ij9WV9c/LR4x9PbAMBOgSnbwxWMXMGSRTdYuAZR?= =?utf-8?q?66ZZqXRDKwZDF3L/KP/OnrAU4d+4wQG9BjdIS6fy1ACefbzWQexkhaLdrwV4FnvAc?= =?utf-8?q?PhjLs3tSznaDmKqT6yzyYINUf7iiKCE1O0Re9i8NJdbgCoc39jaLPZ7i3yvU41Bgn?= =?utf-8?q?KR8xiJ9Cleo28XfwT7j/zxPyA/4tc3Sq8KwZiHhP1ri/SDpmhwthIawVYeq5EGFhy?= =?utf-8?q?80iUsZuqGygdmT6KD6+KdljcKvbxMH+xGBDhgNfFecf6cHkigpg80AWGSXXTfEKmp?= =?utf-8?q?wpogUvEBuNURWfY/jpDL/AKE3maUjtu3+GWYkVIZNRz7tQWVYYQ1Sffr+CKxOazsn?= =?utf-8?q?9VwSUgedJdJZPOkGuo?= X-MS-Exchange-Transport-Forked: True X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5328 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 573fda03-bd59-430d-d2fc-08d8c7a97577 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jlA6mIQTyHNZxE3rg2YuBFOqIfNeW8dWPWY9/NxrI9+yAaXbjRiezIjRmmqJP4Mx6NMbLrN4zFYe2sO3LL6OTIy2Vtz4yKo2Im9ki2PtsUoX56ZUHGB+uXBxm1uwfKuszCLve8aoIZJYJaErQ27E74hVyHQZcasUW1Z8jztmXNPpb5YWLZyeBnfO3xbC85aeUoiWaCiuHtmDXIxTzmBUvftSqJPLMxdvjsmJ3Mj2BPyw9nJdjWHU4njtsB6Wqnqh14+epQzU7brAks0WlTXf0LzgrRDF/gzxyeLqpUshtoYeG7Fhq/W5VU43HhEabFRpxKK6z1VFxPCkUO1h+EaiOyYND4GyhjAT7gWh8ZmG9bjyfbUZmzKf9nJ/Pi/a5LvpPj1+Z/I59e01GzYrWcSSnAPP/U6hC2rFJlsnHnybn4VmvXWRAwUV4OPGgG8JEZYmF/q6j6frPwr48xFqtShG+wZlA+d674ZsrL9FWJ3eAIJq48RLyEFh14IMcLoMaLEG/1Gj+FMeO8kObKpYdcPLiIGLafKDC24cI1SWuP5+HsaRP3DSxZM+eq3gxB09Q7cKbGHSZwL/iyEUDqJLT0JKcKlDomSEAQjdG/02mfmGvCh7MNAzjve3GshgHvk9AXQEDuop6VvZoz8K2Ck396JzRWAHDFAx+ccAT0nd+pGqprZBSWqV/v0DywFIexiEcovOnGq+j3y1mU3A/nkfuHBXdg== 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:(4636009)(396003)(136003)(39850400004)(376002)(346002)(46966006)(36840700001)(4326008)(86362001)(2906002)(5660300002)(55016002)(7696005)(26005)(356005)(82310400003)(4743002)(2616005)(8936002)(81166007)(47076005)(33964004)(44144004)(82740400003)(36756003)(235185007)(107886003)(70586007)(6916009)(8886007)(956004)(70206006)(44832011)(66616009)(336012)(186003)(6666004)(8676002)(478600001)(36860700001)(316002)(16526019)(4216001)(2700100001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2021 18:36:39.0648 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7613579b-d070-431d-71c9-08d8c7a97a7f 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: AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5742 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: nd@arm.com, rguenther@suse.de Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" Hi All, Previously the SLP pattern matcher was using STMT_VINFO_SLP_VECT_ONLY as a way to dissolve the SLP only patterns during SLP cancellation. However it seems like the semantics for STMT_VINFO_SLP_VECT_ONLY are slightly different than what I expected. Namely that the non-SLP path can still use a statement marked STMT_VINFO_SLP_VECT_ONLY. One such example is masked loads which are used both in the SLP and non-SLP path. To fix this I now introduce a new flag STMT_VINFO_SLP_VECT_ONLY_PATTERN which is used only by the pattern matcher. Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: PR tree-optimization/98928 * tree-vect-loop.c (vect_analyze_loop_2): Change STMT_VINFO_SLP_VECT_ONLY to STMT_VINFO_SLP_VECT_ONLY_PATTERN. * tree-vect-slp-patterns.c (complex_pattern::build): Likewise. * tree-vectorizer.h (STMT_VINFO_SLP_VECT_ONLY_PATTERN): New. (class _stmt_vec_info): Add slp_vect_pattern_only_p. gcc/testsuite/ChangeLog: PR tree-optimization/98928 * gcc.target/i386/pr98928.c: New test. --- inline copy of patch -- diff --git a/gcc/testsuite/gcc.target/i386/pr98928.c b/gcc/testsuite/gcc.target/i386/pr98928.c new file mode 100644 index 0000000000000000000000000000000000000000..9503b579a88d95c427d3e3e5a71565b0c048c125 diff --git a/gcc/testsuite/gcc.target/i386/pr98928.c b/gcc/testsuite/gcc.target/i386/pr98928.c new file mode 100644 index 0000000000000000000000000000000000000000..9503b579a88d95c427d3e3e5a71565b0c048c125 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr98928.c @@ -0,0 +1,59 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Ofast -march=skylake-avx512 -fwhole-program -w" } */ + +typedef float MagickRealType; +typedef short Quantum; +float InterpolateMagickPixelPacket_alpha[1]; +int InterpolateMagickPixelPacket_i; + +void InterpolateMagickPixelPacket(); + +void main() { InterpolateMagickPixelPacket(); } + +typedef struct { + MagickRealType red, green, blue, opacity, index; +} MagickPixelPacket; +typedef struct { + Quantum blue, green, red, opacity; +} PixelPacket; +struct _Image { + int colorspace; + int matte; +} GetMagickPixelPacket(MagickPixelPacket *pixel) { + pixel->red = pixel->green = pixel->blue = 0.0; +} +int AlphaBlendMagickPixelPacket(struct _Image *image, PixelPacket *color, + Quantum *indexes, MagickPixelPacket *pixel, + MagickRealType *alpha) { + if (image->matte) { + *alpha = pixel->red = pixel->green = pixel->blue = pixel->opacity = + color->opacity; + pixel->index = 0.0; + if (image->colorspace) + pixel->index = *indexes; + return 0; + } + *alpha = 1.0 / 0.2; + pixel->red = *alpha * color->red; + pixel->green = *alpha * color->green; + pixel->blue = *alpha * color->blue; + pixel->opacity = pixel->index = 0.0; + if (image->colorspace && indexes) + pixel->index = *indexes; +} +MagickPixelPacket InterpolateMagickPixelPacket_pixels[1]; +PixelPacket InterpolateMagickPixelPacket_p; + +void +InterpolateMagickPixelPacket(struct _Image *image) { + Quantum *indexes; + for (; InterpolateMagickPixelPacket_i; InterpolateMagickPixelPacket_i++) { + GetMagickPixelPacket(InterpolateMagickPixelPacket_pixels + + InterpolateMagickPixelPacket_i); + AlphaBlendMagickPixelPacket( + image, &InterpolateMagickPixelPacket_p + InterpolateMagickPixelPacket_i, + indexes + InterpolateMagickPixelPacket_i, + InterpolateMagickPixelPacket_pixels + InterpolateMagickPixelPacket_i, + InterpolateMagickPixelPacket_alpha + InterpolateMagickPixelPacket_i); + } +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index acfd1952e3b803ea79cf51433101466743c9793e..200ed27b32ef4aa54c6783afa1864924b6f55582 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2700,7 +2700,7 @@ again: { stmt_vec_info pattern_stmt_info = STMT_VINFO_RELATED_STMT (stmt_info); - if (STMT_VINFO_SLP_VECT_ONLY (pattern_stmt_info)) + if (STMT_VINFO_SLP_VECT_ONLY_PATTERN (pattern_stmt_info)) STMT_VINFO_IN_PATTERN_P (stmt_info) = false; gimple *pattern_def_seq = STMT_VINFO_PATTERN_DEF_SEQ (stmt_info); diff --git a/gcc/tree-vect-slp-patterns.c b/gcc/tree-vect-slp-patterns.c index d25560fab97bb852e949884850d51c6148b14a68..f0817da9f622d22e3df2e30410d1cf610b4ffa1d 100644 --- a/gcc/tree-vect-slp-patterns.c +++ b/gcc/tree-vect-slp-patterns.c @@ -599,7 +599,7 @@ complex_pattern::build (vec_info *vinfo) the call there. */ vect_mark_pattern_stmts (vinfo, stmt_info, call_stmt, SLP_TREE_VECTYPE (node)); - STMT_VINFO_SLP_VECT_ONLY (call_stmt_info) = true; + STMT_VINFO_SLP_VECT_ONLY_PATTERN (call_stmt_info) = true; /* Since we are replacing all the statements in the group with the same thing it doesn't really matter. So just set it every time a new stmt diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index f8bf4488d0ea32e7909f6be2bf4e7cdaee4f55fe..e564fcf835a46a8c1aa6b5fb52f7ecd60bcb1bc9 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -1215,6 +1215,10 @@ public: /* True if this is only suitable for SLP vectorization. */ bool slp_vect_only_p; + + /* True if this is a pattern that can only be handled by SLP + vectorization. */ + bool slp_vect_pattern_only_p; }; /* Information about a gather/scatter call. */ @@ -1301,6 +1305,7 @@ struct gather_scatter_info { #define STMT_VINFO_REDUC_VECTYPE(S) (S)->reduc_vectype #define STMT_VINFO_REDUC_VECTYPE_IN(S) (S)->reduc_vectype_in #define STMT_VINFO_SLP_VECT_ONLY(S) (S)->slp_vect_only_p +#define STMT_VINFO_SLP_VECT_ONLY_PATTERN(S) (S)->slp_vect_pattern_only_p #define DR_GROUP_FIRST_ELEMENT(S) \ (gcc_checking_assert ((S)->dr_aux.dr), (S)->first_element)