From patchwork Tue Apr 19 16:09:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Enkovich X-Patchwork-Id: 612215 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 3qq9372593z9t3l for ; Wed, 20 Apr 2016 02:10:25 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=f6QiyY7z; 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:cc:subject:message-id:mime-version:content-type; q=dns; s=default; b=E7Hsh6XO4aE6mSDJBthwqYhyq6hZXTr0FGNX/py+8JWdMrqBLg y1P71e1KyOxmxD0J9sC/8pJ95KYAnEVhe+3dvi5rAtRslvvI2IJNRMAg2ON+LEtC v/8YhcaTfMHHW+ZHxAaItPYZSAi1r0suJHc4o6d4THKULCByh4OLSGU30= 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:cc:subject:message-id:mime-version:content-type; s= default; bh=ueL/eL8ahrfOXpdx77TShTG3Yno=; b=f6QiyY7zBi4OReTrhawK qpZoO8bIfmtUZ24axsFRfI50vdFEohxPWkSlX6HcvWKPvBjY8BoC8wRzkspvlzWq 6GEeGqQJfv9ocKlZRjZRjL26EkNLbT3w60vWdeG9v6z0unHJa1w7I/TNJlLXs8hT XUXNgDvUZkGo16c39S5Op3U= Received: (qmail 62952 invoked by alias); 19 Apr 2016 16:10:19 -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 62936 invoked by uid 89); 19 Apr 2016 16:10:18 -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=computations, Hx-languages-length:1437, AVX512F, avx512f X-HELO: mail-ig0-f196.google.com Received: from mail-ig0-f196.google.com (HELO mail-ig0-f196.google.com) (209.85.213.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 19 Apr 2016 16:10:02 +0000 Received: by mail-ig0-f196.google.com with SMTP id qu10so2990432igc.1 for ; Tue, 19 Apr 2016 09:10:02 -0700 (PDT) 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:cc:subject:message-id:mime-version :content-disposition:user-agent; bh=+QwtjjlwzTHfjeP6mKESBCONkz/jQJn35TV2Y0081k0=; b=C+ZgjuJg2Ipd0EjVviho0GuDd4WmjXwvm/k81Osk649TJ7BraxRWG8puTVfTxZNMDT CFZgsQfQXTWUNnSpZMI4/2o5UnrqVkcrQgEwGnEE8MtkULzNp9PeA5Kk4a3f+1Byeqns st8d8X9yPz9RPwiPG+MVuWHG8vfRfrUSJuJS2LodU9+x4vHRD9eIPOd5SIzBBPcGiNBb /aNKgkXXQNZfq0tz9QXT8mhysG0/zwSy1Q/HJwRVQV2/9SbtKv5lbjPTbyOZ4QOOsIbV s4SOkH+vqdShZPcbzYD9HAmcqq1WBOgavX/NP1+yTHHsvBkaqwSWLA9mvojIzgrrYTC3 YWPg== X-Gm-Message-State: AOPr4FUHji5UBnJeiWr56RJKg+h0O/xkwuxHGyKxzL34nZ0dTUGV0qycbpn5G8zW+BXhkw== X-Received: by 10.50.55.6 with SMTP id n6mr4827275igp.60.1461082200363; Tue, 19 Apr 2016 09:10:00 -0700 (PDT) Received: from msticlxl57.ims.intel.com (irdmzpr02-ext.ir.intel.com. [192.198.151.37]) by smtp.gmail.com with ESMTPSA id au6sm10442358igc.0.2016.04.19.09.09.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Apr 2016 09:10:00 -0700 (PDT) Date: Tue, 19 Apr 2016 19:09:02 +0300 From: Ilya Enkovich To: gcc-patches@gcc.gnu.org Cc: ubizjak@gmail.com, kirill.yukhin@gmail.com Subject: [PATCH, i386] Relax target requirement for vec_unpacks_lo_hi Message-ID: <20160419160902.GA7047@msticlxl57.ims.intel.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes Hi, vec_unpacks_lo_[si,hi,di] patterns for scalar masks don't need to extend mask elements. It means a simple register copy is good enough. Currently vec_unpacks_lo_hi pattern uses kmovb instruction which requires AVX512DQ target. But 16-bit masks to/from 8-bit masks conversion is typical for AVX512F code with a mix of integer (or float, or logical (kind=4) for Fortran) and double computations. This patch implements vec_unpacks_lo_hi as kmovw instead to make masks conversion available for AVX512F target. Bootstrapped and tested on x96_64-unknown-linux-gnu. Does it look OK for trunk? Thanks, Ilya --- gcc/ 2016-04-19 Ilya Enkovich * config/i386/sse.md (vec_unpacks_lo_hi): Always use kmovw to support AVX512F target. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 4d2927e..c213ee1 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -13661,9 +13661,9 @@ "ix86_expand_sse_unpack (operands[0], operands[1], true, false); DONE;") (define_expand "vec_unpacks_lo_hi" - [(set (match_operand:QI 0 "register_operand") - (subreg:QI (match_operand:HI 1 "register_operand") 0))] - "TARGET_AVX512DQ") + [(set (subreg:HI (match_operand:QI 0 "register_operand") 0) + (match_operand:HI 1 "register_operand"))] + "TARGET_AVX512F") (define_expand "vec_unpacks_lo_si" [(set (match_operand:HI 0 "register_operand")