From patchwork Thu Mar 10 10:12:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Enkovich X-Patchwork-Id: 595672 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id C4B591401DA for ; Thu, 10 Mar 2016 21:13:55 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=w8ABm+wt; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:mime-version:content-type; q=dns; s= default; b=PRXoIFJAHdr1khciSj8/q12Uv+Koqa+HOUSwWpFeGd4Wu+w8DYUj/ sr9IpLn06zGnGs8dEFgsDdZRyiLvik0vv487GrpdDKKXeWrXtIuKc8YZEjFlvbo3 2pj0Xx15YTIMzoEizIIAsU0rBLz2m/BBOp3J4ChdFuPxjB/NfBGJqM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:mime-version:content-type; s= default; bh=Gk/rwUokqqs3AjuctLsCOq5uH2Y=; b=w8ABm+wtwIs0GOajwmhI eagRlnspIL9p+3guWDIgg+qpop7w5+BVrUMfevRxBq9FFMXa4RVUe/hwxk3zCRSv G0fxXFu6h70V8+jXBQ3AR4srZPNRWTHNLvDPaeZRd787ox7R2F8FYn5N+/iRYUpU SnWv3d17tltejUVbvbREtd8= Received: (qmail 91963 invoked by alias); 10 Mar 2016 10:13:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 91952 invoked by uid 89); 10 Mar 2016 10:13:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=Additional, Hx-languages-length:1357, 2016-03-10 X-HELO: mail-io0-f171.google.com Received: from mail-io0-f171.google.com (HELO mail-io0-f171.google.com) (209.85.223.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 10 Mar 2016 10:13:41 +0000 Received: by mail-io0-f171.google.com with SMTP id n190so100235216iof.0 for ; Thu, 10 Mar 2016 02:13:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=913aD3aGPCPd/vRxPDVMTcM/9Okh6huerFUNhalgCDI=; b=BofH6NVNpGKEFPWZJ/BUMyFVFsDR1IIBYaz/8oE7piEWmMsY72oulWABMgPNYwTfZN 8v9LWfnBG2DKSl4CPnRb+Zfsc3pSty2KgN5F6M0FTHAOifI2ATHP/k/jx1bbtm4InBgk xBdbSu/sSifd76C+EecyNhxetkivzhPWUcwdipYi9Wa2Tk6bukldbd1B/bEnbemGJAlY S8xAUOdx461Forqy1j56jpDMz96Z+SrPGrZtPVSbAdEyvTCtagc1mBU3R/O1IMyPxFoe ERRE2H4t4c4vnVXX/UwKQQ4HB6DfLjYv9Caedk96BnI0o7NWc/TfcKbV+RVLxaZBhjgY SsuQ== X-Gm-Message-State: AD7BkJIWcHcOZnVn4oyhjl5WUNcQVB7wruWhP/9sIu5SKXCJALOffrPqcCP49+3xoe5vPg== X-Received: by 10.107.184.135 with SMTP id i129mr3101334iof.4.1457604819878; Thu, 10 Mar 2016 02:13:39 -0800 (PST) Received: from msticlxl57.ims.intel.com (irdmzpr01-ext.ir.intel.com. [192.198.151.36]) by smtp.gmail.com with ESMTPSA id 99sm710720ior.16.2016.03.10.02.13.38 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Mar 2016 02:13:39 -0800 (PST) Date: Thu, 10 Mar 2016 13:12:55 +0300 From: Ilya Enkovich To: gcc-patches@gcc.gnu.org Subject: [PATCH] Additional check for mask type in masked load/store vectorization Message-ID: <20160310101255.GB3131@msticlxl57.ims.intel.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes Hi, Curently when vectorizing masked load/store we don't check mask and value have the same number of elements. Usually conversion patterns apply and we don't have such case but conversion patterns may fail to properly determine mask type and we shouldn't rely on it so hard. Unfortunately I couldn't make a small testcase where we fail to determine mask type. For me it happeneds when mixed C/Fortran code was compiled with LTO and I had various scalar boolean types. Bootstrapped and regtested on x86_64-pc-linux-gnu. Ok for trunk with no testcase? Thanks, Ilya --- gcc/ 2016-03-10 Ilya Enkovich * tree-vect-stmts.c (vectorizable_mask_load_store): Check mask has a proper number of elements. diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 6ac273d..06b1ab7 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1742,7 +1742,8 @@ vectorizable_mask_load_store (gimple *stmt, gimple_stmt_iterator *gsi, if (!mask_vectype) mask_vectype = get_mask_type_for_scalar_type (TREE_TYPE (vectype)); - if (!mask_vectype || !VECTOR_BOOLEAN_TYPE_P (mask_vectype)) + if (!mask_vectype || !VECTOR_BOOLEAN_TYPE_P (mask_vectype) + || TYPE_VECTOR_SUBPARTS (mask_vectype) != TYPE_VECTOR_SUBPARTS (vectype)) return false; if (is_store)