[{"id":1767690,"web_url":"http://patchwork.ozlabs.org/comment/1767690/","msgid":"<59B8F435.7000706@foss.arm.com>","list_archive_url":null,"date":"2017-09-13T09:02:45","subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","submitter":{"id":66284,"url":"http://patchwork.ozlabs.org/api/people/66284/","name":"Kyrill Tkachov","email":"kyrylo.tkachov@foss.arm.com"},"content":"Hi Charles,\n\nOn 12/09/17 09:34, charles.baylis@linaro.org wrote:\n> From: Charles Baylis <charles.baylis@linaro.org>\n>\n> This patch adds support for modelling the varying costs of\n> different addressing modes. The generic cost table treats\n> all addressing modes as having equal cost.\n>\n> gcc/ChangeLog:\n>\n> <date>  Charles Baylis <charles.baylis@linaro.org>\n>\n>         * config/arm/arm-protos.h (enum arm_addr_mode_op): New.\n>         (struct addr_mode_cost_table): New.\n>         (struct tune_params): Add field addr_mode_costs.\n>         * config/arm/arm.c (generic_addr_mode_costs): New.\n>         (arm_slowmul_tune): Initialise addr_mode_costs field.\n>         (arm_fastmul_tune): Likewise.\n>         (arm_strongarm_tune): Likewise.\n>         (arm_xscale_tune): Likewise.\n>         (arm_9e_tune): Likewise.\n>         (arm_marvell_pj4_tune): Likewise.\n>         (arm_v6t2_tune): Likewise.\n>         (arm_cortex_tune): Likewise.\n>         (arm_cortex_a8_tune): Likewise.\n>         (arm_cortex_a7_tune): Likewise.\n>         (arm_cortex_a15_tune): Likewise.\n>         (arm_cortex_a35_tune): Likewise.\n>         (arm_cortex_a53_tune): Likewise.\n>         (arm_cortex_a57_tune): Likewise.\n>         (arm_exynosm1_tune): Likewise.\n>         (arm_xgene1_tune): Likewise.\n>         (arm_cortex_a5_tune): Likewise.\n>         (arm_cortex_a9_tune): Likewise.\n>         (arm_cortex_a12_tune): Likewise.\n>         (arm_cortex_a73_tune): Likewise.\n>         (arm_v7m_tune): Likewise.\n>         (arm_cortex_m7_tune): Likewise.\n>         (arm_v6m_tune): Likewise.\n>         (arm_fa726te_tune): Likewise.\n>         (arm_mem_costs): Use table lookup to calculate cost of addressing\n>         mode.\n>\n> Change-Id: If71bd7c4f4bb876c5ed82dc28791130efb8bf89e\n> ---\n>  gcc/config/arm/arm-protos.h | 20 +++++++++++\n>  gcc/config/arm/arm.c        | 83 \n> ++++++++++++++++++++++++++++++++++++++++++++-\n>  2 files changed, 102 insertions(+), 1 deletion(-)\n>\n> diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h\n> index 47a85cc..3d6b515 100644\n> --- a/gcc/config/arm/arm-protos.h\n> +++ b/gcc/config/arm/arm-protos.h\n> @@ -261,12 +261,32 @@ struct cpu_vec_costs {\n>\n>  struct cpu_cost_table;\n>\n> +/* Addressing mode operations.  Used to index tables in struct\n> +   addr_mode_cost_table.  */\n> +enum arm_addr_mode_op\n> +{\n> +   AMO_DEFAULT,\n> +   AMO_NO_WB,  /* Offset with no writeback.  */\n> +   AMO_WB,     /* Offset with writeback.  */\n> +   AMO_MAX     /* For array size.  */\n> +};\n> +\n> +/* Table of additional costs when using addressing modes for each\n> +   access type.  */\n\nPlease add a comment here saying that the units are in COSTS_N_INSNS\nso that we can reduce the temptation to use these in inappropriate contexts.\n\n> +struct addr_mode_cost_table\n> +{\n> +   const int integer[AMO_MAX];\n> +   const int fp[AMO_MAX];\n> +   const int vector[AMO_MAX];\n> +};\n> +\n>  /* Dump function ARM_PRINT_TUNE_INFO should be updated whenever this\n>     structure is modified.  */\n>\n>  struct tune_params\n>  {\n>    const struct cpu_cost_table *insn_extra_cost;\n> +  const struct addr_mode_cost_table *addr_mode_costs;\n>    bool (*sched_adjust_cost) (rtx_insn *, int, rtx_insn *, int *);\n>    int (*branch_cost) (bool, bool);\n>    /* Vectorizer costs.  */\n> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c\n> index b8dbed6..0d31f5f 100644\n> --- a/gcc/config/arm/arm.c\n> +++ b/gcc/config/arm/arm.c\n> @@ -1751,9 +1751,32 @@ const struct cpu_cost_table v7m_extra_costs =\n>    }\n>  };\n>\n> +const struct addr_mode_cost_table generic_addr_mode_costs =\n> +{\n> +  /* int.  */\n> +  {\n> +    0,  /* AMO_DEFAULT.  */\n> +    0,  /* AMO_NO_WB.  */\n> +    0   /* AMO_WB.  */\n> +  },\n> +  /* float.  */\n> +  {\n> +    0,  /* AMO_DEFAULT.  */\n> +    0,  /* AMO_NO_WB.  */\n> +    0   /* AMO_WB.  */\n> +  },\n> +  /* vector.  */\n> +  {\n> +    0,  /* AMO_DEFAULT.  */\n> +    0,  /* AMO_NO_WB.  */\n> +    0   /* AMO_WB.  */\n> +  }\n> +};\n> +\n>  const struct tune_params arm_slowmul_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1777,6 +1800,7 @@ const struct tune_params arm_slowmul_tune =\n>  const struct tune_params arm_fastmul_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1803,6 +1827,7 @@ const struct tune_params arm_fastmul_tune =\n>  const struct tune_params arm_strongarm_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1826,6 +1851,7 @@ const struct tune_params arm_strongarm_tune =\n>  const struct tune_params arm_xscale_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    xscale_sched_adjust_cost,\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1849,6 +1875,7 @@ const struct tune_params arm_xscale_tune =\n>  const struct tune_params arm_9e_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1872,6 +1899,7 @@ const struct tune_params arm_9e_tune =\n>  const struct tune_params arm_marvell_pj4_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1895,6 +1923,7 @@ const struct tune_params arm_marvell_pj4_tune =\n>  const struct tune_params arm_v6t2_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1920,6 +1949,7 @@ const struct tune_params arm_v6t2_tune =\n>  const struct tune_params arm_cortex_tune =\n>  {\n>    &generic_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1943,6 +1973,7 @@ const struct tune_params arm_cortex_tune =\n>  const struct tune_params arm_cortex_a8_tune =\n>  {\n>    &cortexa8_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1966,6 +1997,7 @@ const struct tune_params arm_cortex_a8_tune =\n>  const struct tune_params arm_cortex_a7_tune =\n>  {\n>    &cortexa7_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -1989,6 +2021,7 @@ const struct tune_params arm_cortex_a7_tune =\n>  const struct tune_params arm_cortex_a15_tune =\n>  {\n>    &cortexa15_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2012,6 +2045,7 @@ const struct tune_params arm_cortex_a15_tune =\n>  const struct tune_params arm_cortex_a35_tune =\n>  {\n>    &cortexa53_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2035,6 +2069,7 @@ const struct tune_params arm_cortex_a35_tune =\n>  const struct tune_params arm_cortex_a53_tune =\n>  {\n>    &cortexa53_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2058,6 +2093,7 @@ const struct tune_params arm_cortex_a53_tune =\n>  const struct tune_params arm_cortex_a57_tune =\n>  {\n>    &cortexa57_extra_costs,\n> +  &generic_addr_mode_costs,            /* addressing mode costs */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2081,6 +2117,7 @@ const struct tune_params arm_cortex_a57_tune =\n>  const struct tune_params arm_exynosm1_tune =\n>  {\n>    &exynosm1_extra_costs,\n> +  &generic_addr_mode_costs,                    /* Addressing mode \n> costs.  */\n>    NULL,                                                /* Sched adj \n> cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2104,6 +2141,7 @@ const struct tune_params arm_exynosm1_tune =\n>  const struct tune_params arm_xgene1_tune =\n>  {\n>    &xgene1_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2130,6 +2168,7 @@ const struct tune_params arm_xgene1_tune =\n>  const struct tune_params arm_cortex_a5_tune =\n>  {\n>    &cortexa5_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_cortex_a5_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2153,6 +2192,7 @@ const struct tune_params arm_cortex_a5_tune =\n>  const struct tune_params arm_cortex_a9_tune =\n>  {\n>    &cortexa9_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    cortex_a9_sched_adjust_cost,\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2176,6 +2216,7 @@ const struct tune_params arm_cortex_a9_tune =\n>  const struct tune_params arm_cortex_a12_tune =\n>  {\n>    &cortexa12_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,                        /* Vectorizer costs.  */\n> @@ -2199,6 +2240,7 @@ const struct tune_params arm_cortex_a12_tune =\n>  const struct tune_params arm_cortex_a73_tune =\n>  {\n>    &cortexa57_extra_costs,\n> +  &generic_addr_mode_costs,                    /* Addressing mode \n> costs.  */\n>    NULL,                                                /* Sched adj \n> cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,                       /* Vectorizer costs.  */\n> @@ -2229,6 +2271,7 @@ const struct tune_params arm_cortex_a73_tune =\n>  const struct tune_params arm_v7m_tune =\n>  {\n>    &v7m_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_cortex_m_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2254,6 +2297,7 @@ const struct tune_params arm_v7m_tune =\n>  const struct tune_params arm_cortex_m7_tune =\n>  {\n>    &v7m_extra_costs,\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_cortex_m7_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -2280,6 +2324,7 @@ const struct tune_params arm_cortex_m7_tune =\n>  const struct tune_params arm_v6m_tune =\n>  {\n>    &generic_extra_costs,                        /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,            /* Addressing mode costs.  */\n>    NULL,                                        /* Sched adj cost.  */\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,                        /* Vectorizer costs.  */\n> @@ -2303,6 +2348,7 @@ const struct tune_params arm_v6m_tune =\n>  const struct tune_params arm_fa726te_tune =\n>  {\n>    &generic_extra_costs, /* Insn extra costs.  */\n> +  &generic_addr_mode_costs,                    /* Addressing mode \n> costs.  */\n>    fa726te_sched_adjust_cost,\n>    arm_default_branch_cost,\n>    &arm_default_vec_cost,\n> @@ -9249,7 +9295,42 @@ arm_mem_costs (rtx x, const struct \n> cpu_cost_table *extra_cost,\n>    /* Calculate cost of the addressing mode.  */\n>    if (speed_p)\n>      {\n> -      /* TODO: Add table-driven costs for addressing modes.  (See \n> patch 2) */\n> +      arm_addr_mode_op op_type;\n> +      switch (GET_CODE (XEXP (x, 0)))\n> +       {\n> +       default:\n> +       case REG:\n> +         op_type = AMO_DEFAULT;\n> +         break;\n> +       case MINUS:\n> +         /* MINUS does not appear in RTL, but the architecture \n> supports it,\n> +            so handle this case defensively.  */\n> +         /* fall through */\n> +       case PLUS:\n> +         op_type = AMO_NO_WB;\n> +         break;\n> +       case PRE_INC:\n> +       case PRE_DEC:\n> +       case POST_INC:\n> +       case POST_DEC:\n> +       case PRE_MODIFY:\n> +       case POST_MODIFY:\n> +         op_type = AMO_WB;\n> +         break;\n> +       }\n> +\n> +      if (VECTOR_MODE_P (mode))\n> +       {\n> +         *cost += current_tune->addr_mode_costs->vector[op_type];\n> +       }\n> +      else if (FLOAT_MODE_P (mode))\n> +       {\n> +         *cost += current_tune->addr_mode_costs->fp[op_type];\n> +       }\n> +      else\n> +       {\n> +         *cost += current_tune->addr_mode_costs->integer[op_type];\n> +       }\n\nNo need for brackets for single-statement conditionals.\n\nThis is okay once the prerequisites are committed.\nKyrill\n\n>      }\n>\n>    /* Calculate cost of memory access.  */\n> -- \n> 2.7.4\n>","headers":{"Return-Path":"<gcc-patches-return-462004-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-462004-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=\"OubMrwjq\"; 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 3xsbKw1X3Jz9sMN\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 13 Sep 2017 19:03:15 +1000 (AEST)","(qmail 17685 invoked by alias); 13 Sep 2017 09:02:52 -0000","(qmail 17570 invoked by uid 89); 13 Sep 2017 09:02:51 -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 09:02:48 +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\t7CD821529; Wed, 13 Sep 2017 02:02:47 -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 62F793F483; Wed, 13 Sep 2017 02:02:46 -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=iVrOLcHfF6PkrTmlOpiQZhJ7123RGCSGItYWYuEHNwY76/j+QMI3A\n\tD2DOZnApsbX1GffbLahNGCfUc85fu2he7mdJ3bKOz4P8GHXSW4lFDpAua+AT10T1\n\teHWt0T8n0+I0HAZUAUa2DQ6j5pNnmgQ1sMGQ2vwrCo+oKN0X32VaGQ=","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=c2UzsyTaaE0f8sUrkgezbUup6fE=; b=OubMrwjqFE2MsLIG37BXJZamRfg5\n\t/pTQYPnvfDlhBX30AaB7BQ3WPK42OnFeRPaRVgMikJKxBW843UIuwJQRq26TToKH\n\t/dTVPOFV675W9E5d8vmK+AOC/MqPs/AhaC6ZF02nUOM0Jt+JeErb6+EfO+7suELg\n\twVXFp+1Lc9c+pFg=","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.9 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tKAM_LAZY_DOMAIN_SECURITY,\n\tRP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=temptation","X-HELO":"foss.arm.com","Message-ID":"<59B8F435.7000706@foss.arm.com>","Date":"Wed, 13 Sep 2017 10:02:45 +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":"\"charles.baylis@linaro.org\" <charles.baylis@linaro.org>,\n\tRichard Earnshaw <Richard.Earnshaw@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"pinskia@gmail.com\" <pinskia@gmail.com>","CC":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","Subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","References":"<1505205277-26276-1-git-send-email-charles.baylis@linaro.org>\n\t<1505205277-26276-4-git-send-email-charles.baylis@linaro.org>","In-Reply-To":"<1505205277-26276-4-git-send-email-charles.baylis@linaro.org>","Content-Type":"text/plain; charset=windows-1252; format=flowed","Content-Transfer-Encoding":"7bit"}},{"id":1769257,"web_url":"http://patchwork.ozlabs.org/comment/1769257/","msgid":"<CADnVucDTf-D4hqDeo-kdKPaRRaAWiayJDE5Phu=9x6AQgOapJg@mail.gmail.com>","list_archive_url":null,"date":"2017-09-15T15:38:27","subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","submitter":{"id":35578,"url":"http://patchwork.ozlabs.org/api/people/35578/","name":"Charles Baylis","email":"charles.baylis@linaro.org"},"content":"On 13 September 2017 at 10:02, Kyrill  Tkachov\n<kyrylo.tkachov@foss.arm.com> wrote:\n\n>\n> Please add a comment here saying that the units are in COSTS_N_INSNS\n> so that we can reduce the temptation to use these in inappropriate contexts.\n\n>> +      if (VECTOR_MODE_P (mode))\n>> +       {\n>> +         *cost += current_tune->addr_mode_costs->vector[op_type];\n>> +       }\n>> +      else if (FLOAT_MODE_P (mode))\n>> +       {\n>> +         *cost += current_tune->addr_mode_costs->fp[op_type];\n>> +       }\n>> +      else\n>> +       {\n>> +         *cost += current_tune->addr_mode_costs->integer[op_type];\n>> +       }\n>\n>\n> No need for brackets for single-statement conditionals.\n\nDone.","headers":{"Return-Path":"<gcc-patches-return-462259-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-462259-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=\"KtGyt3b0\"; 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 3xv01C6XQWz9sPs\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 16 Sep 2017 01:38:39 +1000 (AEST)","(qmail 7705 invoked by alias); 15 Sep 2017 15:38:32 -0000","(qmail 6798 invoked by uid 89); 15 Sep 2017 15:38:30 -0000","from mail-io0-f169.google.com (HELO mail-io0-f169.google.com)\n\t(209.85.223.169) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tFri, 15 Sep 2017 15:38:29 +0000","by mail-io0-f169.google.com with SMTP id 21so9353644iof.6 for\n\t<gcc-patches@gcc.gnu.org>; Fri, 15 Sep 2017 08:38:29 -0700 (PDT)","by 10.2.96.106 with HTTP; Fri, 15 Sep 2017 08:38:27 -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:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:cc:content-type; q=dns; s=default; b=onxFulHamO+Pg1h\n\tnj76LggbJS6r/1G8XI2b9uoJ6YPTHDkCTGaGzTxaNwPL1xUSPPm9Q4UElc5xfiAm\n\t5cjqK3eXWF6oGTk2TSfiXHn+YQgeDeSCaWAQWRWpBoWeaCt/agj33OmUj1Fi3EEB\n\tstAm+CGYEjRQffaY+a2AkmZfSsF0=","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:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:cc:content-type; s=default; bh=9SXZ8kCdeoMsj7bB7iaFO\n\ta0/Uck=; b=KtGyt3b0MCT72aToMHhSGhCPNnMF1mF+AVnlW0tIsM8PX6U/hphyi\n\tUPlmhKGs6z2KtXNOD8jDS4R1B5rlqsoJJEEyIY+Ib19dpVAIIkIuCwo7fMutOQuc\n\tBkuUUIGvaJWnfKbtn8pdE7YCEFx43cKiM18NtKc4InKtrLMKLhxAL8=","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=-1.4 required=5.0 tests=BAYES_00,\n\tRCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM,\n\tSPF_PASS autolearn=no version=3.3.2 spammy=","X-HELO":"mail-io0-f169.google.com","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;\n\ts=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=uWycsbDd0qC/1GvCRvJga9sHQgl8+QXsjckYYg0YkKA=;\n\tb=H5JRiGsTfNrLWLLbsELAn0N4voK9Xh+77Xev3ERoKvG+z1LqQrojPonAT0mh5uiBq1\n\tGjd9plUJOsDYDMeG3vBxos4rfdT/VTFUXeo8wu7dbQwE91UzHz4/98137T+azmyLrHdv\n\tHiAPYOgRlLbBdRz/imE3slfg/QcaiTY4kz4ku7zwzsWNhwyb9DUUoR1I6izmBKv079xg\n\tRMjZ8k2HjC/Nu8MwTFPZ7x1FXJriSWnviN4rQmzMjxMxez8o4XwTffuvZ+xkPp5buDj2\n\tbPqgrf962NjDC7v35UTZ4aHdiJYk2Kyqh251SXwOMmJaMbNv/VnNbW2Hcx6YzL/NtOQj\n\tpcLA==","X-Gm-Message-State":"AHPjjUit2LARH0uDQ9bF85NxJt7xCPZ4EtIT/vQuJ739u35A37SpgLwq\trmCz3QKfqBGswMz9dX17jYGl7hAMxNURwmSMjtgazw==","X-Google-Smtp-Source":"AOwi7QCy5nszrEjDXz7GC9nC8r77NNgg2EZvoUVpf9tC8z+Opa34XJ/eHmCOFXyk5+GNdsrtdJ9RnIVnqbasCMdKKLk=","X-Received":"by 10.107.133.228 with SMTP id p97mr9221075ioi.235.1505489908153;\n\tFri, 15 Sep 2017 08:38:28 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<59B8F435.7000706@foss.arm.com>","References":"<1505205277-26276-1-git-send-email-charles.baylis@linaro.org>\n\t<1505205277-26276-4-git-send-email-charles.baylis@linaro.org>\n\t<59B8F435.7000706@foss.arm.com>","From":"Charles Baylis <charles.baylis@linaro.org>","Date":"Fri, 15 Sep 2017 16:38:27 +0100","Message-ID":"<CADnVucDTf-D4hqDeo-kdKPaRRaAWiayJDE5Phu=9x6AQgOapJg@mail.gmail.com>","Subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","To":"Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>","Cc":"Richard Earnshaw <Richard.Earnshaw@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"pinskia@gmail.com\" <pinskia@gmail.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","Content-Type":"text/plain; charset=\"UTF-8\"","X-IsSubscribed":"yes"}},{"id":1769259,"web_url":"http://patchwork.ozlabs.org/comment/1769259/","msgid":"<CADnVucALHGu-n3osO4erKQk6ba+S9OrBZmi75oLVUr9hV+0HNg@mail.gmail.com>","list_archive_url":null,"date":"2017-09-15T15:38:27","subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","submitter":{"id":35578,"url":"http://patchwork.ozlabs.org/api/people/35578/","name":"Charles Baylis","email":"charles.baylis@linaro.org"},"content":"On 13 September 2017 at 10:02, Kyrill  Tkachov\n<kyrylo.tkachov@foss.arm.com> wrote:\n\n>\n> Please add a comment here saying that the units are in COSTS_N_INSNS\n> so that we can reduce the temptation to use these in inappropriate contexts.\n\n>> +      if (VECTOR_MODE_P (mode))\n>> +       {\n>> +         *cost += current_tune->addr_mode_costs->vector[op_type];\n>> +       }\n>> +      else if (FLOAT_MODE_P (mode))\n>> +       {\n>> +         *cost += current_tune->addr_mode_costs->fp[op_type];\n>> +       }\n>> +      else\n>> +       {\n>> +         *cost += current_tune->addr_mode_costs->integer[op_type];\n>> +       }\n>\n>\n> No need for brackets for single-statement conditionals.\n\nDone.\nFrom a35fa59f4dc3be42a52519a90bdd2d47e74db086 Mon Sep 17 00:00:00 2001\nFrom: Charles Baylis <charles.baylis@linaro.org>\nDate: Thu, 14 Sep 2017 12:47:41 +0100\nSubject: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing modes.\n\nThis patch adds support for modelling the varying costs of\ndifferent addressing modes. The generic cost table treats\nall addressing modes as having equal cost.\n\ngcc/ChangeLog:\n\n<date>  Charles Baylis  <charles.baylis@linaro.org>\n\n\t* config/arm/arm-protos.h (enum arm_addr_mode_op): New.\n\t(struct addr_mode_cost_table): New.\n\t(struct tune_params): Add field addr_mode_costs.\n\t* config/arm/arm.c (generic_addr_mode_costs): New.\n\t(arm_slowmul_tune): Initialise addr_mode_costs field.\n\t(arm_fastmul_tune): Likewise.\n\t(arm_strongarm_tune): Likewise.\n\t(arm_xscale_tune): Likewise.\n\t(arm_9e_tune): Likewise.\n\t(arm_marvell_pj4_tune): Likewise.\n\t(arm_v6t2_tune): Likewise.\n\t(arm_cortex_tune): Likewise.\n\t(arm_cortex_a8_tune): Likewise.\n\t(arm_cortex_a7_tune): Likewise.\n\t(arm_cortex_a15_tune): Likewise.\n\t(arm_cortex_a35_tune): Likewise.\n\t(arm_cortex_a53_tune): Likewise.\n\t(arm_cortex_a57_tune): Likewise.\n\t(arm_exynosm1_tune): Likewise.\n\t(arm_xgene1_tune): Likewise.\n\t(arm_cortex_a5_tune): Likewise.\n\t(arm_cortex_a9_tune): Likewise.\n\t(arm_cortex_a12_tune): Likewise.\n\t(arm_cortex_a73_tune): Likewise.\n\t(arm_v7m_tune): Likewise.\n\t(arm_cortex_m7_tune): Likewise.\n\t(arm_v6m_tune): Likewise.\n\t(arm_fa726te_tune): Likewise.\n\t(arm_mem_costs): Use table lookup to calculate cost of addressing\n\tmode.\n\nChange-Id: If71bd7c4f4bb876c5ed82dc28791130efb8bf89e\n---\n gcc/config/arm/arm-protos.h | 20 +++++++++++\n gcc/config/arm/arm.c        | 81 +++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 101 insertions(+)\n\ndiff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h\nindex 47a85cc..7769726 100644\n--- a/gcc/config/arm/arm-protos.h\n+++ b/gcc/config/arm/arm-protos.h\n@@ -261,12 +261,32 @@ struct cpu_vec_costs {\n \n struct cpu_cost_table;\n \n+/* Addressing mode operations.  Used to index tables in struct\n+   addr_mode_cost_table.  */\n+enum arm_addr_mode_op\n+{\n+   AMO_DEFAULT,\n+   AMO_NO_WB,\t/* Offset with no writeback.  */\n+   AMO_WB,\t/* Offset with writeback.  */\n+   AMO_MAX\t/* For array size.  */\n+};\n+\n+/* Table of additional costs in units of COSTS_N_INSNS() when using\n+   addressing modes for each access type.  */\n+struct addr_mode_cost_table\n+{\n+   const int integer[AMO_MAX];\n+   const int fp[AMO_MAX];\n+   const int vector[AMO_MAX];\n+};\n+\n /* Dump function ARM_PRINT_TUNE_INFO should be updated whenever this\n    structure is modified.  */\n \n struct tune_params\n {\n   const struct cpu_cost_table *insn_extra_cost;\n+  const struct addr_mode_cost_table *addr_mode_costs;\n   bool (*sched_adjust_cost) (rtx_insn *, int, rtx_insn *, int *);\n   int (*branch_cost) (bool, bool);\n   /* Vectorizer costs.  */\ndiff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c\nindex 64230b8..7773ec3 100644\n--- a/gcc/config/arm/arm.c\n+++ b/gcc/config/arm/arm.c\n@@ -1751,9 +1751,32 @@ const struct cpu_cost_table v7m_extra_costs =\n   }\n };\n \n+const struct addr_mode_cost_table generic_addr_mode_costs =\n+{\n+  /* int.  */\n+  {\n+    COSTS_N_INSNS (0),\t/* AMO_DEFAULT.  */\n+    COSTS_N_INSNS (0),\t/* AMO_NO_WB.  */\n+    COSTS_N_INSNS (0)\t/* AMO_WB.  */\n+  },\n+  /* float.  */\n+  {\n+    COSTS_N_INSNS (0),\t/* AMO_DEFAULT.  */\n+    COSTS_N_INSNS (0),\t/* AMO_NO_WB.  */\n+    COSTS_N_INSNS (0)\t/* AMO_WB.  */\n+  },\n+  /* vector.  */\n+  {\n+    COSTS_N_INSNS (0),\t/* AMO_DEFAULT.  */\n+    COSTS_N_INSNS (0),\t/* AMO_NO_WB.  */\n+    COSTS_N_INSNS (0)\t/* AMO_WB.  */\n+  }\n+};\n+\n const struct tune_params arm_slowmul_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1777,6 +1800,7 @@ const struct tune_params arm_slowmul_tune =\n const struct tune_params arm_fastmul_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1803,6 +1827,7 @@ const struct tune_params arm_fastmul_tune =\n const struct tune_params arm_strongarm_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1826,6 +1851,7 @@ const struct tune_params arm_strongarm_tune =\n const struct tune_params arm_xscale_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   xscale_sched_adjust_cost,\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1849,6 +1875,7 @@ const struct tune_params arm_xscale_tune =\n const struct tune_params arm_9e_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1872,6 +1899,7 @@ const struct tune_params arm_9e_tune =\n const struct tune_params arm_marvell_pj4_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1895,6 +1923,7 @@ const struct tune_params arm_marvell_pj4_tune =\n const struct tune_params arm_v6t2_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1920,6 +1949,7 @@ const struct tune_params arm_v6t2_tune =\n const struct tune_params arm_cortex_tune =\n {\n   &generic_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1943,6 +1973,7 @@ const struct tune_params arm_cortex_tune =\n const struct tune_params arm_cortex_a8_tune =\n {\n   &cortexa8_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1966,6 +1997,7 @@ const struct tune_params arm_cortex_a8_tune =\n const struct tune_params arm_cortex_a7_tune =\n {\n   &cortexa7_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -1989,6 +2021,7 @@ const struct tune_params arm_cortex_a7_tune =\n const struct tune_params arm_cortex_a15_tune =\n {\n   &cortexa15_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2012,6 +2045,7 @@ const struct tune_params arm_cortex_a15_tune =\n const struct tune_params arm_cortex_a35_tune =\n {\n   &cortexa53_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2035,6 +2069,7 @@ const struct tune_params arm_cortex_a35_tune =\n const struct tune_params arm_cortex_a53_tune =\n {\n   &cortexa53_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2058,6 +2093,7 @@ const struct tune_params arm_cortex_a53_tune =\n const struct tune_params arm_cortex_a57_tune =\n {\n   &cortexa57_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* addressing mode costs */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2081,6 +2117,7 @@ const struct tune_params arm_cortex_a57_tune =\n const struct tune_params arm_exynosm1_tune =\n {\n   &exynosm1_extra_costs,\n+  &generic_addr_mode_costs,\t\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2104,6 +2141,7 @@ const struct tune_params arm_exynosm1_tune =\n const struct tune_params arm_xgene1_tune =\n {\n   &xgene1_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2130,6 +2168,7 @@ const struct tune_params arm_xgene1_tune =\n const struct tune_params arm_cortex_a5_tune =\n {\n   &cortexa5_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_cortex_a5_branch_cost,\n   &arm_default_vec_cost,\n@@ -2153,6 +2192,7 @@ const struct tune_params arm_cortex_a5_tune =\n const struct tune_params arm_cortex_a9_tune =\n {\n   &cortexa9_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   cortex_a9_sched_adjust_cost,\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -2176,6 +2216,7 @@ const struct tune_params arm_cortex_a9_tune =\n const struct tune_params arm_cortex_a12_tune =\n {\n   &cortexa12_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,                        /* Vectorizer costs.  */\n@@ -2199,6 +2240,7 @@ const struct tune_params arm_cortex_a12_tune =\n const struct tune_params arm_cortex_a73_tune =\n {\n   &cortexa57_extra_costs,\n+  &generic_addr_mode_costs,\t\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\t\t\t/* Vectorizer costs.  */\n@@ -2229,6 +2271,7 @@ const struct tune_params arm_cortex_a73_tune =\n const struct tune_params arm_v7m_tune =\n {\n   &v7m_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_cortex_m_branch_cost,\n   &arm_default_vec_cost,\n@@ -2254,6 +2297,7 @@ const struct tune_params arm_v7m_tune =\n const struct tune_params arm_cortex_m7_tune =\n {\n   &v7m_extra_costs,\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_cortex_m7_branch_cost,\n   &arm_default_vec_cost,\n@@ -2280,6 +2324,7 @@ const struct tune_params arm_cortex_m7_tune =\n const struct tune_params arm_v6m_tune =\n {\n   &generic_extra_costs,\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t/* Addressing mode costs.  */\n   NULL,\t\t\t\t\t/* Sched adj cost.  */\n   arm_default_branch_cost,\n   &arm_default_vec_cost,                        /* Vectorizer costs.  */\n@@ -2303,6 +2348,7 @@ const struct tune_params arm_v6m_tune =\n const struct tune_params arm_fa726te_tune =\n {\n   &generic_extra_costs,\t\t\t\t/* Insn extra costs.  */\n+  &generic_addr_mode_costs,\t\t\t/* Addressing mode costs.  */\n   fa726te_sched_adjust_cost,\n   arm_default_branch_cost,\n   &arm_default_vec_cost,\n@@ -9247,6 +9293,41 @@ arm_mem_costs (rtx x, const struct cpu_cost_table *extra_cost,\n        below.  See arm.md:calculate_pic_address.  */\n     *cost += COSTS_N_INSNS (1);\n \n+  /* Calculate cost of the addressing mode.  */\n+  if (speed_p)\n+    {\n+      arm_addr_mode_op op_type;\n+      switch (GET_CODE (XEXP (x, 0)))\n+\t{\n+\tdefault:\n+\tcase REG:\n+\t  op_type = AMO_DEFAULT;\n+\t  break;\n+\tcase MINUS:\n+\t  /* MINUS does not appear in RTL, but the architecture supports it,\n+\t     so handle this case defensively.  */\n+\t  /* fall through */\n+\tcase PLUS:\n+\t  op_type = AMO_NO_WB;\n+\t  break;\n+\tcase PRE_INC:\n+\tcase PRE_DEC:\n+\tcase POST_INC:\n+\tcase POST_DEC:\n+\tcase PRE_MODIFY:\n+\tcase POST_MODIFY:\n+\t  op_type = AMO_WB;\n+\t  break;\n+\t}\n+\n+      if (VECTOR_MODE_P (mode))\n+\t  *cost += current_tune->addr_mode_costs->vector[op_type];\n+      else if (FLOAT_MODE_P (mode))\n+\t  *cost += current_tune->addr_mode_costs->fp[op_type];\n+      else\n+\t  *cost += current_tune->addr_mode_costs->integer[op_type];\n+    }\n+\n   /* Calculate cost of memory access.  */\n   if (speed_p)\n     {","headers":{"Return-Path":"<gcc-patches-return-462261-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-462261-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=\"Uj4+1sUV\"; 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 3xv01q4FNmz9sPr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 16 Sep 2017 01:39:11 +1000 (AEST)","(qmail 7893 invoked by alias); 15 Sep 2017 15:38:32 -0000","(qmail 7614 invoked by uid 89); 15 Sep 2017 15:38:32 -0000","from mail-io0-f177.google.com (HELO mail-io0-f177.google.com)\n\t(209.85.223.177) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tFri, 15 Sep 2017 15:38:29 +0000","by mail-io0-f177.google.com with SMTP id v36so9413103ioi.1 for\n\t<gcc-patches@gcc.gnu.org>; Fri, 15 Sep 2017 08:38:29 -0700 (PDT)","by 10.2.96.106 with HTTP; Fri, 15 Sep 2017 08:38:27 -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:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:cc:content-type; q=dns; s=default; b=qQuw8qr5FUqwPUj\n\t1NVm6TlHli9732xPYrJCugFhxKKyRn7MI0wBkCsQN1caGRfuARYTA2HpJ0bJaa2R\n\t9KwjR8tvXItEd4vWoouMbollpChCoR88npEgVLAol/XjVWzhj9hfUEZCDbrAhMTt\n\tbY1MfPUCBKZgWznsDfUQdsVsrjOs=","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:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:cc:content-type; s=default; bh=DUSb+Tr1IDbuTbyHs7UUD\n\t60YPy4=; b=Uj4+1sUVl9fGUM4wp4QKbQPh2WljhPGu/MNSyZ0vo6Vpx1o5yzkFB\n\taCrb1kF8NH0W9Oh+/b/jI8mtXfrGN4eQJ+4t50U4GHO6/f0M+89sXQGLt2Zep1Ix\n\thzxcJ4H/lf9Q3fz5ZfrKUu+X+dA5daOPPSfbggJkcMkuZxL9HSqgyo=","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.2 required=5.0 tests=AWL, BAYES_00,\n\tGIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tRCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"mail-io0-f177.google.com","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;\n\ts=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=3LrtKDYSUDBBliAXfdnxdtEFKc/HHsCTZ7C4kb/1PZY=;\n\tb=DPehtLYWP1LTI/MmATLQqLKnvRhFUKnKXsItTW3F2EKsFpqs+b7veIunZVJ+T6sGrG\n\tinScLfETbr3cj82YLbaoLkm5pc7kYrdxtugAX+d7Quf9LzjLkvUBg3bFANbB5dL/BrvM\n\tCGdxmC2LUtA37EvuABxbmlxwCmYy6+H3o4nVkE50PuBrdoGcQlUqnICjjlXHFg1nsVVd\n\ttjZXgLDZT/eKtUq5tgnKo2+qbcdlay8VpAR48SXCHHH9owOiA61GOhCrXBE3JYS502Di\n\twkcQsFTptnQItNFxn4FhlwCBGMUWMSgEcWidJ2OafFdLHyni6HUAfD5Fzikw79gCfCtO\n\thiWA==","X-Gm-Message-State":"AHPjjUjdN2l/uBGRARN9JmaCWay9OVKZStmFm5hSzpuwFrOPYdkfvQS/\tA5SDAWApGataTbXca0R78MtJUPyljZXnVt0xcou+vg==","X-Google-Smtp-Source":"AOwi7QCUgoBYBTR1jrgo/zETh1UN52DK5gFPdhd7JwyJ2mOTCDveWn3CMR6CWMArNRC8WdSD9z6vXfdgDQL9OWi6MzM=","X-Received":"by 10.107.147.196 with SMTP id v187mr8494250iod.92.1505489908119;\n\tFri, 15 Sep 2017 08:38:28 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<59B8F435.7000706@foss.arm.com>","References":"<1505205277-26276-1-git-send-email-charles.baylis@linaro.org>\n\t<1505205277-26276-4-git-send-email-charles.baylis@linaro.org>\n\t<59B8F435.7000706@foss.arm.com>","From":"Charles Baylis <charles.baylis@linaro.org>","Date":"Fri, 15 Sep 2017 16:38:27 +0100","Message-ID":"<CADnVucALHGu-n3osO4erKQk6ba+S9OrBZmi75oLVUr9hV+0HNg@mail.gmail.com>","Subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","To":"Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>","Cc":"Richard Earnshaw <Richard.Earnshaw@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"pinskia@gmail.com\" <pinskia@gmail.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","Content-Type":"multipart/mixed; boundary=\"94eb2c05b10e3003e405593c2f9d\"","X-IsSubscribed":"yes"}},{"id":1769304,"web_url":"http://patchwork.ozlabs.org/comment/1769304/","msgid":"<59BC0689.60602@foss.arm.com>","list_archive_url":null,"date":"2017-09-15T16:57:45","subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","submitter":{"id":66284,"url":"http://patchwork.ozlabs.org/api/people/66284/","name":"Kyrill Tkachov","email":"kyrylo.tkachov@foss.arm.com"},"content":"On 15/09/17 16:38, Charles Baylis wrote:\n> On 13 September 2017 at 10:02, Kyrill  Tkachov\n> <kyrylo.tkachov@foss.arm.com> wrote:\n>\n>> Please add a comment here saying that the units are in COSTS_N_INSNS\n>> so that we can reduce the temptation to use these in inappropriate contexts.\n>>> +      if (VECTOR_MODE_P (mode))\n>>> +       {\n>>> +         *cost += current_tune->addr_mode_costs->vector[op_type];\n>>> +       }\n>>> +      else if (FLOAT_MODE_P (mode))\n>>> +       {\n>>> +         *cost += current_tune->addr_mode_costs->fp[op_type];\n>>> +       }\n>>> +      else\n>>> +       {\n>>> +         *cost += current_tune->addr_mode_costs->integer[op_type];\n>>> +       }\n>>\n>> No need for brackets for single-statement conditionals.\n> Done.\n\nThanks, this is ok once the prerequisites are sorted.\n\nKyrill","headers":{"Return-Path":"<gcc-patches-return-462285-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-462285-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=\"wLmVaE93\"; 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 3xv1mn6LRPz9sNc\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 16 Sep 2017 02:57:58 +1000 (AEST)","(qmail 16753 invoked by alias); 15 Sep 2017 16:57:51 -0000","(qmail 16732 invoked by uid 89); 15 Sep 2017 16:57:50 -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, 15 Sep 2017 16:57:49 +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\tDFF031529; Fri, 15 Sep 2017 09:57:47 -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 EA3733F3E1; Fri, 15 Sep 2017 09:57:46 -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=RWqyuxAMlIM6GdfDLx2ETlN6wJUFOBmKPOGCZjBm6K6ITn8nzBxhm\n\t7aVZvmn4Wo7k4YPTOY6Dt8bRt4KWPb5u9yOubgW8GI4WRIvmcE/zb2LiXF6XuwMn\n\tVGjhlSvvsZZRDidEX+7mL7aC7itCcwM/nPkEsxImT5AuYn4lwZ/6io=","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=vlQzNOp/7nmKAF2A2Bh1dRcfLD0=; b=wLmVaE93WEyvkTO4dEbxh5AsyN9G\n\twNksgxupRUqKDANBxq3wjdhkEwRygwVYGrJyhpGJHMjDROm2uC1zPdZb2wd5LzNE\n\tZmgK8Tbuel6wiS/A+me4BVmhJ1x0zNpLpz4NDs7vUlxa/8gObr9qOgUHUKhh9KP6\n\tPHeraJXbDgM6lSg=","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=-0.9 required=5.0 tests=BAYES_00,\n\tKAM_LAZY_DOMAIN_SECURITY,\n\tRP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=","X-HELO":"foss.arm.com","Message-ID":"<59BC0689.60602@foss.arm.com>","Date":"Fri, 15 Sep 2017 17:57:45 +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":"Charles Baylis <charles.baylis@linaro.org>","CC":"Richard Earnshaw <Richard.Earnshaw@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"pinskia@gmail.com\" <pinskia@gmail.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","Subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","References":"<1505205277-26276-1-git-send-email-charles.baylis@linaro.org>\n\t<1505205277-26276-4-git-send-email-charles.baylis@linaro.org>\n\t<59B8F435.7000706@foss.arm.com>\n\t<CADnVucALHGu-n3osO4erKQk6ba+S9OrBZmi75oLVUr9hV+0HNg@mail.gmail.com>","In-Reply-To":"<CADnVucALHGu-n3osO4erKQk6ba+S9OrBZmi75oLVUr9hV+0HNg@mail.gmail.com>","Content-Type":"text/plain; charset=windows-1252; format=flowed","Content-Transfer-Encoding":"7bit"}},{"id":1809453,"web_url":"http://patchwork.ozlabs.org/comment/1809453/","msgid":"<CADnVucA5cthmKGFDLpv7U2mEaCRemVp1JwmrdrrrPxvdznizOw@mail.gmail.com>","list_archive_url":null,"date":"2017-11-23T18:53:38","subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","submitter":{"id":35578,"url":"http://patchwork.ozlabs.org/api/people/35578/","name":"Charles Baylis","email":"charles.baylis@linaro.org"},"content":"On 15 September 2017 at 17:57, Kyrill  Tkachov\n<kyrylo.tkachov@foss.arm.com> wrote:\n>\n> Thanks, this is ok once the prerequisites are sorted.\n\nPatch 1 was abandoned, and a later version of patch 2 has been\ncommitted, so this was applied to trunk as r255112.","headers":{"Return-Path":"<gcc-patches-return-467809-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-467809-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=\"dTC5KSzc\"; 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 3yjT4h02C1z9s71\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 24 Nov 2017 05:53:55 +1100 (AEDT)","(qmail 92664 invoked by alias); 23 Nov 2017 18:53:41 -0000","(qmail 92601 invoked by uid 89); 23 Nov 2017 18:53:41 -0000","from mail-yb0-f177.google.com (HELO mail-yb0-f177.google.com)\n\t(209.85.213.177) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tThu, 23 Nov 2017 18:53:39 +0000","by mail-yb0-f177.google.com with SMTP id q84so4348340ybc.10 for\n\t<gcc-patches@gcc.gnu.org>; Thu, 23 Nov 2017 10:53:39 -0800 (PST)","by 10.129.182.1 with HTTP; Thu, 23 Nov 2017 10:53:38 -0800 (PST)"],"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:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:cc:content-type; q=dns; s=default; b=SuNyxCsRABvXd/g\n\tlbuAQ+LFlbkvQTriw+hZE7ih0f9/uRQdVvaqcnTJILDRrDDJVx1T6zpLXd/q0U4o\n\tUG1oThCj35PBuVjPv5kJ165ZazGsbdi7+kJ2FnUZAaaHv4LSI295I4KbISuCjU15\n\twtgjQvauXB5eDw0FWbC5zPDP+44c=","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:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:cc:content-type; s=default; bh=fkTwOns/cmBJP5plqyOKn\n\tm3SH+w=; b=dTC5KSzciuAV9faMdj+JHLUYWAzvLhEsCgr0juH9or8QH7NM+nKKN\n\tQEw4QBnJU0PtwV1xHMNRLvNQ0l4q73eNTffMg809w2pR2jIa2DgKc6BfQKXailb5\n\tzjy0pvkmtd/EIAWwWRXuKjCHR4kzkNmCUvm8GjNv46NF2QQqUdfPTU=","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=-2.2 required=5.0 tests=AWL, BAYES_00,\n\tKB_WAM_FROM_NAME_SINGLEWORD, RCVD_IN_DNSWL_NONE,\n\tSPF_PASS autolearn=no version=3.3.2 spammy=abandoned","X-HELO":"mail-yb0-f177.google.com","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;\n\ts=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=5EjisK3nJ7PBwmYRKxwdwPwzPJRW9VHMTtIPPvh89gE=;\n\tb=PL0K+44C+SQCDsUOlpQLsprONY/HnKF8cruaJGe5ms1nRBvTbrKvubbODkvPiCKbzk\n\tWzlppRCtjBoQln4Pozt+5ZxxA4dslB7rzHEXBZg+nc2dx/1bXW/ke8Qso8qNYsahD4vA\n\thMbWR/pqSN3byM+mionhDMP41tDqABkf2MpDjCV33apNUNAuZLeqBXxZ5Z3hKC4lRnyN\n\t8mLO4kPOHdA3AUyCRdAZD77OGoTMmzscfEaEe7uDuEMSCLTzHgJsXlMapturvupMWV1s\n\t2dzBtYTogk/UBtzNVD1BPXBEmTakR+VKlYc+KKJziqAPMZwwKoQnH/O28TNCy232EyIE\n\tQZ4w==","X-Gm-Message-State":"AJaThX7dEkOtujXH4tVjjsSYU4Ybcw4PUi8UFkYsre5d4gOy9+/eR7Qf\t3hSv1UDU118l4eOL96VMIOLM5D/DbLXE/HuSax0jVw==","X-Google-Smtp-Source":"AGs4zMZGvgK93X9Zl5Xe6ugMOf9IjKfKh03Ih9NyidGgHCDo2xZhtVU/0FQ+68JwRlrW74A4bAH3WzmcvEu+q3H+uRI=","X-Received":"by 10.37.234.9 with SMTP id p9mr16565014ybd.82.1511463218383;\n\tThu, 23 Nov 2017 10:53:38 -0800 (PST)","MIME-Version":"1.0","In-Reply-To":"<59BC0689.60602@foss.arm.com>","References":"<1505205277-26276-1-git-send-email-charles.baylis@linaro.org>\n\t<1505205277-26276-4-git-send-email-charles.baylis@linaro.org>\n\t<59B8F435.7000706@foss.arm.com>\n\t<CADnVucALHGu-n3osO4erKQk6ba+S9OrBZmi75oLVUr9hV+0HNg@mail.gmail.com>\n\t<59BC0689.60602@foss.arm.com>","From":"Charles Baylis <charles.baylis@linaro.org>","Date":"Thu, 23 Nov 2017 18:53:38 +0000","Message-ID":"<CADnVucA5cthmKGFDLpv7U2mEaCRemVp1JwmrdrrrPxvdznizOw@mail.gmail.com>","Subject":"Re: [PATCH 3/3] [ARM] Add table of costs for AAarch32 addressing\n\tmodes.","To":"Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>","Cc":"Richard Earnshaw <Richard.Earnshaw@arm.com>,\n\tRamana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,\n\t\"pinskia@gmail.com\" <pinskia@gmail.com>,\n\t\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","Content-Type":"text/plain; charset=\"UTF-8\"","X-IsSubscribed":"yes"}}]