From patchwork Fri Apr 15 07:57:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kirill Yukhin X-Patchwork-Id: 610791 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 3qmVL72JW8z9sCY for ; Fri, 15 Apr 2016 17:59:08 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=sMjpeVcs; 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=n6RWeQyFOQ9TuWsMCWgx4FVNwwq6I9oNChuNo0qDPEbYOMY+rJ M2MNJxe84tUU23c2TQScfvVaWcETe9sIi8XdiFRnHEQuiaEZHgSYkKFb28JkVdNL aqV9xdcE0k/yRI7JL14wUYskCGbN+/JpW0ptZ/blmVjoJ1DNBLkIUc/hY= 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=/83Dl1/yRFyETKoJD8RptixBta8=; b=sMjpeVcs5yntUhiW9B+n SPH9i+Iut0Qm/5JgC/9RtHQze/H+m23JT0ux7Ff/+dRcyU65ZEIfu4E0UuKeBsvC SrdsSG6IVwGQAs8eRZowgmBVDp2FBs+WX/Gtt2AKbGnz4l9s4Q3F3uETHmoh1o0p T97YhybSCEIgJJJa1zfKrqg= Received: (qmail 102919 invoked by alias); 15 Apr 2016 07:59:00 -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 101204 invoked by uid 89); 15 Apr 2016 07:58:59 -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=V2DFmode, v2dfmode, mimic X-HELO: mail-ig0-f193.google.com Received: from mail-ig0-f193.google.com (HELO mail-ig0-f193.google.com) (209.85.213.193) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 15 Apr 2016 07:58:49 +0000 Received: by mail-ig0-f193.google.com with SMTP id fn8so1946447igb.2 for ; Fri, 15 Apr 2016 00:58:48 -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=Om/P0uS1cGW5rJEPWdlMX3/uhDsXOk/GRC3FMnMmQ+Y=; b=GuFVF0Vhy190JJc8tqi1aOF85L5Lf++g7eLu+7ANlxu7yIHhGYAR1GEn5RSsxOMSwd 3Plx42Ffd8iXxrqbj/GTwN6hQpHudABi1kMDM3tJVz1HDGoqn8cGzM1Lb/ovzqduXwCn 760jZgu06ZcZ0PVK8NmC8kzZ9omvS7xUI5JlrcO3mhNN6SiNhKY4KbadRsIQd+WX/1Kk G5XuBxvaGZXNG4ys3k9KDJC4RCNMIUJYHGfPAsigf7rQ8jp5zm30f6HrH2durKQjJ5gj tZggYtHSsLPF5kRmXfJtppSkv4H4sUwEGIQPpqFkwcYz+FtfdMFj25C5nSFkFaXYWy5x 15oQ== X-Gm-Message-State: AOPr4FXlzlvStJ3cmCvGByvrNfjjldQUsnrlN66g4u2R2WwSuMQmHmOC5ZXRls0OkmQKsw== X-Received: by 10.50.6.111 with SMTP id z15mr3240906igz.21.1460707127098; Fri, 15 Apr 2016 00:58:47 -0700 (PDT) Received: from msticlxl57.ims.intel.com (irdmzpr02-ext.ir.intel.com. [192.198.151.37]) by smtp.gmail.com with ESMTPSA id k1sm23408416igg.16.2016.04.15.00.58.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Apr 2016 00:58:45 -0700 (PDT) Date: Fri, 15 Apr 2016 10:57:52 +0300 From: Kirill Yukhin To: GCC Patches Cc: Uros Bizjak Subject: [PATCH, i386, AVX-512] Fix PR target/70662. Message-ID: <20160415075750.GA29751@msticlxl57.ims.intel.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes Hello, Patch in the bottom fixes memory operand modifiers for Intel syntax on broadcast patter. Bootstrapped and regtested on 32,64b x86 target. I'll check it into main trunk and gcc-5 branch. gcc/ PR target/70662 * config/i386/sse.md: Use proper memory operand modifiers. gcc/testsuite/ PR target/70662 * gcc.target/i386/pr70662.c: New test. --- Thanks, K commit 4923dda50a901bf38d386818fcc5347e3882cd99 Author: Kirill Yukhin Date: Fri Apr 15 09:37:48 2016 +0300 AVX-512. Fix PR target/70662 - use proper operand modifiers. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index b64457e..4d2927e 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17262,9 +17262,12 @@ /* There is no DF broadcast (in AVX-512*) to 128b register. Mimic it with integer variant. */ if (mode == V2DFmode) - return "vpbroadcastq\t{%1, %0|%0, %1}"; + return "vpbroadcastq\t{%1, %0|%0, %q1}"; + + if (GET_MODE_SIZE (GET_MODE_INNER (mode)) == 32) + return "vbroadcast\t{%1, %0|%0, %k1}"; else - return "vbroadcast\t{%1, %0|%0, %1}"; + return "vbroadcast\t{%1, %0|%0, %q1}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") diff --git a/gcc/testsuite/gcc.target/i386/pr70662.c b/gcc/testsuite/gcc.target/i386/pr70662.c new file mode 100755 index 0000000..546211d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70662.c @@ -0,0 +1,18 @@ +/* { dg-do assemble { target { ! ia32 } } } */ +/* { dg-require-effective-target avx512vbmi } */ +/* { dg-options "-Og -fschedule-insns -fno-tree-fre -mavx512vbmi --param=max-sched-ready-insns=1 -masm=intel" } */ + +typedef char v64u8 __attribute__((vector_size(64))); +typedef int v64u32 __attribute__((vector_size(64))); +typedef long v64u64 __attribute__((vector_size(64))); +typedef __int128 v64u128 __attribute__((vector_size(64))); + +v64u128 +foo(int u8_0, unsigned u128_0, v64u32 v64u32_1, v64u32 v64u32_0, v64u64 v64u64_0, v64u128 v64u128_0) +{ + v64u8 v64u8_0 = v64u8_0; + v64u32_0 = v64u32_0 >> (v64u32){0, 0, 0, 1, 0, ((v64u64)v64u64_0)[u8_0], ((v64u32)v64u128_0)[15], 0, 0, 0, 0, 4, ((v64u64)v64u64_0)[v64u32_0[0]] - 1}; + v64u8_0 = v64u8_0 << ((v64u8)v64u32_1 & 1); + v64u64_0[0] >>= 0; + return u128_0 + (v64u128)v64u8_0 + (v64u128)v64u32_0 + (v64u128)v64u64_0; +}