[{"id":1763253,"web_url":"http://patchwork.ozlabs.org/comment/1763253/","msgid":"<CAFiYyc1Dzu5eC7F9_uTszL_kGpZV10cyd979vB6EN7XCUYq-8w@mail.gmail.com>","list_archive_url":null,"date":"2017-09-05T11:37:06","subject":"Re: [6/9] Make mode_for_vector return an opt_mode","submitter":{"id":1765,"url":"http://patchwork.ozlabs.org/api/people/1765/","name":"Richard Biener","email":"richard.guenther@gmail.com"},"content":"On Mon, Sep 4, 2017 at 1:39 PM, Richard Sandiford\n<richard.sandiford@linaro.org> wrote:\n> ...following on from the mode_for_size change.  The patch also removes\n> machmode.h versions of the stor-layout.c comments, since the comments\n> in the .c file are more complete.\n\nOk.\n\nRichard.\n\n> 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>\n>\n> gcc/\n>         * machmode.h (mode_for_vector): Return an opt_mode.\n>         * stor-layout.c (mode_for_vector): Likewise.\n>         (mode_for_int_vector): Update accordingly.\n>         (layout_type): Likewise.\n>         * config/i386/i386.c (emit_memmov): Likewise.\n>         (ix86_expand_set_or_movmem): Likewise.\n>         (ix86_expand_vector_init): Likewise.\n>         (ix86_get_mask_mode): Likewise.\n>         * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):\n>         Likewise.\n>         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.\n>         * expmed.c (extract_bit_field_1): Likewise.\n>         * expr.c (expand_expr_real_2): Likewise.\n>         * optabs-query.c (can_vec_perm_p): Likewise.\n>         (can_vec_mask_load_store_p): Likewise.\n>         * optabs.c (expand_vec_perm): Likewise.\n>         * targhooks.c (default_get_mask_mode): Likewise.\n>         * tree-vect-stmts.c (vectorizable_store): Likewise.\n>         (vectorizable_load): Likewise.\n>         (get_vectype_for_scalar_type_and_size): Likewise.\n>\n> Index: gcc/machmode.h\n> ===================================================================\n> --- gcc/machmode.h      2017-09-04 12:18:53.153306182 +0100\n> +++ gcc/machmode.h      2017-09-04 12:18:55.821333642 +0100\n> @@ -682,8 +682,6 @@ decimal_float_mode_for_size (unsigned in\n>      (mode_for_size (size, MODE_DECIMAL_FLOAT, 0));\n>  }\n>\n> -/* Similar to mode_for_size, but find the smallest mode for a given width.  */\n> -\n>  extern machine_mode smallest_mode_for_size (unsigned int, enum mode_class);\n>\n>  /* Find the narrowest integer mode that contains at least SIZE bits.\n> @@ -695,17 +693,9 @@ smallest_int_mode_for_size (unsigned int\n>    return as_a <scalar_int_mode> (smallest_mode_for_size (size, MODE_INT));\n>  }\n>\n> -/* Return an integer mode of exactly the same size as the input mode.  */\n> -\n>  extern opt_scalar_int_mode int_mode_for_mode (machine_mode);\n> -\n>  extern machine_mode bitwise_mode_for_mode (machine_mode);\n> -\n> -/* Return a mode that is suitable for representing a vector,\n> -   or BLKmode on failure.  */\n> -\n> -extern machine_mode mode_for_vector (scalar_mode, unsigned);\n> -\n> +extern opt_machine_mode mode_for_vector (scalar_mode, unsigned);\n>  extern opt_machine_mode mode_for_int_vector (unsigned int, unsigned int);\n>\n>  /* Return the integer vector equivalent of MODE, if one exists.  In other\n> Index: gcc/stor-layout.c\n> ===================================================================\n> --- gcc/stor-layout.c   2017-09-04 12:18:53.153306182 +0100\n> +++ gcc/stor-layout.c   2017-09-04 12:18:55.824344959 +0100\n> @@ -471,11 +471,11 @@ bitwise_type_for_mode (machine_mode mode\n>    return inner_type;\n>  }\n>\n> -/* Find a mode that is suitable for representing a vector with\n> -   NUNITS elements of mode INNERMODE.  Returns BLKmode if there\n> -   is no suitable mode.  */\n> +/* Find a mode that is suitable for representing a vector with NUNITS\n> +   elements of mode INNERMODE, if one exists.  The returned mode can be\n> +   either an integer mode or a vector mode.  */\n>\n> -machine_mode\n> +opt_machine_mode\n>  mode_for_vector (scalar_mode innermode, unsigned nunits)\n>  {\n>    machine_mode mode;\n> @@ -499,22 +499,18 @@ mode_for_vector (scalar_mode innermode,\n>    FOR_EACH_MODE_FROM (mode, mode)\n>      if (GET_MODE_NUNITS (mode) == nunits\n>         && GET_MODE_INNER (mode) == innermode)\n> -      break;\n> +      return mode;\n>\n>    /* For integers, try mapping it to a same-sized scalar mode.  */\n> -  if (mode == VOIDmode\n> -      && GET_MODE_CLASS (innermode) == MODE_INT)\n> +  if (GET_MODE_CLASS (innermode) == MODE_INT)\n>      {\n>        unsigned int nbits = nunits * GET_MODE_BITSIZE (innermode);\n> -      mode = int_mode_for_size (nbits, 0).else_blk ();\n> +      if (int_mode_for_size (nbits, 0).exists (&mode)\n> +         && have_regs_of_mode[mode])\n> +       return mode;\n>      }\n>\n> -  if (mode == VOIDmode\n> -      || (GET_MODE_CLASS (mode) == MODE_INT\n> -         && !have_regs_of_mode[mode]))\n> -    return BLKmode;\n> -\n> -  return mode;\n> +  return opt_machine_mode ();\n>  }\n>\n>  /* Return the mode for a vector that has NUNITS integer elements of\n> @@ -525,12 +521,10 @@ mode_for_vector (scalar_mode innermode,\n>  mode_for_int_vector (unsigned int int_bits, unsigned int nunits)\n>  {\n>    scalar_int_mode int_mode;\n> -  if (int_mode_for_size (int_bits, 0).exists (&int_mode))\n> -    {\n> -      machine_mode vec_mode = mode_for_vector (int_mode, nunits);\n> -      if (vec_mode != BLKmode)\n> -       return vec_mode;\n> -    }\n> +  machine_mode vec_mode;\n> +  if (int_mode_for_size (int_bits, 0).exists (&int_mode)\n> +      && mode_for_vector (int_mode, nunits).exists (&vec_mode))\n> +    return vec_mode;\n>    return opt_machine_mode ();\n>  }\n>\n> @@ -2264,7 +2258,7 @@ layout_type (tree type)\n>         if (TYPE_MODE (type) == VOIDmode)\n>           SET_TYPE_MODE (type,\n>                          mode_for_vector (SCALAR_TYPE_MODE (innertype),\n> -                                         nunits));\n> +                                         nunits).else_blk ());\n>\n>         TYPE_SATURATING (type) = TYPE_SATURATING (TREE_TYPE (type));\n>          TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TREE_TYPE (type));\n> Index: gcc/config/i386/i386.c\n> ===================================================================\n> --- gcc/config/i386/i386.c      2017-09-04 12:18:44.903326171 +0100\n> +++ gcc/config/i386/i386.c      2017-09-04 12:18:55.808284598 +0100\n> @@ -27420,9 +27420,8 @@ emit_memmov (rtx destmem, rtx *srcmem, r\n>    if (GET_MODE_SIZE (move_mode) > GET_MODE_SIZE (word_mode))\n>      {\n>        int nunits = GET_MODE_SIZE (move_mode) / GET_MODE_SIZE (word_mode);\n> -      move_mode = mode_for_vector (word_mode, nunits);\n> -      code = optab_handler (mov_optab, move_mode);\n> -      if (code == CODE_FOR_nothing)\n> +      if (!mode_for_vector (word_mode, nunits).exists (&move_mode)\n> +         || (code = optab_handler (mov_optab, move_mode)) == CODE_FOR_nothing)\n>         {\n>           move_mode = word_mode;\n>           piece_size = GET_MODE_SIZE (move_mode);\n> @@ -28654,8 +28653,8 @@ ix86_expand_set_or_movmem (rtx dst, rtx\n>        if (GET_MODE_SIZE (move_mode) > GET_MODE_SIZE (word_mode))\n>         {\n>           int nunits = GET_MODE_SIZE (move_mode) / GET_MODE_SIZE (word_mode);\n> -         move_mode = mode_for_vector (word_mode, nunits);\n> -         if (optab_handler (mov_optab, move_mode) == CODE_FOR_nothing)\n> +         if (!mode_for_vector (word_mode, nunits).exists (&move_mode)\n> +             || optab_handler (mov_optab, move_mode) == CODE_FOR_nothing)\n>             move_mode = word_mode;\n>         }\n>        gcc_assert (optab_handler (mov_optab, move_mode) != CODE_FOR_nothing);\n> @@ -44497,11 +44496,9 @@ ix86_expand_vector_init (bool mmx_ok, rt\n>           rtx ops[2] = { XVECEXP (vals, 0, 0), XVECEXP (vals, 0, 1) };\n>           if (inner_mode == QImode || inner_mode == HImode)\n>             {\n> -             mode = mode_for_vector (SImode,\n> -                                     n_elts * GET_MODE_SIZE (inner_mode) / 4);\n> -             inner_mode\n> -               = mode_for_vector (SImode,\n> -                                  n_elts * GET_MODE_SIZE (inner_mode) / 8);\n> +             unsigned int n_bits = n_elts * GET_MODE_SIZE (inner_mode);\n> +             mode = mode_for_vector (SImode, n_bits / 4).require ();\n> +             inner_mode = mode_for_vector (SImode, n_bits / 8).require ();\n>               ops[0] = gen_lowpart (inner_mode, ops[0]);\n>               ops[1] = gen_lowpart (inner_mode, ops[1]);\n>               subtarget = gen_reg_rtx (mode);\n> @@ -51619,7 +51616,7 @@ ix86_get_mask_mode (unsigned nunits, uns\n>\n>    gcc_assert (elem_size * nunits == vector_size);\n>\n> -  return mode_for_vector (elem_mode, nunits);\n> +  return mode_for_vector (elem_mode, nunits).else_blk ();\n>  }\n>\n>\n> Index: gcc/config/powerpcspe/powerpcspe.c\n> ===================================================================\n> --- gcc/config/powerpcspe/powerpcspe.c  2017-09-04 12:18:53.148287319 +0100\n> +++ gcc/config/powerpcspe/powerpcspe.c  2017-09-04 12:18:55.812299689 +0100\n> @@ -38679,7 +38679,7 @@ rs6000_expand_vec_perm_const_1 (rtx targ\n>\n>        vmode = GET_MODE (target);\n>        gcc_assert (GET_MODE_NUNITS (vmode) == 2);\n> -      dmode = mode_for_vector (GET_MODE_INNER (vmode), 4);\n> +      dmode = mode_for_vector (GET_MODE_INNER (vmode), 4).require ();\n>        x = gen_rtx_VEC_CONCAT (dmode, op0, op1);\n>        v = gen_rtvec (2, GEN_INT (perm0), GEN_INT (perm1));\n>        x = gen_rtx_VEC_SELECT (vmode, x, gen_rtx_PARALLEL (VOIDmode, v));\n> Index: gcc/config/rs6000/rs6000.c\n> ===================================================================\n> --- gcc/config/rs6000/rs6000.c  2017-09-04 12:18:53.151298637 +0100\n> +++ gcc/config/rs6000/rs6000.c  2017-09-04 12:18:55.815311006 +0100\n> @@ -35525,7 +35525,7 @@ rs6000_expand_vec_perm_const_1 (rtx targ\n>\n>        vmode = GET_MODE (target);\n>        gcc_assert (GET_MODE_NUNITS (vmode) == 2);\n> -      dmode = mode_for_vector (GET_MODE_INNER (vmode), 4);\n> +      dmode = mode_for_vector (GET_MODE_INNER (vmode), 4).require ();\n>        x = gen_rtx_VEC_CONCAT (dmode, op0, op1);\n>        v = gen_rtvec (2, GEN_INT (perm0), GEN_INT (perm1));\n>        x = gen_rtx_VEC_SELECT (vmode, x, gen_rtx_PARALLEL (VOIDmode, v));\n> Index: gcc/expmed.c\n> ===================================================================\n> --- gcc/expmed.c        2017-09-04 12:18:50.673054653 +0100\n> +++ gcc/expmed.c        2017-09-04 12:18:55.817318551 +0100\n> @@ -1578,10 +1578,11 @@ extract_bit_field_1 (rtx str_rtx, unsign\n>        machine_mode new_mode = GET_MODE (op0);\n>        if (GET_MODE_INNER (new_mode) != GET_MODE_INNER (tmode))\n>         {\n> -         new_mode = mode_for_vector (GET_MODE_INNER (tmode),\n> -                                     GET_MODE_BITSIZE (GET_MODE (op0))\n> -                                     / GET_MODE_UNIT_BITSIZE (tmode));\n> -         if (!VECTOR_MODE_P (new_mode)\n> +         scalar_mode inner_mode = GET_MODE_INNER (tmode);\n> +         unsigned int nunits = (GET_MODE_BITSIZE (GET_MODE (op0))\n> +                                / GET_MODE_UNIT_BITSIZE (tmode));\n> +         if (!mode_for_vector (inner_mode, nunits).exists (&new_mode)\n> +             || !VECTOR_MODE_P (new_mode)\n>               || GET_MODE_SIZE (new_mode) != GET_MODE_SIZE (GET_MODE (op0))\n>               || GET_MODE_INNER (new_mode) != GET_MODE_INNER (tmode)\n>               || !targetm.vector_mode_supported_p (new_mode))\n> Index: gcc/expr.c\n> ===================================================================\n> --- gcc/expr.c  2017-09-04 12:18:44.938520082 +0100\n> +++ gcc/expr.c  2017-09-04 12:18:55.820329869 +0100\n> @@ -9445,7 +9445,7 @@ #define REDUCE_BIT_FIELD(expr)    (reduce_b\n>           tree sel_type = TREE_TYPE (treeop2);\n>           machine_mode vmode\n>             = mode_for_vector (SCALAR_TYPE_MODE (TREE_TYPE (sel_type)),\n> -                              TYPE_VECTOR_SUBPARTS (sel_type));\n> +                              TYPE_VECTOR_SUBPARTS (sel_type)).require ();\n>           gcc_assert (GET_MODE_CLASS (vmode) == MODE_VECTOR_INT);\n>           op2 = simplify_subreg (vmode, op2, TYPE_MODE (sel_type), 0);\n>           gcc_assert (op2 && GET_CODE (op2) == CONST_VECTOR);\n> Index: gcc/optabs-query.c\n> ===================================================================\n> --- gcc/optabs-query.c  2017-08-30 12:20:31.700622400 +0100\n> +++ gcc/optabs-query.c  2017-09-04 12:18:55.821333642 +0100\n> @@ -376,10 +376,9 @@ can_vec_perm_p (machine_mode mode, bool\n>      return true;\n>\n>    /* We allow fallback to a QI vector mode, and adjust the mask.  */\n> -  if (GET_MODE_INNER (mode) == QImode)\n> -    return false;\n> -  qimode = mode_for_vector (QImode, GET_MODE_SIZE (mode));\n> -  if (!VECTOR_MODE_P (qimode))\n> +  if (GET_MODE_INNER (mode) == QImode\n> +      || !mode_for_vector (QImode, GET_MODE_SIZE (mode)).exists (&qimode)\n> +      || !VECTOR_MODE_P (qimode))\n>      return false;\n>\n>    /* ??? For completeness, we ought to check the QImode version of\n> @@ -547,12 +546,14 @@ can_vec_mask_load_store_p (machine_mode\n>        vector_sizes &= ~cur;\n>        if (cur <= GET_MODE_SIZE (smode))\n>         continue;\n> -      vmode = mode_for_vector (smode, cur / GET_MODE_SIZE (smode));\n> -      mask_mode = targetm.vectorize.get_mask_mode (GET_MODE_NUNITS (vmode),\n> -                                                  cur);\n> -      if (VECTOR_MODE_P (vmode)\n> -         && convert_optab_handler (op, vmode, mask_mode) != CODE_FOR_nothing)\n> -       return true;\n> +      unsigned int nunits = cur / GET_MODE_SIZE (smode);\n> +      if (mode_for_vector (smode, nunits).exists (&vmode)\n> +         && VECTOR_MODE_P (vmode))\n> +       {\n> +         mask_mode = targetm.vectorize.get_mask_mode (nunits, cur);\n> +         if (convert_optab_handler (op, vmode, mask_mode) != CODE_FOR_nothing)\n> +           return true;\n> +       }\n>      }\n>    return false;\n>  }\n> Index: gcc/optabs.c\n> ===================================================================\n> --- gcc/optabs.c        2017-09-04 11:48:08.609549644 +0100\n> +++ gcc/optabs.c        2017-09-04 12:18:55.823341187 +0100\n> @@ -5434,13 +5434,10 @@ expand_vec_perm (machine_mode mode, rtx\n>\n>    /* Set QIMODE to a different vector mode with byte elements.\n>       If no such mode, or if MODE already has byte elements, use VOIDmode.  */\n> -  qimode = VOIDmode;\n> -  if (GET_MODE_INNER (mode) != QImode)\n> -    {\n> -      qimode = mode_for_vector (QImode, w);\n> -      if (!VECTOR_MODE_P (qimode))\n> -       qimode = VOIDmode;\n> -    }\n> +  if (GET_MODE_INNER (mode) == QImode\n> +      || !mode_for_vector (QImode, w).exists (&qimode)\n> +      || !VECTOR_MODE_P (qimode))\n> +    qimode = VOIDmode;\n>\n>    /* If the input is a constant, expand it specially.  */\n>    gcc_assert (GET_MODE_CLASS (GET_MODE (sel)) == MODE_VECTOR_INT);\n> Index: gcc/targhooks.c\n> ===================================================================\n> --- gcc/targhooks.c     2017-09-04 11:50:24.568774867 +0100\n> +++ gcc/targhooks.c     2017-09-04 12:18:55.825348732 +0100\n> @@ -1210,8 +1210,8 @@ default_get_mask_mode (unsigned nunits,\n>\n>    gcc_assert (elem_size * nunits == vector_size);\n>\n> -  vector_mode = mode_for_vector (elem_mode, nunits);\n> -  if (!VECTOR_MODE_P (vector_mode)\n> +  if (!mode_for_vector (elem_mode, nunits).exists (&vector_mode)\n> +      || !VECTOR_MODE_P (vector_mode)\n>        || !targetm.vector_mode_supported_p (vector_mode))\n>      vector_mode = BLKmode;\n>\n> Index: gcc/tree-vect-stmts.c\n> ===================================================================\n> --- gcc/tree-vect-stmts.c       2017-08-31 07:32:43.676061469 +0100\n> +++ gcc/tree-vect-stmts.c       2017-09-04 12:18:55.828360049 +0100\n> @@ -6032,8 +6032,9 @@ vectorizable_store (gimple *stmt, gimple\n>               /* First check if vec_extract optab doesn't support extraction\n>                  of vector elts directly.  */\n>               scalar_mode elmode = SCALAR_TYPE_MODE (elem_type);\n> -             machine_mode vmode = mode_for_vector (elmode, group_size);\n> -             if (! VECTOR_MODE_P (vmode)\n> +             machine_mode vmode;\n> +             if (!mode_for_vector (elmode, group_size).exists (&vmode)\n> +                 || !VECTOR_MODE_P (vmode)\n>                   || (convert_optab_handler (vec_extract_optab,\n>                                              TYPE_MODE (vectype), vmode)\n>                       == CODE_FOR_nothing))\n> @@ -6046,11 +6047,12 @@ vectorizable_store (gimple *stmt, gimple\n>                   unsigned lsize\n>                     = group_size * GET_MODE_BITSIZE (elmode);\n>                   elmode = int_mode_for_size (lsize, 0).require ();\n> -                 vmode = mode_for_vector (elmode, nunits / group_size);\n>                   /* If we can't construct such a vector fall back to\n>                      element extracts from the original vector type and\n>                      element size stores.  */\n> -                 if (VECTOR_MODE_P (vmode)\n> +                 if (mode_for_vector (elmode,\n> +                                      nunits / group_size).exists (&vmode)\n> +                     && VECTOR_MODE_P (vmode)\n>                       && (convert_optab_handler (vec_extract_optab,\n>                                                  vmode, elmode)\n>                           != CODE_FOR_nothing))\n> @@ -7070,8 +7072,9 @@ vectorizable_load (gimple *stmt, gimple_\n>               /* First check if vec_init optab supports construction from\n>                  vector elts directly.  */\n>               scalar_mode elmode = SCALAR_TYPE_MODE (TREE_TYPE (vectype));\n> -             machine_mode vmode = mode_for_vector (elmode, group_size);\n> -             if (VECTOR_MODE_P (vmode)\n> +             machine_mode vmode;\n> +             if (mode_for_vector (elmode, group_size).exists (&vmode)\n> +                 && VECTOR_MODE_P (vmode)\n>                   && (convert_optab_handler (vec_init_optab,\n>                                              TYPE_MODE (vectype), vmode)\n>                       != CODE_FOR_nothing))\n> @@ -7092,10 +7095,11 @@ vectorizable_load (gimple *stmt, gimple_\n>                   unsigned lsize\n>                     = group_size * TYPE_PRECISION (TREE_TYPE (vectype));\n>                   elmode = int_mode_for_size (lsize, 0).require ();\n> -                 vmode = mode_for_vector (elmode, nunits / group_size);\n>                   /* If we can't construct such a vector fall back to\n>                      element loads of the original vector type.  */\n> -                 if (VECTOR_MODE_P (vmode)\n> +                 if (mode_for_vector (elmode,\n> +                                      nunits / group_size).exists (&vmode)\n> +                     && VECTOR_MODE_P (vmode)\n>                       && (convert_optab_handler (vec_init_optab, vmode, elmode)\n>                           != CODE_FOR_nothing))\n>                     {\n> @@ -9098,8 +9102,8 @@ get_vectype_for_scalar_type_and_size (tr\n>       lookup a vector mode of the specified size.  */\n>    if (size == 0)\n>      simd_mode = targetm.vectorize.preferred_simd_mode (inner_mode);\n> -  else\n> -    simd_mode = mode_for_vector (inner_mode, size / nbytes);\n> +  else if (!mode_for_vector (inner_mode, size / nbytes).exists (&simd_mode))\n> +    return NULL_TREE;\n>    nunits = GET_MODE_SIZE (simd_mode) / nbytes;\n>    /* NOTE: nunits == 1 is allowed to support single element vector types.  */\n>    if (nunits < 1)","headers":{"Return-Path":"<gcc-patches-return-461493-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-461493-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=\"UsxiFbAv\"; 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 3xml7X0qqsz9sNq\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 21:37:27 +1000 (AEST)","(qmail 53677 invoked by alias); 5 Sep 2017 11:37:18 -0000","(qmail 53668 invoked by uid 89); 5 Sep 2017 11:37:17 -0000","from mail-wm0-f52.google.com (HELO mail-wm0-f52.google.com)\n\t(74.125.82.52) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tTue, 05 Sep 2017 11:37:10 +0000","by mail-wm0-f52.google.com with SMTP id i145so17965781wmf.1 for\n\t<gcc-patches@gcc.gnu.org>; Tue, 05 Sep 2017 04:37:09 -0700 (PDT)","by 10.80.180.205 with HTTP; Tue, 5 Sep 2017 04:37:06 -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:content-type; q=dns; s=default; b=L4y+NPg2vAERaB/ZL4\n\tMmWuh7bwhZGZ9t2JIIuQSIsE3BjIXcYPEUnXh+eDnUiijhP/tgBueRuRzvVdD2vg\n\trkEu53+B91TRck9H2d+cwILeN6xj5iWl2IDAOupxyLdiBHsxJfaXn+sWANRhcKja\n\tKqSVtldQK572RE8+Ob44ZY/3E=","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:content-type; s=default; bh=hfwpigWDNKcaASH5KHbXc9X9\n\tDUI=; b=UsxiFbAv7WqMBns61DoT6y8T0de32p6Lqq4illAeuJ98ewrHxNlvZQDq\n\tlbbwTQ/Irdxx/fUHZmuXnlPnspDTA6dezx1alKg0suGCsbiYC/HVCl22F4ZaHTF6\n\tlyr+RRb0IsJ0NMqU5gg6z0uR9QJN65AdK2nt9QuxySnhGrbrYPg=","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=-9.8 required=5.0 tests=AWL, BAYES_00,\n\tFREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS,\n\tRCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"mail-wm0-f52.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;\n\tbh=UWEGZYoX+gVyB3lahOi5SpkHQT1j200g8NGArz7g9gc=;\n\tb=mTIOj5/iIRWJhD1B1WSGdt3Y9mBJIa9oNq4xNFx4rmfmTrOEKzOTd8YM76pn5dtLy1\n\tSVWsapRou8/FaCugkg37zhcRXvXapipNpLL6ylSAFGrabRNmNRXQ3mr3DV/hzQyBSQnd\n\taX689RswNf/ogi6vZRKBqVNb02l2lp8sS9osHieGdVNcffmjwP1VEQdsjCZkJEcTDCWY\n\t3S4H4diyaOVei/Rty82DZ1W/hDhZKZta4Xal7iahqNuKnxii2sw7aBG7xl5xVQFm8a+2\n\t6ARmr+/QmYCM6wEePRtD9jfZThkluc7xHIfjMdPv5S0pL2bV+qbW3n7AN8+x4q0Hf6q4\n\tSu+g==","X-Gm-Message-State":"AHPjjUh17as9Za6UcF1dkzN+hsOvu+4q1exeFhrJeRL/24y8SI1a1wYJ\tvJOMDhH2C7KO3X2+ouGDWXCYb+hp9Dxd","X-Google-Smtp-Source":"ADKCNb7hVdJ7KgHadvgvIodYaj843WEYxV0KwFdIDJdJ7p3gRL4bVc72+rhp+t/flbx767PILt/vWv+YiTyqvIi0s4w=","X-Received":"by 10.80.193.10 with SMTP id l10mr3105443edf.292.1504611427246;\n\tTue, 05 Sep 2017 04:37:07 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<873782itg4.fsf@linaro.org>","References":"<87tw0iiu51.fsf@linaro.org> <873782itg4.fsf@linaro.org>","From":"Richard Biener <richard.guenther@gmail.com>","Date":"Tue, 5 Sep 2017 13:37:06 +0200","Message-ID":"<CAFiYyc1Dzu5eC7F9_uTszL_kGpZV10cyd979vB6EN7XCUYq-8w@mail.gmail.com>","Subject":"Re: [6/9] Make mode_for_vector return an opt_mode","To":"GCC Patches <gcc-patches@gcc.gnu.org>,\n\tRichard Sandiford <richard.sandiford@linaro.org>","Content-Type":"text/plain; charset=\"UTF-8\"","X-IsSubscribed":"yes"}}]