From patchwork Fri Apr 28 14:51:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 756439 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 3wDxbS6X1cz9s65 for ; Sat, 29 Apr 2017 00:51:32 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="uDd/n2D9"; 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 :message-id:date:from:to:cc:subject:references:mime-version :content-type; q=dns; s=default; b=ejEOtM4Zjj2AnDlxyP55hk5GRvPjy V7sdtk0zUhPUta6tXJFjSpu+rczClnHSIP1zyLnueAgx9cSDetj+VPxzT946PJL8 t9YLJdJiDYYI0KqzAAYdd1CkvHdjBmPlXip6wlrMtZHDRF5MZ40y6OUc2Q8Z0bj8 l4QMy6LaniJr0U= 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 :message-id:date:from:to:cc:subject:references:mime-version :content-type; s=default; bh=xMbgY2Qdo9iolYksTYboziEq4sQ=; b=uDd /n2D9HY9sUAhA0+d54B6loEG7Hw5VYIyVZ01rs650E0c/PZbTfKTfcsXNijqsZ1w FhT6HYQId8e76v8cZlm9IVSrTgfRxyN89jwwPecoLlHzUTw5t47E3z8xNOjVHmz/ A38wTZvo24lQLlKmedHpJ1U2jbnTbwj46dWXBmGw= Received: (qmail 113981 invoked by alias); 28 Apr 2017 14:51: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 113966 invoked by uid 89); 28 Apr 2017 14:51:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=xx, xm, sd X-HELO: prv-mh.provo.novell.com Received: from prv-mh.provo.novell.com (HELO prv-mh.provo.novell.com) (137.65.248.74) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 28 Apr 2017 14:51:17 +0000 Received: from INET-PRV-MTA by prv-mh.provo.novell.com with Novell_GroupWise; Fri, 28 Apr 2017 08:51:17 -0600 Message-Id: <5903730602000078001552F0@prv-mh.provo.novell.com> Date: Fri, 28 Apr 2017 08:51:18 -0600 From: "Jan Beulich" To: Cc: "Kirill Yukhin" , , Subject: [PATCH] x86: vpermil2p{s,d} have no commutative operands References: <5903730602000078001552F0@prv-mh.provo.novell.com> Mime-Version: 1.0 While either of the last two operands can be in memory, they can't be swapped. gcc/ 2017-04-28 Jan Beulich * config/i386/sse.md (xop_vpermil23): Use alternatives. x86: vpermil2p{s,d} have no commutative operands While either of the last two operands can be in memory, they can't be swapped. gcc/ 2017-04-28 Jan Beulich * config/i386/sse.md (xop_vpermil23): Use alternatives. --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17092,12 +17092,12 @@ (set_attr "mode" "TI")]) (define_insn "xop_vpermil23" - [(set (match_operand:VF_128_256 0 "register_operand" "=x") + [(set (match_operand:VF_128_256 0 "register_operand" "=x,x") (unspec:VF_128_256 - [(match_operand:VF_128_256 1 "register_operand" "x") - (match_operand:VF_128_256 2 "nonimmediate_operand" "%x") - (match_operand: 3 "nonimmediate_operand" "xm") - (match_operand:SI 4 "const_0_to_3_operand" "n")] + [(match_operand:VF_128_256 1 "register_operand" "x,x") + (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m") + (match_operand: 3 "nonimmediate_operand" "xm,x") + (match_operand:SI 4 "const_0_to_3_operand" "n,n")] UNSPEC_VPERMIL2))] "TARGET_XOP" "vpermil2\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}" --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17092,12 +17092,12 @@ (set_attr "mode" "TI")]) (define_insn "xop_vpermil23" - [(set (match_operand:VF_128_256 0 "register_operand" "=x") + [(set (match_operand:VF_128_256 0 "register_operand" "=x,x") (unspec:VF_128_256 - [(match_operand:VF_128_256 1 "register_operand" "x") - (match_operand:VF_128_256 2 "nonimmediate_operand" "%x") - (match_operand: 3 "nonimmediate_operand" "xm") - (match_operand:SI 4 "const_0_to_3_operand" "n")] + [(match_operand:VF_128_256 1 "register_operand" "x,x") + (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m") + (match_operand: 3 "nonimmediate_operand" "xm,x") + (match_operand:SI 4 "const_0_to_3_operand" "n,n")] UNSPEC_VPERMIL2))] "TARGET_XOP" "vpermil2\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}"