[{"id":1762680,"web_url":"http://patchwork.ozlabs.org/comment/1762680/","msgid":"<fcf61227-0fde-2c53-fae3-ca9504897f75@arm.com>","list_archive_url":null,"date":"2017-09-04T14:14:58","subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","submitter":{"id":67887,"url":"http://patchwork.ozlabs.org/api/people/67887/","name":"Richard Earnshaw","email":"Richard.Earnshaw@arm.com"},"content":"On 01/09/17 14:19, Tamar Christina wrote:\n> Hi All,\n> \n> This patch adds support for the +dotprod extension to ARM.\n> Dot Product requires Adv.SIMD to work and so enables this option\n> by default when enabled.\n> \n> It is available from ARMv8.2-a and onwards and is enabled by\n> default on Cortex-A55 and Cortex-A75.\n> \n> Regtested and bootstrapped on arm-none-eabi and no issues.\n> \n> Ok for trunk?\n> \n> gcc/\n> 2017-09-01  Tamar Christina  <tamar.christina@arm.com>\n> \n> \t* config/arm/arm.h (TARGET_DOTPROD): New.\n> \t* config/arm/arm.c (arm_arch_dotprod): New.\n> \t(arm_option_reconfigure_globals): Add arm_arch_dotprod.\n> \t* config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n> \t* config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n> \t(armv8.2-a, cortex-a75.cortex-a55): Likewise.\n> \t* config/arm/arm-isa.h (isa_bit_dotprod, ISA_DOTPROD): New.\n> \t* config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n> \t* doc/invoke.texi (armv8.2-a): Document dotprod\n> \n> \n> 7949-diff.patch\n> \n> \n> diff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c\n> index 55472434c3a6e90c5693bbaabd3265f7d968787f..295f03bf8ee02be7c89ed2967d283be206e9f25a 100644\n> --- a/gcc/config/arm/arm-c.c\n> +++ b/gcc/config/arm/arm-c.c\n> @@ -73,6 +73,7 @@ arm_cpu_builtins (struct cpp_reader* pfile)\n>    def_or_undef_macro (pfile, \"__ARM_FEATURE_QRDMX\", TARGET_NEON_RDMA);\n>  \n>    def_or_undef_macro (pfile, \"__ARM_FEATURE_CRC32\", TARGET_CRC32);\n> +  def_or_undef_macro (pfile, \"__ARM_FEATURE_DOTPROD\", TARGET_DOTPROD);\n>    def_or_undef_macro (pfile, \"__ARM_32BIT_STATE\", TARGET_32BIT);\n>  \n>    cpp_undef (pfile, \"__ARM_FEATURE_CMSE\");\n> diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in\n> index d009a9e18acb093aefe0f9d8d6de49489fc2325c..7707eec5edf36b0cb4339bc52bc45a92b6ea007f 100644\n> --- a/gcc/config/arm/arm-cpus.in\n> +++ b/gcc/config/arm/arm-cpus.in\n> @@ -357,6 +357,7 @@ begin arch armv8.2-a\n>   option crypto add FP_ARMv8 CRYPTO\n>   option nocrypto remove ALL_CRYPTO\n>   option nofp remove ALL_FP\n> + option dotprod add FP_ARMv8 DOTPROD\n>  end arch armv8.2-a\n>  \n>  begin arch armv8-m.base\n> @@ -1269,9 +1270,10 @@ begin cpu cortex-a55\n>   cname cortexa55\n>   tune for cortex-a53\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n> + option dotprod add FP_ARMv8 DOTPROD\n>   option nofp remove ALL_FP\n>   costs cortex_a53\n>  end cpu cortex-a55\n> @@ -1280,9 +1282,10 @@ begin cpu cortex-a75\n>   cname cortexa75\n>   tune for cortex-a57\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n> + option dotprod add FP_ARMv8 DOTPROD\n>   costs cortex_a73\n>  end cpu cortex-a75\n>  \n> @@ -1292,9 +1295,10 @@ begin cpu cortex-a75.cortex-a55\n>   cname cortexa75cortexa55\n>   tune for cortex-a53\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n> + option dotprod add FP_ARMv8 DOTPROD\n>   costs cortex_a73\n>  end cpu cortex-a75.cortex-a55\n>  \n> diff --git a/gcc/config/arm/arm-isa.h b/gcc/config/arm/arm-isa.h\n> index dbd29eaa52f2007498c2aff6263b8b6c3a70e2c2..60a50edf08dd7d3ac9ad46967250f4dcc6b8768b 100644\n> --- a/gcc/config/arm/arm-isa.h\n> +++ b/gcc/config/arm/arm-isa.h\n> @@ -66,6 +66,7 @@ enum isa_feature\n>      isa_bit_fp_d32,\t/* 32 Double precision registers.  */\n>      isa_bit_crypto,\t/* Crypto extension to ARMv8.  */\n>      isa_bit_fp16,\t/* FP16 data processing (half-precision float).  */\n> +    isa_bit_dotprod,\t/* Dot Product instructions.  */\n>  \n>      /* ISA Quirks (errata?).  Don't forget to add this to the list of\n>         all quirks below.  */\n> @@ -159,6 +160,7 @@ enum isa_feature\n>  #define ISA_FP_ARMv8\tISA_FPv5, ISA_FP_D32\n>  #define ISA_NEON\tISA_FP_D32, isa_bit_neon\n>  #define ISA_CRYPTO\tISA_NEON, isa_bit_crypto\n> +#define ISA_DOTPROD\tISA_NEON, isa_bit_dotprod\n\nYou also need to update ISA_ALL_FP to include your new feature;\notherwise it won't be correctly removed if +nofp is used.\n\n>  \n>  /* List of all quirk bits to strip out when comparing CPU features with\n>     architectures.  */\n> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h\n> index 4f53583cf0219de4329bc64a47a5a42c550ff354..44a95bf7eb2eab8e3cf07ac9cc7aad3d9997b27f 100644\n> --- a/gcc/config/arm/arm.h\n> +++ b/gcc/config/arm/arm.h\n> @@ -210,6 +210,11 @@ extern tree arm_fp16_type_node;\n>  /* FPU supports ARMv8.1 Adv.SIMD extensions.  */\n>  #define TARGET_NEON_RDMA (TARGET_NEON && arm_arch8_1)\n>  \n> +/* Supports for Dot Product AdvSIMD extensions.  */\n> +#define TARGET_DOTPROD (TARGET_NEON\t\t\t\t\t\\\n> +\t\t\t&& bitmap_bit_p (arm_active_target.isa,\t\t\\\n> +\t\t\t\t\tisa_bit_dotprod))\n> +\n>  /* FPU supports the floating point FP16 instructions for ARMv8.2 and later.  */\n>  #define TARGET_VFP_FP16INST \\\n>    (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP5 && arm_fp16_inst)\n> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c\n> index 71379dd5afc4c0dd62fdafd08777793d2ad47ae7..486591137f95cfb2e51adb7082f346edf84449de 100644\n> --- a/gcc/config/arm/arm.c\n> +++ b/gcc/config/arm/arm.c\n> @@ -952,6 +952,9 @@ int arm_condexec_masklen = 0;\n>  /* Nonzero if chip supports the ARMv8 CRC instructions.  */\n>  int arm_arch_crc = 0;\n>  \n> +/* Nonzero if chip supports the AdvSIMD Dot Product instructions.  */\n> +int arm_arch_dotprod = 0;\n> +\n>  /* Nonzero if chip supports the ARMv8-M security extensions.  */\n>  int arm_arch_cmse = 0;\n>  \n> @@ -3594,6 +3597,8 @@ arm_option_reconfigure_globals (void)\n>    arm_arch_cmse = bitmap_bit_p (arm_active_target.isa, isa_bit_cmse);\n>    arm_fp16_inst = bitmap_bit_p (arm_active_target.isa, isa_bit_fp16);\n>    arm_arch_lpae = bitmap_bit_p (arm_active_target.isa, isa_bit_lpae);\n> +  arm_arch_dotprod = bitmap_bit_p (arm_active_target.isa, isa_bit_dotprod);\n> +\n>    if (arm_fp16_inst)\n>      {\n>        if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)\n> diff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib\n> index ec4b76dbc8fc56093c2b27c95e0947558496fe5a..47f3673160a766c5b1b8972f7670355f2c357b56 100644\n> --- a/gcc/config/arm/t-multilib\n> +++ b/gcc/config/arm/t-multilib\n> @@ -68,7 +68,7 @@ v7ve_vfpv4_simd_variants := +simd\n>  v8_a_nosimd_variants\t:= +crc\n>  v8_a_simd_variants\t:= $(call all_feat_combs, simd crypto)\n>  v8_1_a_simd_variants\t:= $(call all_feat_combs, simd crypto)\n> -v8_2_a_simd_variants\t:= $(call all_feat_combs, simd fp16 crypto)\n> +v8_2_a_simd_variants\t:= $(call all_feat_combs, simd fp16 crypto dotprod)\n>  \n>  \n>  ifneq (,$(HAS_APROFILE))\n> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi\n> index 64363e54a00c56a3de545735620189f7ec0cde04..4cb5836a9da22681d192c3750fc8e5a50024ac10 100644\n> --- a/gcc/doc/invoke.texi\n> +++ b/gcc/doc/invoke.texi\n> @@ -15492,6 +15492,10 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n>  The cryptographic instructions.  This also enables the Advanced SIMD and\n>  floating-point instructions.\n>  \n> +@item +dotprod\n> +Enable the Dot Product extension.  This also enables Advanced SIMD instructions\n> +and allows auto vectorization of dot products to the Dot Product instructions.\n> +\n\nNo need to talk about auto-vectorization.  I think you should use nearly\nidentical wording to the +fp16 option - ie it also enables Adv SIMD and FP.\n>  @item +nocrypto\n>  Disable the cryptographic extension.\n>  \n> \n\nOK with those changes.","headers":{"Return-Path":"<gcc-patches-return-461422-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-461422-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"G6CVEhSl\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmBhd420cz9s7C\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 00:15:44 +1000 (AEST)","(qmail 13145 invoked by alias); 4 Sep 2017 14:15:35 -0000","(qmail 9561 invoked by uid 89); 4 Sep 2017 14:15:32 -0000","from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com)\n\t(217.140.101.70) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tMon, 04 Sep 2017 14:15:24 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\tby\n\tusa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id\n\tC638B15A2; Mon,  4 Sep 2017 07:15:15 -0700 (PDT)","from e105689-lin.cambridge.arm.com (e105689-lin.cambridge.arm.com\n\t[10.2.207.32])\tby usa-sjc-imap-foss1.foss.arm.com (Postfix)\n\twith ESMTPSA id 257C83F3E1; Mon,  4 Sep 2017 07:15:13 -0700 (PDT)"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:subject:to:cc:references:from:message-id:date:mime-version\n\t:in-reply-to:content-type:content-transfer-encoding; q=dns; s=\n\tdefault; b=FIgEHZYQbJB/gHxeBOg7lgQ4ufbFAPeqN+h0GcOaYjqvLq0kIfHNY\n\tcQwDCCQP8jLCWQNGpMhLk/9fO06mFIRz+5YwQUdNijlw60dzXR0J9B/Y6/jUqNW0\n\tNbp2UdG10AUGRqDUrYdZDhT6Yiooa7PGyCXr5mvIQ6kslKKxMkeO3Q=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:subject:to:cc:references:from:message-id:date:mime-version\n\t:in-reply-to:content-type:content-transfer-encoding; s=default;\n\tbh=k49+NIeBSpWaqJEydcAyvV4bjSo=; b=G6CVEhSlwj4nw/Otxkoo7rPCv3TF\n\tlElgt/vo77BMbaDtBwe93Qeh0XrdJqT90ze0RNWbumn+6abfoXUzuOWfpDGgvkTz\n\tOC/YS2MJDbTnEbPsSFvaLOymV9yup8FwyvJRN35TO3unn3JC21HKzu37CSma+4/q\n\tRtcl39Dzn4ngJ80=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-26.7 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH,\n\tRP_MATCHES_RCVD,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=Adv, 1596","X-HELO":"foss.arm.com","Subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","To":"Tamar Christina <tamar.christina@arm.com>, gcc-patches@gcc.gnu.org","Cc":"nd@arm.com, Ramana.Radhakrishnan@arm.com, nickc@redhat.com,\n\tKyrylo.Tkachov@arm.com","References":"<20170901131912.GA31822@arm.com>","From":"\"Richard Earnshaw (lists)\" <Richard.Earnshaw@arm.com>","Message-ID":"<fcf61227-0fde-2c53-fae3-ca9504897f75@arm.com>","Date":"Mon, 4 Sep 2017 15:14:58 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:52.0) Gecko/20100101 Thunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<20170901131912.GA31822@arm.com>","Content-Type":"text/plain; charset=us-ascii","Content-Transfer-Encoding":"7bit"}},{"id":1767748,"web_url":"http://patchwork.ozlabs.org/comment/1767748/","msgid":"<59B90213.3020906@foss.arm.com>","list_archive_url":null,"date":"2017-09-13T10:01:55","subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","submitter":{"id":66284,"url":"http://patchwork.ozlabs.org/api/people/66284/","name":"Kyrill Tkachov","email":"kyrylo.tkachov@foss.arm.com"},"content":"Hi Tamar,\n\nOn 01/09/17 14:19, Tamar Christina wrote:\n> Hi All,\n>\n> This patch adds support for the +dotprod extension to ARM.\n> Dot Product requires Adv.SIMD to work and so enables this option\n> by default when enabled.\n>\n> It is available from ARMv8.2-a and onwards and is enabled by\n> default on Cortex-A55 and Cortex-A75.\n>\n> Regtested and bootstrapped on arm-none-eabi and no issues.\n\nI'm assuming you mean arm-none-linux-gnueabihf :)\n\n> Ok for trunk?\n>\n> gcc/\n> 2017-09-01  Tamar Christina  <tamar.christina@arm.com>\n>\n> \t* config/arm/arm.h (TARGET_DOTPROD): New.\n> \t* config/arm/arm.c (arm_arch_dotprod): New.\n> \t(arm_option_reconfigure_globals): Add arm_arch_dotprod.\n> \t* config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n> \t* config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n> \t(armv8.2-a, cortex-a75.cortex-a55): Likewise.\n> \t* config/arm/arm-isa.h (isa_bit_dotprod, ISA_DOTPROD): New.\n\narm-isa.h is now autogenerated after r251799 so you'll need to rebase on \ntop of that.\nThat being said, that patch was temporarily reverted [1] so you'll have \nto apply it manually in your\ntree to rebase, or wait until it is reapplied.\n\n[1] https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00579.html\n\nThe patch looks ok to me otherwise with a documentation nit below.\n\n> \t* config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n> \t* doc/invoke.texi (armv8.2-a): Document dotprod\n>\n\n--- a/gcc/doc/invoke.texi\n+++ b/gcc/doc/invoke.texi\n@@ -15492,6 +15492,10 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n  The cryptographic instructions.  This also enables the Advanced SIMD and\n  floating-point instructions.\n  \n+@item +dotprod\n+Enable the Dot Product extension.  This also enables Advanced SIMD instructions\n+and allows auto vectorization of dot products to the Dot Product instructions.\n\nThis should be \"auto-vectorization\"\n\nThanks,\nKyrill","headers":{"Return-Path":"<gcc-patches-return-462012-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-462012-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"o2nJjkUJ\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xscdv1V85z9s9Y\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 13 Sep 2017 20:02:10 +1000 (AEST)","(qmail 111552 invoked by alias); 13 Sep 2017 10:02:01 -0000","(qmail 111291 invoked by uid 89); 13 Sep 2017 10:02:00 -0000","from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com)\n\t(217.140.101.70) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tWed, 13 Sep 2017 10:01:59 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\tby\n\tusa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id\n\tA46F21529; Wed, 13 Sep 2017 03:01:57 -0700 (PDT)","from [10.2.207.77] (e100706-lin.cambridge.arm.com\n\t[10.2.207.77])\tby usa-sjc-imap-foss1.foss.arm.com (Postfix)\n\twith ESMTPSA id 8AA143F483; Wed, 13 Sep 2017 03:01:56 -0700 (PDT)"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:message-id:date:from:mime-version:to:cc:subject:references\n\t:in-reply-to:content-type:content-transfer-encoding; q=dns; s=\n\tdefault; b=p4xkhgG8ZrqspOqNM6i6fBYY5RieKFnlZWIzjsi+eUVl1Mxjvjlna\n\tAVlYMg8oprRTGloQosbg2IHyyYrmV1nk9Kl+6LJDmKufceaqIdl2fZMQu7mbjaqB\n\t+WQVohCFxj2eQmLAuFu1DNz44PZn3L4+gJfb0c7UgYQDsLKug93Ewc=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:message-id:date:from:mime-version:to:cc:subject:references\n\t:in-reply-to:content-type:content-transfer-encoding; s=default;\n\tbh=gz0hJszGwc4t7iUqjPQasKWGGmM=; b=o2nJjkUJUbnjt0RX6Ql6fDNTfppq\n\t41YqT0EJrm3rjai6+Pk5any7icaiKvSd+xvE8Gtwnhu5zUcCq3ww9HB9U0GAlZJ6\n\ttExOcAAFJESsH0QuJcN5nu097yZdbAzSzUGOV8pqNjSzlYpDdI2/Zab84Cqqk4f9\n\tPhVVV1PZki71PV8=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-10.9 required=5.0 tests=BAYES_00, GIT_PATCH_2,\n\tGIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY,\n\tRP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=armcc,\n\tproducts","X-HELO":"foss.arm.com","Message-ID":"<59B90213.3020906@foss.arm.com>","Date":"Wed, 13 Sep 2017 11:01:55 +0100","From":"Kyrill  Tkachov <kyrylo.tkachov@foss.arm.com>","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:31.0) Gecko/20100101 Thunderbird/31.2.0","MIME-Version":"1.0","To":"Tamar Christina <tamar.christina@arm.com>, gcc-patches@gcc.gnu.org","CC":"nd@arm.com, Ramana.Radhakrishnan@arm.com, Richard.Earnshaw@arm.com,\n\tnickc@redhat.com","Subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","References":"<20170901131912.GA31822@arm.com>","In-Reply-To":"<20170901131912.GA31822@arm.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit"}},{"id":1781564,"web_url":"http://patchwork.ozlabs.org/comment/1781564/","msgid":"<DB6PR0802MB2309C5B880EA1A8F86576565FF710@DB6PR0802MB2309.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2017-10-06T12:44:21","subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"Hi All,\n\nThis is a respin of the patch with the feedback processed.\n\nRegtested on arm-none-eabi, armeb-none-eabi,\naarch64-none-elf and aarch64_be-none-elf with no issues found.\n\nOk for trunk?\n\ngcc/\n2017-10-06  Tamar Christina  <tamar.christina@arm.com>\n\n        * config/arm/arm.h (TARGET_DOTPROD): New.\n        * config/arm/arm.c (arm_arch_dotprod): New.\n        (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n        * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n        * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n        (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n        (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.\n        (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.\n        * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n        * doc/invoke.texi (armv8.2-a): Document dotprod","headers":{"Return-Path":"<gcc-patches-return-463625-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-463625-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"Vag8U9Lr\"; dkim-atps=neutral","sourceware.org; auth=none","spf=none (sender IP is )\n\tsmtp.mailfrom=Tamar.Christina@arm.com; "],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y7q8t1cF3z9sNw\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  6 Oct 2017 23:44:39 +1100 (AEDT)","(qmail 20073 invoked by alias); 6 Oct 2017 12:44:30 -0000","(qmail 20054 invoked by uid 89); 6 Oct 2017 12:44:28 -0000","from mail-db5eur01on0074.outbound.protection.outlook.com (HELO\n\tEUR01-DB5-obe.outbound.protection.outlook.com) (104.47.2.74)\n\tby sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with\n\tESMTP; Fri, 06 Oct 2017 12:44:25 +0000","from DB6PR0802MB2309.eurprd08.prod.outlook.com (10.172.228.13) by\n\tDB6PR0802MB2392.eurprd08.prod.outlook.com (10.172.250.145)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.77.7; Fri, 6 Oct 2017 12:44:22 +0000","from DB6PR0802MB2309.eurprd08.prod.outlook.com\n\t([fe80::78a8:cb36:9798:56f]) by\n\tDB6PR0802MB2309.eurprd08.prod.outlook.com\n\t([fe80::78a8:cb36:9798:56f%17]) with mapi id 15.20.0077.018;\n\tFri, 6 Oct 2017 12:44:22 +0000"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender:from\n\t:to:cc:subject:date:message-id:references:in-reply-to\n\t:content-type:mime-version; q=dns; s=default; b=Ljgo90Zli3d/J9Lx\n\tO+tMZlXqA1vyDSJKCecaVUaBb5D6KIpfeFMxOU+qjuBIrBh+vRQN5rR2BfnS2tkZ\n\tlgncc20Y+k5pwTIYIl3gbreLDHvbRbY6LLN3dQaVQDyk43ChixMDfxuRK9H3iG1T\n\t7b+NTj+vzHlJIhW6/nPyWSgD7Qg=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender:from\n\t:to:cc:subject:date:message-id:references:in-reply-to\n\t:content-type:mime-version; s=default; bh=Ucya7Dr+ZEwtiS6Wevm1yX\n\tCHM5E=; b=Vag8U9Lrva14V63dM91cQ/sbHWGcU2F/Ix07MIDEA21VkgxjQXljxr\n\tt9+8SDfIUrAoCCBQPRKDA7cRhOdST86SLgwGHfputGj+cIY6B84bemaCV25rE4eV\n\ttMa8bl7nFa1ESPjew34XU6qgVPo7DTnj5aMByeu4rn4ruB80LJpsQ=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-25.5 required=5.0 tests=AWL, BAYES_00,\n\tGIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tKAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=cname, 18112,\n\tquirk","X-HELO":"EUR01-DB5-obe.outbound.protection.outlook.com","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>,\n\t\"gcc-patches@gcc.gnu.org\"\t<gcc-patches@gcc.gnu.org>","CC":"nd <nd@arm.com>, Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\tRichard Earnshaw <Richard.Earnshaw@arm.com>,\n\t\"nickc@redhat.com\"\t<nickc@redhat.com>","Subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","Date":"Fri, 6 Oct 2017 12:44:21 +0000","Message-ID":"<DB6PR0802MB2309C5B880EA1A8F86576565FF710@DB6PR0802MB2309.eurprd08.prod.outlook.com>","References":"<20170901131912.GA31822@arm.com>, <59B90213.3020906@foss.arm.com>","In-Reply-To":"<59B90213.3020906@foss.arm.com>","authentication-results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-463625-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"Vag8U9Lr\"; dkim-atps=neutral","sourceware.org; auth=none","spf=none (sender IP is )\n\tsmtp.mailfrom=Tamar.Christina@arm.com; "],"x-ms-publictraffictype":"Email","x-microsoft-exchange-diagnostics":"1; DB6PR0802MB2392;\n\t6:4Fq9y0vQTUK2XUkgsivhv1q7RKkXrOjlud6Vpgg/XYIptBdPnmlRVuhNXfxPz7nOBAsx1l+SKbc/lb0H4Lj3WfHRRQlAQb9deQddkxK3NpHCq8OyzXZ1ZR65NHSF4Ljii2uJv2aVaUrdf+twK/JwEhXuumQj+aj/Qw5/sqKhh9XZ1XCq1YeAB/L4f8e8Ru5fm7dSkY08dshq8hmvltEh7VIdj7QKZ3uovXoCwFK4cAEg02JaqZFOvUD07Fw9clehIqF9faaqF/HlFzuzXCB63uLYQE2I2hNK9cU7FMaCqN1q0/7kKiZS4nvc3pN5dElW8pwLYKMrTyI0iG+0fIpzjw==;\n\t5:ghR0iefavy3hWgqFhaDO5gghMBS2fV9d9dzw4cmImQALwXYv0AHFuoOFH+XcWQUESTpsO3uuWmVZOGUBQLgVlI3+ZPBSzEABDRgjQKI4/nK6FUdJAJ+s1VELcGjsiQKaqUjrRHilY5wBD80P5Vyvbw==;\n\t24:iYfdnMZ+QBUshfO2jq/QUcQaMFyVjbzdLgWyFW120tq+lae8FY3eV0yKQYfinnqFqBBIc2kdMxa6eOn6uHRO3+iX3o+4rV6tCtfbwqVFeeA=;\n\t7:pjDZl1krj1xE1OeAA9SrweX5euvujsP1v9V+n4JO9V5h8FusFlLkas9lMftpVedZmonB/JzQz4cD3vskKhGtKtrOXwTWZ7/BH+yxXrTuSAsoCax80MKNOLYe6wnt24Qh+r93lCRtKFsAB2Muv+mvKKXyie7o51ntShcqe8LPE1UKYLe3znsU2+Y48qOJnU93RMkJnb9hbj+VFjK6FH6RX9zxxwLu68WK+Ohqmr3EBAo=","x-ms-exchange-antispam-srfa-diagnostics":"SSOS;","x-ms-office365-filtering-correlation-id":"239f9fce-afa6-462a-0f54-08d50cb7f7e6","x-ms-office365-filtering-ht":"Tenant","x-microsoft-antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:DB6PR0802MB2392; ","x-ms-traffictypediagnostic":"DB6PR0802MB2392:","x-ld-processed":"f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr","nodisclaimer":"True","x-exchange-antispam-report-test":"UriScan:(180628864354917)(22074186197030)(183786458502308); ","x-microsoft-antispam-prvs":"<DB6PR0802MB2392EFCF38369DEE495F782BFF710@DB6PR0802MB2392.eurprd08.prod.outlook.com>","x-exchange-antispam-report-cfa-test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:DB6PR0802MB2392; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:DB6PR0802MB2392; ","x-forefront-prvs":"0452022BE1","x-forefront-antispam-report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(39860400002)(346002)(376002)(189002)(24454002)(53754006)(377454003)(377424004)(199003)(74316002)(9686003)(72206003)(5250100002)(229853002)(53936002)(6436002)(7736002)(55016002)(6506006)(86362001)(81166006)(8936002)(6246003)(105586002)(81156014)(2501003)(4326008)(6306002)(106356001)(66066001)(33656002)(8676002)(102836003)(54356999)(478600001)(305945005)(3846002)(2906002)(3280700002)(76176999)(6116002)(99936001)(53546010)(68736007)(101416001)(50986999)(966005)(189998001)(316002)(14454004)(110136005)(25786009)(54906003)(3660700001)(99286003)(2950100002)(97736004)(2900100001)(5660300001)(7696004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2392;\n\tH:DB6PR0802MB2309.eurprd08.prod.outlook.com; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","received-spf":"None (protection.outlook.com: arm.com does not designate\n\tpermitted sender hosts)","spamdiagnosticoutput":"1:99","spamdiagnosticmetadata":"NSPM","Content-Type":"multipart/mixed;\n\tboundary=\"_002_DB6PR0802MB2309C5B880EA1A8F86576565FF710DB6PR0802MB2309_\"","MIME-Version":"1.0","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-originalarrivaltime":"06 Oct 2017 12:44:21.9922\n\t(UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DB6PR0802MB2392","X-IsSubscribed":"yes"}},{"id":1781772,"web_url":"http://patchwork.ozlabs.org/comment/1781772/","msgid":"<dfb22ee5-aa77-a2fd-3e21-bc35b2850fb1@arm.com>","list_archive_url":null,"date":"2017-10-06T16:23:53","subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","submitter":{"id":67887,"url":"http://patchwork.ozlabs.org/api/people/67887/","name":"Richard Earnshaw","email":"Richard.Earnshaw@arm.com"},"content":"On 06/10/17 13:44, Tamar Christina wrote:\n> Hi All,\n> \n> This is a respin of the patch with the feedback processed.\n> \n> Regtested on arm-none-eabi, armeb-none-eabi,\n> aarch64-none-elf and aarch64_be-none-elf with no issues found.\n> \n> Ok for trunk?\n> \n> gcc/\n> 2017-10-06  Tamar Christina  <tamar.christina@arm.com>\n> \n>         * config/arm/arm.h (TARGET_DOTPROD): New.\n>         * config/arm/arm.c (arm_arch_dotprod): New.\n>         (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n>         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n>         * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n>         (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n>         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.\n>         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.\n>         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n>         * doc/invoke.texi (armv8.2-a): Document dotprod\n> ________________________________________\n> From: Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>\n> Sent: Wednesday, September 13, 2017 11:01:55 AM\n> To: Tamar Christina; gcc-patches@gcc.gnu.org\n> Cc: nd; Ramana Radhakrishnan; Richard Earnshaw; nickc@redhat.com\n> Subject: Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]\n> \n> Hi Tamar,\n> \n> On 01/09/17 14:19, Tamar Christina wrote:\n>> Hi All,\n>>\n>> This patch adds support for the +dotprod extension to ARM.\n>> Dot Product requires Adv.SIMD to work and so enables this option\n>> by default when enabled.\n>>\n>> It is available from ARMv8.2-a and onwards and is enabled by\n>> default on Cortex-A55 and Cortex-A75.\n>>\n>> Regtested and bootstrapped on arm-none-eabi and no issues.\n> \n> I'm assuming you mean arm-none-linux-gnueabihf :)\n> \n>> Ok for trunk?\n>>\n>> gcc/\n>> 2017-09-01  Tamar Christina  <tamar.christina@arm.com>\n>>\n>>       * config/arm/arm.h (TARGET_DOTPROD): New.\n>>       * config/arm/arm.c (arm_arch_dotprod): New.\n>>       (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n>>       * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n>>       * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n>>       (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n>>       * config/arm/arm-isa.h (isa_bit_dotprod, ISA_DOTPROD): New.\n> \n> arm-isa.h is now autogenerated after r251799 so you'll need to rebase on\n> top of that.\n> That being said, that patch was temporarily reverted [1] so you'll have\n> to apply it manually in your\n> tree to rebase, or wait until it is reapplied.\n> \n> [1] https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00579.html\n> \n> The patch looks ok to me otherwise with a documentation nit below.\n> \n>>       * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n>>       * doc/invoke.texi (armv8.2-a): Document dotprod\n>>\n> \n> --- a/gcc/doc/invoke.texi\n> +++ b/gcc/doc/invoke.texi\n> @@ -15492,6 +15492,10 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n>   The cryptographic instructions.  This also enables the Advanced SIMD and\n>   floating-point instructions.\n> \n> +@item +dotprod\n> +Enable the Dot Product extension.  This also enables Advanced SIMD instructions\n> +and allows auto vectorization of dot products to the Dot Product instructions.\n> \n> This should be \"auto-vectorization\"\n> \n> Thanks,\n> Kyrill\n> \n> \n> \n\n\nHmm, can you arrange to add patches as text/plain attachments, so that\nwhen I reply the patch is included for comments, please?\n\n+# double-precision FP. Make sure bits that are not an FPU bit go\ninstructions\n+# ALL_SIMD instead of ALL_SIMD_INTERNAL.\n\nTwo spaces after full stop.  The new sentence doesn't make sense.\nInstead, I think you should probably put the following:\n\n\"ALL_FPU lists all the feature bits associated with the floating-point\nunit; these will all be removed if the floating-point unit is disabled\n(eg -mfloat-abi=soft).  ALL_FPU_INTERNAL must ONLY contain features that\nform part of a named -mfpu option; it is used to map the capabilities\nback to a named FPU for the benefit of the assembler.  ALL_SIMD_INTERNAL\nand ALL_SIMD are similarly defined to help with the construction of\nALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD extensions that are\neither part of a named FPU or optional extensions respectively.\"\n\nYou might need to rejig the other sentence there as well to make it more\nconsistent.\n\n@@ -239,6 +243,7 @@ define fgroup FP_D32\tFP_DBL fp_d32\n define fgroup FP_ARMv8\tFPv5 FP_D32\n define fgroup NEON\tFP_D32 neon\n define fgroup CRYPTO\tNEON crypto\n+define fgroup DOTPROD   NEON dotprod\n\nlines above have a hard tab between the group name and the features it\ncontains.  Your entry has spaces.  Please fix for consistency.\n\n@@ -1473,9 +1479,10 @@ begin cpu cortex-a55\n  cname cortexa55\n  tune for cortex-a53\n  tune flags LDSCHED\n- architecture armv8.2-a+fp16\n+ architecture armv8.2-a+fp16+dotprod\n  fpu neon-fp-armv8\n  option crypto add FP_ARMv8 CRYPTO\n+ option dotprod add FP_ARMv8 DOTPROD\n\nWe don't have an option entry for +fp16 (all Cortex-a55 cores implement\nit), so we should treat dotprod similarly here.  Crypto is a special\ncase because it isn't enabled by default.  Similarly for the other cores\nlater in the patch.","headers":{"Return-Path":"<gcc-patches-return-463664-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-463664-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"ldaLNE5e\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y7w2P2RTDz9t48\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat,  7 Oct 2017 03:24:29 +1100 (AEDT)","(qmail 108784 invoked by alias); 6 Oct 2017 16:24:05 -0000","(qmail 108758 invoked by uid 89); 6 Oct 2017 16:24:04 -0000","from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com)\n\t(217.140.101.70) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tFri, 06 Oct 2017 16:24:02 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\tby\n\tusa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id\n\t759371435; Fri,  6 Oct 2017 09:23:59 -0700 (PDT)","from [192.168.1.19] (usa-sjc-mx-foss1.foss.arm.com\n\t[217.140.101.70])\tby usa-sjc-imap-foss1.foss.arm.com\n\t(Postfix) with ESMTPSA id 317D93F53D;\n\tFri,  6 Oct 2017 09:23:56 -0700 (PDT)"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:subject:to:cc:references:from:message-id:date:mime-version\n\t:in-reply-to:content-type:content-transfer-encoding; q=dns; s=\n\tdefault; b=f30B125+hfY8Fku1s7RYg3KSf96aLsA8QZWkT/9AkKW2NNWRgsIGh\n\tktw0rYpoNKpm0lx0NZQRusfq7ZMow5/EEASGYCQdcqhKFHOiKrdFbLqeqNpy7rID\n\tjM3WCCB0USXOpbVDLu1UwP38kX4+sRCUYZj33zvq25w33+h8o3FvpE=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:subject:to:cc:references:from:message-id:date:mime-version\n\t:in-reply-to:content-type:content-transfer-encoding; s=default;\n\tbh=GT3d8tFFE1Mob1O+ApDWmb9nZnA=; b=ldaLNE5eFxME7Nk6R/PdR3VgXI4u\n\tr7/xgKyqQJd1u0O7dZITDF2l45iBJZVzFUWDAsSAv9mzgw/ZUhDvDTVEmCiCJrNd\n\tEjD16FKbKlC8m1j/LQkYHNrf5CEM2X19O6Y+dCrN5IYFHNHxVDldMhbI0UOXKp/B\n\th3SBpY3mK4NyDts=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_2,\n\tGIT_PATCH_3, RP_MATCHES_RCVD,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"foss.arm.com","Subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","To":"Tamar Christina <Tamar.Christina@arm.com>,\n\tKyrill Tkachov <kyrylo.tkachov@foss.arm.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","Cc":"nd <nd@arm.com>, Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"nickc@redhat.com\" <nickc@redhat.com>","References":"<20170901131912.GA31822@arm.com> <59B90213.3020906@foss.arm.com>\n\t<DB6PR0802MB2309C5B880EA1A8F86576565FF710@DB6PR0802MB2309.eurprd08.prod.outlook.com>","From":"\"Richard Earnshaw (lists)\" <Richard.Earnshaw@arm.com>","Message-ID":"<dfb22ee5-aa77-a2fd-3e21-bc35b2850fb1@arm.com>","Date":"Fri, 6 Oct 2017 17:23:53 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:52.0) Gecko/20100101 Thunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<DB6PR0802MB2309C5B880EA1A8F86576565FF710@DB6PR0802MB2309.eurprd08.prod.outlook.com>","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"7bit"}},{"id":1782670,"web_url":"http://patchwork.ozlabs.org/comment/1782670/","msgid":"<20171009095656.GA21312@arm.com>","list_archive_url":null,"date":"2017-10-09T09:56:56","subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"Hi Richard,\n\nHere is a respin with the requested changes.\n\nOk for trunk?\n\nThanks,\nTamar\n\ngcc/\n2017-10-09  Tamar Christina  <tamar.christina@arm.com>\n\n\t* config/arm/arm.h (TARGET_DOTPROD): New.\n\t* config/arm/arm.c (arm_arch_dotprod): New.\n\t(arm_option_reconfigure_globals): Add arm_arch_dotprod.\n\t* config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n\t* config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.\n\t(feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.\n\t(ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.\n\t* config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n\t* doc/invoke.texi (armv8.2-a): Document dotprod\n\nThe 10/06/2017 17:23, Richard Earnshaw (lists) wrote:\n> On 06/10/17 13:44, Tamar Christina wrote:\n> > Hi All,\n> > \n> > This is a respin of the patch with the feedback processed.\n> > \n> > Regtested on arm-none-eabi, armeb-none-eabi,\n> > aarch64-none-elf and aarch64_be-none-elf with no issues found.\n> > \n> > Ok for trunk?\n> > \n> > gcc/\n> > 2017-10-06  Tamar Christina  <tamar.christina@arm.com>\n> > \n> >         * config/arm/arm.h (TARGET_DOTPROD): New.\n> >         * config/arm/arm.c (arm_arch_dotprod): New.\n> >         (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n> >         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n> >         * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n> >         (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n> >         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.\n> >         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.\n> >         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n> >         * doc/invoke.texi (armv8.2-a): Document dotprod\n> > ________________________________________\n> > From: Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>\n> > Sent: Wednesday, September 13, 2017 11:01:55 AM\n> > To: Tamar Christina; gcc-patches@gcc.gnu.org\n> > Cc: nd; Ramana Radhakrishnan; Richard Earnshaw; nickc@redhat.com\n> > Subject: Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]\n> > \n> > Hi Tamar,\n> > \n> > On 01/09/17 14:19, Tamar Christina wrote:\n> >> Hi All,\n> >>\n> >> This patch adds support for the +dotprod extension to ARM.\n> >> Dot Product requires Adv.SIMD to work and so enables this option\n> >> by default when enabled.\n> >>\n> >> It is available from ARMv8.2-a and onwards and is enabled by\n> >> default on Cortex-A55 and Cortex-A75.\n> >>\n> >> Regtested and bootstrapped on arm-none-eabi and no issues.\n> > \n> > I'm assuming you mean arm-none-linux-gnueabihf :)\n> > \n> >> Ok for trunk?\n> >>\n> >> gcc/\n> >> 2017-09-01  Tamar Christina  <tamar.christina@arm.com>\n> >>\n> >>       * config/arm/arm.h (TARGET_DOTPROD): New.\n> >>       * config/arm/arm.c (arm_arch_dotprod): New.\n> >>       (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n> >>       * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n> >>       * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n> >>       (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n> >>       * config/arm/arm-isa.h (isa_bit_dotprod, ISA_DOTPROD): New.\n> > \n> > arm-isa.h is now autogenerated after r251799 so you'll need to rebase on\n> > top of that.\n> > That being said, that patch was temporarily reverted [1] so you'll have\n> > to apply it manually in your\n> > tree to rebase, or wait until it is reapplied.\n> > \n> > [1] https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00579.html\n> > \n> > The patch looks ok to me otherwise with a documentation nit below.\n> > \n> >>       * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n> >>       * doc/invoke.texi (armv8.2-a): Document dotprod\n> >>\n> > \n> > --- a/gcc/doc/invoke.texi\n> > +++ b/gcc/doc/invoke.texi\n> > @@ -15492,6 +15492,10 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n> >   The cryptographic instructions.  This also enables the Advanced SIMD and\n> >   floating-point instructions.\n> > \n> > +@item +dotprod\n> > +Enable the Dot Product extension.  This also enables Advanced SIMD instructions\n> > +and allows auto vectorization of dot products to the Dot Product instructions.\n> > \n> > This should be \"auto-vectorization\"\n> > \n> > Thanks,\n> > Kyrill\n> > \n> > \n> > \n> \n> \n> Hmm, can you arrange to add patches as text/plain attachments, so that\n> when I reply the patch is included for comments, please?\n> \n> +# double-precision FP. Make sure bits that are not an FPU bit go\n> instructions\n> +# ALL_SIMD instead of ALL_SIMD_INTERNAL.\n> \n> Two spaces after full stop.  The new sentence doesn't make sense.\n> Instead, I think you should probably put the following:\n> \n> \"ALL_FPU lists all the feature bits associated with the floating-point\n> unit; these will all be removed if the floating-point unit is disabled\n> (eg -mfloat-abi=soft).  ALL_FPU_INTERNAL must ONLY contain features that\n> form part of a named -mfpu option; it is used to map the capabilities\n> back to a named FPU for the benefit of the assembler.  ALL_SIMD_INTERNAL\n> and ALL_SIMD are similarly defined to help with the construction of\n> ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD extensions that are\n> either part of a named FPU or optional extensions respectively.\"\n> \n> You might need to rejig the other sentence there as well to make it more\n> consistent.\n> \n> @@ -239,6 +243,7 @@ define fgroup FP_D32\tFP_DBL fp_d32\n>  define fgroup FP_ARMv8\tFPv5 FP_D32\n>  define fgroup NEON\tFP_D32 neon\n>  define fgroup CRYPTO\tNEON crypto\n> +define fgroup DOTPROD   NEON dotprod\n> \n> lines above have a hard tab between the group name and the features it\n> contains.  Your entry has spaces.  Please fix for consistency.\n> \n> @@ -1473,9 +1479,10 @@ begin cpu cortex-a55\n>   cname cortexa55\n>   tune for cortex-a53\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n> + option dotprod add FP_ARMv8 DOTPROD\n> \n> We don't have an option entry for +fp16 (all Cortex-a55 cores implement\n> it), so we should treat dotprod similarly here.  Crypto is a special\n> case because it isn't enabled by default.  Similarly for the other cores\n> later in the patch.\n\n--\ndiff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c\nindex 55472434c3a6e90c5693bbaabd3265f7d968787f..295f03bf8ee02be7c89ed2967d283be206e9f25a 100644\n--- a/gcc/config/arm/arm-c.c\n+++ b/gcc/config/arm/arm-c.c\n@@ -73,6 +73,7 @@ arm_cpu_builtins (struct cpp_reader* pfile)\n   def_or_undef_macro (pfile, \"__ARM_FEATURE_QRDMX\", TARGET_NEON_RDMA);\n \n   def_or_undef_macro (pfile, \"__ARM_FEATURE_CRC32\", TARGET_CRC32);\n+  def_or_undef_macro (pfile, \"__ARM_FEATURE_DOTPROD\", TARGET_DOTPROD);\n   def_or_undef_macro (pfile, \"__ARM_32BIT_STATE\", TARGET_32BIT);\n \n   cpp_undef (pfile, \"__ARM_FEATURE_CMSE\");\ndiff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in\nindex 07de4c9375ba7a0df0d8bd00385e54a4042e5264..2da2a7d8e2b63d3d93ca73172b10ff23c1d8d8f9 100644\n--- a/gcc/config/arm/arm-cpus.in\n+++ b/gcc/config/arm/arm-cpus.in\n@@ -156,6 +156,8 @@ define feature crypto\n # FP16 data processing (half-precision float).\n define feature fp16\n \n+# Dot Product instructions extension to ARMv8.2-a.\n+define feature dotprod\n \n # ISA Quirks (errata?).  Don't forget to add this to the fgroup\n # ALL_QUIRKS below.\n@@ -173,6 +175,17 @@ define feature quirk_cm3_ldrd\n define feature smallmul\n \n # Feature groups.  Conventionally all (or mostly) upper case.\n+# ALL_FPU lists all the feature bits associated with the floating-point\n+# unit; these will all be removed if the floating-point unit is disabled\n+# (eg -mfloat-abi=soft).  ALL_FPU_INTERNAL must ONLY contain features that\n+# form part of a named -mfpu option; it is used to map the capabilities\n+# back to a named FPU for the benefit of the assembler.\n+#\n+# ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the\n+# construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD\n+# extensions that are either part of a named FPU or optional extensions\n+# respectively.\n+\n \n # List of all cryptographic extensions to stripout if crypto is\n # disabled.  Currently, that's trivial, but we define it anyway for\n@@ -182,11 +195,12 @@ define fgroup ALL_CRYPTO\tcrypto\n # List of all SIMD bits to strip out if SIMD is disabled.  This does\n # strip off 32 D-registers, but does not remove support for\n # double-precision FP.\n-define fgroup ALL_SIMD\tfp_d32 neon ALL_CRYPTO\n+define fgroup ALL_SIMD_INTERNAL\tfp_d32 neon ALL_CRYPTO\n+define fgroup ALL_SIMD\tALL_SIMD_INTERNAL dotprod\n \n # List of all FPU bits to strip out if -mfpu is used to override the\n # default.  fp16 is deliberately missing from this list.\n-define fgroup ALL_FPU_INTERNAL\tvfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD\n+define fgroup ALL_FPU_INTERNAL\tvfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL\n \n # Similarly, but including fp16 and other extensions that aren't part of\n # -mfpu support.\n@@ -239,6 +253,7 @@ define fgroup FP_D32\tFP_DBL fp_d32\n define fgroup FP_ARMv8\tFPv5 FP_D32\n define fgroup NEON\tFP_D32 neon\n define fgroup CRYPTO\tNEON crypto\n+define fgroup DOTPROD\tNEON dotprod\n \n # List of all quirk bits to strip out when comparing CPU features with\n # architectures.\n@@ -561,6 +576,7 @@ begin arch armv8.2-a\n  option crypto add FP_ARMv8 CRYPTO\n  option nocrypto remove ALL_CRYPTO\n  option nofp remove ALL_FP\n+ option dotprod add FP_ARMv8 DOTPROD\n end arch armv8.2-a\n \n begin arch armv8-m.base\n@@ -1473,7 +1489,7 @@ begin cpu cortex-a55\n  cname cortexa55\n  tune for cortex-a53\n  tune flags LDSCHED\n- architecture armv8.2-a+fp16\n+ architecture armv8.2-a+fp16+dotprod\n  fpu neon-fp-armv8\n  option crypto add FP_ARMv8 CRYPTO\n  option nofp remove ALL_FP\n@@ -1484,7 +1500,7 @@ begin cpu cortex-a75\n  cname cortexa75\n  tune for cortex-a57\n  tune flags LDSCHED\n- architecture armv8.2-a+fp16\n+ architecture armv8.2-a+fp16+dotprod\n  fpu neon-fp-armv8\n  option crypto add FP_ARMv8 CRYPTO\n  costs cortex_a73\n@@ -1496,7 +1512,7 @@ begin cpu cortex-a75.cortex-a55\n  cname cortexa75cortexa55\n  tune for cortex-a53\n  tune flags LDSCHED\n- architecture armv8.2-a+fp16\n+ architecture armv8.2-a+fp16+dotprod\n  fpu neon-fp-armv8\n  option crypto add FP_ARMv8 CRYPTO\n  costs cortex_a73\ndiff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h\nindex a3ca800f7a5cb876368480b97d0641f5d02af5d0..7e1eeb5254c2ce32ced2abdb43d1733ee1a45cd5 100644\n--- a/gcc/config/arm/arm.h\n+++ b/gcc/config/arm/arm.h\n@@ -210,6 +210,11 @@ extern tree arm_fp16_type_node;\n /* FPU supports ARMv8.1 Adv.SIMD extensions.  */\n #define TARGET_NEON_RDMA (TARGET_NEON && arm_arch8_1)\n \n+/* Supports for Dot Product AdvSIMD extensions.  */\n+#define TARGET_DOTPROD (TARGET_NEON\t\t\t\t\t\\\n+\t\t\t&& bitmap_bit_p (arm_active_target.isa,\t\t\\\n+\t\t\t\t\tisa_bit_dotprod))\n+\n /* FPU supports the floating point FP16 instructions for ARMv8.2 and later.  */\n #define TARGET_VFP_FP16INST \\\n   (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP5 && arm_fp16_inst)\ndiff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c\nindex 1943908bd840472bbab0a557d3e337c02b2ae26d..fb869d6441394d5caecbae9acebc19432ec788f2 100644\n--- a/gcc/config/arm/arm.c\n+++ b/gcc/config/arm/arm.c\n@@ -971,6 +971,9 @@ int arm_condexec_masklen = 0;\n /* Nonzero if chip supports the ARMv8 CRC instructions.  */\n int arm_arch_crc = 0;\n \n+/* Nonzero if chip supports the AdvSIMD Dot Product instructions.  */\n+int arm_arch_dotprod = 0;\n+\n /* Nonzero if chip supports the ARMv8-M security extensions.  */\n int arm_arch_cmse = 0;\n \n@@ -3607,6 +3610,8 @@ arm_option_reconfigure_globals (void)\n   arm_arch_cmse = bitmap_bit_p (arm_active_target.isa, isa_bit_cmse);\n   arm_fp16_inst = bitmap_bit_p (arm_active_target.isa, isa_bit_fp16);\n   arm_arch_lpae = bitmap_bit_p (arm_active_target.isa, isa_bit_lpae);\n+  arm_arch_dotprod = bitmap_bit_p (arm_active_target.isa, isa_bit_dotprod);\n+\n   if (arm_fp16_inst)\n     {\n       if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)\ndiff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib\nindex ec4b76dbc8fc56093c2b27c95e0947558496fe5a..47f3673160a766c5b1b8972f7670355f2c357b56 100644\n--- a/gcc/config/arm/t-multilib\n+++ b/gcc/config/arm/t-multilib\n@@ -68,7 +68,7 @@ v7ve_vfpv4_simd_variants := +simd\n v8_a_nosimd_variants\t:= +crc\n v8_a_simd_variants\t:= $(call all_feat_combs, simd crypto)\n v8_1_a_simd_variants\t:= $(call all_feat_combs, simd crypto)\n-v8_2_a_simd_variants\t:= $(call all_feat_combs, simd fp16 crypto)\n+v8_2_a_simd_variants\t:= $(call all_feat_combs, simd fp16 crypto dotprod)\n \n \n ifneq (,$(HAS_APROFILE))\ndiff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi\nindex f862b7f8c99e7e9cca200fbe5b7d969748fed3f9..a69b0d59cdfecf82b97c8fad0de35fe7ac939e19 100644\n--- a/gcc/doc/invoke.texi\n+++ b/gcc/doc/invoke.texi\n@@ -15597,6 +15597,9 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n The cryptographic instructions.  This also enables the Advanced SIMD and\n floating-point instructions.\n \n+@item +dotprod\n+Enable the Dot Product extension.  This also enables Advanced SIMD instructions.\n+\n @item +nocrypto\n Disable the cryptographic extension.","headers":{"Return-Path":"<gcc-patches-return-463735-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-463735-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"Zpsd/rBy\"; dkim-atps=neutral","sourceware.org; auth=none","spf=none (sender IP is )\n\tsmtp.mailfrom=Tamar.Christina@arm.com; "],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y9bJ74T1Gz9tY0\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon,  9 Oct 2017 20:57:08 +1100 (AEDT)","(qmail 84167 invoked by alias); 9 Oct 2017 09:56:59 -0000","(qmail 84151 invoked by uid 89); 9 Oct 2017 09:56:58 -0000","from mail-ve1eur01on0074.outbound.protection.outlook.com (HELO\n\tEUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.74)\n\tby sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with\n\tESMTP; Mon, 09 Oct 2017 09:56:55 +0000","from arm.com (217.140.96.140) by\n\tHE1PR0802MB2313.eurprd08.prod.outlook.com\n\t(2603:10a6:3:c4::19) with Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.77.7; Mon, 9 Oct 2017 09:56:50 +0000"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender:date\n\t:from:to:cc:subject:message-id:references:mime-version\n\t:content-type:in-reply-to:content-id; q=dns; s=default; b=Hpv4m6\n\tj5AFyy/774Y9kbnoXxfMFCOeTpvziRHTjtx9DheSLFdrOeGxxC0+KHuM534DfYQX\n\tJBXlR+fJJq/Qqy+Q1Ioj0at90sQjWbxHiulbzez1NCjTO4vjkuYEBAeUX/tIgqNu\n\tP4fwkGM4iIH6NgxRdOUWt4sSkgo6gG8VkRYKQ=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender:date\n\t:from:to:cc:subject:message-id:references:mime-version\n\t:content-type:in-reply-to:content-id; s=default; bh=0Sc/8Ts3yJnw\n\tru0P/P4I+7Ra/cs=; b=Zpsd/rByDzrBvg4N+x6WTvnM0Eu+761bq/sr74hGwvs9\n\tWP5xHcpmGH1PXQDQCNevscoCyusu9uBy281VygnAhv8URm0u6VVjbIoNvAO+aKc/\n\tTKWenb9W0+A8C9oDP3/J2d3eMgYHrwdpCWwiLsXza4SLUoCI4+tdVyPel+D44kQ=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-25.5 required=5.0 tests=AWL, BAYES_00,\n\tGIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tKAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS,\n\tSPF_PASS autolearn=ham version=3.3.2\n\tspammy=Hx-spam-relays-external:sk:mail-ve, H*RU:sk:mail-ve,\n\tHX-HELO:sk:EUR01-V, Hx-spam-relays-external:sk:EUR01-V","X-HELO":"EUR01-VE1-obe.outbound.protection.outlook.com","Date":"Mon, 9 Oct 2017 10:56:56 +0100","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Richard Earnshaw <Richard.Earnshaw@arm.com>","Cc":"Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"nickc@redhat.com\" <nickc@redhat.com>","Subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","Message-ID":"<20171009095656.GA21312@arm.com>","References":"<20170901131912.GA31822@arm.com> <59B90213.3020906@foss.arm.com>\n\t<DB6PR0802MB2309C5B880EA1A8F86576565FF710@DB6PR0802MB2309.eurprd08.prod.outlook.com>\n\t<dfb22ee5-aa77-a2fd-3e21-bc35b2850fb1@arm.com>","MIME-Version":"1.0","Content-Type":"multipart/mixed; boundary=\"UugvWAfsgieZRqgk\"","Content-Disposition":"inline","In-Reply-To":"<dfb22ee5-aa77-a2fd-3e21-bc35b2850fb1@arm.com>","x-ms-exchange-imapappendstamp":"DB6PR0802MB2309.eurprd08.prod.outlook.com\n\t(15.20.0077.017)","Content-ID":"<D6100817D695864B8999EFD18BB2C062@arm.com>","User-Agent":"Mutt/1.5.24 (2015-08-30)","X-ClientProxiedBy":"DB6PR07CA0162.eurprd07.prod.outlook.com\n\t(2603:10a6:6:43::16) To\n\tHE1PR0802MB2313.eurprd08.prod.outlook.com\n\t(2603:10a6:3:c4::19)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"19b82ad2-4055-4334-02ac-08d50efc1073","X-MS-Office365-Filtering-HT":"Tenant","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:HE1PR0802MB2313; ","X-Microsoft-Exchange-Diagnostics":["1; HE1PR0802MB2313;\n\t3:DQieflwm/7SRXmS5zkNL4Fs/8nrhuc5cT5WK7gE31w6OO0DdyLDd0GLgE+VXADSrP91AHmfxKJfJgu7PBPshmKwimZ1V9D33+J2r/kdbShKMYtcqaH89w5fBB3JvVZF560N42kQVzj+0qfDjjivISlgljI0haQC2APnha2rNaz7bcEdTh3d8Tj6GtSDOEKZVrFfx/0x0Ce9K9XgxF7AyX3dO/0P3EBy0mdO6Y5ZsU9goEeWFqbWEercc6LiSA+/5;\n\t25:j4jivcaMPaIex9QROxudhYz6jY2L8Df1M5pCRrH91E8F4TKTc99GzzhjDtJfiih9A+CGiqbnn0k0Z7yiE5Ck3Lf/WrBABsvnp6ArgWVG2YGfv+uw9OVZ0xVSX6yUqwzYoQe6nv6rlxl140Bc4xNv/BvvCiufDUYSdJuqm4AtCSYjAq8NAnZn52mWxFU6clWftxuZgK8dnjNaCoJTJ1xxCQ4TKIrjyFLzHA8+MlSfd8/yryprYH50TeXMkjFBOI6s86/VFFUEJwiTKh+yA0+fOCrHLVh4yaiYA1gVxH+thnoM/7Pcg0NmnsiP8fPxUSC2rK8hobeRIS2npiyxQA11YQ==;\n\t31:2oZ/n/JlBam+QeqGW/eJFGYNzEjm3/6lvOwAu/H8qU/ew9tpPnMsWKs/cfxbMjy9Qz7sxAupvwUXiVmnent11uOzSNTvCiagRCPBnLWj8rXLxJb/M625vWJmN6BdN3Qyh40s3j+8B+/kOUYmObAUL6vEb2HEpDNEhSPhUcm7/g28nB3lB74cCHzlgTNjoEjusCKgAWoAh3X8oVBglJEXdvrh8WywsrPGbmFaICjORGg=","1; HE1PR0802MB2313;\n\t20:4G8CCyFtCHhiTsdyp5nyVqScyxhLfIrquPE+oABZrMDF53zXmsEFKvGV061pplc6Qh8fWlUYw2/MbBOGUYTPje+cQZuZQMLHnbcLaF9iqERkH21IwEgnkTgt7sYFRuYvvaXCyiQd0RDkAOqFRBQT2Eynh3wWK6ueilQFM3kTnYs=;\n\t4:IIPktXLZboLnweE4Tq89PUpSVVzj4ZD+frcQIlufbp+kdqxJD60aZokm0qMTNV4HJkomcIDwiA8Ly1n5oAUIsAjw82GkAaEXNhP4SttwnkzLwZeD82QezzEb6YlXt13uj0AOPOhIocXTeis8CzjzxCySz7sleo/8q1gkS7423aXJ6ygDjRjRSDkKYuctqf41zGEoWwQeQzoRcw5i3JSW7z0ASzYcrVErUBJnXTdtLFnA2VJIiIUxLEWv/Pt6SQWDgaSfgQxwm99zADTtASse+UjCIfy6H5QU37Z8zvOM8WBhTBH2F45fVjx8U8RltvTRCXnEBHTjrQ//CGZO9askR4g5bi7J4dAr7KjJeK6HIPbgOZJkhTi/MToVDL+3yVnd","1; HE1PR0802MB2313;\n\t23:DCaEa1Km/Aq7oSw4zDRgLUU/1V76hMELW3l7pWjDR1wh4B58b4kc5wWov1MVdLrDqCSIJa1vGyWAgt5ZDYKasNKnObQZoXvQaQTDlR7RS9R8932kdz0v7lkUElxNY+MkEd2juXAEqxEbtpTiUPpO/Wu6SwZ/7KcqtHx8AalGkgiOJLpquW5juI762xyxfrUUMWzE5fBEBJhy07fdaEO+vuD1IaHDCfMxysOhHnKIXVgnfq+JGe76ocOiX01I1BGzoD7SHwpwJCGEIP3qtBAw/rV+fZP64wcxOI4NfhXFmRHytZvd0oQRgEd7p5RX4HiPMAi6D4+mlKODKEXm2W+898AF1L9ZoDKXBmEDPl2x1GU2v1puLd3Tj7Jz4EECtuUnkWn23XS9wJirfBYP5H8ZpZwQIaqW40bjYNcHpF8wcHWKsBgngn/Y49kHUmci3ivHqmss9bmPGrSlMGQY8RqxzhPRUqECkMprcr4yuzjlMMtNbwRev1yZc4c5vbyslU6PACs8jgfRKPHpYo3833aBGx9pPBdHAxa7/MZlQ3Cxk0UGWY/xOSL1+W4TxzbXdK1xO1z68pFkVxFhuiTzCb7Rd0g7vmQvvR7e9OThfn7Itbj7AvncmLhZ0RnqZ74yWpsoXHDaqueMWG9pCK4JpQxjrnnFBnAn2yR298VWk+aPlKBSOdyI1n9gHNo1qahfF4o82fWphuoDzAbwHqCMami3NQJf49jPKj9rLejyl4GIwSU111dzwXiw8xqI3a7xTS9sEGrmEsEl4OkGL6MpcUpeTtRYpuphuQuQZZ/SKiy0NCCOGmfh7Qopz5zBhaUSqV9advd84Wi3bfamXp8Ecc404N9gRnW8juiFSIfCnrZEKfoy/CVtuJBfgKJsmiH2YaGFySAyLpz5Pv5OQ92Ca3l6rOLNPj3m5gQtK/xDoZGhsLW/gpGYvWyYwomlBhY4WCmraLBP51sj9EKcgFU7MuwEfTkH19qNiqNZ19B0dQHPjfFjRMNjHX+BxUc+1iFTCLWw7npDsztHotP3Pu7/WoMimmllKnA3yOUVPJT6YsLRsRr8s/FS5jw7mpBQm2IqH7gNu8LWDwPbBEgY/eY53aKoGzqjYNKLWUM6d96yzCJaEh2zOx5zhXqoPYXWmOPbJt7VkoCPhN6gPO+qV6v/8/cWNEukHx2nINm37OP2/xTrUZEP9bGDfY9zPz3WTCLdLQJog3EGrMCVXUMnT1ezO9Jg6kOiNgN61t1yYz0bUJ9muCj0Xf6p4wCdl5C+osTwp+Hk0x2Ek/hpN4aSPrP95fe/KA8+gMplTc29yOokNgrbX1ThtG1oAhljPl/rUx72VmhUbwDCDGBXKXcNCHTKFLzNUeDIpEyQQJMQWLGPBbhpS7I2dt5WvUes6o0ODlSv9FQCjPZ8BEvVP+86FtevBBYsJl2EO+TCp7zI1R2VqnZLka7NAg+y43NZP107EVv2H1LFoWgCClt7GFOteZC8oQBK8FVFTwBbZyLZeWhSrdyXpEU=","1; HE1PR0802MB2313;\n\t6:WDWHUVAOI1nUKaAp+tw/dgo59hYKNhjzFxf1FNqc1q5vw/SUZJufrnEpMLm2ggVkyfT93zY9BQTsfsn5qLZqE+NHVTZ6niXLD0c+1/cfbs7uokWSJWNeYAUL4XnKTBcWjzMvQ54dauRk/GihcIekf5MQVSXnzTP/ouyAX8Z2FAdVaUcadovaBYqwbuGIgUWh6KJdG7MyVt+W5ifKnPmB2ill5Yqrvzu+ELRnJXf6x7cxJPdsiyZEsgGfPuzGGbNGBL3M+5aK+atBt1pKCJ1j1TSyr0t8Gv09s6fvaOBfbQpF5xA8itJmVZKtA4v9yrsL0bDIJndO1Cxs7onzEUvf2w==;\n\t5:75Pz2UCKY9O3bGnuCO9y3UbPqgS6CWNyltuht8mwKu+XBNygUOSPYw+3JhbtmnNb2/hD6J9H/9D9E8Zt5+Cq40l5wEUoffHjBCUBiA6FNOwpzAy9rR6ff1F/wuw0nesaV7dTWxfUaN/V6XTVEGbv9A==;\n\t24:xpHDatRWRLVv/BquwR2nHWRTfhQmiDAp1/u3UsPHgKb29f3QkuNn9nfu2dhq+nr4n65KSAWtx+Vqo6P7Uxc4aMXk3qEYQTPyU79qWdFIyyA=;\n\t7:r5ADraQ3a/ns0plXoKZSYgAr7VGOZZuArBaR1HrsTr17zEPLp5TnFcy9y+DwuUc9TPhA4wNtFOh413dx9TNaGmpvD4RH5yoz0+D26D+pPUsaDIsEYGOW5vAktEeObOIewpIzRu2Aoh8fvPXKAjG8GB7OzhANvSRMjSj28uh8S3cqJShnEj0jpy9KU169Ze1VlqMTc8XE5DqHKjyhOdI32jUmZe+CEMit6pdk7lf/FGk="],"X-MS-TrafficTypeDiagnostic":"HE1PR0802MB2313:","X-LD-Processed":"f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr","NoDisclaimer":"True","X-Exchange-Antispam-Report-Test":"UriScan:(180628864354917)(22074186197030)(183786458502308); ","X-Microsoft-Antispam-PRVS":"<HE1PR0802MB2313B696EFC24208813DFC1FFF740@HE1PR0802MB2313.eurprd08.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:HE1PR0802MB2313; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:HE1PR0802MB2313; ","X-Forefront-PRVS":"045584D28C","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(39860400002)(346002)(376002)(377424004)(377454003)(189002)(199003)(24454002)(53754006)(66066001)(305945005)(68736007)(5890100001)(7736002)(53936002)(6246003)(4326008)(6862004)(97736004)(5660300001)(189998001)(72206003)(16526018)(36756003)(966005)(478600001)(84326002)(83506001)(58126008)(316002)(50986999)(37006003)(54906003)(16586007)(54356999)(76176999)(229853002)(6636002)(53546010)(33656002)(86362001)(25786009)(106356001)(93886005)(105586002)(101416001)(8936002)(568964002)(2906002)(6306002)(81156014)(102836003)(81166006)(4610100001)(8676002)(3846002)(6116002)(1076002)(2950100002)(55016002)(2476003)(21086003)(18370500001)(2700100001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0802MB2313; H:arm.com;\n\tFPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: arm.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"09 Oct 2017 09:56:50.7375\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"HE1PR0802MB2313","X-IsSubscribed":"yes"}},{"id":1782673,"web_url":"http://patchwork.ozlabs.org/comment/1782673/","msgid":"<e65da1c5-24ec-a43f-436c-34c275f21d34@arm.com>","list_archive_url":null,"date":"2017-10-09T10:00:45","subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","submitter":{"id":67887,"url":"http://patchwork.ozlabs.org/api/people/67887/","name":"Richard Earnshaw","email":"Richard.Earnshaw@arm.com"},"content":"On 09/10/17 10:56, Tamar Christina wrote:\n> Hi Richard,\n> \n> Here is a respin with the requested changes.\n> \n> Ok for trunk?\n> \n> Thanks,\n> Tamar\n> \n> gcc/\n> 2017-10-09  Tamar Christina  <tamar.christina@arm.com>\n> \n> \t* config/arm/arm.h (TARGET_DOTPROD): New.\n> \t* config/arm/arm.c (arm_arch_dotprod): New.\n> \t(arm_option_reconfigure_globals): Add arm_arch_dotprod.\n> \t* config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n> \t* config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.\n> \t(feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.\n> \t(ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.\n> \t* config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n> \t* doc/invoke.texi (armv8.2-a): Document dotprod\n> \n\nOK.\n\nR.\n\n> The 10/06/2017 17:23, Richard Earnshaw (lists) wrote:\n>> On 06/10/17 13:44, Tamar Christina wrote:\n>>> Hi All,\n>>>\n>>> This is a respin of the patch with the feedback processed.\n>>>\n>>> Regtested on arm-none-eabi, armeb-none-eabi,\n>>> aarch64-none-elf and aarch64_be-none-elf with no issues found.\n>>>\n>>> Ok for trunk?\n>>>\n>>> gcc/\n>>> 2017-10-06  Tamar Christina  <tamar.christina@arm.com>\n>>>\n>>>         * config/arm/arm.h (TARGET_DOTPROD): New.\n>>>         * config/arm/arm.c (arm_arch_dotprod): New.\n>>>         (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n>>>         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n>>>         * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n>>>         (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n>>>         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.\n>>>         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.\n>>>         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n>>>         * doc/invoke.texi (armv8.2-a): Document dotprod\n>>> ________________________________________\n>>> From: Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>\n>>> Sent: Wednesday, September 13, 2017 11:01:55 AM\n>>> To: Tamar Christina; gcc-patches@gcc.gnu.org\n>>> Cc: nd; Ramana Radhakrishnan; Richard Earnshaw; nickc@redhat.com\n>>> Subject: Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]\n>>>\n>>> Hi Tamar,\n>>>\n>>> On 01/09/17 14:19, Tamar Christina wrote:\n>>>> Hi All,\n>>>>\n>>>> This patch adds support for the +dotprod extension to ARM.\n>>>> Dot Product requires Adv.SIMD to work and so enables this option\n>>>> by default when enabled.\n>>>>\n>>>> It is available from ARMv8.2-a and onwards and is enabled by\n>>>> default on Cortex-A55 and Cortex-A75.\n>>>>\n>>>> Regtested and bootstrapped on arm-none-eabi and no issues.\n>>>\n>>> I'm assuming you mean arm-none-linux-gnueabihf :)\n>>>\n>>>> Ok for trunk?\n>>>>\n>>>> gcc/\n>>>> 2017-09-01  Tamar Christina  <tamar.christina@arm.com>\n>>>>\n>>>>       * config/arm/arm.h (TARGET_DOTPROD): New.\n>>>>       * config/arm/arm.c (arm_arch_dotprod): New.\n>>>>       (arm_option_reconfigure_globals): Add arm_arch_dotprod.\n>>>>       * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.\n>>>>       * config/arm/arm-cpus.in (cortex-a55, cortex-75): Enabled +dotprod.\n>>>>       (armv8.2-a, cortex-a75.cortex-a55): Likewise.\n>>>>       * config/arm/arm-isa.h (isa_bit_dotprod, ISA_DOTPROD): New.\n>>>\n>>> arm-isa.h is now autogenerated after r251799 so you'll need to rebase on\n>>> top of that.\n>>> That being said, that patch was temporarily reverted [1] so you'll have\n>>> to apply it manually in your\n>>> tree to rebase, or wait until it is reapplied.\n>>>\n>>> [1] https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00579.html\n>>>\n>>> The patch looks ok to me otherwise with a documentation nit below.\n>>>\n>>>>       * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.\n>>>>       * doc/invoke.texi (armv8.2-a): Document dotprod\n>>>>\n>>>\n>>> --- a/gcc/doc/invoke.texi\n>>> +++ b/gcc/doc/invoke.texi\n>>> @@ -15492,6 +15492,10 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n>>>   The cryptographic instructions.  This also enables the Advanced SIMD and\n>>>   floating-point instructions.\n>>>\n>>> +@item +dotprod\n>>> +Enable the Dot Product extension.  This also enables Advanced SIMD instructions\n>>> +and allows auto vectorization of dot products to the Dot Product instructions.\n>>>\n>>> This should be \"auto-vectorization\"\n>>>\n>>> Thanks,\n>>> Kyrill\n>>>\n>>>\n>>>\n>>\n>>\n>> Hmm, can you arrange to add patches as text/plain attachments, so that\n>> when I reply the patch is included for comments, please?\n>>\n>> +# double-precision FP. Make sure bits that are not an FPU bit go\n>> instructions\n>> +# ALL_SIMD instead of ALL_SIMD_INTERNAL.\n>>\n>> Two spaces after full stop.  The new sentence doesn't make sense.\n>> Instead, I think you should probably put the following:\n>>\n>> \"ALL_FPU lists all the feature bits associated with the floating-point\n>> unit; these will all be removed if the floating-point unit is disabled\n>> (eg -mfloat-abi=soft).  ALL_FPU_INTERNAL must ONLY contain features that\n>> form part of a named -mfpu option; it is used to map the capabilities\n>> back to a named FPU for the benefit of the assembler.  ALL_SIMD_INTERNAL\n>> and ALL_SIMD are similarly defined to help with the construction of\n>> ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD extensions that are\n>> either part of a named FPU or optional extensions respectively.\"\n>>\n>> You might need to rejig the other sentence there as well to make it more\n>> consistent.\n>>\n>> @@ -239,6 +243,7 @@ define fgroup FP_D32\tFP_DBL fp_d32\n>>  define fgroup FP_ARMv8\tFPv5 FP_D32\n>>  define fgroup NEON\tFP_D32 neon\n>>  define fgroup CRYPTO\tNEON crypto\n>> +define fgroup DOTPROD   NEON dotprod\n>>\n>> lines above have a hard tab between the group name and the features it\n>> contains.  Your entry has spaces.  Please fix for consistency.\n>>\n>> @@ -1473,9 +1479,10 @@ begin cpu cortex-a55\n>>   cname cortexa55\n>>   tune for cortex-a53\n>>   tune flags LDSCHED\n>> - architecture armv8.2-a+fp16\n>> + architecture armv8.2-a+fp16+dotprod\n>>   fpu neon-fp-armv8\n>>   option crypto add FP_ARMv8 CRYPTO\n>> + option dotprod add FP_ARMv8 DOTPROD\n>>\n>> We don't have an option entry for +fp16 (all Cortex-a55 cores implement\n>> it), so we should treat dotprod similarly here.  Crypto is a special\n>> case because it isn't enabled by default.  Similarly for the other cores\n>> later in the patch.\n> \n> \n> 7949-diff.patch\n> \n> \n> diff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c\n> index 55472434c3a6e90c5693bbaabd3265f7d968787f..295f03bf8ee02be7c89ed2967d283be206e9f25a 100644\n> --- a/gcc/config/arm/arm-c.c\n> +++ b/gcc/config/arm/arm-c.c\n> @@ -73,6 +73,7 @@ arm_cpu_builtins (struct cpp_reader* pfile)\n>    def_or_undef_macro (pfile, \"__ARM_FEATURE_QRDMX\", TARGET_NEON_RDMA);\n>  \n>    def_or_undef_macro (pfile, \"__ARM_FEATURE_CRC32\", TARGET_CRC32);\n> +  def_or_undef_macro (pfile, \"__ARM_FEATURE_DOTPROD\", TARGET_DOTPROD);\n>    def_or_undef_macro (pfile, \"__ARM_32BIT_STATE\", TARGET_32BIT);\n>  \n>    cpp_undef (pfile, \"__ARM_FEATURE_CMSE\");\n> diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in\n> index 07de4c9375ba7a0df0d8bd00385e54a4042e5264..2da2a7d8e2b63d3d93ca73172b10ff23c1d8d8f9 100644\n> --- a/gcc/config/arm/arm-cpus.in\n> +++ b/gcc/config/arm/arm-cpus.in\n> @@ -156,6 +156,8 @@ define feature crypto\n>  # FP16 data processing (half-precision float).\n>  define feature fp16\n>  \n> +# Dot Product instructions extension to ARMv8.2-a.\n> +define feature dotprod\n>  \n>  # ISA Quirks (errata?).  Don't forget to add this to the fgroup\n>  # ALL_QUIRKS below.\n> @@ -173,6 +175,17 @@ define feature quirk_cm3_ldrd\n>  define feature smallmul\n>  \n>  # Feature groups.  Conventionally all (or mostly) upper case.\n> +# ALL_FPU lists all the feature bits associated with the floating-point\n> +# unit; these will all be removed if the floating-point unit is disabled\n> +# (eg -mfloat-abi=soft).  ALL_FPU_INTERNAL must ONLY contain features that\n> +# form part of a named -mfpu option; it is used to map the capabilities\n> +# back to a named FPU for the benefit of the assembler.\n> +#\n> +# ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the\n> +# construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD\n> +# extensions that are either part of a named FPU or optional extensions\n> +# respectively.\n> +\n>  \n>  # List of all cryptographic extensions to stripout if crypto is\n>  # disabled.  Currently, that's trivial, but we define it anyway for\n> @@ -182,11 +195,12 @@ define fgroup ALL_CRYPTO\tcrypto\n>  # List of all SIMD bits to strip out if SIMD is disabled.  This does\n>  # strip off 32 D-registers, but does not remove support for\n>  # double-precision FP.\n> -define fgroup ALL_SIMD\tfp_d32 neon ALL_CRYPTO\n> +define fgroup ALL_SIMD_INTERNAL\tfp_d32 neon ALL_CRYPTO\n> +define fgroup ALL_SIMD\tALL_SIMD_INTERNAL dotprod\n>  \n>  # List of all FPU bits to strip out if -mfpu is used to override the\n>  # default.  fp16 is deliberately missing from this list.\n> -define fgroup ALL_FPU_INTERNAL\tvfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD\n> +define fgroup ALL_FPU_INTERNAL\tvfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL\n>  \n>  # Similarly, but including fp16 and other extensions that aren't part of\n>  # -mfpu support.\n> @@ -239,6 +253,7 @@ define fgroup FP_D32\tFP_DBL fp_d32\n>  define fgroup FP_ARMv8\tFPv5 FP_D32\n>  define fgroup NEON\tFP_D32 neon\n>  define fgroup CRYPTO\tNEON crypto\n> +define fgroup DOTPROD\tNEON dotprod\n>  \n>  # List of all quirk bits to strip out when comparing CPU features with\n>  # architectures.\n> @@ -561,6 +576,7 @@ begin arch armv8.2-a\n>   option crypto add FP_ARMv8 CRYPTO\n>   option nocrypto remove ALL_CRYPTO\n>   option nofp remove ALL_FP\n> + option dotprod add FP_ARMv8 DOTPROD\n>  end arch armv8.2-a\n>  \n>  begin arch armv8-m.base\n> @@ -1473,7 +1489,7 @@ begin cpu cortex-a55\n>   cname cortexa55\n>   tune for cortex-a53\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n>   option nofp remove ALL_FP\n> @@ -1484,7 +1500,7 @@ begin cpu cortex-a75\n>   cname cortexa75\n>   tune for cortex-a57\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n>   costs cortex_a73\n> @@ -1496,7 +1512,7 @@ begin cpu cortex-a75.cortex-a55\n>   cname cortexa75cortexa55\n>   tune for cortex-a53\n>   tune flags LDSCHED\n> - architecture armv8.2-a+fp16\n> + architecture armv8.2-a+fp16+dotprod\n>   fpu neon-fp-armv8\n>   option crypto add FP_ARMv8 CRYPTO\n>   costs cortex_a73\n> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h\n> index a3ca800f7a5cb876368480b97d0641f5d02af5d0..7e1eeb5254c2ce32ced2abdb43d1733ee1a45cd5 100644\n> --- a/gcc/config/arm/arm.h\n> +++ b/gcc/config/arm/arm.h\n> @@ -210,6 +210,11 @@ extern tree arm_fp16_type_node;\n>  /* FPU supports ARMv8.1 Adv.SIMD extensions.  */\n>  #define TARGET_NEON_RDMA (TARGET_NEON && arm_arch8_1)\n>  \n> +/* Supports for Dot Product AdvSIMD extensions.  */\n> +#define TARGET_DOTPROD (TARGET_NEON\t\t\t\t\t\\\n> +\t\t\t&& bitmap_bit_p (arm_active_target.isa,\t\t\\\n> +\t\t\t\t\tisa_bit_dotprod))\n> +\n>  /* FPU supports the floating point FP16 instructions for ARMv8.2 and later.  */\n>  #define TARGET_VFP_FP16INST \\\n>    (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP5 && arm_fp16_inst)\n> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c\n> index 1943908bd840472bbab0a557d3e337c02b2ae26d..fb869d6441394d5caecbae9acebc19432ec788f2 100644\n> --- a/gcc/config/arm/arm.c\n> +++ b/gcc/config/arm/arm.c\n> @@ -971,6 +971,9 @@ int arm_condexec_masklen = 0;\n>  /* Nonzero if chip supports the ARMv8 CRC instructions.  */\n>  int arm_arch_crc = 0;\n>  \n> +/* Nonzero if chip supports the AdvSIMD Dot Product instructions.  */\n> +int arm_arch_dotprod = 0;\n> +\n>  /* Nonzero if chip supports the ARMv8-M security extensions.  */\n>  int arm_arch_cmse = 0;\n>  \n> @@ -3607,6 +3610,8 @@ arm_option_reconfigure_globals (void)\n>    arm_arch_cmse = bitmap_bit_p (arm_active_target.isa, isa_bit_cmse);\n>    arm_fp16_inst = bitmap_bit_p (arm_active_target.isa, isa_bit_fp16);\n>    arm_arch_lpae = bitmap_bit_p (arm_active_target.isa, isa_bit_lpae);\n> +  arm_arch_dotprod = bitmap_bit_p (arm_active_target.isa, isa_bit_dotprod);\n> +\n>    if (arm_fp16_inst)\n>      {\n>        if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)\n> diff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib\n> index ec4b76dbc8fc56093c2b27c95e0947558496fe5a..47f3673160a766c5b1b8972f7670355f2c357b56 100644\n> --- a/gcc/config/arm/t-multilib\n> +++ b/gcc/config/arm/t-multilib\n> @@ -68,7 +68,7 @@ v7ve_vfpv4_simd_variants := +simd\n>  v8_a_nosimd_variants\t:= +crc\n>  v8_a_simd_variants\t:= $(call all_feat_combs, simd crypto)\n>  v8_1_a_simd_variants\t:= $(call all_feat_combs, simd crypto)\n> -v8_2_a_simd_variants\t:= $(call all_feat_combs, simd fp16 crypto)\n> +v8_2_a_simd_variants\t:= $(call all_feat_combs, simd fp16 crypto dotprod)\n>  \n>  \n>  ifneq (,$(HAS_APROFILE))\n> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi\n> index f862b7f8c99e7e9cca200fbe5b7d969748fed3f9..a69b0d59cdfecf82b97c8fad0de35fe7ac939e19 100644\n> --- a/gcc/doc/invoke.texi\n> +++ b/gcc/doc/invoke.texi\n> @@ -15597,6 +15597,9 @@ The ARMv8.1 Advanced SIMD and floating-point instructions.\n>  The cryptographic instructions.  This also enables the Advanced SIMD and\n>  floating-point instructions.\n>  \n> +@item +dotprod\n> +Enable the Dot Product extension.  This also enables Advanced SIMD instructions.\n> +\n>  @item +nocrypto\n>  Disable the cryptographic extension.\n>  \n>","headers":{"Return-Path":"<gcc-patches-return-463736-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-463736-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"ZdtqGV0T\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y9bNw2CgZz9tY0\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon,  9 Oct 2017 21:01:20 +1100 (AEDT)","(qmail 88454 invoked by alias); 9 Oct 2017 10:01:12 -0000","(qmail 88407 invoked by uid 89); 9 Oct 2017 10:01:08 -0000","from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com)\n\t(217.140.101.70) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tMon, 09 Oct 2017 10:00:58 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\tby\n\tusa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id\n\t8AC9C1435; Mon,  9 Oct 2017 03:00:56 -0700 (PDT)","from e105689-lin.cambridge.arm.com (e105689-lin.cambridge.arm.com\n\t[10.2.207.32])\tby usa-sjc-imap-foss1.foss.arm.com (Postfix)\n\twith ESMTPSA id F15EF3F578; Mon,  9 Oct 2017 03:00:54 -0700 (PDT)"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:subject:to:cc:references:from:message-id:date:mime-version\n\t:in-reply-to:content-type:content-transfer-encoding; q=dns; s=\n\tdefault; b=uC2yrt6P3nKlKRs2XPsDmk+M9YBx3slGxDKJegFggQ0nzVt6lHOyH\n\tdKX7CH/YbAOFR9e7hGRqNN8aFJ5tT/DWIwhnj3xOOeEICvRg87bgTRZAuYcsAqZ6\n\t0sjCN91YBz/b4jBUc4KpeNhSXAVu7zVKaW9vihC5eatO6+d0nL/Guc=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:subject:to:cc:references:from:message-id:date:mime-version\n\t:in-reply-to:content-type:content-transfer-encoding; s=default;\n\tbh=YpUWqdrVz3DfYQwTo+m7JPgOMRU=; b=ZdtqGV0TGKxQfDfqiOn8htpTecmY\n\tYcwkPSSEZIml3daQgEkO/qrAuC5c6uW7dv/af+prfc/e+h9Todwi3VmOAJwHm1iF\n\t0Dyk+AmP+cMxcT9eCOvGfWP/KLekHECZvbNzzID7rj1TZhiJCxaJcp+1nledeDtd\n\tYEVgPYlMU0F2aOs=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-26.7 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH,\n\tRP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"foss.arm.com","Subject":"Re: [PATCH][GCC][ARM] Dot Product commandline options [Patch (1/8)]","To":"Tamar Christina <Tamar.Christina@arm.com>","Cc":"Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"nickc@redhat.com\" <nickc@redhat.com>","References":"<20170901131912.GA31822@arm.com> <59B90213.3020906@foss.arm.com>\n\t<DB6PR0802MB2309C5B880EA1A8F86576565FF710@DB6PR0802MB2309.eurprd08.prod.outlook.com>\n\t<dfb22ee5-aa77-a2fd-3e21-bc35b2850fb1@arm.com>\n\t<20171009095656.GA21312@arm.com>","From":"\"Richard Earnshaw (lists)\" <Richard.Earnshaw@arm.com>","Message-ID":"<e65da1c5-24ec-a43f-436c-34c275f21d34@arm.com>","Date":"Mon, 9 Oct 2017 11:00:45 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:52.0) Gecko/20100101 Thunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<20171009095656.GA21312@arm.com>","Content-Type":"text/plain; charset=us-ascii","Content-Transfer-Encoding":"7bit"}}]