/* Generated automatically by the program `genrecog' from the target
   machine description file.  */

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "predict.h"
#include "rtl.h"
#include "tm_p.h"
#include "emit-rtl.h"
#include "insn-config.h"
#include "recog.h"
#include "output.h"
#include "flags.h"
#include "df.h"
#include "resource.h"
#include "diagnostic-core.h"
#include "reload.h"
#include "regs.h"
#include "tm-constrs.h"



/* `recog' contains a decision tree that recognizes whether the rtx
   X0 is a valid instruction.

   recog returns -1 if the rtx is not valid.  If the rtx is valid, recog
   returns a nonnegative number which is the insn code number for the
   pattern that matched.  This is the same as the order in the machine
   description of the entry that matched.  This number can be used as an
   index into `insn_data' and other tables.

   The third parameter to recog is an optional pointer to an int.  If
   present, recog will accept a pattern if it matches except for missing
   CLOBBER expressions at the end.  In that case, the value pointed to by
   the optional pointer will be set to the number of CLOBBERs that need
   to be added (it should be initialized to zero by the caller).  If it
   is set nonzero, the caller should allocate a PARALLEL of the
   appropriate size, copy the initial entries, and call add_clobbers
   (found in insn-emit.c) to fill in the CLOBBERs.


   The function split_insns returns 0 if the rtl could not
   be split or the split rtl as an INSN list if it can be.

   The function peephole2_insns returns 0 if the rtl could not
   be matched. If there was a match, the new rtl is returned in an INSN list,
   and LAST_INSN will point to the last recognized insn in the old sequence.
*/


extern rtx_insn *gen_split_1 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_2 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_3 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_4 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_5 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_6 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_7 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_8 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_9 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_10 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_11 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_12 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_13 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_1 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_2 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_3 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_14 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_15 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_16 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_17 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_18 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_19 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_20 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_21 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_22 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_23 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_24 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_25 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_26 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_27 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_28 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_29 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_30 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_31 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_32 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_33 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_34 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_35 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_36 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_37 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_38 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_39 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_40 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_41 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_42 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_43 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_44 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_45 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_46 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_47 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_48 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_49 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_50 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_51 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_52 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_53 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_54 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_55 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_56 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_57 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_58 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_59 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_60 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_61 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_62 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_63 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_64 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_65 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_66 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_67 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_68 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_69 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_70 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_71 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_72 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_73 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_74 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_75 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_76 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_77 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_78 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_79 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_80 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_81 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_82 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_83 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_84 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_85 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_86 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_87 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_88 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_89 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_90 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_91 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_92 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_93 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_94 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_95 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_96 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_97 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_98 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_99 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_100 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_101 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_102 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_103 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_104 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_105 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_106 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_107 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_108 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_109 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_110 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_111 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_112 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_113 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_114 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_115 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_116 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_117 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_118 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_119 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_120 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_121 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_122 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_123 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_124 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_125 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_126 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_127 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_128 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_129 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_130 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_131 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_132 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_133 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_134 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_135 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_136 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_137 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_138 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_139 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_140 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_141 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_142 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_143 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_144 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_145 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_146 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_147 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_148 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_149 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_150 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_151 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_152 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_153 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_154 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_155 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_156 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_157 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_158 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_159 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_160 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_161 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_162 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_163 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_164 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_165 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_166 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_167 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_168 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_169 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_170 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_171 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_172 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_173 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_174 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_175 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_176 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_177 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_178 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_179 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_180 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_181 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_182 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_183 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_184 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_185 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_186 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_187 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_188 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_189 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_190 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_191 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_192 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_193 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_194 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_195 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_196 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_197 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_198 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_199 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_200 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_201 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_202 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_203 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_204 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_205 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_206 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_207 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_208 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_209 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_210 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_211 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_212 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_213 (rtx_insn *, rtx *);
extern rtx_insn *gen_split_214 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_4 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_5 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_6 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_7 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_8 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_9 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_10 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_11 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_12 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_13 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_14 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_15 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_16 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_17 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_18 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_19 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_20 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_21 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_22 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_23 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_24 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_25 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_26 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_27 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_28 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_29 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_30 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_31 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_32 (rtx_insn *, rtx *);
extern rtx_insn *gen_peephole2_33 (rtx_insn *, rtx *);




static int
pattern0 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 1;

    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode))
        return -1;
      return 2;

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode))
        return -1;
      return 3;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode))
        return -1;
      return 4;

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 5;

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode))
        return -1;
      return 6;

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern1 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern2 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  return pattern1 (x3); /* [-1, 1] */
}

static int
pattern3 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_rshift_imm (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern4 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  switch (GET_CODE (operands[2]))
    {
    case CONST_INT:
    case REG:
    case SUBREG:
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          return 0;

        case DImode:
          return 1;

        case QImode:
          return 2;

        case HImode:
          return 3;

        default:
          return -1;
        }

    case CONST_VECTOR:
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern3 (x3, V8QImode) != 0)
            return -1;
          return 4;

        case V16QImode:
          if (pattern3 (x3, V16QImode) != 0)
            return -1;
          return 5;

        case V4HImode:
          if (pattern3 (x3, V4HImode) != 0)
            return -1;
          return 6;

        case V8HImode:
          if (pattern3 (x3, V8HImode) != 0)
            return -1;
          return 7;

        case V2SImode:
          if (pattern3 (x3, V2SImode) != 0)
            return -1;
          return 8;

        case V4SImode:
          if (pattern3 (x3, V4SImode) != 0)
            return -1;
          return 9;

        case V2DImode:
          if (pattern3 (x3, V2DImode) != 0)
            return -1;
          return 10;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern5 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  if (!const_int_operand (operands[2], VOIDmode))
    return -1;
  return pattern1 (x3); /* [-1, 1] */
}

static int
pattern6 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  switch (GET_MODE (x2))
    {
    case HFmode:
      if (!register_operand (operands[1], HFmode))
        return -1;
      return 0;

    case SFmode:
      if (!register_operand (operands[1], SFmode))
        return -1;
      return 1;

    case DFmode:
      if (!register_operand (operands[1], DFmode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern7 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern8 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XVECEXP (x2, 0, 0);
  operands[1] = x3;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern6 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern6 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    case V4HImode:
      if (pattern7 (x1, V4HFmode, V4HImode) != 0)
        return -1;
      return 6;

    case V8HImode:
      if (pattern7 (x1, V8HFmode, V8HImode) != 0)
        return -1;
      return 7;

    case V2SImode:
      if (pattern7 (x1, V2SFmode, V2SImode) != 0)
        return -1;
      return 8;

    case V4SImode:
      if (pattern7 (x1, V4SFmode, V4SImode) != 0)
        return -1;
      return 9;

    case V2DImode:
      if (pattern7 (x1, V2DFmode, V2DImode) != 0)
        return -1;
      return 10;

    case HImode:
      if (!register_operand (operands[0], HImode)
          || GET_MODE (x1) != HImode
          || GET_MODE (x2) != HFmode
          || !register_operand (operands[1], HFmode))
        return -1;
      return 11;

    default:
      return -1;
    }
}

static int
pattern9 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XVECEXP (x2, 0, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_fp_vec_pow2 (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern10 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  switch (GET_MODE (x2))
    {
    case SFmode:
      if (!register_operand (operands[1], SFmode)
          || !aarch64_fp_pow2 (operands[2], SFmode))
        return -1;
      return 0;

    case DFmode:
      if (!register_operand (operands[1], DFmode)
          || !aarch64_fp_pow2 (operands[2], DFmode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern11 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case HFmode:
      if (!register_operand (operands[1], HFmode))
        return -1;
      return 0;

    case SFmode:
      if (!register_operand (operands[1], SFmode))
        return -1;
      return 1;

    case DFmode:
      if (!register_operand (operands[1], DFmode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern12 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case UNSPEC:
      if (XVECLEN (x4, 0) != 1)
        return -1;
      switch (XINT (x4, 1))
        {
        case 21:
          x5 = XVECEXP (x4, 0, 0);
          switch (GET_CODE (x5))
            {
            case REG:
            case SUBREG:
              return pattern8 (x3); /* [-1, 11] */

            case MULT:
              x6 = XEXP (x5, 0);
              operands[1] = x6;
              x7 = XEXP (x5, 1);
              operands[2] = x7;
              switch (GET_MODE (operands[0]))
                {
                case V2SImode:
                  if (pattern9 (x3, V2SFmode, V2SImode) != 0)
                    return -1;
                  return 12;

                case V4SImode:
                  if (pattern9 (x3, V4SFmode, V4SImode) != 0)
                    return -1;
                  return 13;

                case V2DImode:
                  if (pattern9 (x3, V2DFmode, V2DImode) != 0)
                    return -1;
                  return 14;

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 19:
          res = pattern8 (x3);
          if (res >= 0)
            return res + 15; /* [15, 26] */
          return -1;

        case 17:
          res = pattern8 (x3);
          if (res >= 0)
            return res + 27; /* [27, 38] */
          return -1;

        case 15:
          res = pattern8 (x3);
          if (res >= 0)
            return res + 39; /* [39, 50] */
          return -1;

        case 18:
          res = pattern8 (x3);
          if (res >= 0)
            return res + 51; /* [51, 62] */
          return -1;

        default:
          return -1;
        }

    case MULT:
      x8 = XEXP (x4, 0);
      operands[1] = x8;
      x9 = XEXP (x4, 1);
      operands[2] = x9;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          res = pattern10 (x3, SImode);
          if (res >= 0)
            return res + 63; /* [63, 64] */
          return -1;

        case DImode:
          res = pattern10 (x3, DImode);
          if (res >= 0)
            return res + 65; /* [65, 66] */
          return -1;

        default:
          return -1;
        }

    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          res = pattern11 (x3, SImode);
          if (res >= 0)
            return res + 67; /* [67, 69] */
          return -1;

        case DImode:
          res = pattern11 (x3, DImode);
          if (res >= 0)
            return res + 70; /* [70, 72] */
          return -1;

        case HImode:
          if (!register_operand (operands[0], HImode)
              || GET_MODE (x3) != HImode
              || !register_operand (operands[1], HFmode))
            return -1;
          return 73;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern13 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case SImode:
          if (!register_operand (operands[1], SImode))
            return -1;
          return 0;

        case DImode:
          if (!register_operand (operands[1], DImode))
            return -1;
          return 1;

        default:
          return -1;
        }

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case DImode:
          if (!register_operand (operands[1], DImode))
            return -1;
          return 2;

        case SImode:
          if (!register_operand (operands[1], SImode))
            return -1;
          return 3;

        default:
          return -1;
        }

    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case SImode:
          if (!register_operand (operands[1], SImode))
            return -1;
          return 4;

        case DImode:
          if (!register_operand (operands[1], DImode))
            return -1;
          return 5;

        case HImode:
          if (!register_operand (operands[1], HImode))
            return -1;
          return 6;

        default:
          return -1;
        }

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HImode))
        return -1;
      return 7;

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 8;

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SImode))
        return -1;
      return 9;

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 10;

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DImode))
        return -1;
      return 11;

    default:
      return -1;
    }
}

static int
pattern14 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern15 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case SFmode:
      return pattern14 (x3, SFmode); /* [-1, 0] */

    case DFmode:
      if (pattern14 (x3, DFmode) != 0)
        return -1;
      return 1;

    case V8QImode:
      if (pattern14 (x3, V8QImode) != 0)
        return -1;
      return 2;

    case V16QImode:
      if (pattern14 (x3, V16QImode) != 0)
        return -1;
      return 3;

    case V4HImode:
      if (pattern14 (x3, V4HImode) != 0)
        return -1;
      return 4;

    case V8HImode:
      if (pattern14 (x3, V8HImode) != 0)
        return -1;
      return 5;

    case V2SImode:
      if (pattern14 (x3, V2SImode) != 0)
        return -1;
      return 6;

    case V4SImode:
      if (pattern14 (x3, V4SImode) != 0)
        return -1;
      return 7;

    case V4HFmode:
      if (pattern14 (x3, V4HFmode) != 0)
        return -1;
      return 8;

    case V8HFmode:
      if (pattern14 (x3, V8HFmode) != 0)
        return -1;
      return 9;

    case V2SFmode:
      if (pattern14 (x3, V2SFmode) != 0)
        return -1;
      return 10;

    case V4SFmode:
      if (pattern14 (x3, V4SFmode) != 0)
        return -1;
      return 11;

    case V2DFmode:
      if (pattern14 (x3, V2DFmode) != 0)
        return -1;
      return 12;

    default:
      return -1;
    }
}

static int
pattern16 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern14 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern14 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern14 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern14 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern14 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern14 (x3, V4SImode) != 0)
        return -1;
      return 5;

    default:
      return -1;
    }
}

static int
pattern17 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  operands[2] = x2;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern14 (x1, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern14 (x1, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern14 (x1, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern14 (x1, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern14 (x1, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern14 (x1, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern14 (x1, V2DImode) != 0)
        return -1;
      return 6;

    case QImode:
      if (pattern14 (x1, QImode) != 0)
        return -1;
      return 7;

    case HImode:
      if (pattern14 (x1, HImode) != 0)
        return -1;
      return 8;

    case SImode:
      if (pattern14 (x1, SImode) != 0)
        return -1;
      return 9;

    case DImode:
      if (pattern14 (x1, DImode) != 0)
        return -1;
      return 10;

    default:
      return -1;
    }
}

static int
pattern18 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i2))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[2], i1))
    return -1;
  x5 = XEXP (x3, 1);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern19 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != V4SImode)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != V4HImode)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != HImode)
    return -1;
  switch (GET_MODE (operands[3]))
    {
    case V4HImode:
      if (!register_operand (operands[3], V4HImode))
        return -1;
      return 0;

    case V8HImode:
      if (!register_operand (operands[3], V8HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern20 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != V2DImode)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != V2SImode)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  switch (GET_MODE (operands[3]))
    {
    case V2SImode:
      if (!register_operand (operands[3], V2SImode))
        return -1;
      return 0;

    case V4SImode:
      if (!register_operand (operands[3], V4SImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern21 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i3))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i3
      || !register_operand (operands[2], i2))
    return -1;
  x5 = XEXP (x3, 1);
  if (GET_MODE (x5) != i3)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i2
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern22 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i3))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i3)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[2], i1)
      || !vect_par_cnst_hi_half (operands[4], i1))
    return -1;
  x6 = XEXP (x3, 1);
  if (GET_MODE (x6) != i3)
    return -1;
  x7 = XEXP (x6, 0);
  if (GET_MODE (x7) != i2
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern23 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3, machine_mode i4)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i3))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i3)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[2], i4)
      || !vect_par_cnst_hi_half (operands[4], i4))
    return -1;
  x6 = XEXP (x3, 1);
  if (GET_MODE (x6) != i3)
    return -1;
  x7 = XEXP (x6, 0);
  if (GET_MODE (x7) != i2
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern24 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      return pattern17 (x3); /* [-1, 10] */

    case SS_ASHIFT:
      x6 = XEXP (x5, 0);
      if (GET_CODE (x6) != MULT)
        return -1;
      x7 = XEXP (x6, 0);
      if (GET_CODE (x7) != SIGN_EXTEND)
        return -1;
      x8 = XEXP (x6, 1);
      if (GET_CODE (x8) != SIGN_EXTEND)
        return -1;
      x9 = XEXP (x5, 1);
      if (x9 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
        return -1;
      x10 = XEXP (x7, 0);
      switch (GET_CODE (x10))
        {
        case REG:
        case SUBREG:
          operands[2] = x10;
          x11 = XEXP (x8, 0);
          switch (GET_CODE (x11))
            {
            case REG:
            case SUBREG:
              operands[3] = x11;
              switch (GET_MODE (operands[0]))
                {
                case V4SImode:
                  if (pattern18 (x3, V4HImode, V4SImode) != 0)
                    return -1;
                  return 11;

                case V2DImode:
                  if (pattern18 (x3, V2SImode, V2DImode) != 0)
                    return -1;
                  return 12;

                case SImode:
                  if (pattern18 (x3, HImode, SImode) != 0)
                    return -1;
                  return 13;

                case DImode:
                  if (pattern18 (x3, SImode, DImode) != 0)
                    return -1;
                  return 14;

                default:
                  return -1;
                }

            case VEC_DUPLICATE:
              x12 = XEXP (x11, 0);
              switch (GET_CODE (x12))
                {
                case VEC_SELECT:
                  x13 = XEXP (x12, 1);
                  if (GET_CODE (x13) != PARALLEL
                      || XVECLEN (x13, 0) != 1)
                    return -1;
                  x14 = XEXP (x12, 0);
                  operands[3] = x14;
                  x15 = XVECEXP (x13, 0, 0);
                  operands[4] = x15;
                  if (!immediate_operand (operands[4], SImode))
                    return -1;
                  switch (GET_MODE (operands[0]))
                    {
                    case V4SImode:
                      if (!register_operand (operands[0], V4SImode)
                          || GET_MODE (x3) != V4SImode
                          || !register_operand (operands[1], V4SImode)
                          || GET_MODE (x5) != V4SImode
                          || GET_MODE (x6) != V4SImode
                          || GET_MODE (x7) != V4SImode
                          || !register_operand (operands[2], V4HImode))
                        return -1;
                      res = pattern19 (x8);
                      if (res >= 0)
                        return res + 15; /* [15, 16] */
                      return -1;

                    case V2DImode:
                      if (!register_operand (operands[0], V2DImode)
                          || GET_MODE (x3) != V2DImode
                          || !register_operand (operands[1], V2DImode)
                          || GET_MODE (x5) != V2DImode
                          || GET_MODE (x6) != V2DImode
                          || GET_MODE (x7) != V2DImode
                          || !register_operand (operands[2], V2SImode))
                        return -1;
                      res = pattern20 (x8);
                      if (res >= 0)
                        return res + 17; /* [17, 18] */
                      return -1;

                    default:
                      return -1;
                    }

                case REG:
                case SUBREG:
                  operands[3] = x12;
                  switch (GET_MODE (operands[0]))
                    {
                    case V4SImode:
                      if (pattern21 (x3, HImode, V4HImode, V4SImode) != 0)
                        return -1;
                      return 19;

                    case V2DImode:
                      if (pattern21 (x3, SImode, V2SImode, V2DImode) != 0)
                        return -1;
                      return 20;

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            case VEC_SELECT:
              x16 = XEXP (x11, 1);
              if (GET_CODE (x16) != PARALLEL
                  || XVECLEN (x16, 0) != 1)
                return -1;
              x12 = XEXP (x11, 0);
              operands[3] = x12;
              x17 = XVECEXP (x16, 0, 0);
              operands[4] = x17;
              if (!immediate_operand (operands[4], SImode))
                return -1;
              switch (GET_MODE (operands[0]))
                {
                case SImode:
                  if (!register_operand (operands[0], SImode)
                      || GET_MODE (x3) != SImode
                      || !register_operand (operands[1], SImode)
                      || GET_MODE (x5) != SImode
                      || GET_MODE (x6) != SImode
                      || GET_MODE (x7) != SImode
                      || !register_operand (operands[2], HImode)
                      || GET_MODE (x8) != SImode
                      || GET_MODE (x11) != HImode)
                    return -1;
                  switch (GET_MODE (operands[3]))
                    {
                    case V4HImode:
                      if (!register_operand (operands[3], V4HImode))
                        return -1;
                      return 21;

                    case V8HImode:
                      if (!register_operand (operands[3], V8HImode))
                        return -1;
                      return 22;

                    default:
                      return -1;
                    }

                case DImode:
                  if (!register_operand (operands[0], DImode)
                      || GET_MODE (x3) != DImode
                      || !register_operand (operands[1], DImode)
                      || GET_MODE (x5) != DImode
                      || GET_MODE (x6) != DImode
                      || GET_MODE (x7) != DImode
                      || !register_operand (operands[2], SImode)
                      || GET_MODE (x8) != DImode
                      || GET_MODE (x11) != SImode)
                    return -1;
                  switch (GET_MODE (operands[3]))
                    {
                    case V2SImode:
                      if (!register_operand (operands[3], V2SImode))
                        return -1;
                      return 23;

                    case V4SImode:
                      if (!register_operand (operands[3], V4SImode))
                        return -1;
                      return 24;

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case VEC_SELECT:
          x18 = XEXP (x10, 0);
          operands[2] = x18;
          x11 = XEXP (x8, 0);
          switch (GET_CODE (x11))
            {
            case VEC_SELECT:
              x19 = XEXP (x10, 1);
              operands[4] = x19;
              x12 = XEXP (x11, 0);
              operands[3] = x12;
              x16 = XEXP (x11, 1);
              if (!rtx_equal_p (x16, operands[4]))
                return -1;
              switch (GET_MODE (operands[0]))
                {
                case V4SImode:
                  if (pattern22 (x3, V8HImode, V4HImode, V4SImode) != 0)
                    return -1;
                  return 25;

                case V2DImode:
                  if (pattern22 (x3, V4SImode, V2SImode, V2DImode) != 0)
                    return -1;
                  return 26;

                default:
                  return -1;
                }

            case VEC_DUPLICATE:
              x12 = XEXP (x11, 0);
              switch (GET_CODE (x12))
                {
                case VEC_SELECT:
                  x13 = XEXP (x12, 1);
                  if (GET_CODE (x13) != PARALLEL
                      || XVECLEN (x13, 0) != 1)
                    return -1;
                  x19 = XEXP (x10, 1);
                  operands[5] = x19;
                  x14 = XEXP (x12, 0);
                  operands[3] = x14;
                  x15 = XVECEXP (x13, 0, 0);
                  operands[4] = x15;
                  if (!immediate_operand (operands[4], SImode))
                    return -1;
                  switch (GET_MODE (operands[0]))
                    {
                    case V4SImode:
                      if (!register_operand (operands[0], V4SImode)
                          || GET_MODE (x3) != V4SImode
                          || !register_operand (operands[1], V4SImode)
                          || GET_MODE (x5) != V4SImode
                          || GET_MODE (x6) != V4SImode
                          || GET_MODE (x7) != V4SImode
                          || GET_MODE (x10) != V4HImode
                          || !register_operand (operands[2], V8HImode)
                          || !vect_par_cnst_hi_half (operands[5], V8HImode))
                        return -1;
                      res = pattern19 (x8);
                      if (res >= 0)
                        return res + 27; /* [27, 28] */
                      return -1;

                    case V2DImode:
                      if (!register_operand (operands[0], V2DImode)
                          || GET_MODE (x3) != V2DImode
                          || !register_operand (operands[1], V2DImode)
                          || GET_MODE (x5) != V2DImode
                          || GET_MODE (x6) != V2DImode
                          || GET_MODE (x7) != V2DImode
                          || GET_MODE (x10) != V2SImode
                          || !register_operand (operands[2], V4SImode)
                          || !vect_par_cnst_hi_half (operands[5], V4SImode))
                        return -1;
                      res = pattern20 (x8);
                      if (res >= 0)
                        return res + 29; /* [29, 30] */
                      return -1;

                    default:
                      return -1;
                    }

                case REG:
                case SUBREG:
                  operands[3] = x12;
                  x19 = XEXP (x10, 1);
                  operands[4] = x19;
                  switch (GET_MODE (operands[0]))
                    {
                    case V4SImode:
                      if (pattern23 (x3, HImode, V4HImode, V4SImode, V8HImode) != 0)
                        return -1;
                      return 31;

                    case V2DImode:
                      if (pattern23 (x3, SImode, V2SImode, V2DImode, V4SImode) != 0)
                        return -1;
                      return 32;

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern25 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  return pattern17 (x3); /* [-1, 10] */
}

static int
pattern26 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode))
        return -1;
      return 0;

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode))
        return -1;
      return 1;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode))
        return -1;
      return 2;

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 3;

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode))
        return -1;
      return 4;

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 5;

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DImode))
        return -1;
      return 6;

    case QImode:
      if (!register_operand (operands[0], QImode)
          || GET_MODE (x3) != QImode
          || !register_operand (operands[1], QImode))
        return -1;
      return 7;

    case HImode:
      if (!register_operand (operands[0], HImode)
          || GET_MODE (x3) != HImode
          || !register_operand (operands[1], HImode))
        return -1;
      return 8;

    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 9;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 10;

    default:
      return -1;
    }
}

static int
pattern27 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_imm24 (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern28 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern27 (x3, SImode); /* [-1, 0] */

    case DImode:
      if (pattern27 (x3, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern29 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  if (!aarch64_simd_register (operands[2], QImode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case DImode:
      if (!aarch64_simd_register (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !aarch64_simd_register (operands[1], DImode))
        return -1;
      return 0;

    case SImode:
      if (!aarch64_simd_register (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !aarch64_simd_register (operands[1], SImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern30 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  operands[1] = x5;
  if (!register_operand (operands[1], SImode))
    return -1;
  x6 = XEXP (x3, 1);
  operands[2] = x6;
  if (!register_operand (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern31 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      return 0;

    case ASHIFT:
      return 1;

    case ASHIFTRT:
      return 2;

    case LSHIFTRT:
      return 3;

    case ROTATERT:
      return 4;

    case ROTATE:
      return 5;

    case NOT:
      return 6;

    default:
      return -1;
    }
}

static int
pattern32 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  operands[1] = x5;
  x6 = XEXP (x4, 1);
  operands[2] = x6;
  switch (GET_MODE (operands[0]))
    {
    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode)
        return -1;
      switch (GET_MODE (x4))
        {
        case SImode:
          if (!register_operand (operands[1], SImode)
              || !aarch64_reg_or_shift_imm_si (operands[2], QImode))
            return -1;
          return 0;

        case QImode:
          if (!register_operand (operands[1], QImode)
              || !const_int_operand (operands[2], VOIDmode))
            return -1;
          return 1;

        case HImode:
          if (!register_operand (operands[1], HImode)
              || !const_int_operand (operands[2], VOIDmode))
            return -1;
          return 2;

        default:
          return -1;
        }

    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !const_int_operand (operands[2], VOIDmode))
        return -1;
      switch (GET_MODE (x4))
        {
        case QImode:
          if (!register_operand (operands[1], QImode))
            return -1;
          return 3;

        case HImode:
          if (!register_operand (operands[1], HImode))
            return -1;
          return 4;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern33 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  operands[1] = x5;
  if (!register_operand (operands[1], SImode))
    return -1;
  x6 = XEXP (x3, 1);
  operands[2] = x6;
  if (!aarch64_reg_or_shift_imm_si (operands[2], QImode))
    return -1;
  return 0;
}

static int
pattern34 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  operands[1] = x5;
  if (!register_operand (operands[1], SImode))
    return -1;
  return 0;
}

static int
pattern35 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_pluslong_strict_immedate (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern36 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  x3 = XEXP (x1, 1);
  operands[2] = x3;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern35 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern35 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern37 (rtx x1, machine_mode i1, unsigned int i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (GET_CODE (x1) != CLOBBER)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_CODE (x2) != REG
      || REGNO (x2) != i2
      || GET_MODE (x2) != i1)
    return -1;
  return 0;
}

static int
pattern38 (rtx x1, int i1, int i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != i2
      || XINT (x3, 1) != i1)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  return pattern37 (x4, CCmode, 66); /* [-1, 0] */
}

static int
pattern39 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  switch (GET_MODE (x2))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern40 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  if (!const_int_operand (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern39 (x1, SImode); /* [-1, 1] */

    case DImode:
      res = pattern39 (x1, DImode);
      if (res >= 0)
        return res + 2; /* [2, 3] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern41 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode)
        return -1;
      x2 = XEXP (x1, 0);
      if (GET_MODE (x2) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode)
          || !register_operand (operands[3], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode)
        return -1;
      x2 = XEXP (x1, 0);
      if (GET_MODE (x2) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode)
          || !register_operand (operands[3], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern42 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  x5 = XEXP (x1, 1);
  operands[3] = x5;
  return pattern41 (x1); /* [-1, 1] */
}

static int
pattern43 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_MODE (x4) != i3)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern44 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != VEC_SELECT)
    return -1;
  x4 = XEXP (x1, 0);
  x5 = XEXP (x4, 0);
  x6 = XEXP (x5, 0);
  operands[1] = x6;
  x7 = XEXP (x5, 1);
  operands[3] = x7;
  x8 = XEXP (x3, 0);
  operands[2] = x8;
  x9 = XEXP (x3, 1);
  if (!rtx_equal_p (x9, operands[3]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case V8HImode:
      return pattern43 (x1, V16QImode, V8QImode, V8HImode); /* [-1, 0] */

    case V4SImode:
      if (pattern43 (x1, V8HImode, V4HImode, V4SImode) != 0)
        return -1;
      return 1;

    case V2DImode:
      if (pattern43 (x1, V4SImode, V2SImode, V2DImode) != 0)
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern45 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      operands[1] = x3;
      return 0;

    case VEC_SELECT:
      x4 = XEXP (x1, 1);
      if (GET_CODE (x4) != i1)
        return -1;
      res = pattern44 (x1);
      if (res >= 0)
        return res + 1; /* [1, 3] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern46 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern47 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != MULT)
    return -1;
  x4 = XEXP (x2, 2);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x3, 0);
  operands[1] = x5;
  x6 = XEXP (x3, 1);
  operands[2] = x6;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  x7 = XEXP (x2, 1);
  operands[3] = x7;
  if (!const_int_operand (operands[3], VOIDmode))
    return -1;
  x8 = XEXP (x1, 1);
  operands[4] = x8;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern46 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern46 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern48 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern49 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || pattern48 (x1, i1, i2) != 0)
    return -1;
  return 0;
}

static int
pattern50 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  operands[2] = x3;
  switch (GET_MODE (operands[0]))
    {
    case V8HImode:
      return pattern49 (x1, V8QImode, V8HImode); /* [-1, 0] */

    case V4SImode:
      if (pattern49 (x1, V4HImode, V4SImode) != 0)
        return -1;
      return 1;

    case V2DImode:
      if (pattern49 (x1, V2SImode, V2DImode) != 0)
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern51 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) != i1)
    return -1;
  x3 = XEXP (x1, 0);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case VEC_SELECT:
      return pattern44 (x1); /* [-1, 2] */

    case REG:
    case SUBREG:
      operands[1] = x4;
      res = pattern50 (x1);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern52 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode
          || GET_MODE (x2) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode
          || GET_MODE (x2) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern53 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) != i1)
    return -1;
  x3 = XEXP (x1, 0);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      if (!register_operand (operands[1], SImode)
          || !register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode
          || GET_MODE (x3) != DImode
          || GET_MODE (x2) != DImode)
        return -1;
      x5 = XEXP (x2, 0);
      operands[2] = x5;
      if (!register_operand (operands[2], SImode))
        return -1;
      return 0;

    case VEC_SELECT:
      res = pattern44 (x1);
      if (res >= 0)
        return res + 1; /* [1, 3] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern54 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case VEC_SELECT:
      x4 = XEXP (x3, 1);
      if (GET_CODE (x4) != PARALLEL
          || XVECLEN (x4, 0) != 1)
        return -1;
      x5 = XEXP (x3, 0);
      operands[1] = x5;
      x6 = XVECEXP (x4, 0, 0);
      operands[2] = x6;
      if (!immediate_operand (operands[2], SImode))
        return -1;
      x7 = XEXP (x1, 1);
      operands[3] = x7;
      return 0;

    case REG:
    case SUBREG:
      operands[1] = x3;
      x7 = XEXP (x1, 1);
      operands[2] = x7;
      return 1;

    default:
      return -1;
    }
}

static int
pattern55 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != DFmode)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != PARALLEL
      || XVECLEN (x3, 0) != 1
      || !register_operand (operands[0], DFmode)
      || GET_MODE (x1) != DFmode)
    return -1;
  x4 = XEXP (x2, 0);
  operands[1] = x4;
  if (!register_operand (operands[1], V2DFmode))
    return -1;
  x5 = XVECEXP (x3, 0, 0);
  operands[2] = x5;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern56 (rtx x1, int i1, machine_mode i2, rtx_code i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != i3
      || GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x2, 1);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + i1]
      || !register_operand (operands[0], DImode)
      || GET_MODE (x1) != DImode)
    return -1;
  return 0;
}

static int
pattern57 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x1, 0);
  operands[0] = x3;
  if (!register_operand (operands[0], i1))
    return -1;
  x4 = XVECEXP (x2, 0, 0);
  operands[1] = x4;
  if (!register_operand (operands[1], i1))
    return -1;
  x5 = XVECEXP (x2, 0, 1);
  operands[2] = x5;
  if (!register_operand (operands[2], i2))
    return -1;
  return 0;
}

static int
pattern58 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x1, 0);
  operands[0] = x3;
  if (!register_operand (operands[0], i1))
    return -1;
  x4 = XVECEXP (x2, 0, 0);
  operands[1] = x4;
  if (!register_operand (operands[1], i1))
    return -1;
  x5 = XVECEXP (x2, 0, 1);
  operands[2] = x5;
  if (!register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern59 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case SFmode:
          if (!register_operand (operands[1], SFmode))
            return -1;
          return 0;

        case HFmode:
          if (!register_operand (operands[1], HFmode))
            return -1;
          return 1;

        default:
          return -1;
        }

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case DFmode:
          if (!register_operand (operands[1], DFmode))
            return -1;
          return 2;

        case HFmode:
          if (!register_operand (operands[1], HFmode))
            return -1;
          return 3;

        default:
          return -1;
        }

    case HImode:
      if (!register_operand (operands[0], HImode)
          || GET_MODE (x3) != HImode
          || !register_operand (operands[1], HFmode))
        return -1;
      return 4;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HFmode))
        return -1;
      return 5;

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HFmode))
        return -1;
      return 6;

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SFmode))
        return -1;
      return 7;

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SFmode))
        return -1;
      return 8;

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DFmode))
        return -1;
      return 9;

    default:
      return -1;
    }
}

static int
pattern60 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], SImode))
        return -1;
      return 0;

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], DImode))
        return -1;
      return 1;

    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case SImode:
          if (!register_operand (operands[1], SImode))
            return -1;
          return 2;

        case DImode:
          if (!register_operand (operands[1], DImode))
            return -1;
          return 3;

        case HImode:
          if (!register_operand (operands[1], HImode))
            return -1;
          return 4;

        default:
          return -1;
        }

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HImode))
        return -1;
      return 5;

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 6;

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SImode))
        return -1;
      return 7;

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 8;

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DImode))
        return -1;
      return 9;

    default:
      return -1;
    }
}

static int
pattern61 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern62 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case HFmode:
      return pattern61 (x3, HFmode); /* [-1, 0] */

    case SFmode:
      if (pattern61 (x3, SFmode) != 0)
        return -1;
      return 1;

    case DFmode:
      if (pattern61 (x3, DFmode) != 0)
        return -1;
      return 2;

    case V4HFmode:
      if (pattern61 (x3, V4HFmode) != 0)
        return -1;
      return 3;

    case V8HFmode:
      if (pattern61 (x3, V8HFmode) != 0)
        return -1;
      return 4;

    case V2SFmode:
      if (pattern61 (x3, V2SFmode) != 0)
        return -1;
      return 5;

    case V4SFmode:
      if (pattern61 (x3, V4SFmode) != 0)
        return -1;
      return 6;

    case V2DFmode:
      if (pattern61 (x3, V2DFmode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern63 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  if (!aarch64_tls_le_symref (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern64 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  operands[2] = x2;
  switch (GET_MODE (operands[0]))
    {
    case V4HFmode:
      return pattern61 (x1, V4HFmode); /* [-1, 0] */

    case V8HFmode:
      if (pattern61 (x1, V8HFmode) != 0)
        return -1;
      return 1;

    case V2SFmode:
      if (pattern61 (x1, V2SFmode) != 0)
        return -1;
      return 2;

    case V4SFmode:
      if (pattern61 (x1, V4SFmode) != 0)
        return -1;
      return 3;

    case V2DFmode:
      if (pattern61 (x1, V2DFmode) != 0)
        return -1;
      return 4;

    case HFmode:
      if (pattern61 (x1, HFmode) != 0)
        return -1;
      return 5;

    case SFmode:
      if (pattern61 (x1, SFmode) != 0)
        return -1;
      return 6;

    case DFmode:
      if (pattern61 (x1, DFmode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern65 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  return pattern64 (x3); /* [-1, 7] */
}

static int
pattern66 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern61 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern61 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern61 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern61 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern61 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern61 (x3, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern61 (x3, V2DImode) != 0)
        return -1;
      return 6;

    default:
      return -1;
    }
}

static int
pattern67 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern61 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern61 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern61 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern61 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern61 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern61 (x3, V4SImode) != 0)
        return -1;
      return 5;

    default:
      return -1;
    }
}

static int
pattern68 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V4HFmode:
      return pattern61 (x3, V4HFmode); /* [-1, 0] */

    case V8HFmode:
      if (pattern61 (x3, V8HFmode) != 0)
        return -1;
      return 1;

    case V2SFmode:
      if (pattern61 (x3, V2SFmode) != 0)
        return -1;
      return 2;

    case V4SFmode:
      if (pattern61 (x3, V4SFmode) != 0)
        return -1;
      return 3;

    case V2DFmode:
      if (pattern61 (x3, V2DFmode) != 0)
        return -1;
      return 4;

    default:
      return -1;
    }
}

static int
pattern69 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern70 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern69 (x3, V8HImode, V8QImode); /* [-1, 0] */

    case V4HImode:
      if (pattern69 (x3, V4SImode, V4HImode) != 0)
        return -1;
      return 1;

    case V2SImode:
      if (pattern69 (x3, V2DImode, V2SImode) != 0)
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern71 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern61 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern61 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern61 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern61 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern61 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern61 (x3, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern61 (x3, V2DImode) != 0)
        return -1;
      return 6;

    case QImode:
      if (pattern61 (x3, QImode) != 0)
        return -1;
      return 7;

    case HImode:
      if (pattern61 (x3, HImode) != 0)
        return -1;
      return 8;

    case SImode:
      if (pattern61 (x3, SImode) != 0)
        return -1;
      return 9;

    case DImode:
      if (pattern61 (x3, DImode) != 0)
        return -1;
      return 10;

    default:
      return -1;
    }
}

static int
pattern72 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_MODE (x2) != HImode)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case V4HImode:
      if (!register_operand (operands[2], V4HImode))
        return -1;
      return 0;

    case V8HImode:
      if (!register_operand (operands[2], V8HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern73 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_MODE (x2) != SImode)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case V2SImode:
      if (!register_operand (operands[2], V2SImode))
        return -1;
      return 0;

    case V4SImode:
      if (!register_operand (operands[2], V4SImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern74 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      operands[2] = x5;
      switch (GET_MODE (operands[0]))
        {
        case V4HImode:
          return pattern61 (x3, V4HImode); /* [-1, 0] */

        case V8HImode:
          if (pattern61 (x3, V8HImode) != 0)
            return -1;
          return 1;

        case V2SImode:
          if (pattern61 (x3, V2SImode) != 0)
            return -1;
          return 2;

        case V4SImode:
          if (pattern61 (x3, V4SImode) != 0)
            return -1;
          return 3;

        case HImode:
          if (pattern61 (x3, HImode) != 0)
            return -1;
          return 4;

        case SImode:
          if (pattern61 (x3, SImode) != 0)
            return -1;
          return 5;

        default:
          return -1;
        }

    case VEC_SELECT:
      x6 = XEXP (x5, 1);
      if (GET_CODE (x6) != PARALLEL
          || XVECLEN (x6, 0) != 1)
        return -1;
      x7 = XEXP (x5, 0);
      operands[2] = x7;
      x8 = XVECEXP (x6, 0, 0);
      operands[3] = x8;
      if (!immediate_operand (operands[3], SImode))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V4HImode:
          res = pattern72 (x3, V4HImode);
          if (res >= 0)
            return res + 6; /* [6, 7] */
          return -1;

        case V8HImode:
          res = pattern72 (x3, V8HImode);
          if (res >= 0)
            return res + 8; /* [8, 9] */
          return -1;

        case V2SImode:
          res = pattern73 (x3, V2SImode);
          if (res >= 0)
            return res + 10; /* [10, 11] */
          return -1;

        case V4SImode:
          res = pattern73 (x3, V4SImode);
          if (res >= 0)
            return res + 12; /* [12, 13] */
          return -1;

        case HImode:
          res = pattern72 (x3, HImode);
          if (res >= 0)
            return res + 14; /* [14, 15] */
          return -1;

        case SImode:
          res = pattern73 (x3, SImode);
          if (res >= 0)
            return res + 16; /* [16, 17] */
          return -1;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern75 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern61 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern61 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern61 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern61 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern61 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern61 (x3, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern61 (x3, V2DImode) != 0)
        return -1;
      return 6;

    case DImode:
      if (pattern61 (x3, DImode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern76 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_qi (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern77 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_hi (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern78 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_si (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern79 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_di (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern80 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_CODE (operands[2]))
    {
    case REG:
    case SUBREG:
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          return pattern61 (x3, V8QImode); /* [-1, 0] */

        case V16QImode:
          if (pattern61 (x3, V16QImode) != 0)
            return -1;
          return 1;

        case V4HImode:
          if (pattern61 (x3, V4HImode) != 0)
            return -1;
          return 2;

        case V8HImode:
          if (pattern61 (x3, V8HImode) != 0)
            return -1;
          return 3;

        case V2SImode:
          if (pattern61 (x3, V2SImode) != 0)
            return -1;
          return 4;

        case V4SImode:
          if (pattern61 (x3, V4SImode) != 0)
            return -1;
          return 5;

        case V2DImode:
          if (pattern61 (x3, V2DImode) != 0)
            return -1;
          return 6;

        case QImode:
          if (pattern61 (x3, QImode) != 0)
            return -1;
          return 7;

        case HImode:
          if (pattern61 (x3, HImode) != 0)
            return -1;
          return 8;

        case SImode:
          if (pattern61 (x3, SImode) != 0)
            return -1;
          return 9;

        case DImode:
          if (pattern61 (x3, DImode) != 0)
            return -1;
          return 10;

        default:
          return -1;
        }

    case CONST_INT:
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern76 (x3, V8QImode) != 0)
            return -1;
          return 11;

        case V16QImode:
          if (pattern76 (x3, V16QImode) != 0)
            return -1;
          return 12;

        case V4HImode:
          if (pattern77 (x3, V4HImode) != 0)
            return -1;
          return 13;

        case V8HImode:
          if (pattern77 (x3, V8HImode) != 0)
            return -1;
          return 14;

        case V2SImode:
          if (pattern78 (x3, V2SImode) != 0)
            return -1;
          return 15;

        case V4SImode:
          if (pattern78 (x3, V4SImode) != 0)
            return -1;
          return 16;

        case V2DImode:
          if (pattern79 (x3, V2DImode) != 0)
            return -1;
          return 17;

        case QImode:
          if (pattern76 (x3, QImode) != 0)
            return -1;
          return 18;

        case HImode:
          if (pattern77 (x3, HImode) != 0)
            return -1;
          return 19;

        case SImode:
          if (pattern78 (x3, SImode) != 0)
            return -1;
          return 20;

        case DImode:
          if (pattern79 (x3, DImode) != 0)
            return -1;
          return 21;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern81 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V8QImode:
          if (!register_operand (operands[1], V8QImode)
              || !aarch64_simd_shift_imm_bitsize_qi (operands[2], SImode))
            return -1;
          return 0;

        case V16QImode:
          if (!register_operand (operands[1], V16QImode)
              || !immediate_operand (operands[2], SImode))
            return -1;
          return 1;

        default:
          return -1;
        }

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V4HImode:
          if (!register_operand (operands[1], V4HImode)
              || !aarch64_simd_shift_imm_bitsize_hi (operands[2], SImode))
            return -1;
          return 2;

        case V8HImode:
          if (!register_operand (operands[1], V8HImode)
              || !immediate_operand (operands[2], SImode))
            return -1;
          return 3;

        default:
          return -1;
        }

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V2SImode:
          if (!register_operand (operands[1], V2SImode)
              || !aarch64_simd_shift_imm_bitsize_si (operands[2], SImode))
            return -1;
          return 4;

        case V4SImode:
          if (!register_operand (operands[1], V4SImode)
              || !immediate_operand (operands[2], SImode))
            return -1;
          return 5;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern82 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_qi (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern83 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_hi (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern84 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_si (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern85 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_di (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern86 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern82 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern82 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern83 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern83 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern84 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern84 (x3, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern85 (x3, V2DImode) != 0)
        return -1;
      return 6;

    case DImode:
      if (pattern85 (x3, DImode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern87 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_hi (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern88 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_si (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern89 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i1)
      || !aarch64_simd_shift_imm_offset_di (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern90 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern87 (x3, V8HImode, V8QImode); /* [-1, 0] */

    case V4HImode:
      if (pattern88 (x3, V4SImode, V4HImode) != 0)
        return -1;
      return 1;

    case V2SImode:
      if (pattern89 (x3, V2DImode, V2SImode) != 0)
        return -1;
      return 2;

    case QImode:
      if (pattern87 (x3, HImode, QImode) != 0)
        return -1;
      return 3;

    case HImode:
      if (pattern88 (x3, SImode, HImode) != 0)
        return -1;
      return 4;

    case SImode:
      if (pattern89 (x3, DImode, SImode) != 0)
        return -1;
      return 5;

    default:
      return -1;
    }
}

static int
pattern91 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XVECEXP (x2, 0, 1);
  if (GET_CODE (x3) != UNSPEC
      || XVECLEN (x3, 0) != 1
      || XINT (x3, 1) != 61)
    return -1;
  x4 = XVECEXP (x3, 0, 0);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x1, 0);
  operands[0] = x5;
  if (!register_operand (operands[0], i1))
    return -1;
  x6 = XVECEXP (x2, 0, 0);
  operands[1] = x6;
  if (!aarch64_simd_struct_operand (operands[1], i1))
    return -1;
  switch (GET_MODE (x3))
    {
    case V16QImode:
      return 0;

    case V8HImode:
      return 1;

    case V4SImode:
      return 2;

    case V2DImode:
      return 3;

    case V8HFmode:
      return 4;

    case V4SFmode:
      return 5;

    case V2DFmode:
      return 6;

    default:
      return -1;
    }
}

static int
pattern92 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XVECEXP (x2, 0, 1);
  if (GET_CODE (x3) != UNSPEC
      || XVECLEN (x3, 0) != 1
      || XINT (x3, 1) != 61)
    return -1;
  x4 = XVECEXP (x3, 0, 0);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x1, 0);
  operands[0] = x5;
  if (!register_operand (operands[0], i1))
    return -1;
  x6 = XVECEXP (x2, 0, 0);
  operands[1] = x6;
  if (!aarch64_simd_struct_operand (operands[1], BLKmode))
    return -1;
  switch (GET_MODE (x3))
    {
    case V8QImode:
      return 0;

    case V16QImode:
      return 1;

    case V4HImode:
      return 2;

    case V8HImode:
      return 3;

    case V2SImode:
      return 4;

    case V4SImode:
      return 5;

    case V2DImode:
      return 6;

    case V4HFmode:
      return 7;

    case V8HFmode:
      return 8;

    case V2SFmode:
      return 9;

    case V4SFmode:
      return 10;

    case V2DFmode:
      return 11;

    case DImode:
      return 12;

    case DFmode:
      return 13;

    default:
      return -1;
    }
}

static int
pattern93 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XVECEXP (x2, 0, 1);
  if (GET_CODE (x3) != UNSPEC
      || XVECLEN (x3, 0) != 1
      || XINT (x3, 1) != 61)
    return -1;
  x4 = XVECEXP (x3, 0, 0);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x1, 0);
  operands[0] = x5;
  x6 = XVECEXP (x2, 0, 0);
  operands[1] = x6;
  if (!register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern94 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x1, 0);
  operands[0] = x3;
  if (!register_operand (operands[0], i2))
    return -1;
  x4 = XVECEXP (x2, 0, 0);
  operands[1] = x4;
  if (!register_operand (operands[1], i1))
    return -1;
  x5 = XVECEXP (x2, 0, 1);
  operands[2] = x5;
  if (!register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern95 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern61 (x3, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern61 (x3, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern61 (x3, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern61 (x3, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern61 (x3, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern61 (x3, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern61 (x3, V2DImode) != 0)
        return -1;
      return 6;

    case V4HFmode:
      if (pattern61 (x3, V4HFmode) != 0)
        return -1;
      return 7;

    case V8HFmode:
      if (pattern61 (x3, V8HFmode) != 0)
        return -1;
      return 8;

    case V2SFmode:
      if (pattern61 (x3, V2SFmode) != 0)
        return -1;
      return 9;

    case V4SFmode:
      if (pattern61 (x3, V4SFmode) != 0)
        return -1;
      return 10;

    case V2DFmode:
      if (pattern61 (x3, V2DFmode) != 0)
        return -1;
      return 11;

    default:
      return -1;
    }
}

static int
pattern96 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode
          || !register_operand (operands[1], HFmode))
        return -1;
      return 0;

    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], SFmode))
        return -1;
      return 1;

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], DFmode))
        return -1;
      return 2;

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode))
        return -1;
      return 3;

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HFmode))
        return -1;
      return 4;

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode))
        return -1;
      return 5;

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SFmode))
        return -1;
      return 6;

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DFmode))
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern97 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_valid_symref (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern98 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XVECEXP (x2, 0, 0);
  if (GET_CODE (x3) != MEM)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != LO_SUM)
    return -1;
  x5 = XEXP (x1, 0);
  operands[0] = x5;
  x6 = XEXP (x4, 0);
  operands[1] = x6;
  x7 = XEXP (x4, 1);
  operands[2] = x7;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern97 (x2, SImode); /* [-1, 0] */

    case DImode:
      if (pattern97 (x2, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern99 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode)
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern100 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  if (!aarch64_tls_le_symref (operands[1], VOIDmode))
    return -1;
  return pattern99 (x3); /* [-1, 1] */
}

static int
pattern101 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode))
        return -1;
      return 0;

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HFmode))
        return -1;
      return 1;

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode))
        return -1;
      return 2;

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SFmode))
        return -1;
      return 3;

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DFmode))
        return -1;
      return 4;

    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode
          || !register_operand (operands[1], HFmode))
        return -1;
      return 5;

    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], SFmode))
        return -1;
      return 6;

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], DFmode))
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern102 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode))
        return -1;
      return 0;

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode))
        return -1;
      return 1;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode))
        return -1;
      return 2;

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 3;

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 4;

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode))
        return -1;
      return 5;

    default:
      return -1;
    }
}

static int
pattern103 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode))
        return -1;
      return 0;

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HFmode))
        return -1;
      return 1;

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode))
        return -1;
      return 2;

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SFmode))
        return -1;
      return 3;

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DFmode))
        return -1;
      return 4;

    default:
      return -1;
    }
}

static int
pattern104 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 0;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 1;

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2DImode))
        return -1;
      return 2;

    case QImode:
      if (!register_operand (operands[0], QImode)
          || GET_MODE (x3) != QImode
          || !register_operand (operands[1], HImode))
        return -1;
      return 3;

    case HImode:
      if (!register_operand (operands[0], HImode)
          || GET_MODE (x3) != HImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 4;

    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 5;

    default:
      return -1;
    }
}

static int
pattern105 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode))
        return -1;
      return 0;

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode))
        return -1;
      return 1;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode))
        return -1;
      return 2;

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode))
        return -1;
      return 3;

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode))
        return -1;
      return 4;

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode))
        return -1;
      return 5;

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DImode))
        return -1;
      return 6;

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode))
        return -1;
      return 7;

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HFmode))
        return -1;
      return 8;

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode))
        return -1;
      return 9;

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SFmode))
        return -1;
      return 10;

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DFmode))
        return -1;
      return 11;

    default:
      return -1;
    }
}

static int
pattern106 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_logical_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern107 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  x3 = XEXP (x1, 1);
  operands[2] = x3;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern106 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern106 (x1, DImode) != 0)
        return -1;
      return 1;

    case V8QImode:
      if (pattern14 (x1, V8QImode) != 0)
        return -1;
      return 2;

    case V16QImode:
      if (pattern14 (x1, V16QImode) != 0)
        return -1;
      return 3;

    case V4HImode:
      if (pattern14 (x1, V4HImode) != 0)
        return -1;
      return 4;

    case V8HImode:
      if (pattern14 (x1, V8HImode) != 0)
        return -1;
      return 5;

    case V2SImode:
      if (pattern14 (x1, V2SImode) != 0)
        return -1;
      return 6;

    case V4SImode:
      if (pattern14 (x1, V4SImode) != 0)
        return -1;
      return 7;

    case V2DImode:
      if (pattern14 (x1, V2DImode) != 0)
        return -1;
      return 8;

    default:
      return -1;
    }
}

static int
pattern108 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern109 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode)
        return -1;
      x2 = XEXP (x1, 0);
      if (GET_MODE (x2) != SImode)
        return -1;
      x3 = XEXP (x2, 0);
      if (GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode)
          || !register_operand (operands[3], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode)
        return -1;
      x2 = XEXP (x1, 0);
      if (GET_MODE (x2) != DImode)
        return -1;
      x3 = XEXP (x2, 0);
      if (GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode)
          || !register_operand (operands[3], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern110 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  x6 = XEXP (x1, 1);
  operands[3] = x6;
  return pattern109 (x1); /* [-1, 1] */
}

static int
pattern111 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      operands[1] = x3;
      x4 = XEXP (x1, 1);
      operands[2] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          return pattern108 (x1, SImode); /* [-1, 0] */

        case DImode:
          if (pattern108 (x1, DImode) != 0)
            return -1;
          return 1;

        case V8QImode:
          if (pattern108 (x1, V8QImode) != 0)
            return -1;
          return 2;

        case V16QImode:
          if (pattern108 (x1, V16QImode) != 0)
            return -1;
          return 3;

        case V4HImode:
          if (pattern108 (x1, V4HImode) != 0)
            return -1;
          return 4;

        case V8HImode:
          if (pattern108 (x1, V8HImode) != 0)
            return -1;
          return 5;

        case V2SImode:
          if (pattern108 (x1, V2SImode) != 0)
            return -1;
          return 6;

        case V4SImode:
          if (pattern108 (x1, V4SImode) != 0)
            return -1;
          return 7;

        case V2DImode:
          if (pattern108 (x1, V2DImode) != 0)
            return -1;
          return 8;

        default:
          return -1;
        }

    case ASHIFT:
      res = pattern110 (x1);
      if (res >= 0)
        return res + 9; /* [9, 10] */
      return -1;

    case ASHIFTRT:
      res = pattern110 (x1);
      if (res >= 0)
        return res + 11; /* [11, 12] */
      return -1;

    case LSHIFTRT:
      res = pattern110 (x1);
      if (res >= 0)
        return res + 13; /* [13, 14] */
      return -1;

    case ROTATERT:
      res = pattern110 (x1);
      if (res >= 0)
        return res + 15; /* [15, 16] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern112 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !aarch64_sync_memory_operand (operands[1], i1)
      || !aarch64_plus_operand (operands[2], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  return 0;
}

static int
pattern113 (rtx x1, int *pnum_clobbers)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  if (pnum_clobbers == NULL)
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3)
    return -1;
  x4 = XVECEXP (x1, 0, 0);
  x5 = XEXP (x4, 0);
  operands[0] = x5;
  x6 = XEXP (x4, 1);
  x7 = XEXP (x6, 0);
  operands[1] = x7;
  x8 = XEXP (x6, 1);
  operands[2] = x8;
  x9 = XVECEXP (x3, 0, 2);
  operands[3] = x9;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x10 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x10, operands[1]))
    return -1;
  x11 = XVECEXP (x3, 0, 1);
  if (!rtx_equal_p (x11, operands[2]))
    return -1;
  x12 = XEXP (x2, 0);
  if (!rtx_equal_p (x12, operands[1]))
    return -1;
  switch (XINT (x3, 1))
    {
    case 15:
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          return pattern112 (x1, QImode); /* [-1, 0] */

        case HImode:
          if (pattern112 (x1, HImode) != 0)
            return -1;
          return 1;

        case SImode:
          if (pattern112 (x1, SImode) != 0)
            return -1;
          return 2;

        case DImode:
          if (pattern112 (x1, DImode) != 0)
            return -1;
          return 3;

        default:
          return -1;
        }

    case 16:
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          if (pattern112 (x1, QImode) != 0)
            return -1;
          return 4;

        case HImode:
          if (pattern112 (x1, HImode) != 0)
            return -1;
          return 5;

        case SImode:
          if (pattern112 (x1, SImode) != 0)
            return -1;
          return 6;

        case DImode:
          if (pattern112 (x1, DImode) != 0)
            return -1;
          return 7;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern114 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !aarch64_sync_memory_operand (operands[1], i1)
      || !aarch64_logical_operand (operands[2], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  return 0;
}

static int
pattern115 (rtx x1, int *pnum_clobbers)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  if (pnum_clobbers == NULL)
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3)
    return -1;
  x4 = XVECEXP (x1, 0, 0);
  x5 = XEXP (x4, 0);
  operands[0] = x5;
  x6 = XEXP (x4, 1);
  x7 = XEXP (x6, 0);
  operands[1] = x7;
  x8 = XEXP (x6, 1);
  operands[2] = x8;
  x9 = XVECEXP (x3, 0, 2);
  operands[3] = x9;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x10 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x10, operands[1]))
    return -1;
  x11 = XVECEXP (x3, 0, 1);
  if (!rtx_equal_p (x11, operands[2]))
    return -1;
  x12 = XEXP (x2, 0);
  if (!rtx_equal_p (x12, operands[1]))
    return -1;
  switch (XINT (x3, 1))
    {
    case 15:
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          return pattern114 (x1, QImode); /* [-1, 0] */

        case HImode:
          if (pattern114 (x1, HImode) != 0)
            return -1;
          return 1;

        case SImode:
          if (pattern114 (x1, SImode) != 0)
            return -1;
          return 2;

        case DImode:
          if (pattern114 (x1, DImode) != 0)
            return -1;
          return 3;

        default:
          return -1;
        }

    case 16:
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          if (pattern114 (x1, QImode) != 0)
            return -1;
          return 4;

        case HImode:
          if (pattern114 (x1, HImode) != 0)
            return -1;
          return 5;

        case SImode:
          if (pattern114 (x1, SImode) != 0)
            return -1;
          return 6;

        case DImode:
          if (pattern114 (x1, DImode) != 0)
            return -1;
          return 7;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern116 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern117 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern116 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern116 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern118 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i3
      || !register_operand (operands[2], i2))
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i3
      || !register_operand (operands[4], i2)
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern119 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      x5 = XEXP (x1, 1);
      operands[3] = x5;
      return 0;

    case VEC_SELECT:
      x6 = XEXP (x2, 1);
      if (GET_CODE (x6) != i1)
        return -1;
      x7 = XEXP (x6, 0);
      if (GET_CODE (x7) != VEC_SELECT)
        return -1;
      x8 = XEXP (x4, 0);
      operands[2] = x8;
      x9 = XEXP (x4, 1);
      operands[3] = x9;
      x10 = XEXP (x7, 0);
      operands[4] = x10;
      x5 = XEXP (x1, 1);
      operands[1] = x5;
      x11 = XEXP (x7, 1);
      if (!rtx_equal_p (x11, operands[3]))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V8HImode:
          if (pattern118 (x1, V8HImode, V16QImode, V8QImode) != 0)
            return -1;
          return 1;

        case V4SImode:
          if (pattern118 (x1, V4SImode, V8HImode, V4HImode) != 0)
            return -1;
          return 2;

        case V2DImode:
          if (pattern118 (x1, V2DImode, V4SImode, V2SImode) != 0)
            return -1;
          return 3;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern120 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (x1))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || !aarch64_shift_imm_si (operands[1], QImode)
          || !aarch64_reg_or_zero (operands[2], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || !aarch64_shift_imm_di (operands[1], QImode)
          || !aarch64_reg_or_zero (operands[2], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern121 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != CC_SWPmode)
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != CC_SWPmode)
    return -1;
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  operands[0] = x5;
  x6 = XEXP (x4, 1);
  operands[1] = x6;
  x7 = XEXP (x3, 1);
  operands[2] = x7;
  return pattern120 (x4); /* [-1, 1] */
}

static int
pattern122 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      if (!register_operand (operands[0], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[0], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[0], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern123 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != CC_SWPmode)
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != CC_SWPmode)
    return -1;
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  operands[0] = x5;
  x6 = XEXP (x3, 1);
  operands[1] = x6;
  switch (GET_MODE (x4))
    {
    case SImode:
      return pattern122 (SImode); /* [-1, 2] */

    case DImode:
      res = pattern122 (DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern124 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  operands[2] = x3;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode
          || !register_operand (operands[3], SImode)
          || GET_MODE (x2) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode
          || !register_operand (operands[3], DImode)
          || GET_MODE (x2) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern125 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[3] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  return pattern124 (x1); /* [-1, 1] */
}

static int
pattern126 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case QImode:
      if (!register_operand (operands[2], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[2], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[2], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern127 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i2))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern128 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i3))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern129 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  operands[2] = x4;
  x5 = XEXP (x3, 1);
  operands[3] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8HImode:
      return pattern128 (x1, V16QImode, V8QImode, V8HImode); /* [-1, 0] */

    case V4SImode:
      if (pattern128 (x1, V8HImode, V4HImode, V4SImode) != 0)
        return -1;
      return 1;

    case V2DImode:
      if (pattern128 (x1, V4SImode, V2SImode, V2DImode) != 0)
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern130 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[2] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          return pattern126 (x1, SImode); /* [-1, 2] */

        case DImode:
          res = pattern126 (x1, DImode);
          if (res >= 0)
            return res + 3; /* [3, 5] */
          return -1;

        case V8HImode:
          if (pattern127 (x1, V8QImode, V8HImode) != 0)
            return -1;
          return 6;

        case V4SImode:
          if (pattern127 (x1, V4HImode, V4SImode) != 0)
            return -1;
          return 7;

        case V2DImode:
          if (pattern127 (x1, V2SImode, V2DImode) != 0)
            return -1;
          return 8;

        default:
          return -1;
        }

    case VEC_SELECT:
      res = pattern129 (x1);
      if (res >= 0)
        return res + 9; /* [9, 11] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern131 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[4], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern132 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != MULT)
    return -1;
  x4 = XEXP (x2, 2);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x1, 0);
  operands[4] = x5;
  x6 = XEXP (x3, 0);
  operands[1] = x6;
  x7 = XEXP (x3, 1);
  operands[2] = x7;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  x8 = XEXP (x2, 1);
  operands[3] = x8;
  if (!const_int_operand (operands[3], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern131 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern131 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern133 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_reg_or_zero (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern134 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[1], i1)
      || !aarch64_simd_reg_or_zero (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern135 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern133 (x1, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern133 (x1, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x1) != V4HImode
          || GET_MODE (x2) != V4HImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V4HImode:
          if (!register_operand (operands[1], V4HImode)
              || !aarch64_simd_reg_or_zero (operands[2], V4HImode))
            return -1;
          return 2;

        case V4HFmode:
          if (!register_operand (operands[1], V4HFmode)
              || !aarch64_simd_reg_or_zero (operands[2], V4HFmode))
            return -1;
          return 3;

        default:
          return -1;
        }

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x1) != V8HImode
          || GET_MODE (x2) != V8HImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V8HImode:
          if (!register_operand (operands[1], V8HImode)
              || !aarch64_simd_reg_or_zero (operands[2], V8HImode))
            return -1;
          return 4;

        case V8HFmode:
          if (!register_operand (operands[1], V8HFmode)
              || !aarch64_simd_reg_or_zero (operands[2], V8HFmode))
            return -1;
          return 5;

        default:
          return -1;
        }

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x1) != V2SImode
          || GET_MODE (x2) != V2SImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V2SImode:
          if (!register_operand (operands[1], V2SImode)
              || !aarch64_simd_reg_or_zero (operands[2], V2SImode))
            return -1;
          return 6;

        case V2SFmode:
          if (!register_operand (operands[1], V2SFmode)
              || !aarch64_simd_reg_or_zero (operands[2], V2SFmode))
            return -1;
          return 7;

        default:
          return -1;
        }

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x1) != V4SImode
          || GET_MODE (x2) != V4SImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V4SImode:
          if (!register_operand (operands[1], V4SImode)
              || !aarch64_simd_reg_or_zero (operands[2], V4SImode))
            return -1;
          return 8;

        case V4SFmode:
          if (!register_operand (operands[1], V4SFmode)
              || !aarch64_simd_reg_or_zero (operands[2], V4SFmode))
            return -1;
          return 9;

        default:
          return -1;
        }

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x1) != V2DImode
          || GET_MODE (x2) != V2DImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V2DImode:
          if (!register_operand (operands[1], V2DImode)
              || !aarch64_simd_reg_or_zero (operands[2], V2DImode))
            return -1;
          return 10;

        case V2DFmode:
          if (!register_operand (operands[1], V2DFmode)
              || !aarch64_simd_reg_or_zero (operands[2], V2DFmode))
            return -1;
          return 11;

        default:
          return -1;
        }

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode
          || GET_MODE (x2) != DImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case DImode:
          if (!register_operand (operands[1], DImode)
              || !aarch64_simd_reg_or_zero (operands[2], DImode))
            return -1;
          return 12;

        case DFmode:
          if (!register_operand (operands[1], DFmode)
              || !aarch64_simd_reg_or_zero (operands[2], DFmode))
            return -1;
          return 13;

        default:
          return -1;
        }

    case HImode:
      if (pattern134 (x1, HFmode, HImode) != 0)
        return -1;
      return 14;

    case SImode:
      if (pattern134 (x1, SFmode, SImode) != 0)
        return -1;
      return 15;

    default:
      return -1;
    }
}

static int
pattern136 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i1
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern137 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      return pattern135 (x1); /* [-1, 15] */

    case ABS:
      x4 = XEXP (x2, 1);
      if (GET_CODE (x4) != ABS)
        return -1;
      x5 = XEXP (x3, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 0);
      operands[2] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V4HImode:
          if (pattern136 (x1, V4HFmode, V4HImode) != 0)
            return -1;
          return 16;

        case V8HImode:
          if (pattern136 (x1, V8HFmode, V8HImode) != 0)
            return -1;
          return 17;

        case V2SImode:
          if (pattern136 (x1, V2SFmode, V2SImode) != 0)
            return -1;
          return 18;

        case V4SImode:
          if (pattern136 (x1, V4SFmode, V4SImode) != 0)
            return -1;
          return 19;

        case V2DImode:
          if (pattern136 (x1, V2DFmode, V2DImode) != 0)
            return -1;
          return 20;

        case HImode:
          if (pattern136 (x1, HFmode, HImode) != 0)
            return -1;
          return 21;

        case SImode:
          if (pattern136 (x1, SFmode, SImode) != 0)
            return -1;
          return 22;

        case DImode:
          if (pattern136 (x1, DFmode, DImode) != 0)
            return -1;
          return 23;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern138 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern116 (x1, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern116 (x1, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern116 (x1, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern116 (x1, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern116 (x1, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern116 (x1, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern116 (x1, V2DImode) != 0)
        return -1;
      return 6;

    case DImode:
      if (pattern133 (x1, DImode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern139 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != DImode)
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_CODE (x4) != i1
      || GET_MODE (x4) != DImode
      || !register_operand (operands[0], DImode)
      || GET_MODE (x1) != DImode
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  operands[1] = x5;
  if (!register_operand (operands[1], SImode))
    return -1;
  x6 = XEXP (x4, 0);
  operands[2] = x6;
  if (!register_operand (operands[2], SImode))
    return -1;
  return 0;
}

static int
pattern140 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  x6 = XEXP (x2, 1);
  operands[3] = x6;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode
          || GET_MODE (x2) != SImode
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode)
          || !register_operand (operands[3], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode
          || GET_MODE (x2) != DImode
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode)
          || !register_operand (operands[3], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern141 ()
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[1], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern142 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  return pattern141 (); /* [-1, 2] */
}

static int
pattern143 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  if (!const_int_operand (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern142 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern142 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern144 (rtx x1, machine_mode i1, unsigned int i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (GET_CODE (x1) != CLOBBER)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_CODE (x2) != REG
      || REGNO (x2) != i2
      || GET_MODE (x2) != i1)
    return -1;
  return 0;
}

static int
pattern145 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != AND)
    return -1;
  x5 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x5) != SET)
    return -1;
  x6 = XEXP (x5, 1);
  if (GET_CODE (x6) != UNSPEC_VOLATILE
      || XVECLEN (x6, 0) != 3
      || XINT (x6, 1) != 15)
    return -1;
  return 0;
}

static int
pattern146 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !aarch64_sync_memory_operand (operands[1], i1)
      || !aarch64_plus_operand (operands[2], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1
      || !scratch_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern147 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  operands[2] = x4;
  x5 = XVECEXP (x1, 0, 1);
  x6 = XEXP (x5, 1);
  x7 = XVECEXP (x6, 0, 2);
  operands[3] = x7;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x8 = XVECEXP (x1, 0, 2);
  x9 = XEXP (x8, 0);
  operands[4] = x9;
  x10 = XVECEXP (x6, 0, 0);
  if (!rtx_equal_p (x10, operands[1]))
    return -1;
  x11 = XVECEXP (x6, 0, 1);
  if (!rtx_equal_p (x11, operands[2]))
    return -1;
  x12 = XEXP (x5, 0);
  if (!rtx_equal_p (x12, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern146 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern146 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern146 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern146 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern148 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3
      || XINT (x3, 1) != 16)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 0);
  operands[0] = x6;
  x7 = XEXP (x5, 1);
  x8 = XEXP (x7, 0);
  operands[1] = x8;
  return pattern147 (x1); /* [-1, 3] */
}

static int
pattern149 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !aarch64_sync_memory_operand (operands[1], i1)
      || !aarch64_logical_operand (operands[2], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1
      || !scratch_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern150 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3
      || XINT (x3, 1) != 16)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 0);
  operands[0] = x6;
  x7 = XEXP (x5, 1);
  x8 = XEXP (x7, 0);
  operands[1] = x8;
  x9 = XEXP (x7, 1);
  operands[2] = x9;
  x10 = XVECEXP (x3, 0, 2);
  operands[3] = x10;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x11 = XEXP (x4, 0);
  operands[4] = x11;
  x12 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x12, operands[1]))
    return -1;
  x13 = XVECEXP (x3, 0, 1);
  if (!rtx_equal_p (x13, operands[2]))
    return -1;
  x14 = XEXP (x2, 0);
  if (!rtx_equal_p (x14, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern149 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern149 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern149 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern149 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern151 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  x4 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  x5 = XVECEXP (x3, 0, 1);
  if (!rtx_equal_p (x5, operands[2]))
    return -1;
  x6 = XEXP (x2, 0);
  if (!rtx_equal_p (x6, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern112 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern112 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern112 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern112 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern152 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3
      || XINT (x3, 1) != 15)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_CODE (x5) != REG
      || REGNO (x5) != 66
      || GET_MODE (x5) != CCmode)
    return -1;
  x6 = XVECEXP (x1, 0, 0);
  x7 = XEXP (x6, 0);
  operands[0] = x7;
  x8 = XEXP (x6, 1);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x8, 1);
  operands[2] = x10;
  x11 = XVECEXP (x3, 0, 2);
  operands[3] = x11;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x12 = XVECEXP (x1, 0, 3);
  x13 = XEXP (x12, 0);
  operands[4] = x13;
  if (!scratch_operand (operands[4], SImode))
    return -1;
  return pattern151 (x1); /* [-1, 3] */
}

static int
pattern153 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  x4 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  x5 = XVECEXP (x3, 0, 1);
  if (!rtx_equal_p (x5, operands[2]))
    return -1;
  x6 = XEXP (x2, 0);
  if (!rtx_equal_p (x6, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern114 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern114 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern114 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern114 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern154 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3
      || XINT (x3, 1) != 15)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_CODE (x5) != REG
      || REGNO (x5) != 66
      || GET_MODE (x5) != CCmode)
    return -1;
  x6 = XVECEXP (x1, 0, 0);
  x7 = XEXP (x6, 0);
  operands[0] = x7;
  x8 = XEXP (x6, 1);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x8, 1);
  operands[2] = x10;
  x11 = XVECEXP (x3, 0, 2);
  operands[3] = x11;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x12 = XVECEXP (x1, 0, 3);
  x13 = XEXP (x12, 0);
  operands[4] = x13;
  if (!scratch_operand (operands[4], SImode))
    return -1;
  return pattern153 (x1); /* [-1, 3] */
}

static int
pattern155 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x1) != DImode)
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case SImode:
      if (!nonimmediate_operand (operands[1], SImode))
        return -1;
      return 0;

    case QImode:
      if (!nonimmediate_operand (operands[1], QImode))
        return -1;
      return 1;

    case HImode:
      if (!nonimmediate_operand (operands[1], HImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern156 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], SImode)
      || GET_MODE (x1) != SImode)
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!nonimmediate_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!nonimmediate_operand (operands[1], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern157 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern158 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  switch (GET_MODE (operands[0]))
    {
    case V8HImode:
      return pattern157 (x1, V16QImode, V8QImode, V8HImode); /* [-1, 0] */

    case V4SImode:
      if (pattern157 (x1, V8HImode, V4HImode, V4SImode) != 0)
        return -1;
      return 1;

    case V2DImode:
      if (pattern157 (x1, V4SImode, V2SImode, V2DImode) != 0)
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern159 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      operands[2] = x3;
      switch (GET_MODE (operands[0]))
        {
        case V8HImode:
          return pattern127 (x1, V8QImode, V8HImode); /* [-1, 0] */

        case V4SImode:
          if (pattern127 (x1, V4HImode, V4SImode) != 0)
            return -1;
          return 1;

        case V2DImode:
          if (pattern127 (x1, V2SImode, V2DImode) != 0)
            return -1;
          return 2;

        default:
          return -1;
        }

    case VEC_SELECT:
      res = pattern129 (x1);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern160 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case QImode:
      if (!register_operand (operands[2], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[2], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[2], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern161 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  operands[2] = x5;
  x6 = XEXP (x3, 1);
  operands[3] = x6;
  if (!aarch64_imm3 (operands[3], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern160 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern160 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern162 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  if (!register_operand (operands[1], i2))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2)
    return -1;
  x5 = XEXP (x4, 0);
  operands[2] = x5;
  if (!register_operand (operands[2], i1))
    return -1;
  x6 = XEXP (x3, 1);
  if (GET_MODE (x6) != i2)
    return -1;
  x7 = XEXP (x6, 0);
  operands[3] = x7;
  if (!register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern163 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i3))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[2], i1))
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i3)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i2
      || !register_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern164 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != i1)
    return -1;
  x4 = XEXP (x2, 0);
  x5 = XEXP (x4, 0);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      switch (GET_MODE (operands[0]))
        {
        case DImode:
          if (!register_operand (operands[0], DImode)
              || GET_MODE (x1) != DImode)
            return -1;
          x6 = XEXP (x1, 0);
          operands[3] = x6;
          if (!register_operand (operands[3], DImode)
              || GET_MODE (x2) != DImode
              || GET_MODE (x4) != DImode)
            return -1;
          operands[1] = x5;
          if (!register_operand (operands[1], SImode)
              || GET_MODE (x3) != DImode)
            return -1;
          x7 = XEXP (x3, 0);
          operands[2] = x7;
          if (!register_operand (operands[2], SImode))
            return -1;
          return 0;

        case V8HImode:
          if (pattern162 (x1, V8QImode, V8HImode) != 0)
            return -1;
          return 1;

        case V4SImode:
          if (pattern162 (x1, V4HImode, V4SImode) != 0)
            return -1;
          return 2;

        case V2DImode:
          if (pattern162 (x1, V2SImode, V2DImode) != 0)
            return -1;
          return 3;

        default:
          return -1;
        }

    case VEC_SELECT:
      x7 = XEXP (x3, 0);
      if (GET_CODE (x7) != VEC_SELECT)
        return -1;
      x6 = XEXP (x1, 0);
      operands[1] = x6;
      x8 = XEXP (x5, 0);
      operands[2] = x8;
      x9 = XEXP (x5, 1);
      operands[3] = x9;
      x10 = XEXP (x7, 0);
      operands[4] = x10;
      x11 = XEXP (x7, 1);
      if (!rtx_equal_p (x11, operands[3]))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V8HImode:
          if (pattern163 (x1, V16QImode, V8QImode, V8HImode) != 0)
            return -1;
          return 4;

        case V4SImode:
          if (pattern163 (x1, V8HImode, V4HImode, V4SImode) != 0)
            return -1;
          return 5;

        case V2DImode:
          if (pattern163 (x1, V4SImode, V2SImode, V2DImode) != 0)
            return -1;
          return 6;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern165 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i2)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern166 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  operands[2] = x2;
  x3 = XVECEXP (x1, 0, 2);
  operands[3] = x3;
  switch (GET_MODE (operands[0]))
    {
    case V16QImode:
      return pattern165 (x1, V8HImode, V8QImode, V16QImode); /* [-1, 0] */

    case V8HImode:
      if (pattern165 (x1, V4SImode, V4HImode, V8HImode) != 0)
        return -1;
      return 1;

    case V4SImode:
      if (pattern165 (x1, V2DImode, V2SImode, V4SImode) != 0)
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern167 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern168 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 2);
  if (GET_MODE (x2) != HImode)
    return -1;
  switch (GET_MODE (operands[3]))
    {
    case V4HImode:
      if (!register_operand (operands[3], V4HImode))
        return -1;
      return 0;

    case V8HImode:
      if (!register_operand (operands[3], V8HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern169 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 2);
  if (GET_MODE (x2) != SImode)
    return -1;
  switch (GET_MODE (operands[3]))
    {
    case V2SImode:
      if (!register_operand (operands[3], V2SImode))
        return -1;
      return 0;

    case V4SImode:
      if (!register_operand (operands[3], V4SImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern170 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  operands[2] = x2;
  x3 = XVECEXP (x1, 0, 2);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      operands[3] = x3;
      switch (GET_MODE (operands[0]))
        {
        case V4HImode:
          return pattern167 (x1, V4HImode); /* [-1, 0] */

        case V8HImode:
          if (pattern167 (x1, V8HImode) != 0)
            return -1;
          return 1;

        case V2SImode:
          if (pattern167 (x1, V2SImode) != 0)
            return -1;
          return 2;

        case V4SImode:
          if (pattern167 (x1, V4SImode) != 0)
            return -1;
          return 3;

        case HImode:
          if (pattern167 (x1, HImode) != 0)
            return -1;
          return 4;

        case SImode:
          if (pattern167 (x1, SImode) != 0)
            return -1;
          return 5;

        default:
          return -1;
        }

    case VEC_SELECT:
      x4 = XEXP (x3, 1);
      if (GET_CODE (x4) != PARALLEL
          || XVECLEN (x4, 0) != 1)
        return -1;
      x5 = XEXP (x3, 0);
      operands[3] = x5;
      x6 = XVECEXP (x4, 0, 0);
      operands[4] = x6;
      if (!immediate_operand (operands[4], SImode))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V4HImode:
          res = pattern168 (x1, V4HImode);
          if (res >= 0)
            return res + 6; /* [6, 7] */
          return -1;

        case V8HImode:
          res = pattern168 (x1, V8HImode);
          if (res >= 0)
            return res + 8; /* [8, 9] */
          return -1;

        case V2SImode:
          res = pattern169 (x1, V2SImode);
          if (res >= 0)
            return res + 10; /* [10, 11] */
          return -1;

        case V4SImode:
          res = pattern169 (x1, V4SImode);
          if (res >= 0)
            return res + 12; /* [12, 13] */
          return -1;

        case HImode:
          res = pattern168 (x1, HImode);
          if (res >= 0)
            return res + 14; /* [14, 15] */
          return -1;

        case SImode:
          res = pattern169 (x1, SImode);
          if (res >= 0)
            return res + 16; /* [16, 17] */
          return -1;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern171 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_offset_qi (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern172 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_offset_hi (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern173 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_offset_si (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern174 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_offset_di (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern175 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  operands[2] = x2;
  x3 = XVECEXP (x1, 0, 2);
  operands[3] = x3;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern171 (x1, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern171 (x1, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern172 (x1, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern172 (x1, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern173 (x1, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern173 (x1, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern174 (x1, V2DImode) != 0)
        return -1;
      return 6;

    case DImode:
      if (pattern174 (x1, DImode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern176 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_qi (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern177 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_hi (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern178 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_si (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern179 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_shift_imm_di (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern180 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  operands[2] = x2;
  x3 = XVECEXP (x1, 0, 2);
  operands[3] = x3;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      return pattern176 (x1, V8QImode); /* [-1, 0] */

    case V16QImode:
      if (pattern176 (x1, V16QImode) != 0)
        return -1;
      return 1;

    case V4HImode:
      if (pattern177 (x1, V4HImode) != 0)
        return -1;
      return 2;

    case V8HImode:
      if (pattern177 (x1, V8HImode) != 0)
        return -1;
      return 3;

    case V2SImode:
      if (pattern178 (x1, V2SImode) != 0)
        return -1;
      return 4;

    case V4SImode:
      if (pattern178 (x1, V4SImode) != 0)
        return -1;
      return 5;

    case V2DImode:
      if (pattern179 (x1, V2DImode) != 0)
        return -1;
      return 6;

    case DImode:
      if (pattern179 (x1, DImode) != 0)
        return -1;
      return 7;

    default:
      return -1;
    }
}

static int
pattern181 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != BLKmode)
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != UNSPEC
      || XVECLEN (x2, 0) != 1
      || XINT (x2, 1) != 61)
    return -1;
  x3 = XVECEXP (x2, 0, 0);
  if (x3 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
      || !aarch64_simd_struct_operand (operands[0], BLKmode)
      || !register_operand (operands[1], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  operands[2] = x4;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  switch (GET_MODE (x2))
    {
    case V8QImode:
      return 0;

    case V16QImode:
      return 1;

    case V4HImode:
      return 2;

    case V8HImode:
      return 3;

    case V2SImode:
      return 4;

    case V4SImode:
      return 5;

    case V2DImode:
      return 6;

    case V4HFmode:
      return 7;

    case V8HFmode:
      return 8;

    case V2SFmode:
      return 9;

    case V4SFmode:
      return 10;

    case V2DFmode:
      return 11;

    case DImode:
      return 12;

    case DFmode:
      return 13;

    default:
      return -1;
    }
}

static int
pattern182 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != V4SImode
      || !register_operand (operands[0], V4SImode)
      || !register_operand (operands[1], V4SImode))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  operands[2] = x2;
  if (!register_operand (operands[2], i1))
    return -1;
  x3 = XVECEXP (x1, 0, 2);
  operands[3] = x3;
  if (!register_operand (operands[3], V4SImode))
    return -1;
  return 0;
}

static int
pattern183 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  return pattern109 (x1); /* [-1, 1] */
}

static int
pattern184 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], SImode)
      || GET_MODE (x1) != SImode
      || !register_operand (operands[1], SImode)
      || !aarch64_reg_or_shift_imm_si (operands[2], QImode))
    return -1;
  return 0;
}

static int
pattern185 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_reg_or_shift_imm_di (operands[2], QImode))
    return -1;
  return 0;
}

static int
pattern186 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_plus_operand (operands[1], i1)
      || !scratch_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern187 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[1] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[0]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern186 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern186 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern186 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern186 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern188 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_logical_operand (operands[1], i1)
      || !scratch_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern189 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[1] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[0]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern188 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern188 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern188 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern188 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern190 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (XINT (x3, 1) != 15)
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  if (!const_int_operand (operands[2], SImode))
    return -1;
  x6 = XEXP (x4, 0);
  operands[3] = x6;
  x7 = XVECEXP (x3, 0, 0);
  switch (GET_CODE (x7))
    {
    case PLUS:
      return pattern187 (x3); /* [-1, 3] */

    case MINUS:
      res = pattern187 (x3);
      if (res >= 0)
        return res + 4; /* [4, 7] */
      return -1;

    case IOR:
      res = pattern189 (x3);
      if (res >= 0)
        return res + 8; /* [8, 11] */
      return -1;

    case XOR:
      res = pattern189 (x3);
      if (res >= 0)
        return res + 12; /* [12, 15] */
      return -1;

    case AND:
      res = pattern189 (x3);
      if (res >= 0)
        return res + 16; /* [16, 19] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern191 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1
      || !aarch64_plus_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern192 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  switch (GET_CODE (x3))
    {
    case ZERO_EXTEND:
      if (GET_MODE (x3) != SImode
          || !register_operand (operands[0], SImode))
        return -1;
      x4 = XEXP (x3, 0);
      operands[1] = x4;
      if (!aarch64_plus_operand (operands[2], SImode))
        return -1;
      x5 = XVECEXP (x1, 0, 2);
      x6 = XEXP (x5, 0);
      if (!rtx_equal_p (x6, operands[1]))
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case QImode:
          if (!aarch64_sync_memory_operand (operands[1], QImode))
            return -1;
          x7 = XEXP (x5, 1);
          if (GET_MODE (x7) != QImode
              || !register_operand (operands[3], QImode))
            return -1;
          return 0;

        case HImode:
          if (!aarch64_sync_memory_operand (operands[1], HImode))
            return -1;
          x7 = XEXP (x5, 1);
          if (GET_MODE (x7) != HImode
              || !register_operand (operands[3], HImode))
            return -1;
          return 1;

        default:
          return -1;
        }

    case SUBREG:
    case MEM:
      operands[1] = x3;
      x5 = XVECEXP (x1, 0, 2);
      x6 = XEXP (x5, 0);
      if (!rtx_equal_p (x6, operands[1]))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          x7 = XEXP (x5, 1);
          if (pattern191 (x7, SImode) != 0)
            return -1;
          return 2;

        case DImode:
          x7 = XEXP (x5, 1);
          if (pattern191 (x7, DImode) != 0)
            return -1;
          return 3;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern193 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_plus_operand (operands[1], i1)
      || !scratch_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern194 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[1] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[0]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern193 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern193 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern193 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern193 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern195 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_logical_operand (operands[1], i1)
      || !scratch_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern196 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[1] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[0]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern195 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern195 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern195 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern195 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern197 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !aarch64_logical_operand (operands[1], i1)
      || !scratch_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern198 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20, x21;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  switch (XVECLEN (x3, 0))
    {
    case 1:
      if (XINT (x3, 1) != 11
          || GET_MODE (x3) != CCmode)
        return -1;
      x4 = XVECEXP (x3, 0, 0);
      if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x5 = XEXP (x2, 0);
      if (GET_CODE (x5) != REG
          || REGNO (x5) != 66
          || GET_MODE (x5) != CCmode)
        return -1;
      x6 = XVECEXP (x1, 0, 1);
      if (GET_CODE (x6) != SET)
        return -1;
      x7 = XVECEXP (x1, 0, 2);
      if (GET_CODE (x7) != SET)
        return -1;
      x8 = XEXP (x7, 1);
      if (GET_CODE (x8) != UNSPEC_VOLATILE
          || XVECLEN (x8, 0) != 5
          || XINT (x8, 1) != 11)
        return -1;
      x9 = XEXP (x6, 0);
      operands[0] = x9;
      x10 = XVECEXP (x8, 0, 0);
      operands[2] = x10;
      x11 = XVECEXP (x8, 0, 1);
      operands[3] = x11;
      x12 = XVECEXP (x8, 0, 2);
      operands[4] = x12;
      if (!const_int_operand (operands[4], SImode))
        return -1;
      x13 = XVECEXP (x8, 0, 3);
      operands[5] = x13;
      if (!const_int_operand (operands[5], SImode))
        return -1;
      x14 = XVECEXP (x8, 0, 4);
      operands[6] = x14;
      if (!const_int_operand (operands[6], SImode))
        return -1;
      x15 = XVECEXP (x1, 0, 3);
      x16 = XEXP (x15, 0);
      operands[7] = x16;
      return pattern192 (x1); /* [-1, 3] */

    case 2:
      if (XINT (x3, 1) != 15)
        return -1;
      x6 = XVECEXP (x1, 0, 1);
      if (GET_CODE (x6) != CLOBBER)
        return -1;
      x9 = XEXP (x6, 0);
      if (GET_CODE (x9) != REG
          || REGNO (x9) != 66
          || GET_MODE (x9) != CCmode)
        return -1;
      x7 = XVECEXP (x1, 0, 2);
      if (GET_CODE (x7) != CLOBBER)
        return -1;
      x5 = XEXP (x2, 0);
      operands[0] = x5;
      x17 = XVECEXP (x3, 0, 1);
      operands[2] = x17;
      if (!const_int_operand (operands[2], SImode))
        return -1;
      x18 = XEXP (x7, 0);
      operands[3] = x18;
      x15 = XVECEXP (x1, 0, 3);
      x16 = XEXP (x15, 0);
      operands[4] = x16;
      x4 = XVECEXP (x3, 0, 0);
      switch (GET_CODE (x4))
        {
        case PLUS:
          res = pattern194 (x3);
          if (res >= 0)
            return res + 4; /* [4, 7] */
          return -1;

        case MINUS:
          res = pattern194 (x3);
          if (res >= 0)
            return res + 8; /* [8, 11] */
          return -1;

        case IOR:
          res = pattern196 (x3);
          if (res >= 0)
            return res + 12; /* [12, 15] */
          return -1;

        case XOR:
          res = pattern196 (x3);
          if (res >= 0)
            return res + 16; /* [16, 19] */
          return -1;

        case AND:
          res = pattern196 (x3);
          if (res >= 0)
            return res + 20; /* [20, 23] */
          return -1;

        case NOT:
          x19 = XEXP (x4, 0);
          if (GET_CODE (x19) != AND)
            return -1;
          x20 = XEXP (x19, 1);
          operands[1] = x20;
          x21 = XEXP (x19, 0);
          if (!rtx_equal_p (x21, operands[0]))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (pattern197 (x3, QImode) != 0)
                return -1;
              return 24;

            case HImode:
              if (pattern197 (x3, HImode) != 0)
                return -1;
              return 25;

            case SImode:
              if (pattern197 (x3, SImode) != 0)
                return -1;
              return 26;

            case DImode:
              if (pattern197 (x3, DImode) != 0)
                return -1;
              return 27;

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern199 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern200 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3
      || XINT (x3, 1) != 15)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_CODE (x5) != REG
      || REGNO (x5) != 66
      || GET_MODE (x5) != CCmode)
    return -1;
  x6 = XVECEXP (x1, 0, 0);
  x7 = XEXP (x6, 0);
  operands[0] = x7;
  x8 = XEXP (x6, 1);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x8, 1);
  operands[2] = x10;
  x11 = XVECEXP (x3, 0, 2);
  operands[3] = x11;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x12 = XVECEXP (x1, 0, 3);
  x13 = XEXP (x12, 0);
  operands[4] = x13;
  return pattern151 (x1); /* [-1, 3] */
}

static int
pattern201 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 3
      || XINT (x3, 1) != 15)
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x4) != CLOBBER)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_CODE (x5) != REG
      || REGNO (x5) != 66
      || GET_MODE (x5) != CCmode)
    return -1;
  x6 = XVECEXP (x1, 0, 0);
  x7 = XEXP (x6, 0);
  operands[0] = x7;
  x8 = XEXP (x6, 1);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x8, 1);
  operands[2] = x10;
  x11 = XVECEXP (x3, 0, 2);
  operands[3] = x11;
  if (!const_int_operand (operands[3], SImode))
    return -1;
  x12 = XVECEXP (x1, 0, 3);
  x13 = XEXP (x12, 0);
  operands[4] = x13;
  return pattern153 (x1); /* [-1, 3] */
}

static int
pattern202 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  operands[1] = x1;
  x2 = PATTERN (peep2_next_insn (1));
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != i1
      || GET_MODE (x3) != DImode)
    return -1;
  x4 = XEXP (x2, 0);
  operands[2] = x4;
  if (!register_operand (operands[2], DImode))
    return -1;
  x5 = XEXP (x3, 0);
  operands[3] = x5;
  if (!memory_operand (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern203 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[3], i1))
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[1], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern204 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  if (!aarch64_imm3 (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern203 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern203 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern205 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  if (!register_operand (operands[1], i1))
    return -1;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  if (!register_operand (operands[2], i1))
    return -1;
  x5 = XEXP (x1, 1);
  operands[3] = x5;
  if (!register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern206 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  operands[2] = x3;
  if (!register_operand (operands[2], i1))
    return -1;
  x4 = XEXP (x2, 1);
  operands[3] = x4;
  if (!register_operand (operands[3], i1))
    return -1;
  x5 = XEXP (x1, 1);
  operands[1] = x5;
  if (!register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern207 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[2], i1))
    return -1;
  return pattern141 (); /* [-1, 2] */
}

static int
pattern208 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  operands[2] = x2;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern207 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern207 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern209 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_borrow_operation (operands[2], i1)
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern210 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x1) != SImode)
        return -1;
      x2 = XEXP (x1, 0);
      if (GET_MODE (x2) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_pwr_2_si (operands[2], QImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x1) != DImode)
        return -1;
      x2 = XEXP (x1, 0);
      if (GET_MODE (x2) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_pwr_2_di (operands[2], QImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern211 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !const_int_operand (operands[2], VOIDmode))
    return -1;
  return 0;
}

static int
pattern212 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern213 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[2], i2)
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern214 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || !aarch64_imm24 (operands[1], SImode))
        return -1;
      switch (GET_MODE (x1))
        {
        case SImode:
          return 0;

        case DImode:
          return 1;

        default:
          return -1;
        }

    case DImode:
      if (!register_operand (operands[0], DImode)
          || !aarch64_imm24 (operands[1], DImode))
        return -1;
      switch (GET_MODE (x1))
        {
        case SImode:
          return 2;

        case DImode:
          return 3;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern215 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  x4 = XEXP (x2, 1);
  operands[1] = x4;
  x5 = XEXP (x1, 1);
  return pattern214 (x5); /* [-1, 3] */
}

static int
pattern216 (rtx x1, int *pnum_clobbers)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      operands[0] = x3;
      return 0;

    case ZERO_EXTRACT:
      if (pnum_clobbers == NULL
          || GET_MODE (x3) != DImode)
        return -1;
      x4 = XEXP (x3, 1);
      if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
        return -1;
      x5 = XEXP (x2, 1);
      if (XWINT (x5, 0) != 0L)
        return -1;
      x6 = XEXP (x3, 0);
      operands[0] = x6;
      x7 = XEXP (x3, 2);
      operands[1] = x7;
      if (!const_int_operand (operands[1], VOIDmode))
        return -1;
      x8 = XEXP (x1, 1);
      x9 = XEXP (x8, 0);
      operands[2] = x9;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (!register_operand (operands[0], SImode))
            return -1;
          return 1;

        case DImode:
          if (!register_operand (operands[0], DImode))
            return -1;
          return 2;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern217 (rtx x1, int *pnum_clobbers)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (pnum_clobbers == NULL)
    return -1;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  if (XWINT (x3, 0) != 0L)
    return -1;
  x4 = XEXP (x2, 0);
  operands[0] = x4;
  x5 = XEXP (x1, 1);
  x6 = XEXP (x5, 0);
  operands[1] = x6;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      if (!register_operand (operands[0], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[0], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[0], SImode))
        return -1;
      return 2;

    case DImode:
      if (!register_operand (operands[0], DImode))
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern218 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[2], i1)
      || !aarch64_reg_or_zero (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern219 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  operands[2] = x3;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern218 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern218 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern220 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != SImode)
    return -1;
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  if (!register_operand (operands[1], SImode))
    return -1;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  if (!aarch64_shift_imm_si (operands[2], QImode))
    return -1;
  x5 = XEXP (x1, 1);
  operands[3] = x5;
  if (!register_operand (operands[3], SImode))
    return -1;
  return 0;
}

static int
pattern221 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1))
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case SImode:
      if (!register_operand (operands[2], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[2], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern222 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != SImode)
    return -1;
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x1, 1);
  operands[2] = x4;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      return pattern221 (QImode); /* [-1, 1] */

    case HImode:
      res = pattern221 (HImode);
      if (res >= 0)
        return res + 2; /* [2, 3] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern223 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != SImode)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != MULT
      || GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x2, 2);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x3, 0);
  operands[1] = x5;
  if (!register_operand (operands[1], SImode))
    return -1;
  x6 = XEXP (x3, 1);
  operands[2] = x6;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  x7 = XEXP (x2, 1);
  operands[3] = x7;
  if (!const_int_operand (operands[3], VOIDmode))
    return -1;
  x8 = XEXP (x1, 1);
  operands[4] = x8;
  if (!register_operand (operands[4], SImode))
    return -1;
  return 0;
}

static int
pattern224 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_pluslong_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern225 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_carry_operation (operands[3], i1)
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern226 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != i1)
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || !aarch64_fp_compare_operand (operands[1], SFmode))
        return -1;
      return 0;

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || !aarch64_fp_compare_operand (operands[1], DFmode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern227 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  operands[3] = x2;
  if (!register_operand (operands[3], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  if (!register_operand (operands[1], i1))
    return -1;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  if (!register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern228 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  if (!register_operand (operands[1], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  operands[2] = x4;
  if (!register_operand (operands[2], i1))
    return -1;
  x5 = XEXP (x3, 1);
  operands[3] = x5;
  if (!register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern229 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !aarch64_reg_or_zero (operands[1], i1)
      || !aarch64_borrow_operation (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern230 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern231 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i2)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern232 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (operands[0]))
    {
    case OImode:
      if (!register_operand (operands[0], OImode)
          || GET_MODE (x1) != OImode
          || !register_operand (operands[1], OImode))
        return -1;
      return 0;

    case CImode:
      if (!register_operand (operands[0], CImode)
          || GET_MODE (x1) != CImode
          || !register_operand (operands[1], CImode))
        return -1;
      return 1;

    case XImode:
      if (!register_operand (operands[0], XImode)
          || GET_MODE (x1) != XImode
          || !register_operand (operands[1], XImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern233 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[2], i1))
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case V16QImode:
      if (!register_operand (operands[1], V16QImode))
        return -1;
      return 0;

    case OImode:
      if (!register_operand (operands[1], OImode))
        return -1;
      return 1;

    case CImode:
      if (!register_operand (operands[1], CImode))
        return -1;
      return 2;

    case XImode:
      if (!register_operand (operands[1], XImode))
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern234 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_simd_lshift_imm (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern235 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !vect_par_cnst_lo_half (operands[2], i2)
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern236 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || pattern48 (x1, i1, i2) != 0)
    return -1;
  return 0;
}

static int
pattern237 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
    return -1;
  x5 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x5) != UNSPEC
      || XVECLEN (x5, 0) != 1
      || XINT (x5, 1) != 24
      || GET_MODE (x5) != DImode)
    return -1;
  return 0;
}

static int
pattern238 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != SImode)
    return -1;
  x3 = XEXP (x1, 0);
  operands[3] = x3;
  if (!register_operand (operands[3], SImode))
    return -1;
  x4 = XEXP (x2, 0);
  operands[1] = x4;
  if (!register_operand (operands[1], SImode))
    return -1;
  x5 = XEXP (x2, 1);
  operands[2] = x5;
  if (!aarch64_shift_imm_si (operands[2], QImode))
    return -1;
  return 0;
}

static int
pattern239 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != SImode)
    return -1;
  x3 = XEXP (x1, 0);
  operands[1] = x3;
  if (!register_operand (operands[1], SImode))
    return -1;
  x4 = XEXP (x2, 0);
  operands[2] = x4;
  switch (GET_MODE (operands[2]))
    {
    case QImode:
      if (!register_operand (operands[2], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[2], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern240 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != SImode)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != MULT
      || GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x2, 2);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x1, 0);
  operands[4] = x5;
  if (!register_operand (operands[4], SImode))
    return -1;
  x6 = XEXP (x3, 0);
  operands[1] = x6;
  if (!register_operand (operands[1], SImode))
    return -1;
  x7 = XEXP (x3, 1);
  operands[2] = x7;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  x8 = XEXP (x2, 1);
  operands[3] = x8;
  if (!const_int_operand (operands[3], VOIDmode))
    return -1;
  return 0;
}

static int
pattern241 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (GET_CODE (x1) != MEM
      || GET_MODE (x1) != SImode)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_CODE (x2) != LO_SUM
      || GET_MODE (x2) != DImode)
    return -1;
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  if (!register_operand (operands[1], DImode))
    return -1;
  x4 = XEXP (x2, 1);
  operands[2] = x4;
  if (!aarch64_valid_symref (operands[2], DImode))
    return -1;
  return 0;
}

static int
pattern242 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  operands[2] = x3;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      return pattern203 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern203 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern243 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i2))
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i1
      || !register_operand (operands[2], i2)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern244 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  operands[2] = x4;
  switch (GET_MODE (operands[0]))
    {
    case DImode:
      return pattern243 (x1, DImode, SImode); /* [-1, 0] */

    case V8HImode:
      if (pattern243 (x1, V8HImode, V8QImode) != 0)
        return -1;
      return 1;

    case V4SImode:
      if (pattern243 (x1, V4SImode, V4HImode) != 0)
        return -1;
      return 2;

    case V2DImode:
      if (pattern243 (x1, V2DImode, V2SImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern245 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern246 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  x4 = XEXP (x2, 1);
  operands[1] = x4;
  x5 = XEXP (x1, 1);
  operands[2] = x5;
  switch (GET_MODE (x1))
    {
    case SImode:
      if (GET_MODE (x2) != SImode
          || !register_operand (operands[0], SImode)
          || !aarch64_shift_imm_si (operands[1], QImode)
          || !register_operand (operands[2], SImode))
        return -1;
      return 0;

    case DImode:
      if (GET_MODE (x2) != DImode
          || !register_operand (operands[0], DImode)
          || !aarch64_shift_imm_di (operands[1], QImode)
          || !register_operand (operands[2], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern247 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_reg_or_zero (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_borrow_operation (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern248 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_reg_or_zero (operands[1], i1)
      || !aarch64_borrow_operation (operands[3], i1)
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern249 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !memory_operand (operands[1], i1)
      || !memory_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern250 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[3], i1))
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case OImode:
      if (!register_operand (operands[2], OImode))
        return -1;
      return 0;

    case CImode:
      if (!register_operand (operands[2], CImode))
        return -1;
      return 1;

    case XImode:
      if (!register_operand (operands[2], XImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern251 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[3], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern252 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern253 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i2)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern254 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_plus_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern255 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[1] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[0]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern254 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern254 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern254 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern254 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern256 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_logical_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern257 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[1] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[0]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern256 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern256 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern256 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern256 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern258 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  return 0;
}

static int
pattern259 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3
      || !register_operand (operands[1], i2))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern260 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (GET_MODE (x1))
    {
    case QImode:
      switch (GET_MODE (operands[1]))
        {
        case V8QImode:
          if (!register_operand (operands[1], V8QImode))
            return -1;
          return 0;

        case V16QImode:
          if (!register_operand (operands[1], V16QImode))
            return -1;
          return 1;

        default:
          return -1;
        }

    case HImode:
      switch (GET_MODE (operands[1]))
        {
        case V4HImode:
          if (!register_operand (operands[1], V4HImode))
            return -1;
          return 2;

        case V8HImode:
          if (!register_operand (operands[1], V8HImode))
            return -1;
          return 3;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern261 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  return pattern260 (x2); /* [-1, 3] */
}

static int
pattern262 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != i1
      || !register_operand (operands[2], i1))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      if (!register_operand (operands[0], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[0], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[0], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern263 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  if (!aarch64_imm3 (operands[1], VOIDmode))
    return -1;
  switch (GET_MODE (x1))
    {
    case SImode:
      return pattern262 (x2, SImode); /* [-1, 2] */

    case DImode:
      res = pattern262 (x2, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern264 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  operands[0] = x4;
  x5 = XEXP (x3, 1);
  operands[1] = x5;
  x6 = XEXP (x1, 1);
  operands[2] = x6;
  switch (GET_MODE (x1))
    {
    case SImode:
      if (GET_MODE (x2) != SImode
          || GET_MODE (x3) != SImode
          || !register_operand (operands[0], SImode)
          || !aarch64_shift_imm_si (operands[1], QImode)
          || !register_operand (operands[2], SImode))
        return -1;
      return 0;

    case DImode:
      if (GET_MODE (x2) != DImode
          || GET_MODE (x3) != DImode
          || !register_operand (operands[0], DImode)
          || !aarch64_shift_imm_di (operands[1], QImode)
          || !register_operand (operands[2], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern265 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i2))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_MODE (x2) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern266 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern267 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  x2 = XEXP (x1, 2);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern268 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern269 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1))
    return -1;
  x3 = XEXP (x1, 2);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern270 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[2], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i2)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern271 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_simd_general_operand (operands[1], i2)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern272 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i2)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern273 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i2))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i2
      || !vect_par_cnst_lo_half (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern274 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x1) != DImode)
    return -1;
  switch (GET_CODE (x1))
    {
    case LT:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 0;

    case LE:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 1;

    case EQ:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 2;

    case GE:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 3;

    case GT:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 4;

    case LTU:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 5;

    case LEU:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 6;

    case GEU:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 7;

    case GTU:
      x2 = XEXP (x1, 0);
      operands[1] = x2;
      if (!register_operand (operands[1], DImode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[2] = x3;
      if (!aarch64_simd_reg_or_zero (operands[2], DImode))
        return -1;
      return 8;

    case NE:
      x2 = XEXP (x1, 0);
      if (GET_CODE (x2) != AND
          || GET_MODE (x2) != DImode)
        return -1;
      x3 = XEXP (x1, 1);
      if (x3 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x4 = XEXP (x2, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], DImode))
        return -1;
      x5 = XEXP (x2, 1);
      operands[2] = x5;
      if (!register_operand (operands[2], DImode))
        return -1;
      return 9;

    default:
      return -1;
    }
}

static int
pattern275 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_mem_pair_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !memory_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern276 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_mem_pair_operand (operands[0], i1)
      || !aarch64_reg_or_zero (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !aarch64_reg_or_zero (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern277 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_mem_pair_operand (operands[0], i1)
      || !aarch64_reg_or_fp_zero (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !aarch64_reg_or_fp_zero (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern278 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_mem_pair_operand (operands[0], i1)
      || !register_operand (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern279 (rtx x1, machine_mode i1, int i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != UNSPEC
      || XVECLEN (x4, 0) != 1
      || XINT (x4, 1) != i2
      || !register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  return 0;
}

static int
pattern280 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !aarch64_simd_imm_zero (operands[3], i1)
      || !aarch64_simd_imm_minus_one (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern281 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[3], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern282 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern283 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_mem_pair_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !memory_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern284 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_mem_pair_operand (operands[0], i1)
      || !aarch64_reg_or_zero (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !aarch64_reg_or_zero (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern285 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_mem_pair_operand (operands[0], i1)
      || !aarch64_reg_or_fp_zero (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !aarch64_reg_or_fp_zero (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern286 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_mem_pair_operand (operands[0], i1)
      || !register_operand (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern287 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  switch (GET_MODE (operands[3]))
    {
    case QImode:
      if (!register_operand (operands[3], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[3], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[3], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern288 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 0);
  operands[2] = x5;
  x6 = XEXP (x2, 1);
  operands[3] = x6;
  if (!aarch64_imm3 (operands[3], VOIDmode))
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case QImode:
      if (!register_operand (operands[2], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[2], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern289 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern290 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[1], i1)
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern291 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern292 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[2], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern293 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern294 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != ZERO_EXTRACT
      || GET_MODE (x3) != DImode)
    return -1;
  x4 = XEXP (x3, 1);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
    return -1;
  x5 = XEXP (x2, 1);
  if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x6 = XEXP (x3, 0);
  operands[0] = x6;
  x7 = XEXP (x3, 2);
  operands[1] = x7;
  if (!const_int_operand (operands[1], VOIDmode))
    return -1;
  x8 = XEXP (x1, 1);
  x9 = XEXP (x8, 0);
  operands[2] = x9;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[0], DImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern295 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  if (x3 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x4 = XEXP (x2, 0);
  operands[0] = x4;
  x5 = XEXP (x1, 1);
  x6 = XEXP (x5, 0);
  operands[1] = x6;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      if (!register_operand (operands[0], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[0], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[0], SImode))
        return -1;
      return 2;

    case DImode:
      if (!register_operand (operands[0], DImode))
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern296 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !memory_operand (operands[1], i1)
      || !scratch_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern297 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !memory_operand (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !scratch_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern298 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 2);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC_VOLATILE
      || XVECLEN (x3, 0) != 5
      || XINT (x3, 1) != 11)
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 0);
  operands[0] = x5;
  x6 = XVECEXP (x3, 0, 0);
  operands[2] = x6;
  x7 = XVECEXP (x3, 0, 1);
  operands[3] = x7;
  x8 = XVECEXP (x3, 0, 2);
  operands[4] = x8;
  if (!const_int_operand (operands[4], SImode))
    return -1;
  x9 = XVECEXP (x3, 0, 3);
  operands[5] = x9;
  if (!const_int_operand (operands[5], SImode))
    return -1;
  x10 = XVECEXP (x3, 0, 4);
  operands[6] = x10;
  if (!const_int_operand (operands[6], SImode))
    return -1;
  return pattern192 (x1); /* [-1, 3] */
}

static int
pattern299 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !aarch64_reg_zero_or_m1_or_1 (operands[3], i1)
      || !aarch64_reg_zero_or_m1_or_1 (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern300 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[3], i1)
      || !register_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern301 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != SImode)
    return -1;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  if (!aarch64_imm3 (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern302 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != SImode)
    return -1;
  x2 = XEXP (x1, 0);
  operands[1] = x2;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern303 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[1], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  return 0;
}

static int
pattern304 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SFmode
      || !register_operand (operands[3], i1)
      || !register_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern305 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_sync_memory_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !aarch64_logical_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern306 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3
      || !register_operand (operands[1], i2))
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i3)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern307 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[3], i1)
      || !register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  return 0;
}

static int
pattern308 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  switch (GET_MODE (x4))
    {
    case SImode:
      x5 = XEXP (x4, 0);
      if (GET_MODE (x5) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode))
        return -1;
      x6 = XVECEXP (x1, 0, 1);
      x7 = XEXP (x6, 1);
      return pattern307 (x7, SImode); /* [-1, 0] */

    case DImode:
      x5 = XEXP (x4, 0);
      if (GET_MODE (x5) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode))
        return -1;
      x6 = XVECEXP (x1, 0, 1);
      x7 = XEXP (x6, 1);
      if (pattern307 (x7, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern309 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (!rtx_equal_p (x5, operands[1]))
    return -1;
  x6 = XEXP (x4, 1);
  if (!rtx_equal_p (x6, operands[2]))
    return -1;
  x7 = XEXP (x3, 1);
  if (!rtx_equal_p (x7, operands[3]))
    return -1;
  return pattern308 (x1); /* [-1, 1] */
}

static int
pattern310 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != PLUS)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != i1)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 1);
  x7 = XEXP (x6, 0);
  x8 = XEXP (x7, 0);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x8, 1);
  operands[2] = x10;
  x11 = XEXP (x7, 1);
  operands[3] = x11;
  return pattern309 (x1); /* [-1, 1] */
}

static int
pattern311 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1
      || !register_operand (operands[2], i1)
      || !register_operand (operands[0], i1))
    return -1;
  x6 = XVECEXP (x1, 0, 1);
  x7 = XEXP (x6, 1);
  if (GET_MODE (x7) != i1)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_MODE (x8) != i1)
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[1], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern312 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != PLUS)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != i1)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 1);
  x7 = XEXP (x6, 0);
  x8 = XEXP (x7, 0);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x7, 1);
  operands[2] = x10;
  x11 = XEXP (x4, 0);
  if (!rtx_equal_p (x11, operands[1]))
    return -1;
  x12 = XEXP (x3, 1);
  if (!rtx_equal_p (x12, operands[2]))
    return -1;
  switch (GET_MODE (x7))
    {
    case SImode:
      return pattern311 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern311 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern313 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  return 0;
}

static int
pattern314 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[4], i1))
    return -1;
  x7 = XVECEXP (x1, 0, 1);
  x8 = XEXP (x7, 1);
  return pattern313 (x8, i1); /* [-1, 0] */
}

static int
pattern315 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  x6 = XEXP (x5, 0);
  if (GET_CODE (x6) != MULT)
    return -1;
  x7 = XEXP (x5, 2);
  if (x7 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x8 = XVECEXP (x1, 0, 1);
  x9 = XEXP (x8, 1);
  if (GET_CODE (x9) != PLUS)
    return -1;
  x10 = XEXP (x9, 0);
  if (GET_CODE (x10) != i1)
    return -1;
  x11 = XEXP (x10, 0);
  if (GET_CODE (x11) != MULT)
    return -1;
  x12 = XEXP (x10, 2);
  if (x12 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x13 = XEXP (x6, 0);
  operands[1] = x13;
  x14 = XEXP (x6, 1);
  operands[2] = x14;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  x15 = XEXP (x5, 1);
  operands[3] = x15;
  if (!const_int_operand (operands[3], VOIDmode))
    return -1;
  x16 = XEXP (x4, 1);
  operands[4] = x16;
  x17 = XEXP (x11, 0);
  if (!rtx_equal_p (x17, operands[1]))
    return -1;
  x18 = XEXP (x11, 1);
  if (!rtx_equal_p (x18, operands[2]))
    return -1;
  x19 = XEXP (x10, 1);
  if (!rtx_equal_p (x19, operands[3]))
    return -1;
  x20 = XEXP (x9, 1);
  if (!rtx_equal_p (x20, operands[4]))
    return -1;
  switch (GET_MODE (x4))
    {
    case SImode:
      return pattern314 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern314 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern316 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  switch (GET_MODE (x4))
    {
    case SImode:
      if (!register_operand (operands[1], SImode))
        return -1;
      x5 = XEXP (x4, 1);
      if (GET_MODE (x5) != SImode
          || !register_operand (operands[2], SImode)
          || !aarch64_shift_imm_si (operands[3], QImode)
          || !register_operand (operands[0], SImode))
        return -1;
      x6 = XVECEXP (x1, 0, 1);
      x7 = XEXP (x6, 1);
      if (GET_MODE (x7) != SImode)
        return -1;
      x8 = XEXP (x7, 1);
      if (GET_MODE (x8) != SImode)
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[1], DImode))
        return -1;
      x5 = XEXP (x4, 1);
      if (GET_MODE (x5) != DImode
          || !register_operand (operands[2], DImode)
          || !aarch64_shift_imm_di (operands[3], QImode)
          || !register_operand (operands[0], DImode))
        return -1;
      x6 = XVECEXP (x1, 0, 1);
      x7 = XEXP (x6, 1);
      if (GET_MODE (x7) != DImode)
        return -1;
      x8 = XEXP (x7, 1);
      if (GET_MODE (x8) != DImode)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern317 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != MINUS)
    return -1;
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) != i1)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 1);
  x7 = XEXP (x6, 0);
  x8 = XEXP (x7, 0);
  operands[1] = x8;
  x9 = XEXP (x7, 1);
  x10 = XEXP (x9, 0);
  operands[2] = x10;
  x11 = XEXP (x9, 1);
  operands[3] = x11;
  x12 = XEXP (x3, 0);
  if (!rtx_equal_p (x12, operands[1]))
    return -1;
  x13 = XEXP (x4, 0);
  if (!rtx_equal_p (x13, operands[2]))
    return -1;
  x14 = XEXP (x4, 1);
  if (!rtx_equal_p (x14, operands[3]))
    return -1;
  return pattern316 (x1); /* [-1, 1] */
}

static int
pattern318 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1
      || !register_operand (operands[0], i1))
    return -1;
  x6 = XVECEXP (x1, 0, 1);
  x7 = XEXP (x6, 1);
  if (GET_MODE (x7) != i1)
    return -1;
  x8 = XEXP (x7, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case QImode:
      if (!register_operand (operands[2], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[2], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[2], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern319 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != MINUS)
    return -1;
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) != i1)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 1);
  x7 = XEXP (x6, 0);
  x8 = XEXP (x7, 0);
  operands[1] = x8;
  x9 = XEXP (x7, 1);
  x10 = XEXP (x9, 0);
  operands[2] = x10;
  x11 = XEXP (x3, 0);
  if (!rtx_equal_p (x11, operands[1]))
    return -1;
  x12 = XEXP (x4, 0);
  if (!rtx_equal_p (x12, operands[2]))
    return -1;
  switch (GET_MODE (x7))
    {
    case SImode:
      return pattern318 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern318 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern320 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[4], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[0], i1))
    return -1;
  x7 = XVECEXP (x1, 0, 1);
  x8 = XEXP (x7, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  x9 = XEXP (x8, 1);
  if (GET_MODE (x9) != i1)
    return -1;
  x10 = XEXP (x9, 0);
  if (GET_MODE (x10) != i1)
    return -1;
  return 0;
}

static int
pattern321 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 1);
  x6 = XEXP (x5, 0);
  if (GET_CODE (x6) != MULT)
    return -1;
  x7 = XEXP (x5, 2);
  if (x7 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x8 = XVECEXP (x1, 0, 1);
  x9 = XEXP (x8, 1);
  if (GET_CODE (x9) != MINUS)
    return -1;
  x10 = XEXP (x9, 1);
  if (GET_CODE (x10) != i1)
    return -1;
  x11 = XEXP (x10, 0);
  if (GET_CODE (x11) != MULT)
    return -1;
  x12 = XEXP (x10, 2);
  if (x12 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x13 = XEXP (x4, 0);
  operands[4] = x13;
  x14 = XEXP (x6, 0);
  operands[1] = x14;
  x15 = XEXP (x6, 1);
  operands[2] = x15;
  if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
    return -1;
  x16 = XEXP (x5, 1);
  operands[3] = x16;
  if (!const_int_operand (operands[3], VOIDmode))
    return -1;
  x17 = XEXP (x9, 0);
  if (!rtx_equal_p (x17, operands[4]))
    return -1;
  x18 = XEXP (x11, 0);
  if (!rtx_equal_p (x18, operands[1]))
    return -1;
  x19 = XEXP (x11, 1);
  if (!rtx_equal_p (x19, operands[2]))
    return -1;
  x20 = XEXP (x10, 1);
  if (!rtx_equal_p (x20, operands[3]))
    return -1;
  switch (GET_MODE (x4))
    {
    case SImode:
      return pattern320 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern320 (x1, DImode) != 0)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern322 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != NEG)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != i1)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 1);
  x7 = XEXP (x6, 0);
  x8 = XEXP (x7, 0);
  x9 = XEXP (x8, 0);
  operands[1] = x9;
  x10 = XEXP (x8, 1);
  operands[2] = x10;
  x11 = XEXP (x4, 0);
  if (!rtx_equal_p (x11, operands[1]))
    return -1;
  x12 = XEXP (x4, 1);
  if (!rtx_equal_p (x12, operands[2]))
    return -1;
  switch (GET_MODE (x7))
    {
    case SImode:
      if (GET_MODE (x8) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode)
          || !register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || GET_MODE (x4) != SImode)
        return -1;
      return 0;

    case DImode:
      if (GET_MODE (x8) != DImode
          || !register_operand (operands[1], DImode)
          || !aarch64_shift_imm_di (operands[2], QImode)
          || !register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || GET_MODE (x4) != DImode)
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern323 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  x6 = XEXP (x5, 0);
  operands[1] = x6;
  x7 = XEXP (x5, 1);
  operands[2] = x7;
  x8 = XEXP (x4, 1);
  operands[3] = x8;
  x9 = XVECEXP (x1, 0, 1);
  x10 = XEXP (x9, 1);
  switch (GET_CODE (x10))
    {
    case AND:
      x11 = XEXP (x10, 0);
      if (GET_CODE (x11) != i1)
        return -1;
      return pattern309 (x1); /* [-1, 1] */

    case ZERO_EXTEND:
      if (GET_MODE (x10) != DImode)
        return -1;
      x11 = XEXP (x10, 0);
      if (GET_CODE (x11) != AND
          || GET_MODE (x11) != SImode)
        return -1;
      x12 = XEXP (x11, 0);
      if (GET_CODE (x12) != i1
          || GET_MODE (x12) != SImode
          || GET_MODE (x4) != SImode
          || GET_MODE (x5) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode)
          || !register_operand (operands[3], SImode)
          || !register_operand (operands[0], DImode))
        return -1;
      x13 = XEXP (x12, 0);
      if (!rtx_equal_p (x13, operands[1]))
        return -1;
      x14 = XEXP (x12, 1);
      if (!rtx_equal_p (x14, operands[2]))
        return -1;
      x15 = XEXP (x11, 1);
      if (!rtx_equal_p (x15, operands[3]))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern324 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) != UNSPEC
      || XVECLEN (x4, 0) != 1
      || XINT (x4, 1) != 28
      || !register_operand (operands[0], OImode)
      || GET_MODE (x1) != OImode)
    return -1;
  x5 = XEXP (x2, 0);
  x6 = XEXP (x5, 1);
  x7 = XVECEXP (x6, 0, 0);
  operands[1] = x7;
  if (!aarch64_simd_struct_operand (operands[1], BLKmode))
    return -1;
  x8 = XVECEXP (x4, 0, 0);
  if (!rtx_equal_p (x8, operands[1]))
    return -1;
  return 0;
}

static int
pattern325 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[3], i1)
      || !register_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern326 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2
      || !register_operand (operands[1], i2))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  return 0;
}

static int
pattern327 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != i1
      || !register_operand (operands[0], i1)
      || !register_operand (operands[2], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 3);
  switch (GET_MODE (x2))
    {
    case V8QImode:
      return 0;

    case V16QImode:
      return 1;

    case V4HImode:
      return 2;

    case V8HImode:
      return 3;

    case V2SImode:
      return 4;

    case V4SImode:
      return 5;

    case V2DImode:
      return 6;

    case V4HFmode:
      return 7;

    case V8HFmode:
      return 8;

    case V2SFmode:
      return 9;

    case V4SFmode:
      return 10;

    case V2DFmode:
      return 11;

    case DImode:
      return 12;

    case DFmode:
      return 13;

    default:
      return -1;
    }
}

static int
pattern328 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !const_int_operand (operands[3], i1))
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1
      || !const_int_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern329 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !const_int_operand (operands[2], i1))
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1
      || !const_int_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern330 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1
      || !register_operand (operands[3], i1))
    return -1;
  x3 = XEXP (x1, 1);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != SFmode
      || !register_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern331 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern332 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[1], i1)
      || !vect_par_cnst_hi_half (operands[3], i1))
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i3)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern333 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3, machine_mode i4)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[1], i4)
      || !vect_par_cnst_hi_half (operands[3], i4))
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i3)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i2
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern334 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  x6 = XEXP (x5, 0);
  x7 = XEXP (x6, 0);
  operands[1] = x7;
  x8 = XEXP (x6, 1);
  operands[2] = x8;
  x9 = XEXP (x4, 1);
  operands[3] = x9;
  x10 = XVECEXP (x1, 0, 1);
  x11 = XEXP (x10, 1);
  switch (GET_CODE (x11))
    {
    case AND:
      x12 = XEXP (x11, 0);
      if (GET_CODE (x12) != NOT)
        return -1;
      x13 = XEXP (x12, 0);
      if (GET_CODE (x13) != i1)
        return -1;
      x14 = XEXP (x13, 0);
      if (!rtx_equal_p (x14, operands[1]))
        return -1;
      x15 = XEXP (x13, 1);
      if (!rtx_equal_p (x15, operands[2]))
        return -1;
      x16 = XEXP (x11, 1);
      if (!rtx_equal_p (x16, operands[3]))
        return -1;
      switch (GET_MODE (x4))
        {
        case SImode:
          if (GET_MODE (x5) != SImode
              || GET_MODE (x6) != SImode
              || !register_operand (operands[1], SImode)
              || !aarch64_shift_imm_si (operands[2], QImode)
              || !register_operand (operands[3], SImode)
              || pattern313 (x11, SImode) != 0)
            return -1;
          return 0;

        case DImode:
          if (GET_MODE (x5) != DImode
              || GET_MODE (x6) != DImode
              || !register_operand (operands[1], DImode)
              || !aarch64_shift_imm_di (operands[2], QImode)
              || !register_operand (operands[3], DImode)
              || pattern313 (x11, DImode) != 0)
            return -1;
          return 1;

        default:
          return -1;
        }

    case ZERO_EXTEND:
      if (GET_MODE (x11) != DImode)
        return -1;
      x12 = XEXP (x11, 0);
      if (GET_CODE (x12) != AND
          || GET_MODE (x12) != SImode)
        return -1;
      x13 = XEXP (x12, 0);
      if (GET_CODE (x13) != NOT
          || GET_MODE (x13) != SImode)
        return -1;
      x14 = XEXP (x13, 0);
      if (GET_CODE (x14) != i1
          || GET_MODE (x14) != SImode
          || GET_MODE (x4) != SImode
          || GET_MODE (x5) != SImode
          || GET_MODE (x6) != SImode
          || !register_operand (operands[1], SImode)
          || !aarch64_shift_imm_si (operands[2], QImode)
          || !register_operand (operands[3], SImode)
          || !register_operand (operands[0], DImode))
        return -1;
      x17 = XEXP (x14, 0);
      if (!rtx_equal_p (x17, operands[1]))
        return -1;
      x18 = XEXP (x14, 1);
      if (!rtx_equal_p (x18, operands[2]))
        return -1;
      x19 = XEXP (x12, 1);
      if (!rtx_equal_p (x19, operands[3]))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern335 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_plus_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern336 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[2] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern335 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern335 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern335 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern335 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern337 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_logical_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern338 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[2] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern337 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern337 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern337 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern337 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern339 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern340 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  if (!rtx_equal_p (x2, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern339 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern339 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern339 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern339 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern341 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != UNSPEC
      || XVECLEN (x3, 0) != 1)
    return -1;
  x4 = XEXP (x1, 0);
  x5 = XEXP (x4, 1);
  x6 = XVECEXP (x5, 0, 0);
  operands[1] = x6;
  if (!aarch64_simd_struct_operand (operands[1], BLKmode))
    return -1;
  x7 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x7, operands[1]))
    return -1;
  switch (XINT (x5, 1))
    {
    case 30:
      return 0;

    case 32:
      return 1;

    default:
      return -1;
    }
}

static int
pattern342 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[4], i1))
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[3], i1))
    return -1;
  return 0;
}

static int
pattern343 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_reg_or_zero (operands[1], i1)
      || !register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 0);
  if (!rtx_equal_p (x2, operands[1]))
    return -1;
  x3 = XEXP (x1, 1);
  if (!rtx_equal_p (x3, operands[2]))
    return -1;
  return 0;
}

static int
pattern344 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != DImode)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != i1
      || GET_MODE (x4) != SImode)
    return -1;
  x5 = XVECEXP (x1, 0, 0);
  x6 = XEXP (x5, 1);
  x7 = XEXP (x6, 0);
  if (GET_MODE (x7) != SImode)
    return -1;
  return 0;
}

static int
pattern345 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1
      || !register_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern346 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i1
      || !aarch64_sync_memory_operand (operands[1], i1)
      || !aarch64_logical_operand (operands[2], i1))
    return -1;
  x5 = XVECEXP (x1, 0, 1);
  x6 = XEXP (x5, 1);
  if (GET_MODE (x6) != i1)
    return -1;
  return 0;
}

static int
pattern347 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  x4 = XVECEXP (x3, 0, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  x5 = XVECEXP (x3, 0, 1);
  if (!rtx_equal_p (x5, operands[2]))
    return -1;
  x6 = XEXP (x2, 0);
  if (!rtx_equal_p (x6, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern346 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern346 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern346 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern346 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern348 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  if (peep2_current_count < 4
      || !memory_operand (operands[1], SImode)
      || GET_CODE (x1) != SET)
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) != i1
      || GET_MODE (x2) != DImode)
    return -1;
  x3 = XEXP (x1, 0);
  operands[4] = x3;
  if (!register_operand (operands[4], DImode))
    return -1;
  x4 = XEXP (x2, 0);
  operands[5] = x4;
  if (!memory_operand (operands[5], SImode))
    return -1;
  x5 = PATTERN (peep2_next_insn (3));
  if (GET_CODE (x5) != SET)
    return -1;
  x6 = XEXP (x5, 1);
  if (GET_CODE (x6) != i1
      || GET_MODE (x6) != DImode)
    return -1;
  x7 = XEXP (x5, 0);
  operands[6] = x7;
  if (!register_operand (operands[6], DImode))
    return -1;
  x8 = XEXP (x6, 0);
  operands[7] = x8;
  if (!memory_operand (operands[7], SImode))
    return -1;
  return 0;
}

static int
pattern349 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i2)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1)
    return -1;
  return 0;
}

static int
pattern350 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern351 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[0], i1)
      || !const_scalar_int_operand (operands[2], i2))
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_MODE (x4) != i2)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1
      || !aarch64_plus_immediate (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern352 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[0], i1))
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x5 = XEXP (x1, 1);
  if (GET_MODE (x5) != i2)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1)
    return -1;
  return 0;
}

static int
pattern353 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i2)
      || GET_MODE (x1) != i2)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2
      || !register_operand (operands[1], i1))
    return -1;
  return 0;
}

static int
pattern354 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!memory_operand (operands[0], i1)
      || !aarch64_reg_or_fp_zero (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !aarch64_reg_or_fp_zero (operands[3], i1)
      || !memory_operand (operands[4], i1)
      || !aarch64_reg_or_fp_zero (operands[5], i1)
      || !memory_operand (operands[6], i1)
      || !aarch64_reg_or_fp_zero (operands[7], i1))
    return -1;
  return 0;
}

static int
pattern355 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != i1)
    return -1;
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x1, 2);
  if (GET_MODE (x3) != i1)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case SFmode:
      if (!register_operand (operands[2], SFmode)
          || !register_operand (operands[3], SFmode))
        return -1;
      return 0;

    case DFmode:
      if (!register_operand (operands[2], DFmode)
          || !register_operand (operands[3], DFmode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern356 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i3)
      || GET_MODE (x1) != i3)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i3)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i2
      || !register_operand (operands[1], i1)
      || !vect_par_cnst_hi_half (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern357 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_plus_operand (operands[2], i1)
      || !scratch_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern358 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[2] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern357 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern357 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern357 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern357 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern359 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1
      || !aarch64_logical_operand (operands[2], i1)
      || !scratch_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern360 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  operands[2] = x3;
  x4 = XEXP (x2, 0);
  if (!rtx_equal_p (x4, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      return pattern359 (x1, QImode); /* [-1, 0] */

    case HImode:
      if (pattern359 (x1, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      if (pattern359 (x1, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      if (pattern359 (x1, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern361 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !aarch64_logical_operand (operands[2], i1)
      || !scratch_operand (operands[4], i1))
    return -1;
  return 0;
}

static int
pattern362 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 4);
  x3 = XEXP (x2, 0);
  operands[5] = x3;
  if (!scratch_operand (operands[5], SImode))
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 0);
  if (!rtx_equal_p (x5, operands[1]))
    return -1;
  x6 = XEXP (x4, 1);
  x7 = XVECEXP (x6, 0, 0);
  switch (GET_CODE (x7))
    {
    case PLUS:
      return pattern358 (x6); /* [-1, 3] */

    case MINUS:
      res = pattern358 (x6);
      if (res >= 0)
        return res + 4; /* [4, 7] */
      return -1;

    case IOR:
      res = pattern360 (x6);
      if (res >= 0)
        return res + 8; /* [8, 11] */
      return -1;

    case XOR:
      res = pattern360 (x6);
      if (res >= 0)
        return res + 12; /* [12, 15] */
      return -1;

    case AND:
      res = pattern360 (x6);
      if (res >= 0)
        return res + 16; /* [16, 19] */
      return -1;

    case NOT:
      x8 = XEXP (x7, 0);
      if (GET_CODE (x8) != AND)
        return -1;
      x9 = XEXP (x8, 1);
      operands[2] = x9;
      x10 = XEXP (x8, 0);
      if (!rtx_equal_p (x10, operands[1]))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          if (pattern361 (x6, QImode) != 0)
            return -1;
          return 20;

        case HImode:
          if (pattern361 (x6, HImode) != 0)
            return -1;
          return 21;

        case SImode:
          if (pattern361 (x6, SImode) != 0)
            return -1;
          return 22;

        case DImode:
          if (pattern361 (x6, DImode) != 0)
            return -1;
          return 23;

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
pattern363 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[2], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[3], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  return 0;
}

static int
pattern364 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_mem_pair_offset (operands[4], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 2);
  x5 = XEXP (x4, 1);
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1
      || !const_int_operand (operands[5], i1))
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case SImode:
      return pattern363 (x1, SImode); /* [-1, 0] */

    case DImode:
      if (pattern363 (x1, DImode) != 0)
        return -1;
      return 1;

    case SFmode:
      if (pattern363 (x1, SFmode) != 0)
        return -1;
      return 2;

    case DFmode:
      if (pattern363 (x1, DFmode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern365 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!memory_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !memory_operand (operands[3], i1)
      || !register_operand (operands[4], i1)
      || !memory_operand (operands[5], i1)
      || !register_operand (operands[6], i1)
      || !memory_operand (operands[7], i1))
    return -1;
  return 0;
}

static int
pattern366 (machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!aarch64_reg_or_zero (operands[1], i1)
      || !memory_operand (operands[2], i1)
      || !aarch64_reg_or_zero (operands[3], i1)
      || !memory_operand (operands[4], i1)
      || !aarch64_reg_or_zero (operands[5], i1)
      || !memory_operand (operands[6], i1)
      || !aarch64_reg_or_zero (operands[7], i1))
    return -1;
  return 0;
}

static int
pattern367 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1)
      || !aarch64_plus_operand (operands[2], i1)
      || !register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  return 0;
}

static int
pattern368 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  return 0;
}

static int
pattern369 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1)
      || !aarch64_logical_operand (operands[2], i1)
      || !register_operand (operands[0], i1)
      || GET_MODE (x1) != i1)
    return -1;
  return 0;
}

static int
pattern370 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1)
      || !aarch64_sync_memory_operand (operands[1], i1)
      || GET_MODE (x1) != i1)
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_MODE (x2) != i1)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1
      || !aarch64_logical_operand (operands[2], i1))
    return -1;
  return 0;
}

static int
pattern371 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1
      || !register_operand (operands[3], i1)
      || !register_operand (operands[0], i1))
    return -1;
  x7 = XVECEXP (x1, 0, 1);
  x8 = XEXP (x7, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  x9 = XEXP (x8, 0);
  if (GET_MODE (x9) != i1)
    return -1;
  x10 = XEXP (x9, 0);
  if (GET_MODE (x10) != i1)
    return -1;
  switch (GET_MODE (operands[1]))
    {
    case QImode:
      if (!register_operand (operands[1], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[1], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[1], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern372 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_CODE (x5) != i1)
    return -1;
  x6 = XVECEXP (x1, 0, 0);
  x7 = XEXP (x6, 1);
  x8 = XEXP (x7, 0);
  x9 = XEXP (x8, 0);
  x10 = XEXP (x9, 0);
  x11 = XEXP (x10, 0);
  operands[1] = x11;
  if (!aarch64_imm3 (operands[2], VOIDmode))
    return -1;
  x12 = XEXP (x5, 0);
  if (!rtx_equal_p (x12, operands[1]))
    return -1;
  switch (GET_MODE (x8))
    {
    case SImode:
      return pattern371 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern371 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern373 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[1], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1
      || !register_operand (operands[0], i1))
    return -1;
  x7 = XVECEXP (x1, 0, 1);
  x8 = XEXP (x7, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  x9 = XEXP (x8, 1);
  if (GET_MODE (x9) != i1)
    return -1;
  x10 = XEXP (x9, 0);
  if (GET_MODE (x10) != i1)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case QImode:
      if (!register_operand (operands[2], QImode))
        return -1;
      return 0;

    case HImode:
      if (!register_operand (operands[2], HImode))
        return -1;
      return 1;

    case SImode:
      if (!register_operand (operands[2], SImode))
        return -1;
      return 2;

    default:
      return -1;
    }
}

static int
pattern374 (rtx x1, rtx_code i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  x5 = XEXP (x4, 0);
  if (GET_CODE (x5) != i1)
    return -1;
  x6 = XVECEXP (x1, 0, 0);
  x7 = XEXP (x6, 1);
  x8 = XEXP (x7, 0);
  x9 = XEXP (x8, 1);
  x10 = XEXP (x9, 0);
  x11 = XEXP (x10, 0);
  operands[2] = x11;
  if (!aarch64_imm3 (operands[3], VOIDmode))
    return -1;
  x12 = XEXP (x5, 0);
  if (!rtx_equal_p (x12, operands[2]))
    return -1;
  switch (GET_MODE (x8))
    {
    case SImode:
      return pattern373 (x1, SImode); /* [-1, 2] */

    case DImode:
      res = pattern373 (x1, DImode);
      if (res >= 0)
        return res + 3; /* [3, 5] */
      return -1;

    default:
      return -1;
    }
}

static int
pattern375 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (!rtx_equal_p (x2, operands[1]))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      x3 = XEXP (x1, 1);
      return pattern345 (x3, QImode); /* [-1, 0] */

    case HImode:
      x3 = XEXP (x1, 1);
      if (pattern345 (x3, HImode) != 0)
        return -1;
      return 1;

    case SImode:
      x3 = XEXP (x1, 1);
      if (pattern345 (x3, SImode) != 0)
        return -1;
      return 2;

    case DImode:
      x3 = XEXP (x1, 1);
      if (pattern345 (x3, DImode) != 0)
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern376 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1
      || !register_operand (operands[1], i1)
      || !register_operand (operands[2], i1)
      || !register_operand (operands[0], i1))
    return -1;
  x6 = XVECEXP (x1, 0, 1);
  x7 = XEXP (x6, 1);
  if (GET_MODE (x7) != i1)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_MODE (x8) != i1)
    return -1;
  return 0;
}

static int
pattern377 (rtx x1, machine_mode i1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  if (!register_operand (operands[0], i1))
    return -1;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1
      || !register_operand (operands[1], i1)
      || !aarch64_mem_pair_offset (operands[4], i1))
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  x5 = XEXP (x4, 0);
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1)
    return -1;
  x7 = XVECEXP (x1, 0, 2);
  x8 = XEXP (x7, 0);
  x9 = XEXP (x8, 0);
  if (GET_MODE (x9) != i1
      || !const_int_operand (operands[5], i1))
    return -1;
  switch (GET_MODE (x5))
    {
    case SImode:
      if (!register_operand (operands[2], SImode)
          || GET_MODE (x8) != SImode
          || !register_operand (operands[3], SImode))
        return -1;
      return 0;

    case DImode:
      if (!register_operand (operands[2], DImode)
          || GET_MODE (x8) != DImode
          || !register_operand (operands[3], DImode))
        return -1;
      return 1;

    case SFmode:
      if (!register_operand (operands[2], SFmode)
          || GET_MODE (x8) != SFmode
          || !register_operand (operands[3], SFmode))
        return -1;
      return 2;

    case DFmode:
      if (!register_operand (operands[2], DFmode)
          || GET_MODE (x8) != DFmode
          || !register_operand (operands[3], DFmode))
        return -1;
      return 3;

    default:
      return -1;
    }
}

static int
pattern378 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != V4SImode)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != V4HImode)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != HImode)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case V4HImode:
      if (!register_operand (operands[2], V4HImode))
        return -1;
      return 0;

    case V8HImode:
      if (!register_operand (operands[2], V8HImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern379 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (GET_MODE (x1) != V2DImode)
    return -1;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != V2SImode)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  switch (GET_MODE (operands[2]))
    {
    case V2SImode:
      if (!register_operand (operands[2], V2SImode))
        return -1;
      return 0;

    case V4SImode:
      if (!register_operand (operands[2], V4SImode))
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern380 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_MODE (x4) != i2)
    return -1;
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i1)
    return -1;
  return 0;
}

static int
pattern381 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x1, 1);
  if (GET_MODE (x4) != i2)
    return -1;
  x5 = XEXP (x4, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  return 0;
}

static int
pattern382 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) != UNSPEC
      || XVECLEN (x4, 0) != 1
      || XINT (x4, 1) != 30
      || !register_operand (operands[0], CImode)
      || GET_MODE (x1) != CImode)
    return -1;
  x5 = XVECEXP (x4, 0, 0);
  if (!rtx_equal_p (x5, operands[1]))
    return -1;
  return 0;
}

static int
pattern383 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[1], i1)
      || !const_scalar_int_operand (operands[3], i2))
    return -1;
  x6 = XEXP (x3, 1);
  if (GET_MODE (x6) != i2)
    return -1;
  x7 = XEXP (x6, 0);
  if (GET_MODE (x7) != i1
      || !aarch64_plus_immediate (operands[2], i1)
      || !register_operand (operands[0], i1))
    return -1;
  x8 = XVECEXP (x1, 0, 1);
  x9 = XEXP (x8, 1);
  if (GET_MODE (x9) != i1)
    return -1;
  return 0;
}

static int
pattern384 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) != i2
      || !register_operand (operands[1], i1))
    return -1;
  x6 = XEXP (x4, 1);
  if (GET_MODE (x6) != i2
      || !register_operand (operands[2], i1))
    return -1;
  x7 = XEXP (x3, 1);
  if (GET_MODE (x7) != i2)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_MODE (x8) != i1
      || !register_operand (operands[0], i1))
    return -1;
  x9 = XVECEXP (x1, 0, 1);
  x10 = XEXP (x9, 1);
  if (GET_MODE (x10) != i1)
    return -1;
  return 0;
}

static int
pattern385 (rtx x1, machine_mode i1, machine_mode i2)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i2)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i1)
    return -1;
  x4 = XEXP (x2, 1);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x1, 1);
  if (GET_MODE (x5) != i2)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1)
    return -1;
  x7 = XEXP (x5, 1);
  if (GET_MODE (x7) != i1)
    return -1;
  return 0;
}

static int
pattern386 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  switch (GET_CODE (x3))
    {
    case VEC_DUPLICATE:
      x4 = XEXP (x3, 0);
      if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x5 = XEXP (x1, 1);
      x6 = XEXP (x5, 1);
      if (GET_CODE (x6) != VEC_DUPLICATE)
        return -1;
      x7 = XEXP (x6, 0);
      if (x7 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      return 0;

    case CONST_INT:
      if (XWINT (x3, 0) != 0L)
        return -1;
      x5 = XEXP (x1, 1);
      x6 = XEXP (x5, 1);
      if (x6 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      return 1;

    default:
      return -1;
    }
}

static int
pattern387 (rtx x1)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  x5 = XEXP (x4, 1);
  if (GET_CODE (x5) != UNSPEC
      || XVECLEN (x5, 0) != 1
      || XINT (x5, 1) != 32
      || !register_operand (operands[0], XImode)
      || GET_MODE (x1) != XImode)
    return -1;
  x6 = XEXP (x3, 0);
  x7 = XEXP (x6, 1);
  x8 = XVECEXP (x7, 0, 0);
  if (!rtx_equal_p (x8, operands[1]))
    return -1;
  x9 = XVECEXP (x5, 0, 0);
  if (!rtx_equal_p (x9, operands[1]))
    return -1;
  return 0;
}

static int
pattern388 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i2)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1)
    return -1;
  x7 = XEXP (x1, 1);
  if (GET_MODE (x7) != i2)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_MODE (x8) != i1)
    return -1;
  return 0;
}

static int
pattern389 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i2)
    return -1;
  x6 = XEXP (x5, 1);
  if (GET_MODE (x6) != i1)
    return -1;
  x7 = XEXP (x1, 1);
  if (GET_MODE (x7) != i2)
    return -1;
  x8 = XEXP (x7, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  return 0;
}

static int
pattern390 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x3, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x2, 1);
  if (GET_MODE (x6) != i2)
    return -1;
  x7 = XEXP (x6, 0);
  if (GET_MODE (x7) != i1)
    return -1;
  x8 = XEXP (x6, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  x9 = XEXP (x1, 1);
  if (GET_MODE (x9) != i2)
    return -1;
  x10 = XEXP (x9, 0);
  if (GET_MODE (x10) != i1)
    return -1;
  x11 = XEXP (x9, 1);
  if (GET_MODE (x11) != i1)
    return -1;
  return 0;
}

static int
pattern391 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i2)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_MODE (x6) != i1)
    return -1;
  x7 = XEXP (x1, 1);
  if (GET_MODE (x7) != i3)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_MODE (x8) != i2)
    return -1;
  x9 = XEXP (x8, 0);
  if (GET_MODE (x9) != i1)
    return -1;
  x10 = XEXP (x7, 1);
  if (GET_MODE (x10) != i2)
    return -1;
  x11 = XEXP (x10, 0);
  if (GET_MODE (x11) != i1)
    return -1;
  return 0;
}

static int
pattern392 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_MODE (x5) != i2)
    return -1;
  x6 = XEXP (x5, 1);
  if (GET_MODE (x6) != i1)
    return -1;
  x7 = XEXP (x1, 1);
  if (GET_MODE (x7) != i3)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_MODE (x8) != i2)
    return -1;
  x9 = XEXP (x8, 1);
  if (GET_MODE (x9) != i1)
    return -1;
  x10 = XEXP (x7, 1);
  if (GET_MODE (x10) != i2)
    return -1;
  x11 = XEXP (x10, 1);
  if (GET_MODE (x11) != i1)
    return -1;
  return 0;
}

static int
pattern393 (rtx x1, machine_mode i1, machine_mode i2, machine_mode i3)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != i3)
    return -1;
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != i2)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) != i1)
    return -1;
  x5 = XEXP (x3, 1);
  if (GET_MODE (x5) != i1)
    return -1;
  x6 = XEXP (x2, 1);
  if (GET_MODE (x6) != i2)
    return -1;
  x7 = XEXP (x6, 0);
  if (GET_MODE (x7) != i1)
    return -1;
  x8 = XEXP (x6, 1);
  if (GET_MODE (x8) != i1)
    return -1;
  x9 = XEXP (x1, 1);
  if (GET_MODE (x9) != i3)
    return -1;
  x10 = XEXP (x9, 0);
  if (GET_MODE (x10) != i2)
    return -1;
  x11 = XEXP (x10, 0);
  if (GET_MODE (x11) != i1)
    return -1;
  x12 = XEXP (x10, 1);
  if (GET_MODE (x12) != i1)
    return -1;
  x13 = XEXP (x9, 1);
  if (GET_MODE (x13) != i2)
    return -1;
  x14 = XEXP (x13, 0);
  if (GET_MODE (x14) != i1)
    return -1;
  x15 = XEXP (x13, 1);
  if (GET_MODE (x15) != i1)
    return -1;
  return 0;
}

static int
recog_1 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 1);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x5 = XEXP (x3, 0);
  if (!cc_register (x5, VOIDmode))
    return -1;
  x6 = XEXP (x2, 1);
  switch (GET_CODE (x6))
    {
    case COMPARE:
      x7 = XEXP (x2, 2);
      if (GET_CODE (x7) != UNSPEC
          || XVECLEN (x7, 0) != 1
          || XINT (x7, 1) != 67)
        return -1;
      x8 = XEXP (x1, 0);
      operands[1] = x8;
      operands[4] = x3;
      operands[0] = x5;
      x9 = XEXP (x6, 0);
      operands[2] = x9;
      x10 = XEXP (x6, 1);
      operands[3] = x10;
      x11 = XVECEXP (x7, 0, 0);
      operands[5] = x11;
      if (!immediate_operand (operands[5], VOIDmode))
        return -1;
      if (cc_register (operands[1], CCmode)
          && GET_MODE (x2) == CCmode
          && GET_MODE (x6) == CCmode
          && GET_MODE (x7) == CCmode)
        {
          switch (GET_MODE (operands[2]))
            {
            case SImode:
              if (register_operand (operands[2], SImode)
                  && aarch64_ccmp_operand (operands[3], SImode))
                return 3; /* ccmpsi */
              break;

            case DImode:
              if (register_operand (operands[2], DImode)
                  && aarch64_ccmp_operand (operands[3], DImode))
                return 4; /* ccmpdi */
              break;

            default:
              break;
            }
        }
      if (cc_register (operands[1], CCFPmode))
        {
          switch (pattern355 (x2, CCFPmode))
            {
            case 0:
              if (
#line 307 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return 5; /* fccmpsf */
              break;

            case 1:
              if (
#line 307 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return 6; /* fccmpdf */
              break;

            default:
              break;
            }
        }
      if (!cc_register (operands[1], CCFPEmode))
        return -1;
      switch (pattern355 (x2, CCFPEmode))
        {
        case 0:
          if (!
#line 322 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 7; /* fccmpesf */

        case 1:
          if (!
#line 322 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 8; /* fccmpedf */

        default:
          return -1;
        }

    case LABEL_REF:
      x7 = XEXP (x2, 2);
      if (GET_CODE (x7) != PC)
        return -1;
      x8 = XEXP (x1, 0);
      if (GET_CODE (x8) != PC)
        return -1;
      operands[0] = x3;
      operands[1] = x5;
      x9 = XEXP (x6, 0);
      operands[2] = x9;
      return 9; /* condjump */

    case CONST_INT:
    case REG:
    case SUBREG:
      operands[3] = x6;
      x8 = XEXP (x1, 0);
      operands[0] = x8;
      operands[1] = x3;
      operands[2] = x5;
      x7 = XEXP (x2, 2);
      operands[4] = x7;
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          if (pattern299 (x2, QImode) != 0
              || !
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!((operands[3] == const1_rtx && operands[4] == constm1_rtx)
     || (operands[3] == constm1_rtx && operands[4] == const1_rtx))))
            return -1;
          return 442; /* *cmovqi_insn */

        case HImode:
          if (pattern299 (x2, HImode) != 0
              || !
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!((operands[3] == const1_rtx && operands[4] == constm1_rtx)
     || (operands[3] == constm1_rtx && operands[4] == const1_rtx))))
            return -1;
          return 443; /* *cmovhi_insn */

        case SImode:
          if (pattern299 (x2, SImode) != 0
              || !
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!((operands[3] == const1_rtx && operands[4] == constm1_rtx)
     || (operands[3] == constm1_rtx && operands[4] == const1_rtx))))
            return -1;
          return 444; /* *cmovsi_insn */

        case DImode:
          if (pattern299 (x2, DImode) != 0
              || !
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!((operands[3] == const1_rtx && operands[4] == constm1_rtx)
     || (operands[3] == constm1_rtx && operands[4] == const1_rtx))))
            return -1;
          return 445; /* *cmovdi_insn */

        case SFmode:
          if (pattern300 (x2, SFmode) != 0
              || !
#line 3251 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 448; /* *cmovsf_insn */

        case DFmode:
          if (pattern300 (x2, DFmode) != 0
              || !
#line 3251 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 449; /* *cmovdf_insn */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      if (GET_MODE (x6) != DImode)
        return -1;
      x7 = XEXP (x2, 2);
      if (GET_CODE (x7) != ZERO_EXTEND
          || GET_MODE (x7) != DImode)
        return -1;
      x8 = XEXP (x1, 0);
      operands[0] = x8;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode)
        return -1;
      operands[1] = x3;
      operands[2] = x5;
      x9 = XEXP (x6, 0);
      operands[3] = x9;
      if (!register_operand (operands[3], SImode))
        return -1;
      x12 = XEXP (x7, 0);
      operands[4] = x12;
      if (!register_operand (operands[4], SImode))
        return -1;
      return 447; /* *cmovdi_insn_uxtw */

    default:
      return -1;
    }
}

static int
recog_2 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != LABEL_REF)
    return -1;
  x4 = XEXP (x2, 2);
  if (GET_CODE (x4) != PC)
    return -1;
  x5 = XEXP (x1, 0);
  if (GET_CODE (x5) != PC)
    return -1;
  x6 = XEXP (x2, 0);
  switch (GET_CODE (x6))
    {
    case EQ:
      switch (pattern216 (x2, pnum_clobbers))
        {
        case 0:
          x7 = XEXP (x6, 1);
          operands[1] = x7;
          x8 = XEXP (x3, 0);
          operands[2] = x8;
          switch (pattern214 (x3))
            {
            case 0:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                return 10; /* *compare_condjumpsi */
              break;

            case 1:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                return 12; /* *compare_condjumpsi */
              break;

            case 2:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                return 14; /* *compare_condjumpdi */
              break;

            case 3:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                return 16; /* *compare_condjumpdi */
              break;

            default:
              break;
            }
          if (XWINT (x7, 0) != 0L)
            return -1;
          operands[1] = x8;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (!register_operand (operands[0], SImode))
                return -1;
              return 25; /* *cbeqsi1 */

            case DImode:
              if (!register_operand (operands[0], DImode))
                return -1;
              return 27; /* *cbeqdi1 */

            default:
              return -1;
            }

        case 1:
          *pnum_clobbers = 1;
          return 29; /* *tbeqsi1 */

        case 2:
          *pnum_clobbers = 1;
          return 31; /* *tbeqdi1 */

        default:
          return -1;
        }

    case NE:
      switch (pattern216 (x2, pnum_clobbers))
        {
        case 0:
          x7 = XEXP (x6, 1);
          operands[1] = x7;
          x8 = XEXP (x3, 0);
          operands[2] = x8;
          switch (pattern214 (x3))
            {
            case 0:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                return 11; /* *compare_condjumpsi */
              break;

            case 1:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                return 13; /* *compare_condjumpsi */
              break;

            case 2:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                return 15; /* *compare_condjumpdi */
              break;

            case 3:
              if ((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                return 17; /* *compare_condjumpdi */
              break;

            default:
              break;
            }
          if (XWINT (x7, 0) != 0L)
            return -1;
          operands[1] = x8;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (!register_operand (operands[0], SImode))
                return -1;
              return 26; /* *cbnesi1 */

            case DImode:
              if (!register_operand (operands[0], DImode))
                return -1;
              return 28; /* *cbnedi1 */

            default:
              return -1;
            }

        case 1:
          *pnum_clobbers = 1;
          return 30; /* *tbnesi1 */

        case 2:
          *pnum_clobbers = 1;
          return 32; /* *tbnedi1 */

        default:
          return -1;
        }

    case LT:
      switch (pattern217 (x2, pnum_clobbers))
        {
        case 0:
          *pnum_clobbers = 1;
          return 33; /* *cbltqi1 */

        case 1:
          *pnum_clobbers = 1;
          return 35; /* *cblthi1 */

        case 2:
          *pnum_clobbers = 1;
          return 37; /* *cbltsi1 */

        case 3:
          *pnum_clobbers = 1;
          return 39; /* *cbltdi1 */

        default:
          return -1;
        }

    case GE:
      switch (pattern217 (x2, pnum_clobbers))
        {
        case 0:
          *pnum_clobbers = 1;
          return 34; /* *cbgeqi1 */

        case 1:
          *pnum_clobbers = 1;
          return 36; /* *cbgehi1 */

        case 2:
          *pnum_clobbers = 1;
          return 38; /* *cbgesi1 */

        case 3:
          *pnum_clobbers = 1;
          return 40; /* *cbgedi1 */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_3 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  switch (GET_CODE (x2))
    {
    case PC:
      x3 = XEXP (x1, 1);
      operands[0] = x3;
      if (!register_operand (operands[0], DImode))
        return -1;
      return 1; /* indirect_jump */

    case ZERO_EXTRACT:
      x4 = XEXP (x2, 0);
      operands[0] = x4;
      x5 = XEXP (x2, 1);
      operands[1] = x5;
      if (!const_int_operand (operands[1], VOIDmode))
        return -1;
      x6 = XEXP (x2, 2);
      operands[2] = x6;
      if (!const_int_operand (operands[2], VOIDmode))
        return -1;
      x3 = XEXP (x1, 1);
      operands[3] = x3;
      switch (GET_MODE (x2))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || !register_operand (operands[3], SImode)
              || !
#line 4337 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!(UINTVAL (operands[1]) == 0
     || (UINTVAL (operands[2]) + UINTVAL (operands[1])
	 > GET_MODE_BITSIZE (SImode)))))
            return -1;
          return 694; /* *insv_regsi */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || !register_operand (operands[3], DImode)
              || !
#line 4337 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!(UINTVAL (operands[1]) == 0
     || (UINTVAL (operands[2]) + UINTVAL (operands[1])
	 > GET_MODE_BITSIZE (DImode)))))
            return -1;
          return 695; /* *insv_regdi */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_4 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  operands[2] = x2;
  x3 = XEXP (x1, 0);
  if (GET_CODE (x3) != ZERO_EXTRACT)
    return -1;
  x4 = XEXP (x3, 1);
  if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 16])
    return -1;
  x5 = XEXP (x3, 0);
  operands[0] = x5;
  x6 = XEXP (x3, 2);
  operands[1] = x6;
  switch (GET_MODE (x3))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || !const_int_operand (operands[1], SImode)
          || !const_int_operand (operands[2], SImode)
          || !
#line 1098 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) < GET_MODE_BITSIZE (SImode)
   && UINTVAL (operands[1]) % 16 == 0))
        return -1;
      return 51; /* insv_immsi */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || !const_int_operand (operands[1], DImode)
          || !const_int_operand (operands[2], DImode)
          || !
#line 1098 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) < GET_MODE_BITSIZE (DImode)
   && UINTVAL (operands[1]) % 16 == 0))
        return -1;
      return 52; /* insv_immdi */

    default:
      return -1;
    }
}

static int
recog_5 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20, x21, x22, x23, x24, x25;
  rtx x26, x27, x28, x29, x30;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != VEC_CONCAT)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != VEC_CONCAT)
    return -1;
  x5 = XEXP (x3, 1);
  if (GET_CODE (x5) != VEC_CONCAT)
    return -1;
  x6 = XEXP (x1, 0);
  operands[0] = x6;
  x7 = XEXP (x4, 0);
  switch (GET_CODE (x7))
    {
    case UNSPEC:
      if (XVECLEN (x7, 0) != 1
          || XINT (x7, 1) != 28
          || pattern279 (x2, OImode, 28) != 0)
        return -1;
      x8 = XVECEXP (x7, 0, 0);
      operands[1] = x8;
      if (!aarch64_simd_struct_operand (operands[1], BLKmode))
        return -1;
      x9 = XEXP (x5, 0);
      x10 = XVECEXP (x9, 0, 0);
      if (!rtx_equal_p (x10, operands[1]))
        return -1;
      x11 = XEXP (x4, 1);
      switch (GET_CODE (x11))
        {
        case VEC_DUPLICATE:
          x12 = XEXP (x11, 0);
          if (x12 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          x13 = XEXP (x5, 1);
          if (GET_CODE (x13) != VEC_DUPLICATE)
            return -1;
          x14 = XEXP (x13, 0);
          if (x14 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          switch (GET_MODE (x3))
            {
            case V32QImode:
              if (pattern385 (x3, V8QImode, V16QImode) != 0
                  || !
#line 4883 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2854; /* aarch64_ld2v8qi_dreg_le */

            case V16HImode:
              if (pattern385 (x3, V4HImode, V8HImode) != 0
                  || !
#line 4883 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2855; /* aarch64_ld2v4hi_dreg_le */

            case V16HFmode:
              if (pattern385 (x3, V4HFmode, V8HFmode) != 0
                  || !
#line 4883 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2856; /* aarch64_ld2v4hf_dreg_le */

            case V8SImode:
              if (pattern385 (x3, V2SImode, V4SImode) != 0
                  || !
#line 4883 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2857; /* aarch64_ld2v2si_dreg_le */

            case V8SFmode:
              if (pattern385 (x3, V2SFmode, V4SFmode) != 0
                  || !
#line 4883 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2858; /* aarch64_ld2v2sf_dreg_le */

            default:
              return -1;
            }

        case CONST_INT:
          if (XWINT (x11, 0) != 0L)
            return -1;
          x13 = XEXP (x5, 1);
          if (x13 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          switch (GET_MODE (x3))
            {
            case V4DImode:
              if (pattern380 (x3, DImode, V2DImode) != 0
                  || !
#line 4919 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2864; /* aarch64_ld2di_dreg_le */

            case V4DFmode:
              if (pattern380 (x3, DFmode, V2DFmode) != 0
                  || !
#line 4919 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return -1;
              return 2865; /* aarch64_ld2df_dreg_le */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case VEC_DUPLICATE:
      x15 = XEXP (x7, 0);
      if (x15 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x11 = XEXP (x4, 1);
      if (GET_CODE (x11) != UNSPEC
          || XVECLEN (x11, 0) != 1
          || XINT (x11, 1) != 28)
        return -1;
      x9 = XEXP (x5, 0);
      if (GET_CODE (x9) != VEC_DUPLICATE)
        return -1;
      x16 = XEXP (x9, 0);
      if (x16 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || pattern324 (x2) != 0)
        return -1;
      switch (GET_MODE (x3))
        {
        case V32QImode:
          if (pattern385 (x3, V8QImode, V16QImode) != 0
              || !
#line 4901 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2859; /* aarch64_ld2v8qi_dreg_be */

        case V16HImode:
          if (pattern385 (x3, V4HImode, V8HImode) != 0
              || !
#line 4901 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2860; /* aarch64_ld2v4hi_dreg_be */

        case V16HFmode:
          if (pattern385 (x3, V4HFmode, V8HFmode) != 0
              || !
#line 4901 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2861; /* aarch64_ld2v4hf_dreg_be */

        case V8SImode:
          if (pattern385 (x3, V2SImode, V4SImode) != 0
              || !
#line 4901 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2862; /* aarch64_ld2v2si_dreg_be */

        case V8SFmode:
          if (pattern385 (x3, V2SFmode, V4SFmode) != 0
              || !
#line 4901 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2863; /* aarch64_ld2v2sf_dreg_be */

        default:
          return -1;
        }

    case CONST_INT:
      if (XWINT (x7, 0) != 0L)
        return -1;
      x11 = XEXP (x4, 1);
      if (GET_CODE (x11) != UNSPEC
          || XVECLEN (x11, 0) != 1
          || XINT (x11, 1) != 28)
        return -1;
      x9 = XEXP (x5, 0);
      if (x9 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || pattern324 (x2) != 0)
        return -1;
      switch (GET_MODE (x3))
        {
        case V4DImode:
          if (pattern381 (x3, DImode, V2DImode) != 0
              || !
#line 4937 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2866; /* aarch64_ld2di_dreg_be */

        case V4DFmode:
          if (pattern381 (x3, DFmode, V2DFmode) != 0
              || !
#line 4937 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 2867; /* aarch64_ld2df_dreg_be */

        default:
          return -1;
        }

    case VEC_CONCAT:
      x11 = XEXP (x4, 1);
      if (GET_CODE (x11) != VEC_CONCAT)
        return -1;
      x15 = XEXP (x7, 0);
      switch (GET_CODE (x15))
        {
        case UNSPEC:
          if (XVECLEN (x15, 0) != 1)
            return -1;
          x12 = XEXP (x11, 0);
          if (GET_CODE (x12) != UNSPEC
              || XVECLEN (x12, 0) != 1)
            return -1;
          x17 = XVECEXP (x15, 0, 0);
          operands[1] = x17;
          if (!aarch64_simd_struct_operand (operands[1], BLKmode))
            return -1;
          x18 = XVECEXP (x12, 0, 0);
          if (!rtx_equal_p (x18, operands[1]))
            return -1;
          switch (XINT (x15, 1))
            {
            case 30:
              if (XINT (x12, 1) != 30
                  || pattern279 (x2, CImode, 30) != 0)
                return -1;
              x9 = XEXP (x5, 0);
              x10 = XVECEXP (x9, 0, 0);
              if (!rtx_equal_p (x10, operands[1]))
                return -1;
              switch (pattern386 (x4))
                {
                case 0:
                  x13 = XEXP (x5, 1);
                  if (GET_CODE (x13) != VEC_DUPLICATE)
                    return -1;
                  x14 = XEXP (x13, 0);
                  if (x14 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  switch (GET_MODE (x3))
                    {
                    case V48QImode:
                      if (pattern390 (x3, V8QImode, V16QImode, V32QImode) != 0
                          || !
#line 4960 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2868; /* aarch64_ld3v8qi_dreg_le */

                    case V24HImode:
                      if (pattern390 (x3, V4HImode, V8HImode, V16HImode) != 0
                          || !
#line 4960 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2869; /* aarch64_ld3v4hi_dreg_le */

                    case V24HFmode:
                      if (pattern390 (x3, V4HFmode, V8HFmode, V16HFmode) != 0
                          || !
#line 4960 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2870; /* aarch64_ld3v4hf_dreg_le */

                    case V12SImode:
                      if (pattern390 (x3, V2SImode, V4SImode, V8SImode) != 0
                          || !
#line 4960 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2871; /* aarch64_ld3v2si_dreg_le */

                    case V12SFmode:
                      if (pattern390 (x3, V2SFmode, V4SFmode, V8SFmode) != 0
                          || !
#line 4960 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2872; /* aarch64_ld3v2sf_dreg_le */

                    default:
                      return -1;
                    }

                case 1:
                  x13 = XEXP (x5, 1);
                  if (x13 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  switch (GET_MODE (x3))
                    {
                    case V6DImode:
                      if (pattern388 (x3, DImode, V2DImode, V4DImode) != 0
                          || !
#line 5006 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2878; /* aarch64_ld3di_dreg_le */

                    case V6DFmode:
                      if (pattern388 (x3, DFmode, V2DFmode, V4DFmode) != 0
                          || !
#line 5006 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2879; /* aarch64_ld3df_dreg_le */

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            case 32:
              if (XINT (x12, 1) != 32)
                return -1;
              x9 = XEXP (x5, 0);
              if (GET_CODE (x9) != VEC_CONCAT)
                return -1;
              x16 = XEXP (x9, 0);
              if (GET_CODE (x16) != UNSPEC
                  || XVECLEN (x16, 0) != 1
                  || XINT (x16, 1) != 32)
                return -1;
              x13 = XEXP (x5, 1);
              if (GET_CODE (x13) != VEC_CONCAT)
                return -1;
              x14 = XEXP (x13, 0);
              if (GET_CODE (x14) != UNSPEC
                  || XVECLEN (x14, 0) != 1
                  || XINT (x14, 1) != 32
                  || !register_operand (operands[0], XImode)
                  || GET_MODE (x2) != XImode)
                return -1;
              x19 = XVECEXP (x16, 0, 0);
              if (!rtx_equal_p (x19, operands[1]))
                return -1;
              x20 = XVECEXP (x14, 0, 0);
              if (!rtx_equal_p (x20, operands[1]))
                return -1;
              switch (pattern386 (x4))
                {
                case 0:
                  x21 = XEXP (x9, 1);
                  if (GET_CODE (x21) != VEC_DUPLICATE)
                    return -1;
                  x22 = XEXP (x21, 0);
                  if (x22 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  x23 = XEXP (x13, 1);
                  if (GET_CODE (x23) != VEC_DUPLICATE)
                    return -1;
                  x24 = XEXP (x23, 0);
                  if (x24 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  switch (GET_MODE (x3))
                    {
                    case V64QImode:
                      if (pattern393 (x3, V8QImode, V16QImode, V32QImode) != 0
                          || !
#line 5057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2882; /* aarch64_ld4v8qi_dreg_le */

                    case V32HImode:
                      if (pattern393 (x3, V4HImode, V8HImode, V16HImode) != 0
                          || !
#line 5057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2883; /* aarch64_ld4v4hi_dreg_le */

                    case V32HFmode:
                      if (pattern393 (x3, V4HFmode, V8HFmode, V16HFmode) != 0
                          || !
#line 5057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2884; /* aarch64_ld4v4hf_dreg_le */

                    case V16SImode:
                      if (pattern393 (x3, V2SImode, V4SImode, V8SImode) != 0
                          || !
#line 5057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2885; /* aarch64_ld4v2si_dreg_le */

                    case V16SFmode:
                      if (pattern393 (x3, V2SFmode, V4SFmode, V8SFmode) != 0
                          || !
#line 5057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2886; /* aarch64_ld4v2sf_dreg_le */

                    default:
                      return -1;
                    }

                case 1:
                  x21 = XEXP (x9, 1);
                  if (x21 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  x23 = XEXP (x13, 1);
                  if (x23 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  switch (GET_MODE (x3))
                    {
                    case V8DImode:
                      if (pattern391 (x3, DImode, V2DImode, V4DImode) != 0
                          || !
#line 5113 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2892; /* aarch64_ld4di_dreg_le */

                    case V8DFmode:
                      if (pattern391 (x3, DFmode, V2DFmode, V4DFmode) != 0
                          || !
#line 5113 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                        return -1;
                      return 2893; /* aarch64_ld4df_dreg_le */

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case VEC_DUPLICATE:
          x25 = XEXP (x15, 0);
          if (x25 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          x26 = XEXP (x7, 1);
          if (GET_CODE (x26) != UNSPEC
              || XVECLEN (x26, 0) != 1)
            return -1;
          x12 = XEXP (x11, 0);
          if (GET_CODE (x12) != VEC_DUPLICATE)
            return -1;
          x27 = XEXP (x12, 0);
          if (x27 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          switch (pattern341 (x4))
            {
            case 0:
              x28 = XEXP (x11, 1);
              if (XINT (x28, 1) != 30)
                return -1;
              x9 = XEXP (x5, 0);
              if (GET_CODE (x9) != VEC_DUPLICATE)
                return -1;
              x16 = XEXP (x9, 0);
              if (x16 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
                  || pattern382 (x2) != 0)
                return -1;
              switch (GET_MODE (x3))
                {
                case V48QImode:
                  if (pattern390 (x3, V8QImode, V16QImode, V32QImode) != 0
                      || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2873; /* aarch64_ld3v8qi_dreg_be */

                case V24HImode:
                  if (pattern390 (x3, V4HImode, V8HImode, V16HImode) != 0
                      || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2874; /* aarch64_ld3v4hi_dreg_be */

                case V24HFmode:
                  if (pattern390 (x3, V4HFmode, V8HFmode, V16HFmode) != 0
                      || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2875; /* aarch64_ld3v4hf_dreg_be */

                case V12SImode:
                  if (pattern390 (x3, V2SImode, V4SImode, V8SImode) != 0
                      || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2876; /* aarch64_ld3v2si_dreg_be */

                case V12SFmode:
                  if (pattern390 (x3, V2SFmode, V4SFmode, V8SFmode) != 0
                      || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2877; /* aarch64_ld3v2sf_dreg_be */

                default:
                  return -1;
                }

            case 1:
              x28 = XEXP (x11, 1);
              if (XINT (x28, 1) != 32)
                return -1;
              x9 = XEXP (x5, 0);
              if (GET_CODE (x9) != VEC_CONCAT)
                return -1;
              x16 = XEXP (x9, 0);
              if (GET_CODE (x16) != VEC_DUPLICATE)
                return -1;
              x29 = XEXP (x16, 0);
              if (x29 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                return -1;
              x21 = XEXP (x9, 1);
              if (GET_CODE (x21) != UNSPEC
                  || XVECLEN (x21, 0) != 1
                  || XINT (x21, 1) != 32)
                return -1;
              x13 = XEXP (x5, 1);
              if (GET_CODE (x13) != VEC_CONCAT)
                return -1;
              x14 = XEXP (x13, 0);
              if (GET_CODE (x14) != VEC_DUPLICATE)
                return -1;
              x30 = XEXP (x14, 0);
              if (x30 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
                  || pattern387 (x2) != 0)
                return -1;
              switch (GET_MODE (x3))
                {
                case V64QImode:
                  if (pattern393 (x3, V8QImode, V16QImode, V32QImode) != 0
                      || !
#line 5085 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2887; /* aarch64_ld4v8qi_dreg_be */

                case V32HImode:
                  if (pattern393 (x3, V4HImode, V8HImode, V16HImode) != 0
                      || !
#line 5085 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2888; /* aarch64_ld4v4hi_dreg_be */

                case V32HFmode:
                  if (pattern393 (x3, V4HFmode, V8HFmode, V16HFmode) != 0
                      || !
#line 5085 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2889; /* aarch64_ld4v4hf_dreg_be */

                case V16SImode:
                  if (pattern393 (x3, V2SImode, V4SImode, V8SImode) != 0
                      || !
#line 5085 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2890; /* aarch64_ld4v2si_dreg_be */

                case V16SFmode:
                  if (pattern393 (x3, V2SFmode, V4SFmode, V8SFmode) != 0
                      || !
#line 5085 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2891; /* aarch64_ld4v2sf_dreg_be */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case CONST_INT:
          if (XWINT (x15, 0) != 0L)
            return -1;
          x26 = XEXP (x7, 1);
          if (GET_CODE (x26) != UNSPEC
              || XVECLEN (x26, 0) != 1)
            return -1;
          x12 = XEXP (x11, 0);
          if (x12 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          switch (pattern341 (x4))
            {
            case 0:
              x28 = XEXP (x11, 1);
              if (XINT (x28, 1) != 30)
                return -1;
              x9 = XEXP (x5, 0);
              if (x9 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
                  || pattern382 (x2) != 0)
                return -1;
              switch (GET_MODE (x3))
                {
                case V6DImode:
                  if (pattern389 (x3, DImode, V2DImode, V4DImode) != 0
                      || !
#line 5029 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2880; /* aarch64_ld3di_dreg_be */

                case V6DFmode:
                  if (pattern389 (x3, DFmode, V2DFmode, V4DFmode) != 0
                      || !
#line 5029 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2881; /* aarch64_ld3df_dreg_be */

                default:
                  return -1;
                }

            case 1:
              x28 = XEXP (x11, 1);
              if (XINT (x28, 1) != 32)
                return -1;
              x9 = XEXP (x5, 0);
              if (GET_CODE (x9) != VEC_CONCAT)
                return -1;
              x16 = XEXP (x9, 0);
              if (x16 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                return -1;
              x21 = XEXP (x9, 1);
              if (GET_CODE (x21) != UNSPEC
                  || XVECLEN (x21, 0) != 1
                  || XINT (x21, 1) != 32)
                return -1;
              x13 = XEXP (x5, 1);
              if (GET_CODE (x13) != VEC_CONCAT)
                return -1;
              x14 = XEXP (x13, 0);
              if (x14 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
                  || pattern387 (x2) != 0)
                return -1;
              switch (GET_MODE (x3))
                {
                case V8DImode:
                  if (pattern392 (x3, DImode, V2DImode, V4DImode) != 0
                      || !
#line 5141 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2894; /* aarch64_ld4di_dreg_be */

                case V8DFmode:
                  if (pattern392 (x3, DFmode, V2DFmode, V4DFmode) != 0
                      || !
#line 5141 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return -1;
                  return 2895; /* aarch64_ld4df_dreg_be */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_6 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  x4 = XEXP (x2, 2);
  operands[2] = x4;
  if (!const_int_operand (operands[2], VOIDmode))
    return -1;
  x5 = XEXP (x1, 1);
  x6 = XEXP (x5, 0);
  operands[3] = x6;
  switch (GET_MODE (x2))
    {
    case SImode:
      switch (pattern287 (x5, SImode))
        {
        case 0:
          if (!
#line 4349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) <= 8))
            return -1;
          return 696; /* *aarch64_bfisiqi4 */

        case 1:
          if (!
#line 4349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) <= 16))
            return -1;
          return 698; /* *aarch64_bfisihi4 */

        case 2:
          if (!
#line 4349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) <= 32))
            return -1;
          return 700; /* *aarch64_bfisisi4 */

        default:
          return -1;
        }

    case DImode:
      switch (pattern287 (x5, DImode))
        {
        case 0:
          if (!
#line 4349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) <= 8))
            return -1;
          return 697; /* *aarch64_bfidiqi4 */

        case 1:
          if (!
#line 4349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) <= 16))
            return -1;
          return 699; /* *aarch64_bfidihi4 */

        case 2:
          if (!
#line 4349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[1]) <= 32))
            return -1;
          return 701; /* *aarch64_bfidisi4 */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_7 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  x5 = XEXP (x4, 1);
  if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
    return -1;
  x6 = XEXP (x1, 0);
  operands[0] = x6;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x7 = XEXP (x4, 0);
  operands[2] = x7;
  if (!cc_register (operands[2], VOIDmode))
    return -1;
  x8 = XEXP (x3, 1);
  operands[3] = x8;
  if (!aarch64_reg_zero_or_m1_or_1 (operands[3], SImode))
    return -1;
  x9 = XEXP (x3, 2);
  operands[4] = x9;
  if (!aarch64_reg_zero_or_m1_or_1 (operands[4], SImode)
      || !
#line 3218 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!((operands[3] == const1_rtx && operands[4] == constm1_rtx)
     || (operands[3] == constm1_rtx && operands[4] == const1_rtx))))
    return -1;
  return 446; /* *cmovsi_insn_uxtw */
}

static int
recog_8 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  switch (GET_CODE (x5))
    {
    case CONST_INT:
    case REG:
    case SUBREG:
      x6 = XEXP (x3, 1);
      switch (GET_CODE (x6))
        {
        case REG:
        case SUBREG:
          operands[2] = x6;
          if (!register_operand (operands[2], SImode))
            return -1;
          operands[1] = x5;
          if (!register_operand (operands[1], SImode))
            return -1;
          return 265; /* *subsi3_uxtw */

        case ASHIFT:
          if (GET_MODE (x6) != SImode
              || !register_operand (x5, SImode))
            return -1;
          x7 = XEXP (x6, 0);
          switch (GET_CODE (x7))
            {
            case REG:
            case SUBREG:
              operands[1] = x7;
              if (!register_operand (operands[1], SImode))
                return -1;
              operands[3] = x5;
              x8 = XEXP (x6, 1);
              operands[2] = x8;
              if (!aarch64_shift_imm_si (operands[2], QImode))
                return -1;
              return 278; /* *sub_lsl_si_uxtw */

            case SIGN_EXTEND:
              switch (pattern288 (x3))
                {
                case 0:
                  return 312; /* *sub_extendqi_shft_si_uxtw */

                case 1:
                  return 314; /* *sub_extendhi_shft_si_uxtw */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              switch (pattern288 (x3))
                {
                case 0:
                  return 313; /* *sub_zero_extendqi_shft_si_uxtw */

                case 1:
                  return 315; /* *sub_zero_extendhi_shft_si_uxtw */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case ASHIFTRT:
          if (pattern238 (x3) != 0)
            return -1;
          return 279; /* *sub_asr_si_uxtw */

        case LSHIFTRT:
          if (pattern238 (x3) != 0)
            return -1;
          return 280; /* *sub_lsr_si_uxtw */

        case MULT:
          if (GET_MODE (x6) != SImode)
            return -1;
          operands[3] = x5;
          if (!register_operand (operands[3], SImode))
            return -1;
          x7 = XEXP (x6, 0);
          operands[1] = x7;
          if (!register_operand (operands[1], SImode))
            return -1;
          x8 = XEXP (x6, 1);
          operands[2] = x8;
          switch (GET_CODE (operands[2]))
            {
            case CONST_INT:
              if (!aarch64_pwr_2_si (operands[2], QImode))
                return -1;
              return 283; /* *sub_mul_imm_si_uxtw */

            case REG:
            case SUBREG:
              if (!register_operand (operands[2], SImode))
                return -1;
              return 372; /* *msubsi_uxtw */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern239 (x3))
            {
            case 0:
              return 296; /* *sub_extendqi_si_uxtw */

            case 1:
              return 298; /* *sub_extendhi_si_uxtw */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern239 (x3))
            {
            case 0:
              return 297; /* *sub_zero_extendqi_si_uxtw */

            case 1:
              return 299; /* *sub_zero_extendhi_si_uxtw */

            default:
              return -1;
            }

        case SIGN_EXTRACT:
          if (pattern240 (x3) != 0
              || !
#line 2468 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
            return -1;
          return 320; /* *sub_extvsi_multp2_uxtw */

        case ZERO_EXTRACT:
          if (pattern240 (x3) != 0
              || !
#line 2468 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
            return -1;
          return 321; /* *sub_extzvsi_multp2_uxtw */

        case EQ:
        case LTU:
          operands[2] = x6;
          if (!aarch64_borrow_operation (operands[2], SImode))
            return -1;
          operands[1] = x5;
          if (!aarch64_reg_or_zero (operands[1], SImode))
            return -1;
          return 324; /* *subsi3_carryin_uxtw */

        case AND:
          if (GET_MODE (x6) != SImode)
            return -1;
          operands[4] = x5;
          if (!register_operand (operands[4], SImode))
            return -1;
          x7 = XEXP (x6, 0);
          if (GET_MODE (x7) != SImode)
            return -1;
          x8 = XEXP (x6, 1);
          operands[3] = x8;
          if (!const_int_operand (operands[3], VOIDmode))
            return -1;
          switch (GET_CODE (x7))
            {
            case ASHIFT:
              x9 = XEXP (x7, 0);
              operands[1] = x9;
              if (!register_operand (operands[1], SImode))
                return -1;
              x10 = XEXP (x7, 1);
              operands[2] = x10;
              if (!aarch64_imm3 (operands[2], VOIDmode)
                  || !
#line 2590 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (INTVAL (operands[2]),INTVAL (operands[3])) != 0))
                return -1;
              return 333; /* *sub_uxtsi_shift2_uxtw */

            case MULT:
              x9 = XEXP (x7, 0);
              operands[1] = x9;
              if (!register_operand (operands[1], SImode))
                return -1;
              x10 = XEXP (x7, 1);
              operands[2] = x10;
              if (!aarch64_pwr_imm3 (operands[2], VOIDmode)
                  || !
#line 2622 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),INTVAL (operands[3])) != 0))
                return -1;
              return 336; /* *sub_uxtsi_multp2_uxtw */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case MINUS:
      if (GET_MODE (x5) != SImode)
        return -1;
      x11 = XEXP (x5, 0);
      operands[1] = x11;
      if (!aarch64_reg_or_zero (operands[1], SImode))
        return -1;
      x12 = XEXP (x5, 1);
      switch (GET_CODE (x12))
        {
        case REG:
        case SUBREG:
          operands[2] = x12;
          if (!register_operand (operands[2], SImode))
            return -1;
          x6 = XEXP (x3, 1);
          operands[3] = x6;
          if (!aarch64_borrow_operation (operands[3], SImode))
            return -1;
          return 327; /* *subsi3_carryin_uxtw */

        case EQ:
        case LTU:
          operands[3] = x12;
          if (!aarch64_borrow_operation (operands[3], SImode))
            return -1;
          x6 = XEXP (x3, 1);
          operands[2] = x6;
          if (!register_operand (operands[2], SImode))
            return -1;
          return 330; /* *subsi3_carryin_alt_uxtw */

        default:
          return -1;
        }

    case NEG:
      if (GET_MODE (x5) != SImode)
        return -1;
      x11 = XEXP (x5, 0);
      operands[2] = x11;
      if (!aarch64_borrow_operation (operands[2], SImode))
        return -1;
      x6 = XEXP (x3, 1);
      operands[1] = x6;
      if (!register_operand (operands[1], SImode))
        return -1;
      return 342; /* *ngcsi_uxtw */

    default:
      return -1;
    }
}

static int
recog_9 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) != SImode)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x5 = XEXP (x3, 0);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      operands[1] = x5;
      if (!register_operand (operands[1], SImode))
        return -1;
      x6 = XEXP (x3, 1);
      operands[2] = x6;
      if (!aarch64_pluslong_operand (operands[2], SImode))
        return -1;
      return 98; /* *addsi3_aarch64_uxtw */

    case ASHIFT:
      if (GET_MODE (x5) != SImode)
        return -1;
      x7 = XEXP (x5, 1);
      operands[2] = x7;
      x6 = XEXP (x3, 1);
      operands[3] = x6;
      if (!register_operand (operands[3], SImode))
        return -1;
      x8 = XEXP (x5, 0);
      switch (GET_CODE (x8))
        {
        case REG:
        case SUBREG:
          operands[1] = x8;
          if (!register_operand (operands[1], SImode)
              || !aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          return 192; /* *add_lsl_si_uxtw */

        case SIGN_EXTEND:
          switch (pattern301 (x8))
            {
            case 0:
              return 229; /* *add_extendqi_shft_si_uxtw */

            case 1:
              return 231; /* *add_extendhi_shft_si_uxtw */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern301 (x8))
            {
            case 0:
              return 230; /* *add_zero_extendqi_shft_si_uxtw */

            case 1:
              return 232; /* *add_zero_extendhi_shft_si_uxtw */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFTRT:
      if (pattern220 (x3) != 0)
        return -1;
      return 193; /* *add_asr_si_uxtw */

    case LSHIFTRT:
      if (pattern220 (x3) != 0)
        return -1;
      return 194; /* *add_lsr_si_uxtw */

    case SIGN_EXTEND:
      switch (pattern222 (x3))
        {
        case 0:
          return 209; /* *add_extendqi_si_uxtw */

        case 1:
          return 211; /* *add_extendqi_si_uxtw */

        case 2:
          return 213; /* *add_extendhi_si_uxtw */

        case 3:
          return 215; /* *add_extendhi_si_uxtw */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern222 (x3))
        {
        case 0:
          return 210; /* *add_zero_extendqi_si_uxtw */

        case 1:
          return 212; /* *add_zero_extendqi_si_uxtw */

        case 2:
          return 214; /* *add_zero_extendhi_si_uxtw */

        case 3:
          return 216; /* *add_zero_extendhi_si_uxtw */

        default:
          return -1;
        }

    case MULT:
      if (GET_MODE (x5) != SImode)
        return -1;
      x7 = XEXP (x5, 1);
      operands[2] = x7;
      x6 = XEXP (x3, 1);
      operands[3] = x6;
      if (!register_operand (operands[3], SImode))
        return -1;
      x8 = XEXP (x5, 0);
      switch (GET_CODE (x8))
        {
        case SIGN_EXTEND:
          switch (pattern302 (x8))
            {
            case 0:
              return 245; /* *add_extendqi_mult_si_uxtw */

            case 1:
              return 247; /* *add_extendhi_mult_si_uxtw */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern302 (x8))
            {
            case 0:
              return 246; /* *add_zero_extendqi_mult_si_uxtw */

            case 1:
              return 248; /* *add_zero_extendhi_mult_si_uxtw */

            default:
              return -1;
            }

        case REG:
        case SUBREG:
          operands[1] = x8;
          if (!register_operand (operands[1], SImode)
              || !register_operand (operands[2], SImode))
            return -1;
          return 369; /* *maddsi_uxtw */

        default:
          return -1;
        }

    case SIGN_EXTRACT:
      if (pattern223 (x3) != 0
          || !
#line 2154 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
        return -1;
      return 253; /* *add_extvsi_multp2_uxtw */

    case ZERO_EXTRACT:
      if (pattern223 (x3) != 0
          || !
#line 2154 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
        return -1;
      return 254; /* *add_extzvsi_multp2_uxtw */

    case PLUS:
      if (GET_MODE (x5) != SImode)
        return -1;
      x8 = XEXP (x5, 0);
      operands[3] = x8;
      if (!aarch64_carry_operation (operands[3], SImode))
        return -1;
      x7 = XEXP (x5, 1);
      operands[1] = x7;
      if (!register_operand (operands[1], SImode))
        return -1;
      x6 = XEXP (x3, 1);
      operands[2] = x6;
      if (!register_operand (operands[2], SImode))
        return -1;
      return 257; /* *addsi3_carryin_uxtw */

    case AND:
      if (GET_MODE (x5) != SImode)
        return -1;
      x8 = XEXP (x5, 0);
      if (GET_MODE (x8) != SImode)
        return -1;
      x7 = XEXP (x5, 1);
      operands[3] = x7;
      if (!const_int_operand (operands[3], VOIDmode))
        return -1;
      x6 = XEXP (x3, 1);
      operands[4] = x6;
      if (!register_operand (operands[4], SImode))
        return -1;
      switch (GET_CODE (x8))
        {
        case ASHIFT:
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          operands[2] = x10;
          if (!aarch64_imm3 (operands[2], VOIDmode)
              || !
#line 2223 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (INTVAL (operands[2]), INTVAL (operands[3])) != 0))
            return -1;
          return 260; /* *add_uxtsi_shift2_uxtw */

        case MULT:
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          operands[2] = x10;
          if (!aarch64_pwr_imm3 (operands[2], VOIDmode)
              || !
#line 2255 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (exact_log2 (INTVAL (operands[2])), INTVAL (operands[3])) != 0))
            return -1;
          return 263; /* *add_uxtsi_multp2_uxtw */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_10 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  switch (pattern31 (x1))
    {
    case 0:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      x4 = XEXP (x3, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], SImode))
        return -1;
      x5 = XEXP (x3, 1);
      operands[2] = x5;
      if (!aarch64_logical_operand (operands[2], SImode))
        return -1;
      return 474; /* *iorsi3_uxtw */

    case 1:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      x4 = XEXP (x3, 0);
      if (GET_MODE (x4) != SImode)
        return -1;
      x6 = XEXP (x4, 0);
      operands[1] = x6;
      if (!register_operand (operands[1], SImode))
        return -1;
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          operands[3] = x5;
          if (!register_operand (operands[3], SImode))
            return -1;
          x7 = XEXP (x4, 1);
          operands[2] = x7;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          return 525; /* *ior_ashlsi3_uxtw */

        case LSHIFTRT:
          if (GET_MODE (x5) != SImode)
            return -1;
          x7 = XEXP (x4, 1);
          operands[3] = x7;
          if (!const_int_operand (operands[3], VOIDmode))
            return -1;
          x8 = XEXP (x5, 0);
          operands[2] = x8;
          if (!register_operand (operands[2], SImode))
            return -1;
          x9 = XEXP (x5, 1);
          operands[4] = x9;
          if (!const_int_operand (operands[4], VOIDmode)
              || !
#line 4194 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[3]) < 32 &&
   (UINTVAL (operands[3]) + UINTVAL (operands[4]) == 32)))
            return -1;
          return 669; /* *extrsi5_insn_uxtw */

        default:
          return -1;
        }

    case 2:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      if (pattern220 (x3) != 0)
        return -1;
      return 526; /* *ior_ashrsi3_uxtw */

    case 3:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      x4 = XEXP (x3, 0);
      if (GET_MODE (x4) != SImode)
        return -1;
      x6 = XEXP (x4, 0);
      if (!register_operand (x6, SImode))
        return -1;
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          operands[3] = x5;
          if (!register_operand (operands[3], SImode))
            return -1;
          operands[1] = x6;
          x7 = XEXP (x4, 1);
          operands[2] = x7;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          return 527; /* *ior_lshrsi3_uxtw */

        case ASHIFT:
          if (GET_MODE (x5) != SImode)
            return -1;
          operands[2] = x6;
          x7 = XEXP (x4, 1);
          operands[4] = x7;
          if (!const_int_operand (operands[4], VOIDmode))
            return -1;
          x8 = XEXP (x5, 0);
          operands[1] = x8;
          if (!register_operand (operands[1], SImode))
            return -1;
          x9 = XEXP (x5, 1);
          operands[3] = x9;
          if (!const_int_operand (operands[3], VOIDmode)
              || !
#line 4207 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[3]) < 32 &&
   (UINTVAL (operands[3]) + UINTVAL (operands[4]) == 32)))
            return -1;
          return 670; /* *extrsi5_insn_uxtw_alt */

        default:
          return -1;
        }

    case 4:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      if (pattern220 (x3) != 0)
        return -1;
      return 528; /* *ior_rotrsi3_uxtw */

    case 5:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      if (pattern220 (x3) != 0)
        return -1;
      return 534; /* *ior_rolsi3_uxtw */

    case 6:
      x2 = XEXP (x1, 1);
      x3 = XEXP (x2, 0);
      x4 = XEXP (x3, 0);
      if (GET_MODE (x4) != SImode)
        return -1;
      x6 = XEXP (x4, 0);
      operands[1] = x6;
      if (!register_operand (operands[1], SImode))
        return -1;
      x5 = XEXP (x3, 1);
      operands[2] = x5;
      if (!register_operand (operands[2], SImode))
        return -1;
      return 551; /* *ior_one_cmplsidi3_ze */

    default:
      return -1;
    }
}

static int
recog_11 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case CONST_INT:
          operands[2] = x5;
          operands[1] = x4;
          x6 = XEXP (x2, 1);
          operands[3] = x6;
          switch (pattern210 (x2))
            {
            case 0:
              if (!register_operand (operands[3], SImode))
                return -1;
              return 195; /* *add_mul_imm_si */

            case 1:
              if (!register_operand (operands[3], DImode))
                return -1;
              return 196; /* *add_mul_imm_di */

            default:
              return -1;
            }

        case REG:
        case SUBREG:
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern205 (x2, SImode) != 0)
                return -1;
              return 367; /* maddsi */

            case DImode:
              if (pattern205 (x2, DImode) != 0)
                return -1;
              return 368; /* madddi */

            case V8QImode:
              if (pattern206 (x2, V8QImode) != 0
                  || !
#line 963 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1269; /* aarch64_mlav8qi */

            case V16QImode:
              if (pattern206 (x2, V16QImode) != 0
                  || !
#line 963 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1270; /* aarch64_mlav16qi */

            case V4HImode:
              if (pattern206 (x2, V4HImode) != 0
                  || !
#line 963 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1271; /* aarch64_mlav4hi */

            case V8HImode:
              if (pattern206 (x2, V8HImode) != 0
                  || !
#line 963 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1272; /* aarch64_mlav8hi */

            case V2SImode:
              if (pattern206 (x2, V2SImode) != 0
                  || !
#line 963 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1273; /* aarch64_mlav2si */

            case V4SImode:
              if (pattern206 (x2, V4SImode) != 0
                  || !
#line 963 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1274; /* aarch64_mlav4si */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case SIGN_EXTEND:
      switch (pattern119 (x2, SIGN_EXTEND))
        {
        case 0:
          x5 = XEXP (x3, 1);
          switch (GET_CODE (x5))
            {
            case CONST_INT:
              switch (pattern242 (x2))
                {
                case 0:
                  return 233; /* *add_extendqi_mult_si */

                case 1:
                  return 237; /* *add_extendhi_mult_si */

                case 2:
                  return 241; /* *add_extendsi_mult_si */

                case 3:
                  return 235; /* *add_extendqi_mult_di */

                case 4:
                  return 239; /* *add_extendhi_mult_di */

                case 5:
                  return 243; /* *add_extendsi_mult_di */

                default:
                  return -1;
                }

            case SIGN_EXTEND:
              switch (pattern244 (x2))
                {
                case 0:
                  return 378; /* maddsidi4 */

                case 1:
                  if (!
#line 1420 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1435; /* *aarch64_smlalv8qi */

                case 2:
                  if (!
#line 1420 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1437; /* *aarch64_smlalv4hi */

                case 3:
                  if (!
#line 1420 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1439; /* *aarch64_smlalv2si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 1:
          if (vect_par_cnst_lo_half (operands[3], V16QImode)
              && 
#line 1358 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1411; /* *aarch64_smlal_lov16qi */
          if (!vect_par_cnst_hi_half (operands[3], V16QImode)
              || !
#line 1374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1417; /* *aarch64_smlal_hiv16qi */

        case 2:
          if (vect_par_cnst_lo_half (operands[3], V8HImode)
              && 
#line 1358 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1413; /* *aarch64_smlal_lov8hi */
          if (!vect_par_cnst_hi_half (operands[3], V8HImode)
              || !
#line 1374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1419; /* *aarch64_smlal_hiv8hi */

        case 3:
          if (vect_par_cnst_lo_half (operands[3], V4SImode)
              && 
#line 1358 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1415; /* *aarch64_smlal_lov4si */
          if (!vect_par_cnst_hi_half (operands[3], V4SImode)
              || !
#line 1374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1421; /* *aarch64_smlal_hiv4si */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern119 (x2, ZERO_EXTEND))
        {
        case 0:
          x5 = XEXP (x3, 1);
          switch (GET_CODE (x5))
            {
            case CONST_INT:
              switch (pattern242 (x2))
                {
                case 0:
                  return 234; /* *add_zero_extendqi_mult_si */

                case 1:
                  return 238; /* *add_zero_extendhi_mult_si */

                case 2:
                  return 242; /* *add_zero_extendsi_mult_si */

                case 3:
                  return 236; /* *add_zero_extendqi_mult_di */

                case 4:
                  return 240; /* *add_zero_extendhi_mult_di */

                case 5:
                  return 244; /* *add_zero_extendsi_mult_di */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              switch (pattern244 (x2))
                {
                case 0:
                  return 379; /* umaddsidi4 */

                case 1:
                  if (!
#line 1420 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1436; /* *aarch64_umlalv8qi */

                case 2:
                  if (!
#line 1420 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1438; /* *aarch64_umlalv4hi */

                case 3:
                  if (!
#line 1420 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1440; /* *aarch64_umlalv2si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 1:
          if (vect_par_cnst_lo_half (operands[3], V16QImode)
              && 
#line 1358 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1412; /* *aarch64_umlal_lov16qi */
          if (!vect_par_cnst_hi_half (operands[3], V16QImode)
              || !
#line 1374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1418; /* *aarch64_umlal_hiv16qi */

        case 2:
          if (vect_par_cnst_lo_half (operands[3], V8HImode)
              && 
#line 1358 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1414; /* *aarch64_umlal_lov8hi */
          if (!vect_par_cnst_hi_half (operands[3], V8HImode)
              || !
#line 1374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1420; /* *aarch64_umlal_hiv8hi */

        case 3:
          if (vect_par_cnst_lo_half (operands[3], V4SImode)
              && 
#line 1358 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1416; /* *aarch64_umlal_lov4si */
          if (!vect_par_cnst_hi_half (operands[3], V4SImode)
              || !
#line 1374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1422; /* *aarch64_umlal_hiv4si */

        default:
          return -1;
        }

    case VEC_DUPLICATE:
      x7 = XEXP (x4, 0);
      if (GET_CODE (x7) != VEC_SELECT)
        return -1;
      x8 = XEXP (x7, 1);
      if (GET_CODE (x8) != PARALLEL
          || XVECLEN (x8, 0) != 1)
        return -1;
      x9 = XEXP (x7, 0);
      operands[1] = x9;
      x10 = XVECEXP (x8, 0, 0);
      operands[2] = x10;
      if (!immediate_operand (operands[2], SImode))
        return -1;
      x5 = XEXP (x3, 1);
      operands[3] = x5;
      x6 = XEXP (x2, 1);
      operands[4] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V4HImode:
          if (pattern325 (x2, V4HImode, HImode) != 0)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V4HImode:
              if (!register_operand (operands[1], V4HImode)
                  || !
#line 978 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1275; /* *aarch64_mla_eltv4hi */

            case V8HImode:
              if (!register_operand (operands[1], V8HImode)
                  || !
#line 996 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1279; /* *aarch64_mla_elt_to_128v4hi */

            default:
              return -1;
            }

        case V8HImode:
          if (pattern325 (x2, V8HImode, HImode) != 0)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V8HImode:
              if (!register_operand (operands[1], V8HImode)
                  || !
#line 978 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1276; /* *aarch64_mla_eltv8hi */

            case V4HImode:
              if (!register_operand (operands[1], V4HImode)
                  || !
#line 996 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1280; /* *aarch64_mla_elt_to_64v8hi */

            default:
              return -1;
            }

        case V2SImode:
          if (pattern325 (x2, V2SImode, SImode) != 0)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V2SImode:
              if (!register_operand (operands[1], V2SImode)
                  || !
#line 978 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1277; /* *aarch64_mla_eltv2si */

            case V4SImode:
              if (!register_operand (operands[1], V4SImode)
                  || !
#line 996 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1281; /* *aarch64_mla_elt_to_128v2si */

            default:
              return -1;
            }

        case V4SImode:
          if (pattern325 (x2, V4SImode, SImode) != 0)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V4SImode:
              if (!register_operand (operands[1], V4SImode)
                  || !
#line 978 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1278; /* *aarch64_mla_eltv4si */

            case V2SImode:
              if (!register_operand (operands[1], V2SImode)
                  || !
#line 996 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1282; /* *aarch64_mla_elt_to_64v4si */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_12 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != PLUS)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != ZERO_EXTEND)
    return -1;
  x5 = XEXP (x2, 1);
  if (GET_CODE (x5) != ZERO_EXTEND)
    return -1;
  x6 = XEXP (x5, 0);
  if (GET_CODE (x6) != PLUS)
    return -1;
  x7 = XEXP (x1, 0);
  if (GET_CODE (x7) != REG
      || REGNO (x7) != 66
      || GET_MODE (x7) != CC_Cmode)
    return -1;
  x8 = XEXP (x4, 0);
  operands[0] = x8;
  x9 = XEXP (x6, 0);
  if (!rtx_equal_p (x9, operands[0]))
    return -1;
  x10 = XEXP (x3, 1);
  switch (GET_CODE (x10))
    {
    case CONST_INT:
    case CONST_WIDE_INT:
      operands[2] = x10;
      x11 = XEXP (x6, 1);
      operands[1] = x11;
      switch (GET_MODE (x3))
        {
        case DImode:
          if (pattern351 (x2, SImode, DImode) != 0
              || !
#line 1785 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_zero_extend_const_eq (DImode, operands[2],
				 SImode, operands[1])))
            return -1;
          return 102; /* *addsi3_compareC_cconly_imm */

        case TImode:
          if (pattern351 (x2, DImode, TImode) != 0
              || !
#line 1785 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_zero_extend_const_eq (TImode, operands[2],
				 DImode, operands[1])))
            return -1;
          return 103; /* *adddi3_compareC_cconly_imm */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      x12 = XEXP (x10, 0);
      operands[1] = x12;
      x11 = XEXP (x6, 1);
      if (!rtx_equal_p (x11, operands[1]))
        return -1;
      switch (GET_MODE (x3))
        {
        case DImode:
          if (pattern352 (x2, SImode, DImode) != 0)
            return -1;
          return 104; /* *addsi3_compareC_cconly */

        case TImode:
          if (pattern352 (x2, DImode, TImode) != 0)
            return -1;
          return 105; /* *adddi3_compareC_cconly */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_13 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
      operands[2] = x3;
      x4 = XEXP (x2, 0);
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern14 (x2, SImode) != 0)
            return -1;
          return 264; /* subsi3 */

        case DImode:
          if (pattern14 (x2, DImode) != 0)
            return -1;
          return 266; /* subdi3 */

        case HFmode:
          if (pattern14 (x2, HFmode) != 0
              || !(
#line 4730 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 880; /* subhf3 */

        case SFmode:
          if (pattern14 (x2, SFmode) != 0
              || !
#line 4730 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 881; /* subsf3 */

        case DFmode:
          if (pattern14 (x2, DFmode) != 0
              || !
#line 4730 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 882; /* subdf3 */

        case V8QImode:
          if (pattern14 (x2, V8QImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1059; /* subv8qi3 */

        case V16QImode:
          if (pattern14 (x2, V16QImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1060; /* subv16qi3 */

        case V4HImode:
          if (pattern14 (x2, V4HImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1061; /* subv4hi3 */

        case V8HImode:
          if (pattern14 (x2, V8HImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1062; /* subv8hi3 */

        case V2SImode:
          if (pattern14 (x2, V2SImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1063; /* subv2si3 */

        case V4SImode:
          if (pattern14 (x2, V4SImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1064; /* subv4si3 */

        case V2DImode:
          if (pattern14 (x2, V2DImode) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1065; /* subv2di3 */

        case V4HFmode:
          if (pattern14 (x2, V4HFmode) != 0
              || !(
#line 1532 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1464; /* subv4hf3 */

        case V8HFmode:
          if (pattern14 (x2, V8HFmode) != 0
              || !(
#line 1532 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1465; /* subv8hf3 */

        case V2SFmode:
          if (pattern14 (x2, V2SFmode) != 0
              || !
#line 1532 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1466; /* subv2sf3 */

        case V4SFmode:
          if (pattern14 (x2, V4SFmode) != 0
              || !
#line 1532 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1467; /* subv4sf3 */

        case V2DFmode:
          if (pattern14 (x2, V2DFmode) != 0
              || !
#line 1532 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1468; /* subv2df3 */

        default:
          return -1;
        }

    case ASHIFT:
      x5 = XEXP (x3, 0);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          operands[1] = x5;
          x4 = XEXP (x2, 0);
          operands[3] = x4;
          switch (pattern124 (x2))
            {
            case 0:
              return 272; /* *sub_lsl_si */

            case 1:
              return 275; /* *sub_lsl_di */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern161 (x2))
            {
            case 0:
              return 300; /* *sub_extendqi_shft_si */

            case 1:
              return 304; /* *sub_extendhi_shft_si */

            case 2:
              return 308; /* *sub_extendsi_shft_si */

            case 3:
              return 302; /* *sub_extendqi_shft_di */

            case 4:
              return 306; /* *sub_extendhi_shft_di */

            case 5:
              return 310; /* *sub_extendsi_shft_di */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern161 (x2))
            {
            case 0:
              return 301; /* *sub_zero_extendqi_shft_si */

            case 1:
              return 305; /* *sub_zero_extendhi_shft_si */

            case 2:
              return 309; /* *sub_zero_extendsi_shft_si */

            case 3:
              return 303; /* *sub_zero_extendqi_shft_di */

            case 4:
              return 307; /* *sub_zero_extendhi_shft_di */

            case 5:
              return 311; /* *sub_zero_extendsi_shft_di */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern125 (x2))
        {
        case 0:
          return 273; /* *sub_asr_si */

        case 1:
          return 276; /* *sub_asr_di */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern125 (x2))
        {
        case 0:
          return 274; /* *sub_lsr_si */

        case 1:
          return 277; /* *sub_lsr_di */

        default:
          return -1;
        }

    case MULT:
      x5 = XEXP (x3, 0);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          x6 = XEXP (x3, 1);
          switch (GET_CODE (x6))
            {
            case CONST_INT:
              operands[2] = x6;
              x4 = XEXP (x2, 0);
              operands[3] = x4;
              operands[1] = x5;
              switch (GET_MODE (operands[0]))
                {
                case SImode:
                  if (pattern281 (x2, SImode) != 0
                      || !aarch64_pwr_2_si (operands[2], QImode))
                    return -1;
                  return 281; /* *sub_mul_imm_si */

                case DImode:
                  if (pattern281 (x2, DImode) != 0
                      || !aarch64_pwr_2_di (operands[2], QImode))
                    return -1;
                  return 282; /* *sub_mul_imm_di */

                default:
                  return -1;
                }

            case REG:
            case SUBREG:
              switch (GET_MODE (operands[0]))
                {
                case SImode:
                  if (pattern227 (x2, SImode) != 0)
                    return -1;
                  return 370; /* *msubsi */

                case DImode:
                  if (pattern227 (x2, DImode) != 0)
                    return -1;
                  return 371; /* *msubdi */

                case V8QImode:
                  if (pattern228 (x2, V8QImode) != 0
                      || !
#line 1010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1283; /* aarch64_mlsv8qi */

                case V16QImode:
                  if (pattern228 (x2, V16QImode) != 0
                      || !
#line 1010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1284; /* aarch64_mlsv16qi */

                case V4HImode:
                  if (pattern228 (x2, V4HImode) != 0
                      || !
#line 1010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1285; /* aarch64_mlsv4hi */

                case V8HImode:
                  if (pattern228 (x2, V8HImode) != 0
                      || !
#line 1010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1286; /* aarch64_mlsv8hi */

                case V2SImode:
                  if (pattern228 (x2, V2SImode) != 0
                      || !
#line 1010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1287; /* aarch64_mlsv2si */

                case V4SImode:
                  if (pattern228 (x2, V4SImode) != 0
                      || !
#line 1010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1288; /* aarch64_mlsv4si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern164 (x2, SIGN_EXTEND))
            {
            case 0:
              return 380; /* msubsidi4 */

            case 1:
              if (!
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1441; /* *aarch64_smlslv8qi */

            case 2:
              if (!
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1443; /* *aarch64_smlslv4hi */

            case 3:
              if (!
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1445; /* *aarch64_smlslv2si */

            case 4:
              if (vect_par_cnst_lo_half (operands[3], V16QImode)
                  && 
#line 1390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1423; /* *aarch64_smlsl_lov16qi */
              if (!vect_par_cnst_hi_half (operands[3], V16QImode)
                  || !
#line 1406 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1429; /* *aarch64_smlsl_hiv16qi */

            case 5:
              if (vect_par_cnst_lo_half (operands[3], V8HImode)
                  && 
#line 1390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1425; /* *aarch64_smlsl_lov8hi */
              if (!vect_par_cnst_hi_half (operands[3], V8HImode)
                  || !
#line 1406 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1431; /* *aarch64_smlsl_hiv8hi */

            case 6:
              if (vect_par_cnst_lo_half (operands[3], V4SImode)
                  && 
#line 1390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1427; /* *aarch64_smlsl_lov4si */
              if (!vect_par_cnst_hi_half (operands[3], V4SImode)
                  || !
#line 1406 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1433; /* *aarch64_smlsl_hiv4si */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern164 (x2, ZERO_EXTEND))
            {
            case 0:
              return 381; /* umsubsidi4 */

            case 1:
              if (!
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1442; /* *aarch64_umlslv8qi */

            case 2:
              if (!
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1444; /* *aarch64_umlslv4hi */

            case 3:
              if (!
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1446; /* *aarch64_umlslv2si */

            case 4:
              if (vect_par_cnst_lo_half (operands[3], V16QImode)
                  && 
#line 1390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1424; /* *aarch64_umlsl_lov16qi */
              if (!vect_par_cnst_hi_half (operands[3], V16QImode)
                  || !
#line 1406 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1430; /* *aarch64_umlsl_hiv16qi */

            case 5:
              if (vect_par_cnst_lo_half (operands[3], V8HImode)
                  && 
#line 1390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1426; /* *aarch64_umlsl_lov8hi */
              if (!vect_par_cnst_hi_half (operands[3], V8HImode)
                  || !
#line 1406 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1432; /* *aarch64_umlsl_hiv8hi */

            case 6:
              if (vect_par_cnst_lo_half (operands[3], V4SImode)
                  && 
#line 1390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1428; /* *aarch64_umlsl_lov4si */
              if (!vect_par_cnst_hi_half (operands[3], V4SImode)
                  || !
#line 1406 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1434; /* *aarch64_umlsl_hiv4si */

            default:
              return -1;
            }

        case VEC_DUPLICATE:
          x7 = XEXP (x5, 0);
          if (GET_CODE (x7) != VEC_SELECT)
            return -1;
          x8 = XEXP (x7, 1);
          if (GET_CODE (x8) != PARALLEL
              || XVECLEN (x8, 0) != 1)
            return -1;
          x4 = XEXP (x2, 0);
          operands[4] = x4;
          x9 = XEXP (x7, 0);
          operands[1] = x9;
          x10 = XVECEXP (x8, 0, 0);
          operands[2] = x10;
          if (!immediate_operand (operands[2], SImode))
            return -1;
          x6 = XEXP (x3, 1);
          operands[3] = x6;
          switch (GET_MODE (operands[0]))
            {
            case V4HImode:
              if (pattern342 (x2, V4HImode, HImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V4HImode:
                  if (!register_operand (operands[1], V4HImode)
                      || !
#line 1025 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1289; /* *aarch64_mls_eltv4hi */

                case V8HImode:
                  if (!register_operand (operands[1], V8HImode)
                      || !
#line 1043 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1293; /* *aarch64_mls_elt_to_128v4hi */

                default:
                  return -1;
                }

            case V8HImode:
              if (pattern342 (x2, V8HImode, HImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V8HImode:
                  if (!register_operand (operands[1], V8HImode)
                      || !
#line 1025 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1290; /* *aarch64_mls_eltv8hi */

                case V4HImode:
                  if (!register_operand (operands[1], V4HImode)
                      || !
#line 1043 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1294; /* *aarch64_mls_elt_to_64v8hi */

                default:
                  return -1;
                }

            case V2SImode:
              if (pattern342 (x2, V2SImode, SImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V2SImode:
                  if (!register_operand (operands[1], V2SImode)
                      || !
#line 1025 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1291; /* *aarch64_mls_eltv2si */

                case V4SImode:
                  if (!register_operand (operands[1], V4SImode)
                      || !
#line 1043 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1295; /* *aarch64_mls_elt_to_128v2si */

                default:
                  return -1;
                }

            case V4SImode:
              if (pattern342 (x2, V4SImode, SImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V4SImode:
                  if (!register_operand (operands[1], V4SImode)
                      || !
#line 1025 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1292; /* *aarch64_mls_eltv4si */

                case V2SImode:
                  if (!register_operand (operands[1], V2SImode)
                      || !
#line 1043 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1296; /* *aarch64_mls_elt_to_64v4si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    case SIGN_EXTEND:
      switch (pattern130 (x2))
        {
        case 0:
          return 284; /* *sub_extendqi_si */

        case 1:
          return 288; /* *sub_extendhi_si */

        case 2:
          return 292; /* *sub_extendsi_si */

        case 3:
          return 286; /* *sub_extendqi_di */

        case 4:
          return 290; /* *sub_extendhi_di */

        case 5:
          return 294; /* *sub_extendsi_di */

        case 6:
          if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1868; /* aarch64_ssubwv8qi */

        case 7:
          if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1872; /* aarch64_ssubwv4hi */

        case 8:
          if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1876; /* aarch64_ssubwv2si */

        case 9:
          if (vect_par_cnst_lo_half (operands[3], V16QImode)
              && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1880; /* aarch64_ssubwv16qi_internal */
          if (!vect_par_cnst_hi_half (operands[3], V16QImode)
              || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1892; /* aarch64_ssubw2v16qi_internal */

        case 10:
          if (vect_par_cnst_lo_half (operands[3], V8HImode)
              && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1884; /* aarch64_ssubwv8hi_internal */
          if (!vect_par_cnst_hi_half (operands[3], V8HImode)
              || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1896; /* aarch64_ssubw2v8hi_internal */

        case 11:
          if (vect_par_cnst_lo_half (operands[3], V4SImode)
              && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1888; /* aarch64_ssubwv4si_internal */
          if (!vect_par_cnst_hi_half (operands[3], V4SImode)
              || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1900; /* aarch64_ssubw2v4si_internal */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern130 (x2))
        {
        case 0:
          return 285; /* *sub_zero_extendqi_si */

        case 1:
          return 289; /* *sub_zero_extendhi_si */

        case 2:
          return 293; /* *sub_zero_extendsi_si */

        case 3:
          return 287; /* *sub_zero_extendqi_di */

        case 4:
          return 291; /* *sub_zero_extendhi_di */

        case 5:
          return 295; /* *sub_zero_extendsi_di */

        case 6:
          if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1870; /* aarch64_usubwv8qi */

        case 7:
          if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1874; /* aarch64_usubwv4hi */

        case 8:
          if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1878; /* aarch64_usubwv2si */

        case 9:
          if (vect_par_cnst_lo_half (operands[3], V16QImode)
              && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1882; /* aarch64_usubwv16qi_internal */
          if (!vect_par_cnst_hi_half (operands[3], V16QImode)
              || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1894; /* aarch64_usubw2v16qi_internal */

        case 10:
          if (vect_par_cnst_lo_half (operands[3], V8HImode)
              && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1886; /* aarch64_usubwv8hi_internal */
          if (!vect_par_cnst_hi_half (operands[3], V8HImode)
              || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1898; /* aarch64_usubw2v8hi_internal */

        case 11:
          if (vect_par_cnst_lo_half (operands[3], V4SImode)
              && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1890; /* aarch64_usubwv4si_internal */
          if (!vect_par_cnst_hi_half (operands[3], V4SImode)
              || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1902; /* aarch64_usubw2v4si_internal */

        default:
          return -1;
        }

    case SIGN_EXTRACT:
      switch (pattern132 (x2))
        {
        case 0:
          if (!
#line 2453 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
            return -1;
          return 316; /* *sub_extvsi_multp2 */

        case 1:
          if (!
#line 2453 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
            return -1;
          return 318; /* *sub_extvdi_multp2 */

        default:
          return -1;
        }

    case ZERO_EXTRACT:
      switch (pattern132 (x2))
        {
        case 0:
          if (!
#line 2453 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
            return -1;
          return 317; /* *sub_extzvsi_multp2 */

        case 1:
          if (!
#line 2453 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
            return -1;
          return 319; /* *sub_extzvdi_multp2 */

        default:
          return -1;
        }

    case EQ:
    case LTU:
      operands[2] = x3;
      x4 = XEXP (x2, 0);
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern229 (x2, SImode) != 0)
            return -1;
          return 322; /* *subsi3_carryin0 */

        case DImode:
          if (pattern229 (x2, DImode) != 0)
            return -1;
          return 323; /* *subdi3_carryin0 */

        default:
          return -1;
        }

    case AND:
      x4 = XEXP (x2, 0);
      operands[4] = x4;
      x6 = XEXP (x3, 1);
      operands[3] = x6;
      if (!const_int_operand (operands[3], VOIDmode))
        return -1;
      x5 = XEXP (x3, 0);
      switch (GET_CODE (x5))
        {
        case ASHIFT:
          x7 = XEXP (x5, 0);
          operands[1] = x7;
          x11 = XEXP (x5, 1);
          operands[2] = x11;
          if (!aarch64_imm3 (operands[2], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern131 (x2, SImode) != 0
                  || !
#line 2573 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (INTVAL (operands[2]),INTVAL (operands[3])) != 0))
                return -1;
              return 331; /* *sub_uxtsi_shift2 */

            case DImode:
              if (pattern131 (x2, DImode) != 0
                  || !
#line 2573 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (INTVAL (operands[2]),INTVAL (operands[3])) != 0))
                return -1;
              return 332; /* *sub_uxtdi_shift2 */

            default:
              return -1;
            }

        case MULT:
          x7 = XEXP (x5, 0);
          operands[1] = x7;
          x11 = XEXP (x5, 1);
          operands[2] = x11;
          if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern131 (x2, SImode) != 0
                  || !
#line 2605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),INTVAL (operands[3])) != 0))
                return -1;
              return 334; /* *sub_uxtsi_multp2 */

            case DImode:
              if (pattern131 (x2, DImode) != 0
                  || !
#line 2605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (exact_log2 (INTVAL (operands[2])),INTVAL (operands[3])) != 0))
                return -1;
              return 335; /* *sub_uxtdi_multp2 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_14 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x3, 1);
  if (x4 == const_int_rtx[MAX_SAVED_CONST_INT + 0])
    {
      x5 = XEXP (x3, 0);
      operands[2] = x5;
      if (cc_register (operands[2], VOIDmode))
        {
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (register_operand (operands[0], QImode)
                  && GET_MODE (x2) == QImode
                  && aarch64_comparison_operator_mode (operands[1], QImode))
                return 437; /* cstoreqi_neg */
              break;

            case HImode:
              if (register_operand (operands[0], HImode)
                  && GET_MODE (x2) == HImode
                  && aarch64_comparison_operator_mode (operands[1], HImode))
                return 438; /* cstorehi_neg */
              break;

            case SImode:
              if (register_operand (operands[0], SImode)
                  && GET_MODE (x2) == SImode
                  && aarch64_comparison_operator_mode (operands[1], SImode))
                return 439; /* cstoresi_neg */
              break;

            case DImode:
              if (register_operand (operands[0], DImode)
                  && GET_MODE (x2) == DImode
                  && aarch64_comparison_operator_mode (operands[1], DImode))
                return 440; /* cstoredi_neg */
              break;

            default:
              break;
            }
        }
    }
  switch (GET_CODE (x3))
    {
    case LT:
      switch (pattern137 (x2))
        {
        case 0:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2480; /* aarch64_cmltv8qi */

        case 1:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2485; /* aarch64_cmltv16qi */

        case 2:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2490; /* aarch64_cmltv4hi */

        case 3:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2570; /* aarch64_cmltv4hf */

        case 4:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2495; /* aarch64_cmltv8hi */

        case 5:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2575; /* aarch64_cmltv8hf */

        case 6:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2500; /* aarch64_cmltv2si */

        case 7:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2580; /* aarch64_cmltv2sf */

        case 8:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2505; /* aarch64_cmltv4si */

        case 9:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2585; /* aarch64_cmltv4sf */

        case 10:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2510; /* aarch64_cmltv2di */

        case 11:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2590; /* aarch64_cmltv2df */

        case 12:
          if (pnum_clobbers != NULL
              && 
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2515; /* aarch64_cmltdi */
            }
          if (!
#line 4170 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2520; /* *aarch64_cmltdi */

        case 13:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2605; /* aarch64_cmltdf */

        case 14:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2595; /* aarch64_cmlthf */

        case 15:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2600; /* aarch64_cmltsf */

        case 16:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2610; /* aarch64_facltv4hf */

        case 17:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2614; /* aarch64_facltv8hf */

        case 18:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2618; /* aarch64_facltv2sf */

        case 19:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2622; /* aarch64_facltv4sf */

        case 20:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2626; /* aarch64_facltv2df */

        case 21:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2630; /* aarch64_faclthf */

        case 22:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2634; /* aarch64_facltsf */

        case 23:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2638; /* aarch64_facltdf */

        default:
          return -1;
        }

    case LE:
      switch (pattern137 (x2))
        {
        case 0:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2481; /* aarch64_cmlev8qi */

        case 1:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2486; /* aarch64_cmlev16qi */

        case 2:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2491; /* aarch64_cmlev4hi */

        case 3:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2571; /* aarch64_cmlev4hf */

        case 4:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2496; /* aarch64_cmlev8hi */

        case 5:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2576; /* aarch64_cmlev8hf */

        case 6:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2501; /* aarch64_cmlev2si */

        case 7:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2581; /* aarch64_cmlev2sf */

        case 8:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2506; /* aarch64_cmlev4si */

        case 9:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2586; /* aarch64_cmlev4sf */

        case 10:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2511; /* aarch64_cmlev2di */

        case 11:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2591; /* aarch64_cmlev2df */

        case 12:
          if (pnum_clobbers != NULL
              && 
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2516; /* aarch64_cmledi */
            }
          if (!
#line 4170 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2521; /* *aarch64_cmledi */

        case 13:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2606; /* aarch64_cmledf */

        case 14:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2596; /* aarch64_cmlehf */

        case 15:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2601; /* aarch64_cmlesf */

        case 16:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2611; /* aarch64_faclev4hf */

        case 17:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2615; /* aarch64_faclev8hf */

        case 18:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2619; /* aarch64_faclev2sf */

        case 19:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2623; /* aarch64_faclev4sf */

        case 20:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2627; /* aarch64_faclev2df */

        case 21:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2631; /* aarch64_faclehf */

        case 22:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2635; /* aarch64_faclesf */

        case 23:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2639; /* aarch64_facledf */

        default:
          return -1;
        }

    case EQ:
      switch (pattern135 (x2))
        {
        case 0:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2482; /* aarch64_cmeqv8qi */

        case 1:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2487; /* aarch64_cmeqv16qi */

        case 2:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2492; /* aarch64_cmeqv4hi */

        case 3:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2572; /* aarch64_cmeqv4hf */

        case 4:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2497; /* aarch64_cmeqv8hi */

        case 5:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2577; /* aarch64_cmeqv8hf */

        case 6:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2502; /* aarch64_cmeqv2si */

        case 7:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2582; /* aarch64_cmeqv2sf */

        case 8:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2507; /* aarch64_cmeqv4si */

        case 9:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2587; /* aarch64_cmeqv4sf */

        case 10:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2512; /* aarch64_cmeqv2di */

        case 11:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2592; /* aarch64_cmeqv2df */

        case 12:
          if (pnum_clobbers != NULL
              && 
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2517; /* aarch64_cmeqdi */
            }
          if (!
#line 4170 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2522; /* *aarch64_cmeqdi */

        case 13:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2607; /* aarch64_cmeqdf */

        case 14:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2597; /* aarch64_cmeqhf */

        case 15:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2602; /* aarch64_cmeqsf */

        default:
          return -1;
        }

    case GE:
      switch (pattern137 (x2))
        {
        case 0:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2483; /* aarch64_cmgev8qi */

        case 1:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2488; /* aarch64_cmgev16qi */

        case 2:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2493; /* aarch64_cmgev4hi */

        case 3:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2573; /* aarch64_cmgev4hf */

        case 4:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2498; /* aarch64_cmgev8hi */

        case 5:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2578; /* aarch64_cmgev8hf */

        case 6:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2503; /* aarch64_cmgev2si */

        case 7:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2583; /* aarch64_cmgev2sf */

        case 8:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2508; /* aarch64_cmgev4si */

        case 9:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2588; /* aarch64_cmgev4sf */

        case 10:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2513; /* aarch64_cmgev2di */

        case 11:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2593; /* aarch64_cmgev2df */

        case 12:
          if (pnum_clobbers != NULL
              && 
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2518; /* aarch64_cmgedi */
            }
          if (!
#line 4170 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2523; /* *aarch64_cmgedi */

        case 13:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2608; /* aarch64_cmgedf */

        case 14:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2598; /* aarch64_cmgehf */

        case 15:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2603; /* aarch64_cmgesf */

        case 16:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2612; /* aarch64_facgev4hf */

        case 17:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2616; /* aarch64_facgev8hf */

        case 18:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2620; /* aarch64_facgev2sf */

        case 19:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2624; /* aarch64_facgev4sf */

        case 20:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2628; /* aarch64_facgev2df */

        case 21:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2632; /* aarch64_facgehf */

        case 22:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2636; /* aarch64_facgesf */

        case 23:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2640; /* aarch64_facgedf */

        default:
          return -1;
        }

    case GT:
      switch (pattern137 (x2))
        {
        case 0:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2484; /* aarch64_cmgtv8qi */

        case 1:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2489; /* aarch64_cmgtv16qi */

        case 2:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2494; /* aarch64_cmgtv4hi */

        case 3:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2574; /* aarch64_cmgtv4hf */

        case 4:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2499; /* aarch64_cmgtv8hi */

        case 5:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2579; /* aarch64_cmgtv8hf */

        case 6:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2504; /* aarch64_cmgtv2si */

        case 7:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2584; /* aarch64_cmgtv2sf */

        case 8:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2509; /* aarch64_cmgtv4si */

        case 9:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2589; /* aarch64_cmgtv4sf */

        case 10:
          if (!
#line 4121 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2514; /* aarch64_cmgtv2di */

        case 11:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2594; /* aarch64_cmgtv2df */

        case 12:
          if (pnum_clobbers != NULL
              && 
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2519; /* aarch64_cmgtdi */
            }
          if (!
#line 4170 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2524; /* *aarch64_cmgtdi */

        case 13:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2609; /* aarch64_cmgtdf */

        case 14:
          if (!(
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2599; /* aarch64_cmgthf */

        case 15:
          if (!
#line 4321 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2604; /* aarch64_cmgtsf */

        case 16:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2613; /* aarch64_facgtv4hf */

        case 17:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2617; /* aarch64_facgtv8hf */

        case 18:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2621; /* aarch64_facgtv2sf */

        case 19:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2625; /* aarch64_facgtv4sf */

        case 20:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2629; /* aarch64_facgtv2df */

        case 21:
          if (!(
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 2633; /* aarch64_facgthf */

        case 22:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2637; /* aarch64_facgtsf */

        case 23:
          if (!
#line 4341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2641; /* aarch64_facgtdf */

        default:
          return -1;
        }

    case LTU:
      switch (pattern138 (x2))
        {
        case 0:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2525; /* aarch64_cmltuv8qi */

        case 1:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2529; /* aarch64_cmltuv16qi */

        case 2:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2533; /* aarch64_cmltuv4hi */

        case 3:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2537; /* aarch64_cmltuv8hi */

        case 4:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2541; /* aarch64_cmltuv2si */

        case 5:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2545; /* aarch64_cmltuv4si */

        case 6:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2549; /* aarch64_cmltuv2di */

        case 7:
          if (pnum_clobbers != NULL
              && 
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2553; /* aarch64_cmltudi */
            }
          if (!
#line 4233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2557; /* *aarch64_cmltudi */

        default:
          return -1;
        }

    case LEU:
      switch (pattern138 (x2))
        {
        case 0:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2526; /* aarch64_cmleuv8qi */

        case 1:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2530; /* aarch64_cmleuv16qi */

        case 2:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2534; /* aarch64_cmleuv4hi */

        case 3:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2538; /* aarch64_cmleuv8hi */

        case 4:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2542; /* aarch64_cmleuv2si */

        case 5:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2546; /* aarch64_cmleuv4si */

        case 6:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2550; /* aarch64_cmleuv2di */

        case 7:
          if (pnum_clobbers != NULL
              && 
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2554; /* aarch64_cmleudi */
            }
          if (!
#line 4233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2558; /* *aarch64_cmleudi */

        default:
          return -1;
        }

    case GEU:
      switch (pattern138 (x2))
        {
        case 0:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2527; /* aarch64_cmgeuv8qi */

        case 1:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2531; /* aarch64_cmgeuv16qi */

        case 2:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2535; /* aarch64_cmgeuv4hi */

        case 3:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2539; /* aarch64_cmgeuv8hi */

        case 4:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2543; /* aarch64_cmgeuv2si */

        case 5:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2547; /* aarch64_cmgeuv4si */

        case 6:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2551; /* aarch64_cmgeuv2di */

        case 7:
          if (pnum_clobbers != NULL
              && 
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2555; /* aarch64_cmgeudi */
            }
          if (!
#line 4233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2559; /* *aarch64_cmgeudi */

        default:
          return -1;
        }

    case GTU:
      switch (pattern138 (x2))
        {
        case 0:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2528; /* aarch64_cmgtuv8qi */

        case 1:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2532; /* aarch64_cmgtuv16qi */

        case 2:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2536; /* aarch64_cmgtuv4hi */

        case 3:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2540; /* aarch64_cmgtuv8hi */

        case 4:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2544; /* aarch64_cmgtuv2si */

        case 5:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2548; /* aarch64_cmgtuv4si */

        case 6:
          if (!
#line 4186 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2552; /* aarch64_cmgtuv2di */

        case 7:
          if (pnum_clobbers != NULL
              && 
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            {
              *pnum_clobbers = 1;
              return 2556; /* aarch64_cmgtudi */
            }
          if (!
#line 4233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
            return -1;
          return 2560; /* *aarch64_cmgtudi */

        default:
          return -1;
        }

    case NE:
      if (pattern56 (x2, 0, DImode, AND) != 0)
        return -1;
      x5 = XEXP (x3, 0);
      x6 = XEXP (x5, 0);
      operands[1] = x6;
      if (!register_operand (operands[1], DImode))
        return -1;
      x7 = XEXP (x5, 1);
      operands[2] = x7;
      if (!register_operand (operands[2], DImode))
        return -1;
      if (pnum_clobbers != NULL
          && 
#line 4270 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        {
          *pnum_clobbers = 1;
          return 2568; /* aarch64_cmtstdi */
        }
      if (!
#line 4307 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2569; /* *aarch64_cmtstdi */

    default:
      return -1;
    }
}

static int
recog_15 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      switch (pattern64 (x3))
        {
        case 0:
          if (!(
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1977; /* aarch64_fmulxv4hf */

        case 1:
          if (!(
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1978; /* aarch64_fmulxv8hf */

        case 2:
          if (!
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1979; /* aarch64_fmulxv2sf */

        case 3:
          if (!
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1980; /* aarch64_fmulxv4sf */

        case 4:
          if (!
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1981; /* aarch64_fmulxv2df */

        case 5:
          if (!(
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1982; /* aarch64_fmulxhf */

        case 6:
          if (!
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1983; /* aarch64_fmulxsf */

        case 7:
          if (!
#line 3078 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1984; /* aarch64_fmulxdf */

        default:
          return -1;
        }

    case VEC_DUPLICATE:
      x6 = XEXP (x5, 0);
      switch (GET_CODE (x6))
        {
        case VEC_SELECT:
          x7 = XEXP (x6, 1);
          if (GET_CODE (x7) != PARALLEL
              || XVECLEN (x7, 0) != 1)
            return -1;
          x8 = XEXP (x6, 0);
          operands[2] = x8;
          x9 = XVECEXP (x7, 0, 0);
          operands[3] = x9;
          if (!immediate_operand (operands[3], SImode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case V2SFmode:
              if (pattern326 (x3, SFmode, V2SFmode) != 0)
                return -1;
              switch (GET_MODE (operands[2]))
                {
                case V4SFmode:
                  if (!register_operand (operands[2], V4SFmode)
                      || !
#line 3094 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1985; /* *aarch64_mulx_elt_to_128v2sf */

                case V2SFmode:
                  if (!register_operand (operands[2], V2SFmode)
                      || !
#line 3114 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1987; /* *aarch64_mulx_eltv2sf */

                default:
                  return -1;
                }

            case V4SFmode:
              if (pattern326 (x3, SFmode, V4SFmode) != 0)
                return -1;
              switch (GET_MODE (operands[2]))
                {
                case V2SFmode:
                  if (!register_operand (operands[2], V2SFmode)
                      || !
#line 3094 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1986; /* *aarch64_mulx_elt_to_64v4sf */

                case V4SFmode:
                  if (!register_operand (operands[2], V4SFmode)
                      || !
#line 3114 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1988; /* *aarch64_mulx_eltv4sf */

                default:
                  return -1;
                }

            case V2DFmode:
              if (pattern326 (x3, DFmode, V2DFmode) != 0
                  || !register_operand (operands[2], V2DFmode)
                  || !
#line 3114 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1989; /* *aarch64_mulx_eltv2df */

            default:
              return -1;
            }

        case REG:
        case SUBREG:
          operands[2] = x6;
          switch (GET_MODE (operands[0]))
            {
            case V4HFmode:
              if (pattern265 (x3, HFmode, V4HFmode) != 0
                  || !(
#line 3131 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1990; /* *aarch64_mulx_elt_from_dupv4hf */

            case V8HFmode:
              if (pattern265 (x3, HFmode, V8HFmode) != 0
                  || !(
#line 3131 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1991; /* *aarch64_mulx_elt_from_dupv8hf */

            case V2SFmode:
              if (pattern265 (x3, SFmode, V2SFmode) != 0
                  || !
#line 3131 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1992; /* *aarch64_mulx_elt_from_dupv2sf */

            case V4SFmode:
              if (pattern265 (x3, SFmode, V4SFmode) != 0
                  || !
#line 3131 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1993; /* *aarch64_mulx_elt_from_dupv4sf */

            case V2DFmode:
              if (pattern265 (x3, DFmode, V2DFmode) != 0
                  || !
#line 3131 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1994; /* *aarch64_mulx_elt_from_dupv2df */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case VEC_SELECT:
      x10 = XEXP (x5, 1);
      if (GET_CODE (x10) != PARALLEL
          || XVECLEN (x10, 0) != 1)
        return -1;
      x6 = XEXP (x5, 0);
      operands[2] = x6;
      x11 = XVECEXP (x10, 0, 0);
      operands[3] = x11;
      if (!immediate_operand (operands[3], SImode))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case SFmode:
          if (pattern303 (x3, SFmode) != 0)
            return -1;
          switch (GET_MODE (operands[2]))
            {
            case V2SFmode:
              if (!register_operand (operands[2], V2SFmode)
                  || !
#line 3148 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1995; /* *aarch64_vgetfmulxv2sf */

            case V4SFmode:
              if (!register_operand (operands[2], V4SFmode)
                  || !
#line 3148 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1996; /* *aarch64_vgetfmulxv4sf */

            default:
              return -1;
            }

        case DFmode:
          if (pattern303 (x3, DFmode) != 0)
            return -1;
          switch (GET_MODE (operands[2]))
            {
            case V2DFmode:
              if (!register_operand (operands[2], V2DFmode)
                  || !
#line 3148 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1997; /* *aarch64_vgetfmulxv2df */

            case DFmode:
              if (!register_operand (operands[2], DFmode)
                  || !
#line 3148 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1998; /* *aarch64_vgetfmulxdf */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_16 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (pattern76 (x3, V8QImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2411; /* aarch64_sqshlu_nv8qi */

    case V16QImode:
      if (pattern76 (x3, V16QImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2414; /* aarch64_sqshlu_nv16qi */

    case V4HImode:
      if (pattern77 (x3, V4HImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2417; /* aarch64_sqshlu_nv4hi */

    case V8HImode:
      if (pattern77 (x3, V8HImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2420; /* aarch64_sqshlu_nv8hi */

    case V2SImode:
      if (pattern78 (x3, V2SImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2423; /* aarch64_sqshlu_nv2si */

    case V4SImode:
      if (pattern78 (x3, V4SImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2426; /* aarch64_sqshlu_nv4si */

    case V2DImode:
      if (pattern79 (x3, V2DImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2429; /* aarch64_sqshlu_nv2di */

    case QImode:
      if (pattern76 (x3, QImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2432; /* aarch64_sqshlu_nqi */

    case HImode:
      if (pattern77 (x3, HImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2435; /* aarch64_sqshlu_nhi */

    case SImode:
      if (pattern78 (x3, SImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2438; /* aarch64_sqshlu_nsi */

    case DImode:
      if (pattern79 (x3, DImode) != 0
          || !
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2441; /* aarch64_sqshlu_ndi */

    default:
      return -1;
    }
}

static int
recog_17 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern80 (x1))
    {
    case 0:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2276; /* aarch64_uqshlv8qi */

    case 1:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2280; /* aarch64_uqshlv16qi */

    case 2:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2284; /* aarch64_uqshlv4hi */

    case 3:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2288; /* aarch64_uqshlv8hi */

    case 4:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2292; /* aarch64_uqshlv2si */

    case 5:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2296; /* aarch64_uqshlv4si */

    case 6:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2300; /* aarch64_uqshlv2di */

    case 7:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2304; /* aarch64_uqshlqi */

    case 8:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2308; /* aarch64_uqshlhi */

    case 9:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2312; /* aarch64_uqshlsi */

    case 10:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2316; /* aarch64_uqshldi */

    case 11:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2413; /* aarch64_uqshl_nv8qi */

    case 12:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2416; /* aarch64_uqshl_nv16qi */

    case 13:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2419; /* aarch64_uqshl_nv4hi */

    case 14:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2422; /* aarch64_uqshl_nv8hi */

    case 15:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2425; /* aarch64_uqshl_nv2si */

    case 16:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2428; /* aarch64_uqshl_nv4si */

    case 17:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2431; /* aarch64_uqshl_nv2di */

    case 18:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2434; /* aarch64_uqshl_nqi */

    case 19:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2437; /* aarch64_uqshl_nhi */

    case 20:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2440; /* aarch64_uqshl_nsi */

    case 21:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2443; /* aarch64_uqshl_ndi */

    default:
      return -1;
    }
}

static int
recog_18 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern80 (x1))
    {
    case 0:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2275; /* aarch64_sqshlv8qi */

    case 1:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2279; /* aarch64_sqshlv16qi */

    case 2:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2283; /* aarch64_sqshlv4hi */

    case 3:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2287; /* aarch64_sqshlv8hi */

    case 4:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2291; /* aarch64_sqshlv2si */

    case 5:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2295; /* aarch64_sqshlv4si */

    case 6:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2299; /* aarch64_sqshlv2di */

    case 7:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2303; /* aarch64_sqshlqi */

    case 8:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2307; /* aarch64_sqshlhi */

    case 9:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2311; /* aarch64_sqshlsi */

    case 10:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2315; /* aarch64_sqshldi */

    case 11:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2412; /* aarch64_sqshl_nv8qi */

    case 12:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2415; /* aarch64_sqshl_nv16qi */

    case 13:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2418; /* aarch64_sqshl_nv4hi */

    case 14:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2421; /* aarch64_sqshl_nv8hi */

    case 15:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2424; /* aarch64_sqshl_nv2si */

    case 16:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2427; /* aarch64_sqshl_nv4si */

    case 17:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2430; /* aarch64_sqshl_nv2di */

    case 18:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2433; /* aarch64_sqshl_nqi */

    case 19:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2436; /* aarch64_sqshl_nhi */

    case 20:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2439; /* aarch64_sqshl_nsi */

    case 21:
      if (!
#line 4090 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2442; /* aarch64_sqshl_ndi */

    default:
      return -1;
    }
}

static int
recog_19 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (pattern93 (x1, XImode) != 0)
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case XImode:
      if (!aarch64_simd_struct_operand (operands[0], XImode))
        return -1;
      x2 = XEXP (x1, 1);
      if (GET_MODE (x2) != XImode)
        return -1;
      x3 = XVECEXP (x2, 0, 1);
      switch (GET_MODE (x3))
        {
        case V16QImode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2798; /* aarch64_simd_st4v16qi */

        case V8HImode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2799; /* aarch64_simd_st4v8hi */

        case V4SImode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2800; /* aarch64_simd_st4v4si */

        case V2DImode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2801; /* aarch64_simd_st4v2di */

        case V8HFmode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2802; /* aarch64_simd_st4v8hf */

        case V4SFmode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2803; /* aarch64_simd_st4v4sf */

        case V2DFmode:
          if (!
#line 4645 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2804; /* aarch64_simd_st4v2df */

        default:
          return -1;
        }

    case BLKmode:
      if (!aarch64_simd_struct_operand (operands[0], BLKmode))
        return -1;
      x2 = XEXP (x1, 1);
      if (GET_MODE (x2) != BLKmode)
        return -1;
      x3 = XVECEXP (x2, 0, 1);
      switch (GET_MODE (x3))
        {
        case V8QImode:
          if (!
#line 5465 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3046; /* aarch64_st4v8qi_dreg */

        case V4HImode:
          if (!
#line 5465 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3047; /* aarch64_st4v4hi_dreg */

        case V4HFmode:
          if (!
#line 5465 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3048; /* aarch64_st4v4hf_dreg */

        case V2SImode:
          if (!
#line 5465 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3049; /* aarch64_st4v2si_dreg */

        case V2SFmode:
          if (!
#line 5465 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3050; /* aarch64_st4v2sf_dreg */

        case DImode:
          if (!
#line 5475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3051; /* aarch64_st4di_dreg */

        case DFmode:
          if (!
#line 5475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3052; /* aarch64_st4df_dreg */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_20 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (pattern93 (x1, CImode) != 0)
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case CImode:
      if (!aarch64_simd_struct_operand (operands[0], CImode))
        return -1;
      x2 = XEXP (x1, 1);
      if (GET_MODE (x2) != CImode)
        return -1;
      x3 = XVECEXP (x2, 0, 1);
      switch (GET_MODE (x3))
        {
        case V16QImode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2742; /* aarch64_simd_st3v16qi */

        case V8HImode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2743; /* aarch64_simd_st3v8hi */

        case V4SImode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2744; /* aarch64_simd_st3v4si */

        case V2DImode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2745; /* aarch64_simd_st3v2di */

        case V8HFmode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2746; /* aarch64_simd_st3v8hf */

        case V4SFmode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2747; /* aarch64_simd_st3v4sf */

        case V2DFmode:
          if (!
#line 4547 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2748; /* aarch64_simd_st3v2df */

        default:
          return -1;
        }

    case BLKmode:
      if (!aarch64_simd_struct_operand (operands[0], BLKmode))
        return -1;
      x2 = XEXP (x1, 1);
      if (GET_MODE (x2) != BLKmode)
        return -1;
      x3 = XVECEXP (x2, 0, 1);
      switch (GET_MODE (x3))
        {
        case V8QImode:
          if (!
#line 5445 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3039; /* aarch64_st3v8qi_dreg */

        case V4HImode:
          if (!
#line 5445 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3040; /* aarch64_st3v4hi_dreg */

        case V4HFmode:
          if (!
#line 5445 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3041; /* aarch64_st3v4hf_dreg */

        case V2SImode:
          if (!
#line 5445 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3042; /* aarch64_st3v2si_dreg */

        case V2SFmode:
          if (!
#line 5445 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3043; /* aarch64_st3v2sf_dreg */

        case DImode:
          if (!
#line 5455 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3044; /* aarch64_st3di_dreg */

        case DFmode:
          if (!
#line 5455 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3045; /* aarch64_st3df_dreg */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_21 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  if (pattern93 (x1, OImode) != 0)
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case OImode:
      if (!aarch64_simd_struct_operand (operands[0], OImode))
        return -1;
      x2 = XEXP (x1, 1);
      if (GET_MODE (x2) != OImode)
        return -1;
      x3 = XVECEXP (x2, 0, 1);
      switch (GET_MODE (x3))
        {
        case V16QImode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2686; /* aarch64_simd_st2v16qi */

        case V8HImode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2687; /* aarch64_simd_st2v8hi */

        case V4SImode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2688; /* aarch64_simd_st2v4si */

        case V2DImode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2689; /* aarch64_simd_st2v2di */

        case V8HFmode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2690; /* aarch64_simd_st2v8hf */

        case V4SFmode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2691; /* aarch64_simd_st2v4sf */

        case V2DFmode:
          if (!
#line 4449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2692; /* aarch64_simd_st2v2df */

        default:
          return -1;
        }

    case BLKmode:
      if (!aarch64_simd_struct_operand (operands[0], BLKmode))
        return -1;
      x2 = XEXP (x1, 1);
      if (GET_MODE (x2) != BLKmode)
        return -1;
      x3 = XVECEXP (x2, 0, 1);
      switch (GET_MODE (x3))
        {
        case V8QImode:
          if (!
#line 5425 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3032; /* aarch64_st2v8qi_dreg */

        case V4HImode:
          if (!
#line 5425 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3033; /* aarch64_st2v4hi_dreg */

        case V4HFmode:
          if (!
#line 5425 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3034; /* aarch64_st2v4hf_dreg */

        case V2SImode:
          if (!
#line 5425 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3035; /* aarch64_st2v2si_dreg */

        case V2SFmode:
          if (!
#line 5425 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3036; /* aarch64_st2v2sf_dreg */

        case DImode:
          if (!
#line 5435 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3037; /* aarch64_st2di_dreg */

        case DFmode:
          if (!
#line 5435 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3038; /* aarch64_st2df_dreg */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_22 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode)
          || !
#line 879 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1258; /* vec_shr_v8qi */

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode)
          || !
#line 879 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1259; /* vec_shr_v4hi */

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode)
          || !
#line 879 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1260; /* vec_shr_v4hf */

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode)
          || !
#line 879 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1261; /* vec_shr_v2si */

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode)
          || !
#line 879 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1262; /* vec_shr_v2sf */

    default:
      return -1;
    }
}

static int
recog_23 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern74 (x1))
    {
    case 0:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2106; /* aarch64_sqrdmulhv4hi */

    case 1:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2108; /* aarch64_sqrdmulhv8hi */

    case 2:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2110; /* aarch64_sqrdmulhv2si */

    case 3:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2112; /* aarch64_sqrdmulhv4si */

    case 4:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2114; /* aarch64_sqrdmulhhi */

    case 5:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2116; /* aarch64_sqrdmulhsi */

    case 6:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2118; /* aarch64_sqrdmulh_lanev4hi */

    case 7:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2126; /* aarch64_sqrdmulh_laneqv4hi */

    case 8:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2120; /* aarch64_sqrdmulh_lanev8hi */

    case 9:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2128; /* aarch64_sqrdmulh_laneqv8hi */

    case 10:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2122; /* aarch64_sqrdmulh_lanev2si */

    case 11:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2130; /* aarch64_sqrdmulh_laneqv2si */

    case 12:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2124; /* aarch64_sqrdmulh_lanev4si */

    case 13:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2132; /* aarch64_sqrdmulh_laneqv4si */

    case 14:
      if (!
#line 3264 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2134; /* aarch64_sqrdmulh_lanehi */

    case 15:
      if (!
#line 3279 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2138; /* aarch64_sqrdmulh_laneqhi */

    case 16:
      if (!
#line 3264 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2136; /* aarch64_sqrdmulh_lanesi */

    case 17:
      if (!
#line 3279 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2140; /* aarch64_sqrdmulh_laneqsi */

    default:
      return -1;
    }
}

static int
recog_24 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern74 (x1))
    {
    case 0:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2105; /* aarch64_sqdmulhv4hi */

    case 1:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2107; /* aarch64_sqdmulhv8hi */

    case 2:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2109; /* aarch64_sqdmulhv2si */

    case 3:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2111; /* aarch64_sqdmulhv4si */

    case 4:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2113; /* aarch64_sqdmulhhi */

    case 5:
      if (!
#line 3219 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2115; /* aarch64_sqdmulhsi */

    case 6:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2117; /* aarch64_sqdmulh_lanev4hi */

    case 7:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2125; /* aarch64_sqdmulh_laneqv4hi */

    case 8:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2119; /* aarch64_sqdmulh_lanev8hi */

    case 9:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2127; /* aarch64_sqdmulh_laneqv8hi */

    case 10:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2121; /* aarch64_sqdmulh_lanev2si */

    case 11:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2129; /* aarch64_sqdmulh_laneqv2si */

    case 12:
      if (!
#line 3234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2123; /* aarch64_sqdmulh_lanev4si */

    case 13:
      if (!
#line 3249 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2131; /* aarch64_sqdmulh_laneqv4si */

    case 14:
      if (!
#line 3264 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2133; /* aarch64_sqdmulh_lanehi */

    case 15:
      if (!
#line 3279 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2137; /* aarch64_sqdmulh_laneqhi */

    case 16:
      if (!
#line 3264 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2135; /* aarch64_sqdmulh_lanesi */

    case 17:
      if (!
#line 3279 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2139; /* aarch64_sqdmulh_laneqsi */

    default:
      return -1;
    }
}

static int
recog_25 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern92 (x1, XImode))
    {
    case 0:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2770; /* aarch64_simd_ld4rv8qi */

    case 1:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2771; /* aarch64_simd_ld4rv16qi */

    case 2:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2772; /* aarch64_simd_ld4rv4hi */

    case 3:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2773; /* aarch64_simd_ld4rv8hi */

    case 4:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2774; /* aarch64_simd_ld4rv2si */

    case 5:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2775; /* aarch64_simd_ld4rv4si */

    case 6:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2776; /* aarch64_simd_ld4rv2di */

    case 7:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2777; /* aarch64_simd_ld4rv4hf */

    case 8:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2778; /* aarch64_simd_ld4rv8hf */

    case 9:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2779; /* aarch64_simd_ld4rv2sf */

    case 10:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2780; /* aarch64_simd_ld4rv4sf */

    case 11:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2781; /* aarch64_simd_ld4rv2df */

    case 12:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2782; /* aarch64_simd_ld4rdi */

    case 13:
      if (!
#line 4601 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2783; /* aarch64_simd_ld4rdf */

    default:
      return -1;
    }
}

static int
recog_26 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern92 (x1, CImode))
    {
    case 0:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2714; /* aarch64_simd_ld3rv8qi */

    case 1:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2715; /* aarch64_simd_ld3rv16qi */

    case 2:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2716; /* aarch64_simd_ld3rv4hi */

    case 3:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2717; /* aarch64_simd_ld3rv8hi */

    case 4:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2718; /* aarch64_simd_ld3rv2si */

    case 5:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2719; /* aarch64_simd_ld3rv4si */

    case 6:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2720; /* aarch64_simd_ld3rv2di */

    case 7:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2721; /* aarch64_simd_ld3rv4hf */

    case 8:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2722; /* aarch64_simd_ld3rv8hf */

    case 9:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2723; /* aarch64_simd_ld3rv2sf */

    case 10:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2724; /* aarch64_simd_ld3rv4sf */

    case 11:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2725; /* aarch64_simd_ld3rv2df */

    case 12:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2726; /* aarch64_simd_ld3rdi */

    case 13:
      if (!
#line 4503 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2727; /* aarch64_simd_ld3rdf */

    default:
      return -1;
    }
}

static int
recog_27 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern92 (x1, OImode))
    {
    case 0:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2658; /* aarch64_simd_ld2rv8qi */

    case 1:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2659; /* aarch64_simd_ld2rv16qi */

    case 2:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2660; /* aarch64_simd_ld2rv4hi */

    case 3:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2661; /* aarch64_simd_ld2rv8hi */

    case 4:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2662; /* aarch64_simd_ld2rv2si */

    case 5:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2663; /* aarch64_simd_ld2rv4si */

    case 6:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2664; /* aarch64_simd_ld2rv2di */

    case 7:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2665; /* aarch64_simd_ld2rv4hf */

    case 8:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2666; /* aarch64_simd_ld2rv8hf */

    case 9:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2667; /* aarch64_simd_ld2rv2sf */

    case 10:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2668; /* aarch64_simd_ld2rv4sf */

    case 11:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2669; /* aarch64_simd_ld2rv2df */

    case 12:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2670; /* aarch64_simd_ld2rdi */

    case 13:
      if (!
#line 4405 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2671; /* aarch64_simd_ld2rdf */

    default:
      return -1;
    }
}

static int
recog_28 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern95 (x1))
    {
    case 0:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2917; /* aarch64_uzp2v8qi */

    case 1:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2923; /* aarch64_uzp2v16qi */

    case 2:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2929; /* aarch64_uzp2v4hi */

    case 3:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2935; /* aarch64_uzp2v8hi */

    case 4:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2941; /* aarch64_uzp2v2si */

    case 5:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2947; /* aarch64_uzp2v4si */

    case 6:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2953; /* aarch64_uzp2v2di */

    case 7:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2959; /* aarch64_uzp2v4hf */

    case 8:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2965; /* aarch64_uzp2v8hf */

    case 9:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2971; /* aarch64_uzp2v2sf */

    case 10:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2977; /* aarch64_uzp2v4sf */

    case 11:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2983; /* aarch64_uzp2v2df */

    default:
      return -1;
    }
}

static int
recog_29 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern95 (x1))
    {
    case 0:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2916; /* aarch64_uzp1v8qi */

    case 1:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2922; /* aarch64_uzp1v16qi */

    case 2:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2928; /* aarch64_uzp1v4hi */

    case 3:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2934; /* aarch64_uzp1v8hi */

    case 4:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2940; /* aarch64_uzp1v2si */

    case 5:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2946; /* aarch64_uzp1v4si */

    case 6:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2952; /* aarch64_uzp1v2di */

    case 7:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2958; /* aarch64_uzp1v4hf */

    case 8:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2964; /* aarch64_uzp1v8hf */

    case 9:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2970; /* aarch64_uzp1v2sf */

    case 10:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2976; /* aarch64_uzp1v4sf */

    case 11:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2982; /* aarch64_uzp1v2df */

    default:
      return -1;
    }
}

static int
recog_30 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern95 (x1))
    {
    case 0:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2915; /* aarch64_trn2v8qi */

    case 1:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2921; /* aarch64_trn2v16qi */

    case 2:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2927; /* aarch64_trn2v4hi */

    case 3:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2933; /* aarch64_trn2v8hi */

    case 4:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2939; /* aarch64_trn2v2si */

    case 5:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2945; /* aarch64_trn2v4si */

    case 6:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2951; /* aarch64_trn2v2di */

    case 7:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2957; /* aarch64_trn2v4hf */

    case 8:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2963; /* aarch64_trn2v8hf */

    case 9:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2969; /* aarch64_trn2v2sf */

    case 10:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2975; /* aarch64_trn2v4sf */

    case 11:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2981; /* aarch64_trn2v2df */

    default:
      return -1;
    }
}

static int
recog_31 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern95 (x1))
    {
    case 0:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2914; /* aarch64_trn1v8qi */

    case 1:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2920; /* aarch64_trn1v16qi */

    case 2:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2926; /* aarch64_trn1v4hi */

    case 3:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2932; /* aarch64_trn1v8hi */

    case 4:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2938; /* aarch64_trn1v2si */

    case 5:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2944; /* aarch64_trn1v4si */

    case 6:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2950; /* aarch64_trn1v2di */

    case 7:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2956; /* aarch64_trn1v4hf */

    case 8:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2962; /* aarch64_trn1v8hf */

    case 9:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2968; /* aarch64_trn1v2sf */

    case 10:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2974; /* aarch64_trn1v4sf */

    case 11:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2980; /* aarch64_trn1v2df */

    default:
      return -1;
    }
}

static int
recog_32 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern95 (x1))
    {
    case 0:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2913; /* aarch64_zip2v8qi */

    case 1:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2919; /* aarch64_zip2v16qi */

    case 2:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2925; /* aarch64_zip2v4hi */

    case 3:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2931; /* aarch64_zip2v8hi */

    case 4:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2937; /* aarch64_zip2v2si */

    case 5:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2943; /* aarch64_zip2v4si */

    case 6:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2949; /* aarch64_zip2v2di */

    case 7:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2955; /* aarch64_zip2v4hf */

    case 8:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2961; /* aarch64_zip2v8hf */

    case 9:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2967; /* aarch64_zip2v2sf */

    case 10:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2973; /* aarch64_zip2v4sf */

    case 11:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2979; /* aarch64_zip2v2df */

    default:
      return -1;
    }
}

static int
recog_33 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern95 (x1))
    {
    case 0:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2912; /* aarch64_zip1v8qi */

    case 1:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2918; /* aarch64_zip1v16qi */

    case 2:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2924; /* aarch64_zip1v4hi */

    case 3:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2930; /* aarch64_zip1v8hi */

    case 4:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2936; /* aarch64_zip1v2si */

    case 5:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2942; /* aarch64_zip1v4si */

    case 6:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2948; /* aarch64_zip1v2di */

    case 7:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2954; /* aarch64_zip1v4hf */

    case 8:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2960; /* aarch64_zip1v8hf */

    case 9:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2966; /* aarch64_zip1v2sf */

    case 10:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2972; /* aarch64_zip1v4sf */

    case 11:
      if (!
#line 5390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2978; /* aarch64_zip1v2df */

    default:
      return -1;
    }
}

static int
recog_34 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern71 (x1))
    {
    case 0:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2278; /* aarch64_uqrshlv8qi */

    case 1:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2282; /* aarch64_uqrshlv16qi */

    case 2:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2286; /* aarch64_uqrshlv4hi */

    case 3:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2290; /* aarch64_uqrshlv8hi */

    case 4:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2294; /* aarch64_uqrshlv2si */

    case 5:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2298; /* aarch64_uqrshlv4si */

    case 6:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2302; /* aarch64_uqrshlv2di */

    case 7:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2306; /* aarch64_uqrshlqi */

    case 8:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2310; /* aarch64_uqrshlhi */

    case 9:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2314; /* aarch64_uqrshlsi */

    case 10:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2318; /* aarch64_uqrshldi */

    default:
      return -1;
    }
}

static int
recog_35 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern71 (x1))
    {
    case 0:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2277; /* aarch64_sqrshlv8qi */

    case 1:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2281; /* aarch64_sqrshlv16qi */

    case 2:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2285; /* aarch64_sqrshlv4hi */

    case 3:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2289; /* aarch64_sqrshlv8hi */

    case 4:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2293; /* aarch64_sqrshlv2si */

    case 5:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2297; /* aarch64_sqrshlv4si */

    case 6:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2301; /* aarch64_sqrshlv2di */

    case 7:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2305; /* aarch64_sqrshlqi */

    case 8:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2309; /* aarch64_sqrshlhi */

    case 9:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2313; /* aarch64_sqrshlsi */

    case 10:
      if (!
#line 4001 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2317; /* aarch64_sqrshldi */

    default:
      return -1;
    }
}

static int
recog_36 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern71 (x1))
    {
    case 0:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2044; /* aarch64_usqaddv8qi */

    case 1:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2046; /* aarch64_usqaddv16qi */

    case 2:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2048; /* aarch64_usqaddv4hi */

    case 3:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2050; /* aarch64_usqaddv8hi */

    case 4:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2052; /* aarch64_usqaddv2si */

    case 5:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2054; /* aarch64_usqaddv4si */

    case 6:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2056; /* aarch64_usqaddv2di */

    case 7:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2058; /* aarch64_usqaddqi */

    case 8:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2060; /* aarch64_usqaddhi */

    case 9:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2062; /* aarch64_usqaddsi */

    case 10:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2064; /* aarch64_usqadddi */

    default:
      return -1;
    }
}

static int
recog_37 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern71 (x1))
    {
    case 0:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2043; /* aarch64_suqaddv8qi */

    case 1:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2045; /* aarch64_suqaddv16qi */

    case 2:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2047; /* aarch64_suqaddv4hi */

    case 3:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2049; /* aarch64_suqaddv8hi */

    case 4:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2051; /* aarch64_suqaddv2si */

    case 5:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2053; /* aarch64_suqaddv4si */

    case 6:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2055; /* aarch64_suqaddv2di */

    case 7:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2057; /* aarch64_suqaddqi */

    case 8:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2059; /* aarch64_suqaddhi */

    case 9:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2061; /* aarch64_suqaddsi */

    case 10:
      if (!
#line 3173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2063; /* aarch64_suqadddi */

    default:
      return -1;
    }
}

static int
recog_38 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      switch (pattern233 (x3, V8QImode))
        {
        case 0:
          if (!
#line 5285 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2896; /* aarch64_tbl1v8qi */

        case 1:
          if (!
#line 5307 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2899; /* aarch64_tbl3v8qi */

        case 2:
          if (!
#line 5330 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2903; /* aarch64_qtbl3v8qi */

        case 3:
          if (!
#line 5353 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2907; /* aarch64_qtbl4v8qi */

        default:
          return -1;
        }

    case V16QImode:
      switch (pattern233 (x3, V16QImode))
        {
        case 0:
          if (!
#line 5285 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2897; /* aarch64_tbl1v16qi */

        case 1:
          if (!
#line 5297 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2898; /* aarch64_tbl2v16qi */

        case 2:
          if (!
#line 5330 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2904; /* aarch64_qtbl3v16qi */

        case 3:
          if (!
#line 5353 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2908; /* aarch64_qtbl4v16qi */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_39 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  if (!aarch64_tls_ie_symref (operands[1], VOIDmode))
    return -1;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[2], SImode)
          || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
        return -1;
      return 941; /* tlsie_tiny_si */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[2], DImode)
          || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
        return -1;
      return 942; /* tlsie_tiny_di */

    default:
      return -1;
    }
}

static int
recog_40 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern65 (x1))
    {
    case 0:
      if (!(
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 3076; /* aarch64_frecpsv4hf */

    case 1:
      if (!(
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 3077; /* aarch64_frecpsv8hf */

    case 2:
      if (!
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3078; /* aarch64_frecpsv2sf */

    case 3:
      if (!
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3079; /* aarch64_frecpsv4sf */

    case 4:
      if (!
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3080; /* aarch64_frecpsv2df */

    case 5:
      if (!(
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 3081; /* aarch64_frecpshf */

    case 6:
      if (!
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3082; /* aarch64_frecpssf */

    case 7:
      if (!
#line 5603 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3083; /* aarch64_frecpsdf */

    default:
      return -1;
    }
}

static int
recog_41 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern86 (x1))
    {
    case 0:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2332; /* aarch64_urshr_nv8qi */

    case 1:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2334; /* aarch64_urshr_nv16qi */

    case 2:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2336; /* aarch64_urshr_nv4hi */

    case 3:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2338; /* aarch64_urshr_nv8hi */

    case 4:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2340; /* aarch64_urshr_nv2si */

    case 5:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2342; /* aarch64_urshr_nv4si */

    case 6:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2344; /* aarch64_urshr_nv2di */

    case 7:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2346; /* aarch64_urshr_ndi */

    default:
      return -1;
    }
}

static int
recog_42 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern86 (x1))
    {
    case 0:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2331; /* aarch64_srshr_nv8qi */

    case 1:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2333; /* aarch64_srshr_nv16qi */

    case 2:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2335; /* aarch64_srshr_nv4hi */

    case 3:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2337; /* aarch64_srshr_nv8hi */

    case 4:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2339; /* aarch64_srshr_nv2si */

    case 5:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2341; /* aarch64_srshr_nv4si */

    case 6:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2343; /* aarch64_srshr_nv2di */

    case 7:
      if (!
#line 4049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2345; /* aarch64_srshr_ndi */

    default:
      return -1;
    }
}

static int
recog_43 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern75 (x1))
    {
    case 0:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2246; /* aarch64_urshlv8qi */

    case 1:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2250; /* aarch64_urshlv16qi */

    case 2:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2254; /* aarch64_urshlv4hi */

    case 3:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2258; /* aarch64_urshlv8hi */

    case 4:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2262; /* aarch64_urshlv2si */

    case 5:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2266; /* aarch64_urshlv4si */

    case 6:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2270; /* aarch64_urshlv2di */

    case 7:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2274; /* aarch64_urshldi */

    default:
      return -1;
    }
}

static int
recog_44 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern75 (x1))
    {
    case 0:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2245; /* aarch64_srshlv8qi */

    case 1:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2249; /* aarch64_srshlv16qi */

    case 2:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2253; /* aarch64_srshlv4hi */

    case 3:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2257; /* aarch64_srshlv8hi */

    case 4:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2261; /* aarch64_srshlv2si */

    case 5:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2265; /* aarch64_srshlv4si */

    case 6:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2269; /* aarch64_srshlv2di */

    case 7:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2273; /* aarch64_srshldi */

    default:
      return -1;
    }
}

static int
recog_45 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern75 (x1))
    {
    case 0:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2244; /* aarch64_ushlv8qi */

    case 1:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2248; /* aarch64_ushlv16qi */

    case 2:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2252; /* aarch64_ushlv4hi */

    case 3:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2256; /* aarch64_ushlv8hi */

    case 4:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2260; /* aarch64_ushlv2si */

    case 5:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2264; /* aarch64_ushlv4si */

    case 6:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2268; /* aarch64_ushlv2di */

    case 7:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2272; /* aarch64_ushldi */

    default:
      return -1;
    }
}

static int
recog_46 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern75 (x1))
    {
    case 0:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2243; /* aarch64_sshlv8qi */

    case 1:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2247; /* aarch64_sshlv16qi */

    case 2:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2251; /* aarch64_sshlv4hi */

    case 3:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2255; /* aarch64_sshlv8hi */

    case 4:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2259; /* aarch64_sshlv2si */

    case 5:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2263; /* aarch64_sshlv4si */

    case 6:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2267; /* aarch64_sshlv2di */

    case 7:
      if (!
#line 3987 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2271; /* aarch64_sshldi */

    default:
      return -1;
    }
}

static int
recog_47 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern65 (x1))
    {
    case 0:
      if (!(
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1111; /* aarch64_rsqrtsv4hf */

    case 1:
      if (!(
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1112; /* aarch64_rsqrtsv8hf */

    case 2:
      if (!
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1113; /* aarch64_rsqrtsv2sf */

    case 3:
      if (!
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1114; /* aarch64_rsqrtsv4sf */

    case 4:
      if (!
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1115; /* aarch64_rsqrtsv2df */

    case 5:
      if (!(
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1116; /* aarch64_rsqrtshf */

    case 6:
      if (!
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1117; /* aarch64_rsqrtssf */

    case 7:
      if (!
#line 398 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1118; /* aarch64_rsqrtsdf */

    default:
      return -1;
    }
}

static int
recog_48 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern62 (x1))
    {
    case 0:
      if (!(
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 909; /* fminhf3 */

    case 1:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 913; /* fminsf3 */

    case 2:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 917; /* fmindf3 */

    case 3:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1689; /* fminv4hf3 */

    case 4:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1693; /* fminv8hf3 */

    case 5:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1697; /* fminv2sf3 */

    case 6:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1701; /* fminv4sf3 */

    case 7:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1705; /* fminv2df3 */

    default:
      return -1;
    }
}

static int
recog_49 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern62 (x1))
    {
    case 0:
      if (!(
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 908; /* fmaxhf3 */

    case 1:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 912; /* fmaxsf3 */

    case 2:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 916; /* fmaxdf3 */

    case 3:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1688; /* fmaxv4hf3 */

    case 4:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1692; /* fmaxv8hf3 */

    case 5:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1696; /* fmaxv2sf3 */

    case 6:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1700; /* fmaxv4sf3 */

    case 7:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1704; /* fmaxv2df3 */

    default:
      return -1;
    }
}

static int
recog_50 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern62 (x1))
    {
    case 0:
      if (!(
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 907; /* smin_nanhf3 */

    case 1:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 911; /* smin_nansf3 */

    case 2:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 915; /* smin_nandf3 */

    case 3:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1687; /* smin_nanv4hf3 */

    case 4:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1691; /* smin_nanv8hf3 */

    case 5:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1695; /* smin_nanv2sf3 */

    case 6:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1699; /* smin_nanv4sf3 */

    case 7:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1703; /* smin_nanv2df3 */

    default:
      return -1;
    }
}

static int
recog_51 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern62 (x1))
    {
    case 0:
      if (!(
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 906; /* smax_nanhf3 */

    case 1:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 910; /* smax_nansf3 */

    case 2:
      if (!
#line 4849 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 914; /* smax_nandf3 */

    case 3:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1686; /* smax_nanv4hf3 */

    case 4:
      if (!(
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1690; /* smax_nanv8hf3 */

    case 5:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1694; /* smax_nanv2sf3 */

    case 6:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1698; /* smax_nanv4sf3 */

    case 7:
      if (!
#line 2049 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1702; /* smax_nanv2df3 */

    default:
      return -1;
    }
}

static int
recog_52 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern60 (x1))
    {
    case 0:
      return 862; /* ucvtfsi3 */

    case 1:
      return 864; /* ucvtfdi3 */

    case 2:
      if (!
#line 4686 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 870; /* ucvtfsihf3 */

    case 3:
      if (!
#line 4686 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 872; /* ucvtfdihf3 */

    case 4:
      if (!
#line 4706 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 876; /* ucvtfhi3 */

    case 5:
      if (!(
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 180 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1657; /* ucvtfv4hi3 */

    case 6:
      if (!(
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 181 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1659; /* ucvtfv8hi3 */

    case 7:
      if (!
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1661; /* ucvtfv2si3 */

    case 8:
      if (!
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1663; /* ucvtfv4si3 */

    case 9:
      if (!
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1665; /* ucvtfv2di3 */

    default:
      return -1;
    }
}

static int
recog_53 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern60 (x1))
    {
    case 0:
      return 861; /* scvtfsi3 */

    case 1:
      return 863; /* scvtfdi3 */

    case 2:
      if (!
#line 4686 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 869; /* scvtfsihf3 */

    case 3:
      if (!
#line 4686 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 871; /* scvtfdihf3 */

    case 4:
      if (!
#line 4706 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 875; /* scvtfhi3 */

    case 5:
      if (!(
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 180 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1656; /* scvtfv4hi3 */

    case 6:
      if (!(
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 181 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1658; /* scvtfv8hi3 */

    case 7:
      if (!
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1660; /* scvtfv2si3 */

    case 8:
      if (!
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1662; /* scvtfv4si3 */

    case 9:
      if (!
#line 1872 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1664; /* scvtfv2di3 */

    default:
      return -1;
    }
}

static int
recog_54 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern59 (x1))
    {
    case 0:
      return 858; /* fcvtzusf3 */

    case 1:
      if (!
#line 4676 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 866; /* fcvtzuhfsi3 */

    case 2:
      return 860; /* fcvtzudf3 */

    case 3:
      if (!
#line 4676 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 868; /* fcvtzuhfdi3 */

    case 4:
      if (!
#line 4696 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 874; /* fcvtzuhf3 */

    case 5:
      if (!(
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1647; /* fcvtzuv4hf3 */

    case 6:
      if (!(
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1649; /* fcvtzuv8hf3 */

    case 7:
      if (!
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1651; /* fcvtzuv2sf3 */

    case 8:
      if (!
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1653; /* fcvtzuv4sf3 */

    case 9:
      if (!
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1655; /* fcvtzuv2df3 */

    default:
      return -1;
    }
}

static int
recog_55 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern59 (x1))
    {
    case 0:
      return 857; /* fcvtzssf3 */

    case 1:
      if (!
#line 4676 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 865; /* fcvtzshfsi3 */

    case 2:
      return 859; /* fcvtzsdf3 */

    case 3:
      if (!
#line 4676 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
        return -1;
      return 867; /* fcvtzshfdi3 */

    case 4:
      if (!
#line 4696 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 873; /* fcvtzshf3 */

    case 5:
      if (!(
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1646; /* fcvtzsv4hf3 */

    case 6:
      if (!(
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1648; /* fcvtzsv8hf3 */

    case 7:
      if (!
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1650; /* fcvtzsv2sf3 */

    case 8:
      if (!
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1652; /* fcvtzsv4sf3 */

    case 9:
      if (!
#line 1861 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1654; /* fcvtzsv2df3 */

    default:
      return -1;
    }
}

static int
recog_56 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern91 (x1, XImode))
    {
    case 0:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2763; /* aarch64_simd_ld4v16qi */

    case 1:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2764; /* aarch64_simd_ld4v8hi */

    case 2:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2765; /* aarch64_simd_ld4v4si */

    case 3:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2766; /* aarch64_simd_ld4v2di */

    case 4:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2767; /* aarch64_simd_ld4v8hf */

    case 5:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2768; /* aarch64_simd_ld4v4sf */

    case 6:
      if (!
#line 4591 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2769; /* aarch64_simd_ld4v2df */

    default:
      return -1;
    }
}

static int
recog_57 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern91 (x1, CImode))
    {
    case 0:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2707; /* aarch64_simd_ld3v16qi */

    case 1:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2708; /* aarch64_simd_ld3v8hi */

    case 2:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2709; /* aarch64_simd_ld3v4si */

    case 3:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2710; /* aarch64_simd_ld3v2di */

    case 4:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2711; /* aarch64_simd_ld3v8hf */

    case 5:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2712; /* aarch64_simd_ld3v4sf */

    case 6:
      if (!
#line 4493 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2713; /* aarch64_simd_ld3v2df */

    default:
      return -1;
    }
}

static int
recog_58 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern91 (x1, OImode))
    {
    case 0:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2651; /* aarch64_simd_ld2v16qi */

    case 1:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2652; /* aarch64_simd_ld2v8hi */

    case 2:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2653; /* aarch64_simd_ld2v4si */

    case 3:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2654; /* aarch64_simd_ld2v2di */

    case 4:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2655; /* aarch64_simd_ld2v8hf */

    case 5:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2656; /* aarch64_simd_ld2v4sf */

    case 6:
      if (!
#line 4395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2657; /* aarch64_simd_ld2v2df */

    default:
      return -1;
    }
}

static int
recog_59 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern66 (x1))
    {
    case 0:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1251; /* aarch64_simd_reg_shlv8qi_signed */

    case 1:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1252; /* aarch64_simd_reg_shlv16qi_signed */

    case 2:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1253; /* aarch64_simd_reg_shlv4hi_signed */

    case 3:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1254; /* aarch64_simd_reg_shlv8hi_signed */

    case 4:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1255; /* aarch64_simd_reg_shlv2si_signed */

    case 5:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1256; /* aarch64_simd_reg_shlv4si_signed */

    case 6:
      if (!
#line 643 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1257; /* aarch64_simd_reg_shlv2di_signed */

    default:
      return -1;
    }
}

static int
recog_60 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern66 (x1))
    {
    case 0:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1244; /* aarch64_simd_reg_shlv8qi_unsigned */

    case 1:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1245; /* aarch64_simd_reg_shlv16qi_unsigned */

    case 2:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1246; /* aarch64_simd_reg_shlv4hi_unsigned */

    case 3:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1247; /* aarch64_simd_reg_shlv8hi_unsigned */

    case 4:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1248; /* aarch64_simd_reg_shlv2si_unsigned */

    case 5:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1249; /* aarch64_simd_reg_shlv4si_unsigned */

    case 6:
      if (!
#line 633 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1250; /* aarch64_simd_reg_shlv2di_unsigned */

    default:
      return -1;
    }
}

static int
recog_61 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  x5 = XVECEXP (x3, 0, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (pattern61 (x3, V8QImode) != 0
          || !
#line 4354 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2642; /* aarch64_addpv8qi */

    case V4HImode:
      if (pattern61 (x3, V4HImode) != 0
          || !
#line 4354 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2643; /* aarch64_addpv4hi */

    case V2SImode:
      if (pattern61 (x3, V2SImode) != 0
          || !
#line 4354 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2644; /* aarch64_addpv2si */

    default:
      return -1;
    }
}

static int
recog_62 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern90 (x1))
    {
    case 0:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2449; /* aarch64_uqrshrn_nv8hi */

    case 1:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2455; /* aarch64_uqrshrn_nv4si */

    case 2:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2461; /* aarch64_uqrshrn_nv2di */

    case 3:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2467; /* aarch64_uqrshrn_nhi */

    case 4:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2473; /* aarch64_uqrshrn_nsi */

    case 5:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2479; /* aarch64_uqrshrn_ndi */

    default:
      return -1;
    }
}

static int
recog_63 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern90 (x1))
    {
    case 0:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2448; /* aarch64_sqrshrn_nv8hi */

    case 1:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2454; /* aarch64_sqrshrn_nv4si */

    case 2:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2460; /* aarch64_sqrshrn_nv2di */

    case 3:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2466; /* aarch64_sqrshrn_nhi */

    case 4:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2472; /* aarch64_sqrshrn_nsi */

    case 5:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2478; /* aarch64_sqrshrn_ndi */

    default:
      return -1;
    }
}

static int
recog_64 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern90 (x1))
    {
    case 0:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2447; /* aarch64_uqshrn_nv8hi */

    case 1:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2453; /* aarch64_uqshrn_nv4si */

    case 2:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2459; /* aarch64_uqshrn_nv2di */

    case 3:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2465; /* aarch64_uqshrn_nhi */

    case 4:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2471; /* aarch64_uqshrn_nsi */

    case 5:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2477; /* aarch64_uqshrn_ndi */

    default:
      return -1;
    }
}

static int
recog_65 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern90 (x1))
    {
    case 0:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2446; /* aarch64_sqshrn_nv8hi */

    case 1:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2452; /* aarch64_sqshrn_nv4si */

    case 2:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2458; /* aarch64_sqshrn_nv2di */

    case 3:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2464; /* aarch64_sqshrn_nhi */

    case 4:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2470; /* aarch64_sqshrn_nsi */

    case 5:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2476; /* aarch64_sqshrn_ndi */

    default:
      return -1;
    }
}

static int
recog_66 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern90 (x1))
    {
    case 0:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2445; /* aarch64_sqrshrun_nv8hi */

    case 1:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2451; /* aarch64_sqrshrun_nv4si */

    case 2:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2457; /* aarch64_sqrshrun_nv2di */

    case 3:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2463; /* aarch64_sqrshrun_nhi */

    case 4:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2469; /* aarch64_sqrshrun_nsi */

    case 5:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2475; /* aarch64_sqrshrun_ndi */

    default:
      return -1;
    }
}

static int
recog_67 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern90 (x1))
    {
    case 0:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2444; /* aarch64_sqshrun_nv8hi */

    case 1:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2450; /* aarch64_sqshrun_nv4si */

    case 2:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2456; /* aarch64_sqshrun_nv2di */

    case 3:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2462; /* aarch64_sqshrun_nhi */

    case 4:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2468; /* aarch64_sqshrun_nsi */

    case 5:
      if (!
#line 4104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2474; /* aarch64_sqshrun_ndi */

    default:
      return -1;
    }
}

static int
recog_68 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern81 (x1))
    {
    case 0:
      if (!
#line 4014 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2320; /* aarch64_ushll_nv8qi */

    case 1:
      if (!
#line 4031 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2326; /* aarch64_ushll2_nv16qi */

    case 2:
      if (!
#line 4014 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2322; /* aarch64_ushll_nv4hi */

    case 3:
      if (!
#line 4031 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2328; /* aarch64_ushll2_nv8hi */

    case 4:
      if (!
#line 4014 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2324; /* aarch64_ushll_nv2si */

    case 5:
      if (!
#line 4031 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2330; /* aarch64_ushll2_nv4si */

    default:
      return -1;
    }
}

static int
recog_69 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern81 (x1))
    {
    case 0:
      if (!
#line 4014 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2319; /* aarch64_sshll_nv8qi */

    case 1:
      if (!
#line 4031 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2325; /* aarch64_sshll2_nv16qi */

    case 2:
      if (!
#line 4014 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2321; /* aarch64_sshll_nv4hi */

    case 3:
      if (!
#line 4031 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2327; /* aarch64_sshll2_nv8hi */

    case 4:
      if (!
#line 4014 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2323; /* aarch64_sshll_nv2si */

    case 5:
      if (!
#line 4031 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2329; /* aarch64_sshll2_nv4si */

    default:
      return -1;
    }
}

static int
recog_70 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!aarch64_simd_struct_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2838; /* aarch64_be_st1v8qi */

    case V16QImode:
      if (!aarch64_simd_struct_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2839; /* aarch64_be_st1v16qi */

    case V4HImode:
      if (!aarch64_simd_struct_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2840; /* aarch64_be_st1v4hi */

    case V8HImode:
      if (!aarch64_simd_struct_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2841; /* aarch64_be_st1v8hi */

    case V2SImode:
      if (!aarch64_simd_struct_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2842; /* aarch64_be_st1v2si */

    case V4SImode:
      if (!aarch64_simd_struct_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2843; /* aarch64_be_st1v4si */

    case V2DImode:
      if (!aarch64_simd_struct_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2844; /* aarch64_be_st1v2di */

    case V4HFmode:
      if (!aarch64_simd_struct_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2845; /* aarch64_be_st1v4hf */

    case V8HFmode:
      if (!aarch64_simd_struct_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HFmode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2846; /* aarch64_be_st1v8hf */

    case V2SFmode:
      if (!aarch64_simd_struct_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2847; /* aarch64_be_st1v2sf */

    case V4SFmode:
      if (!aarch64_simd_struct_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SFmode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2848; /* aarch64_be_st1v4sf */

    case V2DFmode:
      if (!aarch64_simd_struct_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DFmode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2849; /* aarch64_be_st1v2df */

    case DImode:
      if (!aarch64_simd_struct_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode)
          || !
#line 4752 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2850; /* aarch64_be_st1di */

    default:
      return -1;
    }
}

static int
recog_71 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !aarch64_simd_struct_operand (operands[1], V8QImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2825; /* aarch64_be_ld1v8qi */

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !aarch64_simd_struct_operand (operands[1], V16QImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2826; /* aarch64_be_ld1v16qi */

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !aarch64_simd_struct_operand (operands[1], V4HImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2827; /* aarch64_be_ld1v4hi */

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !aarch64_simd_struct_operand (operands[1], V8HImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2828; /* aarch64_be_ld1v8hi */

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !aarch64_simd_struct_operand (operands[1], V2SImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2829; /* aarch64_be_ld1v2si */

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !aarch64_simd_struct_operand (operands[1], V4SImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2830; /* aarch64_be_ld1v4si */

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !aarch64_simd_struct_operand (operands[1], V2DImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2831; /* aarch64_be_ld1v2di */

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !aarch64_simd_struct_operand (operands[1], V4HFmode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2832; /* aarch64_be_ld1v4hf */

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !aarch64_simd_struct_operand (operands[1], V8HFmode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2833; /* aarch64_be_ld1v8hf */

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !aarch64_simd_struct_operand (operands[1], V2SFmode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2834; /* aarch64_be_ld1v2sf */

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !aarch64_simd_struct_operand (operands[1], V4SFmode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2835; /* aarch64_be_ld1v4sf */

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !aarch64_simd_struct_operand (operands[1], V2DFmode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2836; /* aarch64_be_ld1v2df */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !aarch64_simd_struct_operand (operands[1], DImode)
          || !
#line 4743 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2837; /* aarch64_be_ld1di */

    default:
      return -1;
    }
}

static int
recog_72 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1134; /* aarch64_absv8qi */

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1135; /* aarch64_absv16qi */

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1136; /* aarch64_absv4hi */

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1137; /* aarch64_absv8hi */

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1138; /* aarch64_absv2si */

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1139; /* aarch64_absv4si */

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1140; /* aarch64_absv2di */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode)
          || !
#line 451 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1141; /* aarch64_absdi */

    default:
      return -1;
    }
}

static int
recog_73 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode)
          || !
#line 2084 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1711; /* aarch64_reduc_plus_internalv8qi */

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode)
          || !
#line 2084 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1712; /* aarch64_reduc_plus_internalv16qi */

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode)
          || !
#line 2084 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1713; /* aarch64_reduc_plus_internalv4hi */

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode)
          || !
#line 2084 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1714; /* aarch64_reduc_plus_internalv8hi */

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode)
          || !
#line 2084 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1715; /* aarch64_reduc_plus_internalv4si */

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DImode)
          || !
#line 2084 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1716; /* aarch64_reduc_plus_internalv2di */

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode)
          || !
#line 2093 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1717; /* aarch64_reduc_plus_internalv2si */

    default:
      return -1;
    }
}

static int
recog_74 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 620; /* rbitsi2 */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 621; /* rbitdi2 */

    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V8QImode)
          || !
#line 322 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1077; /* aarch64_rbitv8qi */

    case V16QImode:
      if (!register_operand (operands[0], V16QImode)
          || GET_MODE (x3) != V16QImode
          || !register_operand (operands[1], V16QImode)
          || !
#line 322 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1078; /* aarch64_rbitv16qi */

    default:
      return -1;
    }
}

static int
recog_75 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode
          || !register_operand (operands[1], HFmode)
          || !(
#line 5592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 3071; /* aarch64_frecpxhf */

    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], SFmode)
          || !
#line 5592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3073; /* aarch64_frecpxsf */

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], DFmode)
          || !
#line 5592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3075; /* aarch64_frecpxdf */

    default:
      return -1;
    }
}

static int
recog_76 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern105 (x1))
    {
    case 0:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2998; /* aarch64_rev16v8qi */

    case 1:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3001; /* aarch64_rev16v16qi */

    case 2:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3004; /* aarch64_rev16v4hi */

    case 3:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3007; /* aarch64_rev16v8hi */

    case 4:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3010; /* aarch64_rev16v2si */

    case 5:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3013; /* aarch64_rev16v4si */

    case 6:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3016; /* aarch64_rev16v2di */

    case 7:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3019; /* aarch64_rev16v4hf */

    case 8:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3022; /* aarch64_rev16v8hf */

    case 9:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3025; /* aarch64_rev16v2sf */

    case 10:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3028; /* aarch64_rev16v4sf */

    case 11:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3031; /* aarch64_rev16v2df */

    default:
      return -1;
    }
}

static int
recog_77 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern105 (x1))
    {
    case 0:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2997; /* aarch64_rev32v8qi */

    case 1:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3000; /* aarch64_rev32v16qi */

    case 2:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3003; /* aarch64_rev32v4hi */

    case 3:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3006; /* aarch64_rev32v8hi */

    case 4:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3009; /* aarch64_rev32v2si */

    case 5:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3012; /* aarch64_rev32v4si */

    case 6:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3015; /* aarch64_rev32v2di */

    case 7:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3018; /* aarch64_rev32v4hf */

    case 8:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3021; /* aarch64_rev32v8hf */

    case 9:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3024; /* aarch64_rev32v2sf */

    case 10:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3027; /* aarch64_rev32v4sf */

    case 11:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3030; /* aarch64_rev32v2df */

    default:
      return -1;
    }
}

static int
recog_78 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern105 (x1))
    {
    case 0:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2996; /* aarch64_rev64v8qi */

    case 1:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2999; /* aarch64_rev64v16qi */

    case 2:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3002; /* aarch64_rev64v4hi */

    case 3:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3005; /* aarch64_rev64v8hi */

    case 4:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3008; /* aarch64_rev64v2si */

    case 5:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3011; /* aarch64_rev64v4si */

    case 6:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3014; /* aarch64_rev64v2di */

    case 7:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3017; /* aarch64_rev64v4hf */

    case 8:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3020; /* aarch64_rev64v8hf */

    case 9:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3023; /* aarch64_rev64v2sf */

    case 10:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3026; /* aarch64_rev64v4sf */

    case 11:
      if (!
#line 5415 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3029; /* aarch64_rev64v2df */

    default:
      return -1;
    }
}

static int
recog_79 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode)
          || !
#line 5612 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3084; /* aarch64_urecpev2si */

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode)
          || !
#line 5612 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3085; /* aarch64_urecpev4si */

    default:
      return -1;
    }
}

static int
recog_80 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern101 (x1))
    {
    case 0:
      if (!(
#line 5583 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 3065; /* aarch64_frecpev4hf */

    case 1:
      if (!(
#line 5583 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 3066; /* aarch64_frecpev8hf */

    case 2:
      if (!
#line 5583 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3067; /* aarch64_frecpev2sf */

    case 3:
      if (!
#line 5583 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3068; /* aarch64_frecpev4sf */

    case 4:
      if (!
#line 5583 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3069; /* aarch64_frecpev2df */

    case 5:
      if (!(
#line 5592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 3070; /* aarch64_frecpehf */

    case 6:
      if (!
#line 5592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3072; /* aarch64_frecpesf */

    case 7:
      if (!
#line 5592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 3074; /* aarch64_frecpedf */

    default:
      return -1;
    }
}

static int
recog_81 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], V2SFmode)
          || !
#line 2102 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1718; /* reduc_plus_scal_v2sf */

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], V2DFmode)
          || !
#line 2102 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1719; /* reduc_plus_scal_v2df */

    default:
      return -1;
    }
}

static int
recog_82 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XVECEXP (x2, 0, 1);
  operands[2] = x3;
  x4 = XVECEXP (x2, 0, 2);
  operands[3] = x4;
  if (!immediate_operand (operands[3], SImode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (pattern61 (x2, V8QImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2984; /* aarch64_extv8qi */

    case V16QImode:
      if (pattern61 (x2, V16QImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2985; /* aarch64_extv16qi */

    case V4HImode:
      if (pattern61 (x2, V4HImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2986; /* aarch64_extv4hi */

    case V8HImode:
      if (pattern61 (x2, V8HImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2987; /* aarch64_extv8hi */

    case V2SImode:
      if (pattern61 (x2, V2SImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2988; /* aarch64_extv2si */

    case V4SImode:
      if (pattern61 (x2, V4SImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2989; /* aarch64_extv4si */

    case V2DImode:
      if (pattern61 (x2, V2DImode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2990; /* aarch64_extv2di */

    case V4HFmode:
      if (pattern61 (x2, V4HFmode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2991; /* aarch64_extv4hf */

    case V8HFmode:
      if (pattern61 (x2, V8HFmode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2992; /* aarch64_extv8hf */

    case V2SFmode:
      if (pattern61 (x2, V2SFmode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2993; /* aarch64_extv2sf */

    case V4SFmode:
      if (pattern61 (x2, V4SFmode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2994; /* aarch64_extv4sf */

    case V2DFmode:
      if (pattern61 (x2, V2DFmode) != 0
          || !
#line 5402 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2995; /* aarch64_extv2df */

    default:
      return -1;
    }
}

static int
recog_83 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  switch (XINT (x2, 1))
    {
    case 1:
      if (pattern57 (x1, SImode, QImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 450; /* aarch64_crc32b */

    case 6:
      if (pattern57 (x1, SImode, HImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 451; /* aarch64_crc32h */

    case 7:
      if (pattern58 (x1, SImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 452; /* aarch64_crc32w */

    case 8:
      if (pattern57 (x1, SImode, DImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 453; /* aarch64_crc32x */

    case 2:
      if (pattern57 (x1, SImode, QImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 454; /* aarch64_crc32cb */

    case 3:
      if (pattern57 (x1, SImode, HImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 455; /* aarch64_crc32ch */

    case 4:
      if (pattern58 (x1, SImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 456; /* aarch64_crc32cw */

    case 5:
      if (pattern57 (x1, SImode, DImode) != 0
          || !
#line 3338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_CRC32))
        return -1;
      return 457; /* aarch64_crc32cx */

    case 44:
      if (pattern57 (x1, DImode, QImode) != 0
          || !
#line 4072 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 648; /* *aarch64_sisd_ushl */

    case 60:
      if (pattern57 (x1, SImode, QImode) != 0
          || !
#line 4083 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 649; /* *aarch64_ushl_2s */

    case 43:
      if (pattern57 (x1, DImode, QImode) != 0
          || !
#line 4094 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 650; /* *aarch64_sisd_sshl */

    case 45:
      if (pattern57 (x1, SImode, QImode) != 0
          || !
#line 4105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 651; /* *aarch64_sshl_2s */

    case 9:
      return recog_55 (x1, insn, pnum_clobbers);

    case 10:
      return recog_54 (x1, insn, pnum_clobbers);

    case 41:
      return recog_53 (x1, insn, pnum_clobbers);

    case 59:
      return recog_52 (x1, insn, pnum_clobbers);

    case 71:
      return recog_51 (x1, insn, pnum_clobbers);

    case 74:
      return recog_50 (x1, insn, pnum_clobbers);

    case 169:
      return recog_49 (x1, insn, pnum_clobbers);

    case 170:
      return recog_48 (x1, insn, pnum_clobbers);

    case 26:
      return recog_39 (x1, insn, pnum_clobbers);

    case 55:
      switch (pattern63 (x1))
        {
        case 0:
          if (!
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode))
            return -1;
          return 944; /* tlsle12_si */

        case 1:
          return 945; /* tlsle12_di */

        default:
          return -1;
        }

    case 56:
      switch (pattern63 (x1))
        {
        case 0:
          if (!
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode))
            return -1;
          return 946; /* tlsle24_si */

        case 1:
          return 947; /* tlsle24_di */

        default:
          return -1;
        }

    case 39:
      if (GET_MODE (x2) != BLKmode)
        return -1;
      x3 = XEXP (x1, 0);
      if (GET_CODE (x3) != MEM
          || GET_MODE (x3) != BLKmode)
        return -1;
      x4 = XEXP (x3, 0);
      if (GET_CODE (x4) != SCRATCH)
        return -1;
      x5 = XVECEXP (x2, 0, 0);
      operands[0] = x5;
      if (!register_operand (operands[0], DImode))
        return -1;
      x6 = XVECEXP (x2, 0, 1);
      operands[1] = x6;
      if (!register_operand (operands[1], DImode))
        return -1;
      return 954; /* stack_tie */

    case 63:
      if (pnum_clobbers == NULL)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      x5 = XVECEXP (x2, 0, 0);
      operands[1] = x5;
      x6 = XVECEXP (x2, 0, 1);
      operands[2] = x6;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern249 (x2, SImode) != 0
              || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
            return -1;
          *pnum_clobbers = 1;
          return 960; /* stack_protect_test_si */

        case DImode:
          if (pattern249 (x2, DImode) != 0
              || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
            return -1;
          *pnum_clobbers = 1;
          return 961; /* stack_protect_test_di */

        default:
          return -1;
        }

    case 66:
      return recog_47 (x1, insn, pnum_clobbers);

    case 69:
      return recog_60 (x1, insn, pnum_clobbers);

    case 68:
      return recog_59 (x1, insn, pnum_clobbers);

    case 166:
      return recog_22 (x1, insn, pnum_clobbers);

    case 81:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1321; /* aarch64_umaxpv8qi */

        case 1:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1325; /* aarch64_umaxpv16qi */

        case 2:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1329; /* aarch64_umaxpv4hi */

        case 3:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1333; /* aarch64_umaxpv8hi */

        case 4:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1337; /* aarch64_umaxpv2si */

        case 5:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1341; /* aarch64_umaxpv4si */

        default:
          return -1;
        }

    case 82:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1322; /* aarch64_uminpv8qi */

        case 1:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1326; /* aarch64_uminpv16qi */

        case 2:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1330; /* aarch64_uminpv4hi */

        case 3:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1334; /* aarch64_uminpv8hi */

        case 4:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1338; /* aarch64_uminpv2si */

        case 5:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1342; /* aarch64_uminpv4si */

        default:
          return -1;
        }

    case 79:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1323; /* aarch64_smaxpv8qi */

        case 1:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1327; /* aarch64_smaxpv16qi */

        case 2:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1331; /* aarch64_smaxpv4hi */

        case 3:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1335; /* aarch64_smaxpv8hi */

        case 4:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1339; /* aarch64_smaxpv2si */

        case 5:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1343; /* aarch64_smaxpv4si */

        default:
          return -1;
        }

    case 80:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1324; /* aarch64_sminpv8qi */

        case 1:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1328; /* aarch64_sminpv16qi */

        case 2:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1332; /* aarch64_sminpv4hi */

        case 3:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1336; /* aarch64_sminpv8hi */

        case 4:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1340; /* aarch64_sminpv2si */

        case 5:
          if (!
#line 1101 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1344; /* aarch64_sminpv4si */

        default:
          return -1;
        }

    case 73:
      switch (pattern68 (x1))
        {
        case 0:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1345; /* aarch64_smax_nanpv4hf */

        case 1:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1349; /* aarch64_smax_nanpv8hf */

        case 2:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1353; /* aarch64_smax_nanpv2sf */

        case 3:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1357; /* aarch64_smax_nanpv4sf */

        case 4:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1361; /* aarch64_smax_nanpv2df */

        default:
          return -1;
        }

    case 76:
      switch (pattern68 (x1))
        {
        case 0:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1346; /* aarch64_smin_nanpv4hf */

        case 1:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1350; /* aarch64_smin_nanpv8hf */

        case 2:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1354; /* aarch64_smin_nanpv2sf */

        case 3:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1358; /* aarch64_smin_nanpv4sf */

        case 4:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1362; /* aarch64_smin_nanpv2df */

        default:
          return -1;
        }

    case 72:
      switch (pattern68 (x1))
        {
        case 0:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1347; /* aarch64_smaxpv4hf */

        case 1:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1351; /* aarch64_smaxpv8hf */

        case 2:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1355; /* aarch64_smaxpv2sf */

        case 3:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1359; /* aarch64_smaxpv4sf */

        case 4:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1363; /* aarch64_smaxpv2df */

        default:
          return -1;
        }

    case 75:
      switch (pattern68 (x1))
        {
        case 0:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1348; /* aarch64_sminpv4hf */

        case 1:
          if (!(
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1352; /* aarch64_sminpv8hf */

        case 2:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1356; /* aarch64_sminpv2sf */

        case 3:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1360; /* aarch64_sminpv4sf */

        case 4:
          if (!
#line 1112 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1364; /* aarch64_sminpv2df */

        default:
          return -1;
        }

    case 77:
      switch (pattern68 (x1))
        {
        case 0:
          if (!(
#line 2075 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1706; /* aarch64_faddpv4hf */

        case 1:
          if (!(
#line 2075 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1707; /* aarch64_faddpv8hf */

        case 2:
          if (!
#line 2075 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1708; /* aarch64_faddpv2sf */

        case 3:
          if (!
#line 2075 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1709; /* aarch64_faddpv4sf */

        case 4:
          if (!
#line 2075 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1710; /* aarch64_faddpv2df */

        default:
          return -1;
        }

    case 83:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1903; /* aarch64_shaddv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1911; /* aarch64_shaddv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1919; /* aarch64_shaddv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1927; /* aarch64_shaddv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1935; /* aarch64_shaddv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1943; /* aarch64_shaddv4si */

        default:
          return -1;
        }

    case 84:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1904; /* aarch64_uhaddv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1912; /* aarch64_uhaddv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1920; /* aarch64_uhaddv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1928; /* aarch64_uhaddv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1936; /* aarch64_uhaddv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1944; /* aarch64_uhaddv4si */

        default:
          return -1;
        }

    case 85:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1905; /* aarch64_srhaddv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1913; /* aarch64_srhaddv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1921; /* aarch64_srhaddv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1929; /* aarch64_srhaddv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1937; /* aarch64_srhaddv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1945; /* aarch64_srhaddv4si */

        default:
          return -1;
        }

    case 86:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1906; /* aarch64_urhaddv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1914; /* aarch64_urhaddv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1922; /* aarch64_urhaddv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1930; /* aarch64_urhaddv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1938; /* aarch64_urhaddv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1946; /* aarch64_urhaddv4si */

        default:
          return -1;
        }

    case 87:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1907; /* aarch64_shsubv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1915; /* aarch64_shsubv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1923; /* aarch64_shsubv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1931; /* aarch64_shsubv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1939; /* aarch64_shsubv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1947; /* aarch64_shsubv4si */

        default:
          return -1;
        }

    case 88:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1908; /* aarch64_uhsubv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1916; /* aarch64_uhsubv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1924; /* aarch64_uhsubv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1932; /* aarch64_uhsubv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1940; /* aarch64_uhsubv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1948; /* aarch64_uhsubv4si */

        default:
          return -1;
        }

    case 89:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1909; /* aarch64_srhsubv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1917; /* aarch64_srhsubv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1925; /* aarch64_srhsubv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1933; /* aarch64_srhsubv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1941; /* aarch64_srhsubv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1949; /* aarch64_srhsubv4si */

        default:
          return -1;
        }

    case 90:
      switch (pattern67 (x1))
        {
        case 0:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1910; /* aarch64_urhsubv8qi */

        case 1:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1918; /* aarch64_urhsubv16qi */

        case 2:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1926; /* aarch64_urhsubv4hi */

        case 3:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1934; /* aarch64_urhsubv8hi */

        case 4:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1942; /* aarch64_urhsubv2si */

        case 5:
          if (!
#line 3030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1950; /* aarch64_urhsubv4si */

        default:
          return -1;
        }

    case 91:
      switch (pattern70 (x1))
        {
        case 0:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1951; /* aarch64_addhnv8hi */

        case 1:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1955; /* aarch64_addhnv4si */

        case 2:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1959; /* aarch64_addhnv2di */

        default:
          return -1;
        }

    case 92:
      switch (pattern70 (x1))
        {
        case 0:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1952; /* aarch64_raddhnv8hi */

        case 1:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1956; /* aarch64_raddhnv4si */

        case 2:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1960; /* aarch64_raddhnv2di */

        default:
          return -1;
        }

    case 93:
      switch (pattern70 (x1))
        {
        case 0:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1953; /* aarch64_subhnv8hi */

        case 1:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1957; /* aarch64_subhnv4si */

        case 2:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1961; /* aarch64_subhnv2di */

        default:
          return -1;
        }

    case 94:
      switch (pattern70 (x1))
        {
        case 0:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1954; /* aarch64_rsubhnv8hi */

        case 1:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1958; /* aarch64_rsubhnv4si */

        case 2:
          if (!
#line 3042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1962; /* aarch64_rsubhnv2di */

        default:
          return -1;
        }

    case 101:
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      x5 = XVECEXP (x2, 0, 0);
      operands[1] = x5;
      x6 = XVECEXP (x2, 0, 1);
      operands[2] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern61 (x2, V8QImode) != 0
              || !
#line 3065 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1975; /* aarch64_pmulv8qi */

        case V16QImode:
          if (pattern61 (x2, V16QImode) != 0
              || !
#line 3065 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1976; /* aarch64_pmulv16qi */

        default:
          return -1;
        }

    case 102:
      return recog_15 (x1, insn, pnum_clobbers);

    case 104:
      return recog_37 (x1, insn, pnum_clobbers);

    case 103:
      return recog_36 (x1, insn, pnum_clobbers);

    case 99:
      return recog_24 (x1, insn, pnum_clobbers);

    case 100:
      return recog_23 (x1, insn, pnum_clobbers);

    case 123:
      return recog_46 (x1, insn, pnum_clobbers);

    case 124:
      return recog_45 (x1, insn, pnum_clobbers);

    case 125:
      return recog_44 (x1, insn, pnum_clobbers);

    case 126:
      return recog_43 (x1, insn, pnum_clobbers);

    case 115:
      return recog_18 (x1, insn, pnum_clobbers);

    case 116:
      return recog_17 (x1, insn, pnum_clobbers);

    case 127:
      return recog_35 (x1, insn, pnum_clobbers);

    case 128:
      return recog_34 (x1, insn, pnum_clobbers);

    case 133:
      return recog_69 (x1, insn, pnum_clobbers);

    case 134:
      return recog_68 (x1, insn, pnum_clobbers);

    case 112:
      return recog_42 (x1, insn, pnum_clobbers);

    case 113:
      return recog_41 (x1, insn, pnum_clobbers);

    case 114:
      return recog_16 (x1, insn, pnum_clobbers);

    case 117:
      return recog_67 (x1, insn, pnum_clobbers);

    case 118:
      return recog_66 (x1, insn, pnum_clobbers);

    case 119:
      return recog_65 (x1, insn, pnum_clobbers);

    case 120:
      return recog_64 (x1, insn, pnum_clobbers);

    case 121:
      return recog_63 (x1, insn, pnum_clobbers);

    case 122:
      return recog_62 (x1, insn, pnum_clobbers);

    case 135:
      return recog_61 (x1, insn, pnum_clobbers);

    case 28:
      return recog_58 (x1, insn, pnum_clobbers);

    case 29:
      return recog_27 (x1, insn, pnum_clobbers);

    case 47:
      return recog_21 (x1, insn, pnum_clobbers);

    case 30:
      return recog_57 (x1, insn, pnum_clobbers);

    case 31:
      return recog_26 (x1, insn, pnum_clobbers);

    case 48:
      return recog_20 (x1, insn, pnum_clobbers);

    case 32:
      return recog_56 (x1, insn, pnum_clobbers);

    case 33:
      return recog_25 (x1, insn, pnum_clobbers);

    case 49:
      return recog_19 (x1, insn, pnum_clobbers);

    case 165:
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      x5 = XVECEXP (x2, 0, 0);
      operands[1] = x5;
      x6 = XVECEXP (x2, 0, 1);
      operands[2] = x6;
      if (!register_operand (operands[2], V16QImode))
        return -1;
      switch (pattern232 (x2))
        {
        case 0:
          if (!
#line 4690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2819; /* aarch64_rev_reglistoi */

        case 1:
          if (!
#line 4690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2820; /* aarch64_rev_reglistci */

        case 2:
          if (!
#line 4690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2821; /* aarch64_rev_reglistxi */

        default:
          return -1;
        }

    case 136:
      return recog_38 (x1, insn, pnum_clobbers);

    case 138:
      if (pattern94 (x1, V16QImode, OImode) != 0
          || !
#line 5374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2911; /* aarch64_combinev16qi */

    case 139:
      return recog_33 (x1, insn, pnum_clobbers);

    case 140:
      return recog_32 (x1, insn, pnum_clobbers);

    case 143:
      return recog_31 (x1, insn, pnum_clobbers);

    case 144:
      return recog_30 (x1, insn, pnum_clobbers);

    case 141:
      return recog_29 (x1, insn, pnum_clobbers);

    case 142:
      return recog_28 (x1, insn, pnum_clobbers);

    case 13:
      return recog_40 (x1, insn, pnum_clobbers);

    case 149:
      if (pattern58 (x1, V16QImode) != 0
          || !
#line 5636 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3086; /* aarch64_crypto_aesev16qi */

    case 150:
      if (pattern58 (x1, V16QImode) != 0
          || !
#line 5636 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3087; /* aarch64_crypto_aesdv16qi */

    case 158:
      if (pattern58 (x1, V4SImode) != 0
          || !
#line 5679 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3091; /* aarch64_crypto_sha1su1v4si */

    case 161:
      if (pattern58 (x1, V4SImode) != 0
          || !
#line 5724 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD &&TARGET_CRYPTO))
        return -1;
      return 3098; /* aarch64_crypto_sha256su0v4si */

    case 163:
      if (pattern94 (x1, DImode, TImode) != 0
          || !
#line 5747 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3100; /* aarch64_crypto_pmulldi */

    case 164:
      if (pattern94 (x1, V2DImode, TImode) != 0
          || !
#line 5757 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3101; /* aarch64_crypto_pmullv2di */

    case 37:
      if (GET_MODE (x2) != BLKmode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      x6 = XVECEXP (x2, 0, 1);
      operands[1] = x6;
      if (!const_int_operand (operands[1], SImode))
        return -1;
      x5 = XVECEXP (x2, 0, 0);
      if (!rtx_equal_p (x5, operands[0]))
        return -1;
      return 3266; /* *dmb */

    default:
      return -1;
    }
}

static int
recog_84 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XVECEXP (x3, 0, 0);
  operands[1] = x4;
  switch (XINT (x3, 1))
    {
    case 95:
      switch (pattern166 (x3))
        {
        case 0:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1963; /* aarch64_addhn2v8hi */

        case 1:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1967; /* aarch64_addhn2v4si */

        case 2:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1971; /* aarch64_addhn2v2di */

        default:
          return -1;
        }

    case 96:
      switch (pattern166 (x3))
        {
        case 0:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1964; /* aarch64_raddhn2v8hi */

        case 1:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1968; /* aarch64_raddhn2v4si */

        case 2:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1972; /* aarch64_raddhn2v2di */

        default:
          return -1;
        }

    case 97:
      switch (pattern166 (x3))
        {
        case 0:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1965; /* aarch64_subhn2v8hi */

        case 1:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1969; /* aarch64_subhn2v4si */

        case 2:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1973; /* aarch64_subhn2v2di */

        default:
          return -1;
        }

    case 98:
      switch (pattern166 (x3))
        {
        case 0:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1966; /* aarch64_rsubhn2v8hi */

        case 1:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1970; /* aarch64_rsubhn2v4si */

        case 2:
          if (!
#line 3053 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1974; /* aarch64_rsubhn2v2di */

        default:
          return -1;
        }

    case 167:
      switch (pattern170 (x3))
        {
        case 0:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2141; /* aarch64_sqrdmlahv4hi */

        case 1:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2143; /* aarch64_sqrdmlahv8hi */

        case 2:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2145; /* aarch64_sqrdmlahv2si */

        case 3:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2147; /* aarch64_sqrdmlahv4si */

        case 4:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2149; /* aarch64_sqrdmlahhi */

        case 5:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2151; /* aarch64_sqrdmlahsi */

        case 6:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2153; /* aarch64_sqrdmlah_lanev4hi */

        case 7:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2165; /* aarch64_sqrdmlah_laneqv4hi */

        case 8:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2155; /* aarch64_sqrdmlah_lanev8hi */

        case 9:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2167; /* aarch64_sqrdmlah_laneqv8hi */

        case 10:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2157; /* aarch64_sqrdmlah_lanev2si */

        case 11:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2169; /* aarch64_sqrdmlah_laneqv2si */

        case 12:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2159; /* aarch64_sqrdmlah_lanev4si */

        case 13:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2171; /* aarch64_sqrdmlah_laneqv4si */

        case 14:
          if (!
#line 3329 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2161; /* aarch64_sqrdmlah_lanehi */

        case 15:
          if (!
#line 3367 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2173; /* aarch64_sqrdmlah_laneqhi */

        case 16:
          if (!
#line 3329 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2163; /* aarch64_sqrdmlah_lanesi */

        case 17:
          if (!
#line 3367 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2175; /* aarch64_sqrdmlah_laneqsi */

        default:
          return -1;
        }

    case 168:
      switch (pattern170 (x3))
        {
        case 0:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2142; /* aarch64_sqrdmlshv4hi */

        case 1:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2144; /* aarch64_sqrdmlshv8hi */

        case 2:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2146; /* aarch64_sqrdmlshv2si */

        case 3:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2148; /* aarch64_sqrdmlshv4si */

        case 4:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2150; /* aarch64_sqrdmlshhi */

        case 5:
          if (!
#line 3295 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2152; /* aarch64_sqrdmlshsi */

        case 6:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2154; /* aarch64_sqrdmlsh_lanev4hi */

        case 7:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2166; /* aarch64_sqrdmlsh_laneqv4hi */

        case 8:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2156; /* aarch64_sqrdmlsh_lanev8hi */

        case 9:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2168; /* aarch64_sqrdmlsh_laneqv8hi */

        case 10:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2158; /* aarch64_sqrdmlsh_lanev2si */

        case 11:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2170; /* aarch64_sqrdmlsh_laneqv2si */

        case 12:
          if (!
#line 3311 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2160; /* aarch64_sqrdmlsh_lanev4si */

        case 13:
          if (!
#line 3349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2172; /* aarch64_sqrdmlsh_laneqv4si */

        case 14:
          if (!
#line 3329 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2162; /* aarch64_sqrdmlsh_lanehi */

        case 15:
          if (!
#line 3367 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2174; /* aarch64_sqrdmlsh_laneqhi */

        case 16:
          if (!
#line 3329 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2164; /* aarch64_sqrdmlsh_lanesi */

        case 17:
          if (!
#line 3367 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_RDMA))
            return -1;
          return 2176; /* aarch64_sqrdmlsh_laneqsi */

        default:
          return -1;
        }

    case 108:
      switch (pattern175 (x3))
        {
        case 0:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2347; /* aarch64_ssra_nv8qi */

        case 1:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2351; /* aarch64_ssra_nv16qi */

        case 2:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2355; /* aarch64_ssra_nv4hi */

        case 3:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2359; /* aarch64_ssra_nv8hi */

        case 4:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2363; /* aarch64_ssra_nv2si */

        case 5:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2367; /* aarch64_ssra_nv4si */

        case 6:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2371; /* aarch64_ssra_nv2di */

        case 7:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2375; /* aarch64_ssra_ndi */

        default:
          return -1;
        }

    case 109:
      switch (pattern175 (x3))
        {
        case 0:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2348; /* aarch64_usra_nv8qi */

        case 1:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2352; /* aarch64_usra_nv16qi */

        case 2:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2356; /* aarch64_usra_nv4hi */

        case 3:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2360; /* aarch64_usra_nv8hi */

        case 4:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2364; /* aarch64_usra_nv2si */

        case 5:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2368; /* aarch64_usra_nv4si */

        case 6:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2372; /* aarch64_usra_nv2di */

        case 7:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2376; /* aarch64_usra_ndi */

        default:
          return -1;
        }

    case 110:
      switch (pattern175 (x3))
        {
        case 0:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2349; /* aarch64_srsra_nv8qi */

        case 1:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2353; /* aarch64_srsra_nv16qi */

        case 2:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2357; /* aarch64_srsra_nv4hi */

        case 3:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2361; /* aarch64_srsra_nv8hi */

        case 4:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2365; /* aarch64_srsra_nv2si */

        case 5:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2369; /* aarch64_srsra_nv4si */

        case 6:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2373; /* aarch64_srsra_nv2di */

        case 7:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2377; /* aarch64_srsra_ndi */

        default:
          return -1;
        }

    case 111:
      switch (pattern175 (x3))
        {
        case 0:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2350; /* aarch64_ursra_nv8qi */

        case 1:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2354; /* aarch64_ursra_nv16qi */

        case 2:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2358; /* aarch64_ursra_nv4hi */

        case 3:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2362; /* aarch64_ursra_nv8hi */

        case 4:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2366; /* aarch64_ursra_nv2si */

        case 5:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2370; /* aarch64_ursra_nv4si */

        case 6:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2374; /* aarch64_ursra_nv2di */

        case 7:
          if (!
#line 4063 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2378; /* aarch64_ursra_ndi */

        default:
          return -1;
        }

    case 129:
      switch (pattern180 (x3))
        {
        case 0:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2379; /* aarch64_ssli_nv8qi */

        case 1:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2383; /* aarch64_ssli_nv16qi */

        case 2:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2387; /* aarch64_ssli_nv4hi */

        case 3:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2391; /* aarch64_ssli_nv8hi */

        case 4:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2395; /* aarch64_ssli_nv2si */

        case 5:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2399; /* aarch64_ssli_nv4si */

        case 6:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2403; /* aarch64_ssli_nv2di */

        case 7:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2407; /* aarch64_ssli_ndi */

        default:
          return -1;
        }

    case 130:
      switch (pattern180 (x3))
        {
        case 0:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2380; /* aarch64_usli_nv8qi */

        case 1:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2384; /* aarch64_usli_nv16qi */

        case 2:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2388; /* aarch64_usli_nv4hi */

        case 3:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2392; /* aarch64_usli_nv8hi */

        case 4:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2396; /* aarch64_usli_nv2si */

        case 5:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2400; /* aarch64_usli_nv4si */

        case 6:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2404; /* aarch64_usli_nv2di */

        case 7:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2408; /* aarch64_usli_ndi */

        default:
          return -1;
        }

    case 131:
      switch (pattern175 (x3))
        {
        case 0:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2381; /* aarch64_ssri_nv8qi */

        case 1:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2385; /* aarch64_ssri_nv16qi */

        case 2:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2389; /* aarch64_ssri_nv4hi */

        case 3:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2393; /* aarch64_ssri_nv8hi */

        case 4:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2397; /* aarch64_ssri_nv2si */

        case 5:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2401; /* aarch64_ssri_nv4si */

        case 6:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2405; /* aarch64_ssri_nv2di */

        case 7:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2409; /* aarch64_ssri_ndi */

        default:
          return -1;
        }

    case 132:
      switch (pattern175 (x3))
        {
        case 0:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2382; /* aarch64_usri_nv8qi */

        case 1:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2386; /* aarch64_usri_nv16qi */

        case 2:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2390; /* aarch64_usri_nv4hi */

        case 3:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2394; /* aarch64_usri_nv8hi */

        case 4:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2398; /* aarch64_usri_nv2si */

        case 5:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2402; /* aarch64_usri_nv4si */

        case 6:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2406; /* aarch64_usri_nv2di */

        case 7:
          if (!
#line 4077 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2410; /* aarch64_usri_ndi */

        default:
          return -1;
        }

    case 50:
      switch (pattern181 (x3, OImode))
        {
        case 0:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2693; /* aarch64_vec_store_lanesoi_lanev8qi */

        case 1:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2694; /* aarch64_vec_store_lanesoi_lanev16qi */

        case 2:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2695; /* aarch64_vec_store_lanesoi_lanev4hi */

        case 3:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2696; /* aarch64_vec_store_lanesoi_lanev8hi */

        case 4:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2697; /* aarch64_vec_store_lanesoi_lanev2si */

        case 5:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2698; /* aarch64_vec_store_lanesoi_lanev4si */

        case 6:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2699; /* aarch64_vec_store_lanesoi_lanev2di */

        case 7:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2700; /* aarch64_vec_store_lanesoi_lanev4hf */

        case 8:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2701; /* aarch64_vec_store_lanesoi_lanev8hf */

        case 9:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2702; /* aarch64_vec_store_lanesoi_lanev2sf */

        case 10:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2703; /* aarch64_vec_store_lanesoi_lanev4sf */

        case 11:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2704; /* aarch64_vec_store_lanesoi_lanev2df */

        case 12:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2705; /* aarch64_vec_store_lanesoi_lanedi */

        case 13:
          if (!
#line 4461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2706; /* aarch64_vec_store_lanesoi_lanedf */

        default:
          return -1;
        }

    case 51:
      switch (pattern181 (x3, CImode))
        {
        case 0:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2749; /* aarch64_vec_store_lanesci_lanev8qi */

        case 1:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2750; /* aarch64_vec_store_lanesci_lanev16qi */

        case 2:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2751; /* aarch64_vec_store_lanesci_lanev4hi */

        case 3:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2752; /* aarch64_vec_store_lanesci_lanev8hi */

        case 4:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2753; /* aarch64_vec_store_lanesci_lanev2si */

        case 5:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2754; /* aarch64_vec_store_lanesci_lanev4si */

        case 6:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2755; /* aarch64_vec_store_lanesci_lanev2di */

        case 7:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2756; /* aarch64_vec_store_lanesci_lanev4hf */

        case 8:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2757; /* aarch64_vec_store_lanesci_lanev8hf */

        case 9:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2758; /* aarch64_vec_store_lanesci_lanev2sf */

        case 10:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2759; /* aarch64_vec_store_lanesci_lanev4sf */

        case 11:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2760; /* aarch64_vec_store_lanesci_lanev2df */

        case 12:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2761; /* aarch64_vec_store_lanesci_lanedi */

        case 13:
          if (!
#line 4559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2762; /* aarch64_vec_store_lanesci_lanedf */

        default:
          return -1;
        }

    case 52:
      switch (pattern181 (x3, XImode))
        {
        case 0:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2805; /* aarch64_vec_store_lanesxi_lanev8qi */

        case 1:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2806; /* aarch64_vec_store_lanesxi_lanev16qi */

        case 2:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2807; /* aarch64_vec_store_lanesxi_lanev4hi */

        case 3:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2808; /* aarch64_vec_store_lanesxi_lanev8hi */

        case 4:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2809; /* aarch64_vec_store_lanesxi_lanev2si */

        case 5:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2810; /* aarch64_vec_store_lanesxi_lanev4si */

        case 6:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2811; /* aarch64_vec_store_lanesxi_lanev2di */

        case 7:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2812; /* aarch64_vec_store_lanesxi_lanev4hf */

        case 8:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2813; /* aarch64_vec_store_lanesxi_lanev8hf */

        case 9:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2814; /* aarch64_vec_store_lanesxi_lanev2sf */

        case 10:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2815; /* aarch64_vec_store_lanesxi_lanev4sf */

        case 11:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2816; /* aarch64_vec_store_lanesxi_lanev2df */

        case 12:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2817; /* aarch64_vec_store_lanesxi_lanedi */

        case 13:
          if (!
#line 4657 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2818; /* aarch64_vec_store_lanesxi_lanedf */

        default:
          return -1;
        }

    case 137:
      x5 = XVECEXP (x3, 0, 1);
      operands[2] = x5;
      x6 = XVECEXP (x3, 0, 2);
      operands[3] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          switch (pattern250 (x3, V8QImode))
            {
            case 0:
              if (!
#line 5318 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2901; /* aarch64_tbx4v8qi */

            case 1:
              if (!
#line 5341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2905; /* aarch64_qtbx3v8qi */

            case 2:
              if (!
#line 5364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2909; /* aarch64_qtbx4v8qi */

            default:
              return -1;
            }

        case V16QImode:
          switch (pattern250 (x3, V16QImode))
            {
            case 0:
              if (!
#line 5318 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2902; /* aarch64_tbx4v16qi */

            case 1:
              if (!
#line 5341 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2906; /* aarch64_qtbx3v16qi */

            case 2:
              if (!
#line 5364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2910; /* aarch64_qtbx4v16qi */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case 145:
      return recog_82 (x1, insn, pnum_clobbers);

    case 153:
      if (pattern182 (x3, SImode) != 0
          || !
#line 5690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3092; /* aarch64_crypto_sha1cv4si */

    case 154:
      if (pattern182 (x3, SImode) != 0
          || !
#line 5690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3093; /* aarch64_crypto_sha1mv4si */

    case 155:
      if (pattern182 (x3, SImode) != 0
          || !
#line 5690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3094; /* aarch64_crypto_sha1pv4si */

    case 157:
      if (pattern182 (x3, V4SImode) != 0
          || !
#line 5701 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3095; /* aarch64_crypto_sha1su0v4si */

    case 159:
      if (pattern182 (x3, V4SImode) != 0
          || !
#line 5714 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3096; /* aarch64_crypto_sha256hv4si */

    case 160:
      if (pattern182 (x3, V4SImode) != 0
          || !
#line 5714 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3097; /* aarch64_crypto_sha256h2v4si */

    case 162:
      if (pattern182 (x3, V4SImode) != 0
          || !
#line 5735 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD &&TARGET_CRYPTO))
        return -1;
      return 3099; /* aarch64_crypto_sha256su1v4si */

    default:
      return -1;
    }
}

static int
recog_85 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  switch (XINT (x2, 1))
    {
    case 40:
      return recog_74 (x1, insn, pnum_clobbers);

    case 42:
      if (GET_MODE (x2) != QImode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], QImode))
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], QImode)
          || !
#line 4115 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD))
        return -1;
      return 652; /* *aarch64_sisd_neg_qi */

    case 21:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 726; /* btrunchf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 733; /* btruncsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 740; /* btruncdf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1529; /* btruncv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1536; /* btruncv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1543; /* btruncv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1550; /* btruncv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1557; /* btruncv2df2 */

        default:
          return -1;
        }

    case 19:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 727; /* ceilhf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 734; /* ceilsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 741; /* ceildf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1530; /* ceilv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1537; /* ceilv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1544; /* ceilv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1551; /* ceilv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1558; /* ceilv2df2 */

        default:
          return -1;
        }

    case 17:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 728; /* floorhf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 735; /* floorsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 742; /* floordf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1531; /* floorv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1538; /* floorv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1545; /* floorv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1552; /* floorv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1559; /* floorv2df2 */

        default:
          return -1;
        }

    case 18:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 729; /* frintnhf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 736; /* frintnsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 743; /* frintndf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1532; /* frintnv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1539; /* frintnv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1546; /* frintnv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1553; /* frintnv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1560; /* frintnv2df2 */

        default:
          return -1;
        }

    case 16:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 730; /* nearbyinthf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 737; /* nearbyintsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 744; /* nearbyintdf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1533; /* nearbyintv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1540; /* nearbyintv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1547; /* nearbyintv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1554; /* nearbyintv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1561; /* nearbyintv2df2 */

        default:
          return -1;
        }

    case 20:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 731; /* rinthf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 738; /* rintsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 745; /* rintdf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1534; /* rintv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1541; /* rintv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1548; /* rintv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1555; /* rintv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1562; /* rintv2df2 */

        default:
          return -1;
        }

    case 15:
      switch (pattern96 (x1))
        {
        case 0:
          if (!(
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 732; /* roundhf2 */

        case 1:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 739; /* roundsf2 */

        case 2:
          if (!
#line 4463 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 746; /* rounddf2 */

        case 3:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1535; /* roundv4hf2 */

        case 4:
          if (!(
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1542; /* roundv8hf2 */

        case 5:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1549; /* roundv2sf2 */

        case 6:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1556; /* roundv4sf2 */

        case 7:
          if (!
#line 1741 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1563; /* roundv2df2 */

        default:
          return -1;
        }

    case 22:
      switch (pattern98 (x1))
        {
        case 0:
          if (!
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
            return -1;
          return 929; /* ldr_got_small_si */

        case 1:
          if (!
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
            return -1;
          return 930; /* ldr_got_small_di */

        default:
          return -1;
        }

    case 23:
      switch (pattern98 (x1))
        {
        case 0:
          if (!
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
            return -1;
          return 932; /* ldr_got_small_28k_si */

        case 1:
          if (!
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
            return -1;
          return 933; /* ldr_got_small_28k_di */

        default:
          return -1;
        }

    case 25:
      if (GET_MODE (x2) != DImode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], DImode))
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!aarch64_valid_symref (operands[1], DImode))
        return -1;
      return 935; /* ldr_got_tiny */

    case 53:
      if (GET_MODE (x2) != DImode)
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], DImode))
        return -1;
      return 936; /* aarch64_load_tp_hard */

    case 24:
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!aarch64_tls_ie_symref (operands[1], VOIDmode))
        return -1;
      switch (pattern99 (x2))
        {
        case 0:
          if (!
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
            return -1;
          return 938; /* tlsie_small_si */

        case 1:
          if (!
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
            return -1;
          return 939; /* tlsie_small_di */

        default:
          return -1;
        }

    case 57:
      switch (pattern100 (x1))
        {
        case 0:
          if (!
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode))
            return -1;
          return 948; /* tlsle32_si */

        case 1:
          return 949; /* tlsle32_di */

        default:
          return -1;
        }

    case 58:
      switch (pattern100 (x1))
        {
        case 0:
          if (!
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode))
            return -1;
          return 950; /* tlsle48_si */

        case 1:
          return 951; /* tlsle48_di */

        default:
          return -1;
        }

    case 54:
      if (pnum_clobbers == NULL)
        return -1;
      x3 = XEXP (x1, 0);
      if (GET_CODE (x3) != REG
          || REGNO (x3) != 0)
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[0] = x4;
      if (!aarch64_valid_symref (operands[0], VOIDmode))
        return -1;
      switch (GET_MODE (x3))
        {
        case SImode:
          if (GET_MODE (x2) != SImode
              || !(
#line 5210 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_TLS_DESC) && 
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode)))
            return -1;
          *pnum_clobbers = 3;
          return 952; /* tlsdesc_small_si */

        case DImode:
          if (GET_MODE (x2) != DImode
              || !(
#line 5210 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_TLS_DESC) && 
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode)))
            return -1;
          *pnum_clobbers = 3;
          return 953; /* tlsdesc_small_di */

        default:
          return -1;
        }

    case 65:
      switch (pattern101 (x1))
        {
        case 0:
          if (!(
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1103; /* aarch64_rsqrtev4hf */

        case 1:
          if (!(
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1104; /* aarch64_rsqrtev8hf */

        case 2:
          if (!
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1105; /* aarch64_rsqrtev2sf */

        case 3:
          if (!
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1106; /* aarch64_rsqrtev4sf */

        case 4:
          if (!
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1107; /* aarch64_rsqrtev2df */

        case 5:
          if (!(
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1108; /* aarch64_rsqrtehf */

        case 6:
          if (!
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1109; /* aarch64_rsqrtesf */

        case 7:
          if (!
#line 389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1110; /* aarch64_rsqrtedf */

        default:
          return -1;
        }

    case 70:
      return recog_72 (x1, insn, pnum_clobbers);

    case 78:
      return recog_73 (x1, insn, pnum_clobbers);

    case 77:
      return recog_81 (x1, insn, pnum_clobbers);

    case 81:
      switch (pattern102 (x1))
        {
        case 0:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1734; /* aarch64_reduc_umax_internalv8qi */

        case 1:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1738; /* aarch64_reduc_umax_internalv16qi */

        case 2:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1742; /* aarch64_reduc_umax_internalv4hi */

        case 3:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1746; /* aarch64_reduc_umax_internalv8hi */

        case 4:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1750; /* aarch64_reduc_umax_internalv4si */

        case 5:
          if (!
#line 2193 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1754; /* aarch64_reduc_umax_internalv2si */

        default:
          return -1;
        }

    case 82:
      switch (pattern102 (x1))
        {
        case 0:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1735; /* aarch64_reduc_umin_internalv8qi */

        case 1:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1739; /* aarch64_reduc_umin_internalv16qi */

        case 2:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1743; /* aarch64_reduc_umin_internalv4hi */

        case 3:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1747; /* aarch64_reduc_umin_internalv8hi */

        case 4:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1751; /* aarch64_reduc_umin_internalv4si */

        case 5:
          if (!
#line 2193 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1755; /* aarch64_reduc_umin_internalv2si */

        default:
          return -1;
        }

    case 79:
      switch (pattern102 (x1))
        {
        case 0:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1736; /* aarch64_reduc_smax_internalv8qi */

        case 1:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1740; /* aarch64_reduc_smax_internalv16qi */

        case 2:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1744; /* aarch64_reduc_smax_internalv4hi */

        case 3:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1748; /* aarch64_reduc_smax_internalv8hi */

        case 4:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1752; /* aarch64_reduc_smax_internalv4si */

        case 5:
          if (!
#line 2193 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1756; /* aarch64_reduc_smax_internalv2si */

        default:
          return -1;
        }

    case 80:
      switch (pattern102 (x1))
        {
        case 0:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1737; /* aarch64_reduc_smin_internalv8qi */

        case 1:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1741; /* aarch64_reduc_smin_internalv16qi */

        case 2:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1745; /* aarch64_reduc_smin_internalv4hi */

        case 3:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1749; /* aarch64_reduc_smin_internalv8hi */

        case 4:
          if (!
#line 2184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1753; /* aarch64_reduc_smin_internalv4si */

        case 5:
          if (!
#line 2193 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1757; /* aarch64_reduc_smin_internalv2si */

        default:
          return -1;
        }

    case 73:
      switch (pattern103 (x1))
        {
        case 0:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1758; /* aarch64_reduc_smax_nan_internalv4hf */

        case 1:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1762; /* aarch64_reduc_smax_nan_internalv8hf */

        case 2:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1766; /* aarch64_reduc_smax_nan_internalv2sf */

        case 3:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1770; /* aarch64_reduc_smax_nan_internalv4sf */

        case 4:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1774; /* aarch64_reduc_smax_nan_internalv2df */

        default:
          return -1;
        }

    case 76:
      switch (pattern103 (x1))
        {
        case 0:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1759; /* aarch64_reduc_smin_nan_internalv4hf */

        case 1:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1763; /* aarch64_reduc_smin_nan_internalv8hf */

        case 2:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1767; /* aarch64_reduc_smin_nan_internalv2sf */

        case 3:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1771; /* aarch64_reduc_smin_nan_internalv4sf */

        case 4:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1775; /* aarch64_reduc_smin_nan_internalv2df */

        default:
          return -1;
        }

    case 72:
      switch (pattern103 (x1))
        {
        case 0:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1760; /* aarch64_reduc_smax_internalv4hf */

        case 1:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1764; /* aarch64_reduc_smax_internalv8hf */

        case 2:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1768; /* aarch64_reduc_smax_internalv2sf */

        case 3:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1772; /* aarch64_reduc_smax_internalv4sf */

        case 4:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1776; /* aarch64_reduc_smax_internalv2df */

        default:
          return -1;
        }

    case 75:
      switch (pattern103 (x1))
        {
        case 0:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1761; /* aarch64_reduc_smin_internalv4hf */

        case 1:
          if (!(
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1765; /* aarch64_reduc_smin_internalv8hf */

        case 2:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1769; /* aarch64_reduc_smin_internalv2sf */

        case 3:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1773; /* aarch64_reduc_smin_internalv4sf */

        case 4:
          if (!
#line 2202 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1777; /* aarch64_reduc_smin_internalv2df */

        default:
          return -1;
        }

    case 105:
      switch (pattern104 (x1))
        {
        case 0:
          if (!
#line 3184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2065; /* aarch64_sqmovunv8hi */

        case 1:
          if (!
#line 3184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2066; /* aarch64_sqmovunv4si */

        case 2:
          if (!
#line 3184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2067; /* aarch64_sqmovunv2di */

        case 3:
          if (!
#line 3184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2068; /* aarch64_sqmovunhi */

        case 4:
          if (!
#line 3184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2069; /* aarch64_sqmovunsi */

        case 5:
          if (!
#line 3184 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2070; /* aarch64_sqmovundi */

        default:
          return -1;
        }

    case 106:
      switch (pattern104 (x1))
        {
        case 0:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2071; /* aarch64_sqmovnv8hi */

        case 1:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2073; /* aarch64_sqmovnv4si */

        case 2:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2075; /* aarch64_sqmovnv2di */

        case 3:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2077; /* aarch64_sqmovnhi */

        case 4:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2079; /* aarch64_sqmovnsi */

        case 5:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2081; /* aarch64_sqmovndi */

        default:
          return -1;
        }

    case 107:
      switch (pattern104 (x1))
        {
        case 0:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2072; /* aarch64_uqmovnv8hi */

        case 1:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2074; /* aarch64_uqmovnv4si */

        case 2:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2076; /* aarch64_uqmovnv2di */

        case 3:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2078; /* aarch64_uqmovnhi */

        case 4:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2080; /* aarch64_uqmovnsi */

        case 5:
          if (!
#line 3195 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2082; /* aarch64_uqmovndi */

        default:
          return -1;
        }

    case 135:
      if (GET_MODE (x2) != DImode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], DImode))
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], V2DImode)
          || !
#line 4364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2645; /* aarch64_addpdi */

    case 27:
      return recog_71 (x1, insn, pnum_clobbers);

    case 46:
      return recog_70 (x1, insn, pnum_clobbers);

    case 146:
      return recog_78 (x1, insn, pnum_clobbers);

    case 147:
      return recog_77 (x1, insn, pnum_clobbers);

    case 148:
      return recog_76 (x1, insn, pnum_clobbers);

    case 12:
      return recog_80 (x1, insn, pnum_clobbers);

    case 14:
      return recog_75 (x1, insn, pnum_clobbers);

    case 11:
      return recog_79 (x1, insn, pnum_clobbers);

    case 151:
      if (GET_MODE (x2) != V16QImode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], V16QImode))
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], V16QImode)
          || !
#line 5651 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3088; /* aarch64_crypto_aesmcv16qi */

    case 152:
      if (GET_MODE (x2) != V16QImode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], V16QImode))
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], V16QImode)
          || !
#line 5651 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3089; /* aarch64_crypto_aesimcv16qi */

    case 156:
      if (GET_MODE (x2) != SImode)
        return -1;
      x3 = XEXP (x1, 0);
      operands[0] = x3;
      if (!register_operand (operands[0], SImode))
        return -1;
      x4 = XVECEXP (x2, 0, 0);
      operands[1] = x4;
      if (!register_operand (operands[1], SImode)
          || !
#line 5669 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && TARGET_CRYPTO))
        return -1;
      return 3090; /* aarch64_crypto_sha1hsi */

    default:
      return -1;
    }
}

static int
recog_86 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  switch (GET_CODE (x2))
    {
    case REG:
    case SUBREG:
      switch (pattern5 (x1))
        {
        case 0:
          return 691; /* *extzvsi */

        case 1:
          return 693; /* *extzvdi */

        default:
          return -1;
        }

    case ZERO_EXTRACT:
      x3 = XEXP (x2, 2);
      if (x3 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x4 = XEXP (x2, 0);
      operands[0] = x4;
      x5 = XEXP (x2, 1);
      operands[1] = x5;
      if (!const_int_operand (operands[1], VOIDmode))
        return -1;
      x6 = XEXP (x1, 1);
      x7 = XEXP (x6, 0);
      operands[2] = x7;
      x8 = XEXP (x6, 1);
      if (!rtx_equal_p (x8, operands[1]))
        return -1;
      switch (GET_MODE (x2))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || GET_MODE (x6) != SImode
              || !register_operand (operands[2], SImode)
              || !
#line 4361 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!(UINTVAL (operands[1]) == 0
     || (UINTVAL (operands[3]) + UINTVAL (operands[1])
	 > GET_MODE_BITSIZE (SImode)))))
            return -1;
          return 702; /* *extr_insv_lower_regsi */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || GET_MODE (x6) != DImode
              || !register_operand (operands[2], DImode)
              || !
#line 4361 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!(UINTVAL (operands[1]) == 0
     || (UINTVAL (operands[3]) + UINTVAL (operands[1])
	 > GET_MODE_BITSIZE (DImode)))))
            return -1;
          return 703; /* *extr_insv_lower_regdi */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_87 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case V8QImode:
      if (!register_operand (operands[0], V8QImode)
          || GET_MODE (x3) != V8QImode
          || !register_operand (operands[1], V16QImode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V16QImode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1024; /* aarch64_simd_mov_from_v16qilow */
      if (!vect_par_cnst_hi_half (operands[2], V16QImode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1031; /* aarch64_simd_mov_from_v16qihigh */

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V8HImode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V8HImode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1025; /* aarch64_simd_mov_from_v8hilow */
      if (!vect_par_cnst_hi_half (operands[2], V8HImode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1032; /* aarch64_simd_mov_from_v8hihigh */

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V4SImode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V4SImode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1026; /* aarch64_simd_mov_from_v4silow */
      if (!vect_par_cnst_hi_half (operands[2], V4SImode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1033; /* aarch64_simd_mov_from_v4sihigh */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], V2DImode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V2DImode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1027; /* aarch64_simd_mov_from_v2dilow */
      if (!vect_par_cnst_hi_half (operands[2], V2DImode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1034; /* aarch64_simd_mov_from_v2dihigh */

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V8HFmode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V8HFmode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1028; /* aarch64_simd_mov_from_v8hflow */
      if (!vect_par_cnst_hi_half (operands[2], V8HFmode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1035; /* aarch64_simd_mov_from_v8hfhigh */

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V4SFmode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V4SFmode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1029; /* aarch64_simd_mov_from_v4sflow */
      if (!vect_par_cnst_hi_half (operands[2], V4SFmode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1036; /* aarch64_simd_mov_from_v4sfhigh */

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], V2DFmode))
        return -1;
      if (vect_par_cnst_lo_half (operands[2], V2DFmode)
          && 
#line 248 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return 1030; /* aarch64_simd_mov_from_v2dflow */
      if (!vect_par_cnst_hi_half (operands[2], V2DFmode)
          || !
#line 259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
        return -1;
      return 1037; /* aarch64_simd_mov_from_v2dfhigh */

    default:
      return -1;
    }
}

static int
recog_88 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  x4 = XEXP (x2, 1);
  switch (GET_CODE (x4))
    {
    case VEC_DUPLICATE:
      x5 = XEXP (x4, 0);
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V16QImode:
          if (pattern258 (x2, V8QImode, V16QImode) != 0
              || !
#line 1132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1365; /* move_lo_quad_internal_v16qi */

        case V8HImode:
          if (pattern258 (x2, V4HImode, V8HImode) != 0
              || !
#line 1132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1366; /* move_lo_quad_internal_v8hi */

        case V4SImode:
          if (pattern258 (x2, V2SImode, V4SImode) != 0
              || !
#line 1132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1367; /* move_lo_quad_internal_v4si */

        case V8HFmode:
          if (pattern258 (x2, V4HFmode, V8HFmode) != 0
              || !
#line 1132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1368; /* move_lo_quad_internal_v8hf */

        case V4SFmode:
          if (pattern258 (x2, V2SFmode, V4SFmode) != 0
              || !
#line 1132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1369; /* move_lo_quad_internal_v4sf */

        default:
          return -1;
        }

    case CONST_INT:
      if (XWINT (x4, 0) != 0L)
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x2) != V2DImode
              || !register_operand (operands[1], DImode)
              || !
#line 1148 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1370; /* move_lo_quad_internal_v2di */

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x2) != V2DFmode
              || !register_operand (operands[1], DFmode)
              || !
#line 1148 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1371; /* move_lo_quad_internal_v2df */

        default:
          return -1;
        }

    case VEC_SELECT:
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      x5 = XEXP (x4, 0);
      if (!rtx_equal_p (x5, operands[0]))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V16QImode:
          if (pattern273 (x2, V16QImode, V8QImode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1386; /* aarch64_simd_move_hi_quad_be_v16qi */

        case V8HImode:
          if (pattern273 (x2, V8HImode, V4HImode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1387; /* aarch64_simd_move_hi_quad_be_v8hi */

        case V4SImode:
          if (pattern273 (x2, V4SImode, V2SImode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1388; /* aarch64_simd_move_hi_quad_be_v4si */

        case V2DImode:
          if (pattern273 (x2, V2DImode, DImode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1389; /* aarch64_simd_move_hi_quad_be_v2di */

        case V8HFmode:
          if (pattern273 (x2, V8HFmode, V4HFmode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1390; /* aarch64_simd_move_hi_quad_be_v8hf */

        case V4SFmode:
          if (pattern273 (x2, V4SFmode, V2SFmode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1391; /* aarch64_simd_move_hi_quad_be_v4sf */

        case V2DFmode:
          if (pattern273 (x2, V2DFmode, DFmode) != 0
              || !
#line 1230 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1392; /* aarch64_simd_move_hi_quad_be_v2df */

        default:
          return -1;
        }

    case FLOAT_TRUNCATE:
      x5 = XEXP (x4, 0);
      operands[2] = x5;
      switch (GET_MODE (operands[0]))
        {
        case V4SFmode:
          if (pattern259 (x2, V2DFmode, V2SFmode, V4SFmode) != 0
              || !
#line 1946 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1672; /* aarch64_float_truncate_hi_v4sf_le */

        case V8HFmode:
          if (pattern259 (x2, V4SFmode, V4HFmode, V8HFmode) != 0
              || !
#line 1946 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1673; /* aarch64_float_truncate_hi_v8hf_le */

        default:
          return -1;
        }

    case REG:
    case SUBREG:
      operands[2] = x4;
      switch (GET_MODE (operands[0]))
        {
        case V8HFmode:
          if (pattern199 (x2, V4HFmode, V8HFmode) != 0
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1826; /* aarch64_combine_internalv4hf */

        case V4SFmode:
          if (pattern199 (x2, V2SFmode, V4SFmode) != 0
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1828; /* aarch64_combine_internalv2sf */

        case V2DImode:
          if (pattern199 (x2, DImode, V2DImode) != 0
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1829; /* aarch64_combine_internaldi */

        case V2DFmode:
          if (pattern199 (x2, DFmode, V2DFmode) != 0
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1830; /* aarch64_combine_internaldf */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_89 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || !register_operand (operands[1], QImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 966; /* aarch64_simd_dupv8qi */

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode
              || !register_operand (operands[1], QImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 967; /* aarch64_simd_dupv16qi */

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || !register_operand (operands[1], HImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 968; /* aarch64_simd_dupv4hi */

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode
              || !register_operand (operands[1], HImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 969; /* aarch64_simd_dupv8hi */

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || !register_operand (operands[1], SImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 970; /* aarch64_simd_dupv2si */

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode
              || !register_operand (operands[1], SImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 971; /* aarch64_simd_dupv4si */

        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x3) != V2DImode
              || !register_operand (operands[1], DImode)
              || !
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 972; /* aarch64_simd_dupv2di */

        case V4HFmode:
          if (!register_operand (operands[0], V4HFmode)
              || GET_MODE (x3) != V4HFmode
              || !register_operand (operands[1], HFmode)
              || !
#line 59 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 973; /* aarch64_simd_dupv4hf */

        case V8HFmode:
          if (!register_operand (operands[0], V8HFmode)
              || GET_MODE (x3) != V8HFmode
              || !register_operand (operands[1], HFmode)
              || !
#line 59 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 974; /* aarch64_simd_dupv8hf */

        case V2SFmode:
          if (!register_operand (operands[0], V2SFmode)
              || GET_MODE (x3) != V2SFmode
              || !register_operand (operands[1], SFmode)
              || !
#line 59 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 975; /* aarch64_simd_dupv2sf */

        case V4SFmode:
          if (!register_operand (operands[0], V4SFmode)
              || GET_MODE (x3) != V4SFmode
              || !register_operand (operands[1], SFmode)
              || !
#line 59 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 976; /* aarch64_simd_dupv4sf */

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x3) != V2DFmode
              || !register_operand (operands[1], DFmode)
              || !
#line 59 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 977; /* aarch64_simd_dupv2df */

        default:
          return -1;
        }

    case VEC_SELECT:
      x5 = XEXP (x4, 1);
      if (GET_CODE (x5) != PARALLEL
          || XVECLEN (x5, 0) != 1)
        return -1;
      x6 = XEXP (x4, 0);
      operands[1] = x6;
      x7 = XVECEXP (x5, 0, 0);
      operands[2] = x7;
      if (!immediate_operand (operands[2], SImode))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || GET_MODE (x4) != QImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V8QImode:
              if (!register_operand (operands[1], V8QImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 978; /* aarch64_dup_lanev8qi */

            case V16QImode:
              if (!register_operand (operands[1], V16QImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 990; /* aarch64_dup_lane_to_128v8qi */

            default:
              return -1;
            }

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode
              || GET_MODE (x4) != QImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V16QImode:
              if (!register_operand (operands[1], V16QImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 979; /* aarch64_dup_lanev16qi */

            case V8QImode:
              if (!register_operand (operands[1], V8QImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 991; /* aarch64_dup_lane_to_64v16qi */

            default:
              return -1;
            }

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || GET_MODE (x4) != HImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V4HImode:
              if (!register_operand (operands[1], V4HImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 980; /* aarch64_dup_lanev4hi */

            case V8HImode:
              if (!register_operand (operands[1], V8HImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 992; /* aarch64_dup_lane_to_128v4hi */

            default:
              return -1;
            }

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode
              || GET_MODE (x4) != HImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V8HImode:
              if (!register_operand (operands[1], V8HImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 981; /* aarch64_dup_lanev8hi */

            case V4HImode:
              if (!register_operand (operands[1], V4HImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 993; /* aarch64_dup_lane_to_64v8hi */

            default:
              return -1;
            }

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || GET_MODE (x4) != SImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V2SImode:
              if (!register_operand (operands[1], V2SImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 982; /* aarch64_dup_lanev2si */

            case V4SImode:
              if (!register_operand (operands[1], V4SImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 994; /* aarch64_dup_lane_to_128v2si */

            default:
              return -1;
            }

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode
              || GET_MODE (x4) != SImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V4SImode:
              if (!register_operand (operands[1], V4SImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 983; /* aarch64_dup_lanev4si */

            case V2SImode:
              if (!register_operand (operands[1], V2SImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 995; /* aarch64_dup_lane_to_64v4si */

            default:
              return -1;
            }

        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x3) != V2DImode
              || GET_MODE (x4) != DImode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V2DImode:
              if (!register_operand (operands[1], V2DImode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 984; /* aarch64_dup_lanev2di */

            case DImode:
              if (!register_operand (operands[1], DImode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 996; /* aarch64_dup_lane_to_64v2di */

            default:
              return -1;
            }

        case V4HFmode:
          if (!register_operand (operands[0], V4HFmode)
              || GET_MODE (x3) != V4HFmode
              || GET_MODE (x4) != HFmode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V4HFmode:
              if (!register_operand (operands[1], V4HFmode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 985; /* aarch64_dup_lanev4hf */

            case V8HFmode:
              if (!register_operand (operands[1], V8HFmode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 997; /* aarch64_dup_lane_to_128v4hf */

            default:
              return -1;
            }

        case V8HFmode:
          if (!register_operand (operands[0], V8HFmode)
              || GET_MODE (x3) != V8HFmode
              || GET_MODE (x4) != HFmode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V8HFmode:
              if (!register_operand (operands[1], V8HFmode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 986; /* aarch64_dup_lanev8hf */

            case V4HFmode:
              if (!register_operand (operands[1], V4HFmode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 998; /* aarch64_dup_lane_to_64v8hf */

            default:
              return -1;
            }

        case V2SFmode:
          if (!register_operand (operands[0], V2SFmode)
              || GET_MODE (x3) != V2SFmode
              || GET_MODE (x4) != SFmode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V2SFmode:
              if (!register_operand (operands[1], V2SFmode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 987; /* aarch64_dup_lanev2sf */

            case V4SFmode:
              if (!register_operand (operands[1], V4SFmode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 999; /* aarch64_dup_lane_to_128v2sf */

            default:
              return -1;
            }

        case V4SFmode:
          if (!register_operand (operands[0], V4SFmode)
              || GET_MODE (x3) != V4SFmode
              || GET_MODE (x4) != SFmode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V4SFmode:
              if (!register_operand (operands[1], V4SFmode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 988; /* aarch64_dup_lanev4sf */

            case V2SFmode:
              if (!register_operand (operands[1], V2SFmode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1000; /* aarch64_dup_lane_to_64v4sf */

            default:
              return -1;
            }

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x3) != V2DFmode
              || GET_MODE (x4) != DFmode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case V2DFmode:
              if (!register_operand (operands[1], V2DFmode)
                  || !
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 989; /* aarch64_dup_lanev2df */

            case DFmode:
              if (!register_operand (operands[1], DFmode)
                  || !
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1001; /* aarch64_dup_lane_to_64v2df */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case MEM:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || !aarch64_simd_struct_operand (operands[1], QImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3053; /* *aarch64_simd_ld1rv8qi */

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode
              || !aarch64_simd_struct_operand (operands[1], QImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3054; /* *aarch64_simd_ld1rv16qi */

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || !aarch64_simd_struct_operand (operands[1], HImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3055; /* *aarch64_simd_ld1rv4hi */

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode
              || !aarch64_simd_struct_operand (operands[1], HImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3056; /* *aarch64_simd_ld1rv8hi */

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || !aarch64_simd_struct_operand (operands[1], SImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3057; /* *aarch64_simd_ld1rv2si */

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode
              || !aarch64_simd_struct_operand (operands[1], SImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3058; /* *aarch64_simd_ld1rv4si */

        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x3) != V2DImode
              || !aarch64_simd_struct_operand (operands[1], DImode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3059; /* *aarch64_simd_ld1rv2di */

        case V4HFmode:
          if (!register_operand (operands[0], V4HFmode)
              || GET_MODE (x3) != V4HFmode
              || !aarch64_simd_struct_operand (operands[1], HFmode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3060; /* *aarch64_simd_ld1rv4hf */

        case V8HFmode:
          if (!register_operand (operands[0], V8HFmode)
              || GET_MODE (x3) != V8HFmode
              || !aarch64_simd_struct_operand (operands[1], HFmode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3061; /* *aarch64_simd_ld1rv8hf */

        case V2SFmode:
          if (!register_operand (operands[0], V2SFmode)
              || GET_MODE (x3) != V2SFmode
              || !aarch64_simd_struct_operand (operands[1], SFmode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3062; /* *aarch64_simd_ld1rv2sf */

        case V4SFmode:
          if (!register_operand (operands[0], V4SFmode)
              || GET_MODE (x3) != V4SFmode
              || !aarch64_simd_struct_operand (operands[1], SFmode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3063; /* *aarch64_simd_ld1rv4sf */

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x3) != V2DFmode
              || !aarch64_simd_struct_operand (operands[1], DFmode)
              || !
#line 5574 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 3064; /* *aarch64_simd_ld1rv2df */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_90 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  switch (GET_CODE (x3))
    {
    case REG:
    case SUBREG:
    case MEM:
      x4 = XEXP (x1, 0);
      switch (GET_CODE (x4))
        {
        case REG:
        case SUBREG:
          operands[0] = x4;
          operands[1] = x3;
          switch (GET_MODE (operands[0]))
            {
            case DImode:
              switch (pattern155 (x2))
                {
                case 0:
                  return 84; /* *zero_extendsidi2_aarch64 */

                case 1:
                  return 91; /* *zero_extendqidi2_aarch64 */

                case 2:
                  return 93; /* *zero_extendhidi2_aarch64 */

                default:
                  return -1;
                }

            case SImode:
              switch (pattern156 (x2))
                {
                case 0:
                  return 90; /* *zero_extendqisi2_aarch64 */

                case 1:
                  return 92; /* *zero_extendhisi2_aarch64 */

                default:
                  return -1;
                }

            case HImode:
              if (!register_operand (operands[0], HImode)
                  || GET_MODE (x2) != HImode
                  || !nonimmediate_operand (operands[1], QImode))
                return -1;
              return 95; /* *zero_extendqihi2_aarch64 */

            case TImode:
              if (!register_operand (operands[0], TImode)
                  || GET_MODE (x2) != TImode
                  || !register_operand (operands[1], DImode)
                  || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
                return -1;
              return 924; /* aarch64_movtilow_di */

            case TFmode:
              if (!register_operand (operands[0], TFmode)
                  || GET_MODE (x2) != TFmode
                  || !register_operand (operands[1], DImode)
                  || !
#line 4983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
                return -1;
              return 925; /* aarch64_movtflow_di */

            default:
              return -1;
            }

        case ZERO_EXTRACT:
          x5 = XEXP (x4, 1);
          if (GET_CODE (x5) != CONST_INT)
            return -1;
          operands[1] = x5;
          if (const_int_operand (operands[1], VOIDmode))
            {
              res = recog_6 (x1, insn, pnum_clobbers);
              if (res >= 0)
                return res;
            }
          if (XWINT (x5, 0) != 64L)
            return -1;
          x6 = XEXP (x4, 2);
          if (x6 != const_int_rtx[MAX_SAVED_CONST_INT + 64])
            return -1;
          x7 = XEXP (x4, 0);
          operands[0] = x7;
          operands[1] = x3;
          if (!register_operand (operands[1], DImode))
            return -1;
          switch (GET_MODE (x4))
            {
            case TImode:
              if (!register_operand (operands[0], TImode)
                  || GET_MODE (x2) != TImode
                  || !
#line 4974 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
                return -1;
              return 922; /* aarch64_movtihigh_di */

            case TFmode:
              if (!register_operand (operands[0], TFmode)
                  || GET_MODE (x2) != TFmode
                  || !
#line 4974 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
                return -1;
              return 923; /* aarch64_movtfhigh_di */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case PLUS:
      return recog_9 (x1, insn, pnum_clobbers);

    case MINUS:
      return recog_8 (x1, insn, pnum_clobbers);

    case NEG:
      if (GET_MODE (x3) != SImode)
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode)
        return -1;
      x8 = XEXP (x3, 0);
      switch (GET_CODE (x8))
        {
        case REG:
        case SUBREG:
          operands[1] = x8;
          if (!register_operand (operands[1], SImode))
            return -1;
          return 339; /* *negsi2_uxtw */

        case ASHIFT:
          if (GET_MODE (x8) != SImode)
            return -1;
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          operands[2] = x10;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          return 358; /* *neg_lsl_si2_uxtw */

        case ASHIFTRT:
          if (GET_MODE (x8) != SImode)
            return -1;
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          operands[2] = x10;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          return 359; /* *neg_asr_si2_uxtw */

        case LSHIFTRT:
          if (GET_MODE (x8) != SImode)
            return -1;
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          operands[2] = x10;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          return 360; /* *neg_lsr_si2_uxtw */

        case MULT:
          if (GET_MODE (x8) != SImode)
            return -1;
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          operands[2] = x10;
          if (!aarch64_pwr_2_si (operands[2], QImode))
            return -1;
          return 363; /* *neg_mul_imm_si2_uxtw */

        case NE:
        case EQ:
        case GE:
        case GT:
        case LE:
        case LT:
        case GEU:
        case GTU:
        case LEU:
        case LTU:
        case UNORDERED:
        case ORDERED:
        case UNGE:
        case UNGT:
        case UNLE:
        case UNLT:
          operands[1] = x8;
          if (!aarch64_comparison_operator_mode (operands[1], SImode))
            return -1;
          x10 = XEXP (x8, 1);
          if (x10 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          x9 = XEXP (x8, 0);
          operands[2] = x9;
          if (!cc_register (operands[2], VOIDmode))
            return -1;
          return 441; /* *cstoresi_neg_uxtw */

        default:
          return -1;
        }

    case MULT:
      if (GET_MODE (x3) != SImode)
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode)
        return -1;
      x11 = XEXP (x3, 1);
      operands[2] = x11;
      if (!register_operand (operands[2], SImode))
        return -1;
      x8 = XEXP (x3, 0);
      switch (GET_CODE (x8))
        {
        case REG:
        case SUBREG:
          operands[1] = x8;
          if (!register_operand (operands[1], SImode))
            return -1;
          return 366; /* *mulsi3_uxtw */

        case NEG:
          if (GET_MODE (x8) != SImode)
            return -1;
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          return 375; /* *mulsi_neg_uxtw */

        default:
          return -1;
        }

    case DIV:
      if (pattern30 (x1) != 0)
        return -1;
      return 390; /* *divsi3_uxtw */

    case UDIV:
      if (pattern30 (x1) != 0)
        return -1;
      return 391; /* *udivsi3_uxtw */

    case NE:
    case EQ:
    case GE:
    case GT:
    case LE:
    case LT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNGE:
    case UNGT:
    case UNLE:
    case UNLT:
      operands[1] = x3;
      if (!aarch64_comparison_operator_mode (operands[1], SImode))
        return -1;
      x11 = XEXP (x3, 1);
      if (x11 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode)
        return -1;
      x8 = XEXP (x3, 0);
      operands[2] = x8;
      if (!cc_register (operands[2], VOIDmode))
        return -1;
      return 436; /* *cstoresi_insn_uxtw */

    case IF_THEN_ELSE:
      if (GET_MODE (x3) != SImode)
        return -1;
      x8 = XEXP (x3, 0);
      switch (GET_CODE (x8))
        {
        case NE:
        case EQ:
        case GE:
        case GT:
        case LE:
        case LT:
        case GEU:
        case GTU:
        case LEU:
        case LTU:
        case UNORDERED:
        case ORDERED:
        case UNGE:
        case UNGT:
        case UNLE:
        case UNLT:
          operands[1] = x8;
          if (aarch64_comparison_operator (operands[1], VOIDmode))
            {
              res = recog_7 (x1, insn, pnum_clobbers);
              if (res >= 0)
                return res;
            }
          if (!aarch64_comparison_operation (operands[1], VOIDmode))
            return -1;
          x11 = XEXP (x3, 1);
          if (GET_CODE (x11) != NEG
              || GET_MODE (x11) != SImode)
            return -1;
          x4 = XEXP (x1, 0);
          operands[0] = x4;
          if (!register_operand (operands[0], DImode)
              || GET_MODE (x2) != DImode)
            return -1;
          x12 = XEXP (x11, 0);
          operands[2] = x12;
          if (!register_operand (operands[2], SImode))
            return -1;
          x13 = XEXP (x3, 2);
          operands[3] = x13;
          if (!aarch64_reg_or_zero (operands[3], SImode))
            return -1;
          return 464; /* csneg3_uxtw_insn */

        default:
          return -1;
        }

    case AND:
      switch (pattern31 (x1))
        {
        case 0:
          x8 = XEXP (x3, 0);
          operands[1] = x8;
          if (!register_operand (operands[1], SImode))
            return -1;
          x11 = XEXP (x3, 1);
          operands[2] = x11;
          if (!aarch64_logical_operand (operands[2], SImode))
            return -1;
          return 473; /* *andsi3_uxtw */

        case 1:
          if (pattern220 (x3) != 0)
            return -1;
          return 521; /* *and_ashlsi3_uxtw */

        case 2:
          if (pattern220 (x3) != 0)
            return -1;
          return 522; /* *and_ashrsi3_uxtw */

        case 3:
          if (pattern220 (x3) != 0)
            return -1;
          return 523; /* *and_lshrsi3_uxtw */

        case 4:
          if (pattern220 (x3) != 0)
            return -1;
          return 524; /* *and_rotrsi3_uxtw */

        case 5:
          if (pattern220 (x3) != 0)
            return -1;
          return 533; /* *and_rolsi3_uxtw */

        case 6:
          x8 = XEXP (x3, 0);
          if (GET_MODE (x8) != SImode)
            return -1;
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          x11 = XEXP (x3, 1);
          operands[2] = x11;
          if (!register_operand (operands[2], SImode))
            return -1;
          return 550; /* *and_one_cmplsidi3_ze */

        default:
          return -1;
        }

    case IOR:
      return recog_10 (x1, insn, pnum_clobbers);

    case XOR:
      if (GET_MODE (x3) != SImode)
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode)
        return -1;
      x8 = XEXP (x3, 0);
      switch (GET_CODE (x8))
        {
        case REG:
        case SUBREG:
          operands[1] = x8;
          if (!register_operand (operands[1], SImode))
            return -1;
          x11 = XEXP (x3, 1);
          operands[2] = x11;
          if (!aarch64_logical_operand (operands[2], SImode))
            return -1;
          return 475; /* *xorsi3_uxtw */

        case ASHIFT:
          if (pattern220 (x3) != 0)
            return -1;
          return 529; /* *xor_ashlsi3_uxtw */

        case ASHIFTRT:
          if (pattern220 (x3) != 0)
            return -1;
          return 530; /* *xor_ashrsi3_uxtw */

        case LSHIFTRT:
          if (pattern220 (x3) != 0)
            return -1;
          return 531; /* *xor_lshrsi3_uxtw */

        case ROTATERT:
          if (pattern220 (x3) != 0)
            return -1;
          return 532; /* *xor_rotrsi3_uxtw */

        case ROTATE:
          if (pattern220 (x3) != 0)
            return -1;
          return 535; /* *xor_rolsi3_uxtw */

        default:
          return -1;
        }

    case NOT:
      if (GET_MODE (x3) != SImode)
        return -1;
      x8 = XEXP (x3, 0);
      if (GET_CODE (x8) != XOR
          || GET_MODE (x8) != SImode)
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode)
        return -1;
      x10 = XEXP (x8, 1);
      if (!register_operand (x10, SImode))
        return -1;
      x9 = XEXP (x8, 0);
      switch (GET_CODE (x9))
        {
        case REG:
        case SUBREG:
          operands[1] = x9;
          if (!register_operand (operands[1], SImode))
            return -1;
          operands[2] = x10;
          return 552; /* *xor_one_cmplsidi3_ze */

        case ASHIFT:
          if (GET_MODE (x9) != SImode)
            return -1;
          x14 = XEXP (x9, 0);
          operands[1] = x14;
          if (!register_operand (operands[1], SImode))
            return -1;
          x15 = XEXP (x9, 1);
          operands[2] = x15;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          operands[3] = x10;
          return 592; /* *eor_one_cmpl_ashlsidi3_alt_ze */

        case ASHIFTRT:
          if (GET_MODE (x9) != SImode)
            return -1;
          x14 = XEXP (x9, 0);
          operands[1] = x14;
          if (!register_operand (operands[1], SImode))
            return -1;
          x15 = XEXP (x9, 1);
          operands[2] = x15;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          operands[3] = x10;
          return 593; /* *eor_one_cmpl_ashrsidi3_alt_ze */

        case LSHIFTRT:
          if (GET_MODE (x9) != SImode)
            return -1;
          x14 = XEXP (x9, 0);
          operands[1] = x14;
          if (!register_operand (operands[1], SImode))
            return -1;
          x15 = XEXP (x9, 1);
          operands[2] = x15;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          operands[3] = x10;
          return 594; /* *eor_one_cmpl_lshrsidi3_alt_ze */

        case ROTATERT:
          if (GET_MODE (x9) != SImode)
            return -1;
          x14 = XEXP (x9, 0);
          operands[1] = x14;
          if (!register_operand (operands[1], SImode))
            return -1;
          x15 = XEXP (x9, 1);
          operands[2] = x15;
          if (!aarch64_shift_imm_si (operands[2], QImode))
            return -1;
          operands[3] = x10;
          return 595; /* *eor_one_cmpl_rotrsidi3_alt_ze */

        default:
          return -1;
        }

    case ASHIFT:
      switch (pattern32 (x1))
        {
        case 0:
          return 655; /* *ashlsi3_insn_uxtw */

        case 1:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 677; /* *zero_extenddi_ashlqi */

        case 2:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 681; /* *zero_extenddi_ashlhi */

        case 3:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 675; /* *zero_extendsi_ashlqi */

        case 4:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 679; /* *zero_extendsi_ashlhi */

        default:
          return -1;
        }

    case ASHIFTRT:
      if (pattern33 (x1) != 0)
        return -1;
      return 656; /* *ashrsi3_insn_uxtw */

    case LSHIFTRT:
      switch (pattern32 (x1))
        {
        case 0:
          return 657; /* *lshrsi3_insn_uxtw */

        case 1:
          if (!
#line 4257 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 683; /* *zero_extenddi_lshrqi */

        case 2:
          if (!
#line 4257 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 685; /* *zero_extenddi_lshrhi */

        case 3:
          if (!
#line 4257 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 682; /* *zero_extendsi_lshrqi */

        case 4:
          if (!
#line 4257 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 684; /* *zero_extendsi_lshrhi */

        default:
          return -1;
        }

    case ROTATERT:
      if (pattern33 (x1) != 0)
        return -1;
      return 658; /* *rotrsi3_insn_uxtw */

    case ROTATE:
      if (pattern34 (x1) != 0)
        return -1;
      x11 = XEXP (x3, 1);
      operands[2] = x11;
      if (!const_int_operand (operands[2], VOIDmode)
          || !
#line 4231 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
        return -1;
      return 673; /* *rorsi3_insn_uxtw */

    case BSWAP:
      if (pattern34 (x1) != 0)
        return -1;
      return 725; /* *bswapsi2_uxtw */

    case TRUNCATE:
      if (GET_MODE (x3) != DImode)
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], TImode)
          || GET_MODE (x2) != TImode)
        return -1;
      x8 = XEXP (x3, 0);
      operands[1] = x8;
      if (!register_operand (operands[1], TImode)
          || !
#line 4993 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
        return -1;
      return 926; /* aarch64_movtilow_tilow */

    case UNSPEC:
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode
          || GET_MODE (x3) != SImode)
        return -1;
      switch (XVECLEN (x3, 0))
        {
        case 1:
          switch (XINT (x3, 1))
            {
            case 22:
              x16 = XVECEXP (x3, 0, 0);
              if (pattern241 (x16) != 0
                  || !
#line 5047 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_ILP32))
                return -1;
              return 931; /* ldr_got_small_sidi */

            case 23:
              x16 = XVECEXP (x3, 0, 0);
              if (pattern241 (x16) != 0
                  || !
#line 5070 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_ILP32))
                return -1;
              return 934; /* ldr_got_small_28k_sidi */

            case 24:
              x16 = XVECEXP (x3, 0, 0);
              operands[1] = x16;
              if (!aarch64_tls_ie_symref (operands[1], VOIDmode))
                return -1;
              return 940; /* tlsie_small_sidi */

            default:
              return -1;
            }

        case 2:
          if (XINT (x3, 1) != 26)
            return -1;
          x16 = XVECEXP (x3, 0, 0);
          operands[1] = x16;
          if (!aarch64_tls_ie_symref (operands[1], VOIDmode))
            return -1;
          x17 = XVECEXP (x3, 0, 1);
          operands[2] = x17;
          if (!register_operand (operands[2], DImode))
            return -1;
          return 943; /* tlsie_tiny_sidi */

        default:
          return -1;
        }

    case VEC_SELECT:
      x11 = XEXP (x3, 1);
      if (GET_CODE (x11) != PARALLEL)
        return -1;
      operands[2] = x11;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      switch (pattern158 (x2))
        {
        case 0:
          if (vect_par_cnst_lo_half (operands[2], V16QImode)
              && 
#line 1305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1400; /* aarch64_simd_vec_unpacku_lo_v16qi */
          if (vect_par_cnst_hi_half (operands[2], V16QImode)
              && 
#line 1316 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1406; /* aarch64_simd_vec_unpacku_hi_v16qi */
          break;

        case 1:
          if (vect_par_cnst_lo_half (operands[2], V8HImode)
              && 
#line 1305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1402; /* aarch64_simd_vec_unpacku_lo_v8hi */
          if (vect_par_cnst_hi_half (operands[2], V8HImode)
              && 
#line 1316 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1408; /* aarch64_simd_vec_unpacku_hi_v8hi */
          break;

        case 2:
          if (vect_par_cnst_lo_half (operands[2], V4SImode)
              && 
#line 1305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1404; /* aarch64_simd_vec_unpacku_lo_v4si */
          if (vect_par_cnst_hi_half (operands[2], V4SImode)
              && 
#line 1316 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1410; /* aarch64_simd_vec_unpacku_hi_v4si */
          break;

        default:
          break;
        }
      if (XVECLEN (x11, 0) != 1)
        return -1;
      operands[0] = x4;
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x2) != SImode)
        return -1;
      x8 = XEXP (x3, 0);
      operands[1] = x8;
      x18 = XVECEXP (x11, 0, 0);
      operands[2] = x18;
      if (!immediate_operand (operands[2], SImode))
        return -1;
      switch (pattern260 (x3))
        {
        case 0:
          if (!
#line 2674 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1802; /* *aarch64_get_lane_zero_extendsiv8qi */

        case 1:
          if (!
#line 2674 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1803; /* *aarch64_get_lane_zero_extendsiv16qi */

        case 2:
          if (!
#line 2674 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1804; /* *aarch64_get_lane_zero_extendsiv4hi */

        case 3:
          if (!
#line 2674 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1805; /* *aarch64_get_lane_zero_extendsiv8hi */

        default:
          return -1;
        }

    case UNSPEC_VOLATILE:
      if (XVECLEN (x3, 0) != 2
          || XINT (x3, 1) != 7)
        return -1;
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x2) != SImode)
        return -1;
      x16 = XVECEXP (x3, 0, 0);
      operands[1] = x16;
      x17 = XVECEXP (x3, 0, 1);
      operands[2] = x17;
      if (!const_int_operand (operands[2], SImode))
        return -1;
      switch (GET_MODE (x3))
        {
        case QImode:
          if (!aarch64_sync_memory_operand (operands[1], QImode))
            return -1;
          return 3258; /* aarch64_load_exclusiveqi */

        case HImode:
          if (!aarch64_sync_memory_operand (operands[1], HImode))
            return -1;
          return 3259; /* aarch64_load_exclusivehi */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_91 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case CONST_INT:
        case REG:
        case SUBREG:
          operands[2] = x5;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern224 (x3, SImode) != 0)
                return -1;
              return 96; /* *addsi3_aarch64 */

            case DImode:
              if (pattern224 (x3, DImode) != 0)
                return -1;
              return 97; /* *adddi3_aarch64 */

            case HFmode:
              if (pattern14 (x3, HFmode) != 0
                  || !(
#line 4720 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
                return -1;
              return 877; /* addhf3 */

            case SFmode:
              if (pattern14 (x3, SFmode) != 0
                  || !
#line 4720 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return -1;
              return 878; /* addsf3 */

            case DFmode:
              if (pattern14 (x3, DFmode) != 0
                  || !
#line 4720 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return -1;
              return 879; /* adddf3 */

            case V8QImode:
              if (pattern14 (x3, V8QImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1052; /* addv8qi3 */

            case V16QImode:
              if (pattern14 (x3, V16QImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1053; /* addv16qi3 */

            case V4HImode:
              if (pattern14 (x3, V4HImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1054; /* addv4hi3 */

            case V8HImode:
              if (pattern14 (x3, V8HImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1055; /* addv8hi3 */

            case V2SImode:
              if (pattern14 (x3, V2SImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1056; /* addv2si3 */

            case V4SImode:
              if (pattern14 (x3, V4SImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1057; /* addv4si3 */

            case V2DImode:
              if (pattern14 (x3, V2DImode) != 0
                  || !
#line 287 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1058; /* addv2di3 */

            case V4HFmode:
              if (pattern14 (x3, V4HFmode) != 0
                  || !(
#line 1523 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1459; /* addv4hf3 */

            case V8HFmode:
              if (pattern14 (x3, V8HFmode) != 0
                  || !(
#line 1523 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1460; /* addv8hf3 */

            case V2SFmode:
              if (pattern14 (x3, V2SFmode) != 0
                  || !
#line 1523 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1461; /* addv2sf3 */

            case V4SFmode:
              if (pattern14 (x3, V4SFmode) != 0
                  || !
#line 1523 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1462; /* addv4sf3 */

            case V2DFmode:
              if (pattern14 (x3, V2DFmode) != 0
                  || !
#line 1523 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1463; /* addv2df3 */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern159 (x3))
            {
            case 0:
              if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1867; /* aarch64_saddwv8qi */

            case 1:
              if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1871; /* aarch64_saddwv4hi */

            case 2:
              if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1875; /* aarch64_saddwv2si */

            case 3:
              if (vect_par_cnst_lo_half (operands[3], V16QImode)
                  && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1879; /* aarch64_saddwv16qi_internal */
              if (!vect_par_cnst_hi_half (operands[3], V16QImode)
                  || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1891; /* aarch64_saddw2v16qi_internal */

            case 4:
              if (vect_par_cnst_lo_half (operands[3], V8HImode)
                  && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1883; /* aarch64_saddwv8hi_internal */
              if (!vect_par_cnst_hi_half (operands[3], V8HImode)
                  || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1895; /* aarch64_saddw2v8hi_internal */

            case 5:
              if (vect_par_cnst_lo_half (operands[3], V4SImode)
                  && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1887; /* aarch64_saddwv4si_internal */
              if (!vect_par_cnst_hi_half (operands[3], V4SImode)
                  || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1899; /* aarch64_saddw2v4si_internal */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern159 (x3))
            {
            case 0:
              if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1869; /* aarch64_uaddwv8qi */

            case 1:
              if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1873; /* aarch64_uaddwv4hi */

            case 2:
              if (!
#line 2945 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1877; /* aarch64_uaddwv2si */

            case 3:
              if (vect_par_cnst_lo_half (operands[3], V16QImode)
                  && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1881; /* aarch64_uaddwv16qi_internal */
              if (!vect_par_cnst_hi_half (operands[3], V16QImode)
                  || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1893; /* aarch64_uaddw2v16qi_internal */

            case 4:
              if (vect_par_cnst_lo_half (operands[3], V8HImode)
                  && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1885; /* aarch64_uaddwv8hi_internal */
              if (!vect_par_cnst_hi_half (operands[3], V8HImode)
                  || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1897; /* aarch64_uaddw2v8hi_internal */

            case 5:
              if (vect_par_cnst_lo_half (operands[3], V4SImode)
                  && 
#line 2957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return 1889; /* aarch64_uaddwv4si_internal */
              if (!vect_par_cnst_hi_half (operands[3], V4SImode)
                  || !
#line 2969 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1901; /* aarch64_uaddw2v4si_internal */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFT:
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      x5 = XEXP (x3, 1);
      operands[3] = x5;
      x7 = XEXP (x4, 0);
      switch (GET_CODE (x7))
        {
        case REG:
        case SUBREG:
          operands[1] = x7;
          switch (pattern41 (x3))
            {
            case 0:
              return 186; /* *add_lsl_si */

            case 1:
              return 189; /* *add_lsl_di */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern204 (x3))
            {
            case 0:
              return 217; /* *add_extendqi_shft_si */

            case 1:
              return 221; /* *add_extendhi_shft_si */

            case 2:
              return 225; /* *add_extendsi_shft_si */

            case 3:
              return 219; /* *add_extendqi_shft_di */

            case 4:
              return 223; /* *add_extendhi_shft_di */

            case 5:
              return 227; /* *add_extendsi_shft_di */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern204 (x3))
            {
            case 0:
              return 218; /* *add_zero_extendqi_shft_si */

            case 1:
              return 222; /* *add_zero_extendhi_shft_si */

            case 2:
              return 226; /* *add_zero_extendsi_shft_si */

            case 3:
              return 220; /* *add_zero_extendqi_shft_di */

            case 4:
              return 224; /* *add_zero_extendhi_shft_di */

            case 5:
              return 228; /* *add_zero_extendsi_shft_di */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 187; /* *add_asr_si */

        case 1:
          return 190; /* *add_asr_di */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 188; /* *add_lsr_si */

        case 1:
          return 191; /* *add_lsr_di */

        default:
          return -1;
        }

    case MULT:
      return recog_11 (x1, insn, pnum_clobbers);

    case SIGN_EXTEND:
      switch (pattern45 (x3, SIGN_EXTEND))
        {
        case 0:
          x5 = XEXP (x3, 1);
          switch (GET_CODE (x5))
            {
            case REG:
            case SUBREG:
              switch (pattern208 (x3))
                {
                case 0:
                  return 197; /* *add_extendqi_si */

                case 1:
                  return 201; /* *add_extendhi_si */

                case 2:
                  return 205; /* *add_extendsi_si */

                case 3:
                  return 199; /* *add_extendqi_di */

                case 4:
                  return 203; /* *add_extendhi_di */

                case 5:
                  return 207; /* *add_extendsi_di */

                default:
                  return -1;
                }

            case SIGN_EXTEND:
              switch (pattern50 (x3))
                {
                case 0:
                  if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1855; /* aarch64_saddlv8qi */

                case 1:
                  if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1859; /* aarch64_saddlv4hi */

                case 2:
                  if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1863; /* aarch64_saddlv2si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 1:
          if (vect_par_cnst_hi_half (operands[3], V16QImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1831; /* aarch64_saddlv16qi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V16QImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1843; /* aarch64_saddlv16qi_lo_internal */

        case 2:
          if (vect_par_cnst_hi_half (operands[3], V8HImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1835; /* aarch64_saddlv8hi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V8HImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1847; /* aarch64_saddlv8hi_lo_internal */

        case 3:
          if (vect_par_cnst_hi_half (operands[3], V4SImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1839; /* aarch64_saddlv4si_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V4SImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1851; /* aarch64_saddlv4si_lo_internal */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern45 (x3, ZERO_EXTEND))
        {
        case 0:
          x5 = XEXP (x3, 1);
          switch (GET_CODE (x5))
            {
            case REG:
            case SUBREG:
              switch (pattern208 (x3))
                {
                case 0:
                  return 198; /* *add_zero_extendqi_si */

                case 1:
                  return 202; /* *add_zero_extendhi_si */

                case 2:
                  return 206; /* *add_zero_extendsi_si */

                case 3:
                  return 200; /* *add_zero_extendqi_di */

                case 4:
                  return 204; /* *add_zero_extendhi_di */

                case 5:
                  return 208; /* *add_zero_extendsi_di */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              switch (pattern50 (x3))
                {
                case 0:
                  if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1857; /* aarch64_uaddlv8qi */

                case 1:
                  if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1861; /* aarch64_uaddlv4hi */

                case 2:
                  if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1865; /* aarch64_uaddlv2si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 1:
          if (vect_par_cnst_hi_half (operands[3], V16QImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1833; /* aarch64_uaddlv16qi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V16QImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1845; /* aarch64_uaddlv16qi_lo_internal */

        case 2:
          if (vect_par_cnst_hi_half (operands[3], V8HImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1837; /* aarch64_uaddlv8hi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V8HImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1849; /* aarch64_uaddlv8hi_lo_internal */

        case 3:
          if (vect_par_cnst_hi_half (operands[3], V4SImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1841; /* aarch64_uaddlv4si_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V4SImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1853; /* aarch64_uaddlv4si_lo_internal */

        default:
          return -1;
        }

    case SIGN_EXTRACT:
      switch (pattern47 (x3))
        {
        case 0:
          if (!
#line 2139 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
            return -1;
          return 249; /* *add_extvsi_multp2 */

        case 1:
          if (!
#line 2139 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
            return -1;
          return 251; /* *add_extvdi_multp2 */

        default:
          return -1;
        }

    case ZERO_EXTRACT:
      switch (pattern47 (x3))
        {
        case 0:
          if (!
#line 2139 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
            return -1;
          return 250; /* *add_extzvsi_multp2 */

        case 1:
          if (!
#line 2139 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
            return -1;
          return 252; /* *add_extzvdi_multp2 */

        default:
          return -1;
        }

    case PLUS:
      x7 = XEXP (x4, 0);
      operands[3] = x7;
      x6 = XEXP (x4, 1);
      operands[1] = x6;
      x5 = XEXP (x3, 1);
      operands[2] = x5;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern225 (x3, SImode) != 0)
            return -1;
          return 255; /* *addsi3_carryin */

        case DImode:
          if (pattern225 (x3, DImode) != 0)
            return -1;
          return 256; /* *adddi3_carryin */

        default:
          return -1;
        }

    case AND:
      x6 = XEXP (x4, 1);
      operands[3] = x6;
      if (!const_int_operand (operands[3], VOIDmode))
        return -1;
      x5 = XEXP (x3, 1);
      operands[4] = x5;
      x7 = XEXP (x4, 0);
      switch (GET_CODE (x7))
        {
        case ASHIFT:
          x8 = XEXP (x7, 0);
          operands[1] = x8;
          x9 = XEXP (x7, 1);
          operands[2] = x9;
          if (!aarch64_imm3 (operands[2], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern46 (x3, SImode) != 0
                  || !
#line 2206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (INTVAL (operands[2]), INTVAL (operands[3])) != 0))
                return -1;
              return 258; /* *add_uxtsi_shift2 */

            case DImode:
              if (pattern46 (x3, DImode) != 0
                  || !
#line 2206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (INTVAL (operands[2]), INTVAL (operands[3])) != 0))
                return -1;
              return 259; /* *add_uxtdi_shift2 */

            default:
              return -1;
            }

        case MULT:
          x8 = XEXP (x7, 0);
          operands[1] = x8;
          x9 = XEXP (x7, 1);
          operands[2] = x9;
          if (!aarch64_pwr_imm3 (operands[2], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern46 (x3, SImode) != 0
                  || !
#line 2238 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (exact_log2 (INTVAL (operands[2])), INTVAL (operands[3])) != 0))
                return -1;
              return 261; /* *add_uxtsi_multp2 */

            case DImode:
              if (pattern46 (x3, DImode) != 0
                  || !
#line 2238 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_uxt_size (exact_log2 (INTVAL (operands[2])), INTVAL (operands[3])) != 0))
                return -1;
              return 262; /* *add_uxtdi_multp2 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case NE:
    case EQ:
    case GE:
    case GT:
    case LE:
    case LT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNGE:
    case UNGT:
    case UNLE:
    case UNLT:
      operands[2] = x4;
      if (aarch64_comparison_operation (operands[2], VOIDmode))
        {
          x5 = XEXP (x3, 1);
          operands[1] = x5;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (register_operand (operands[0], SImode)
                  && GET_MODE (x3) == SImode
                  && register_operand (operands[1], SImode))
                return 458; /* *csinc2si_insn */
              break;

            case DImode:
              if (register_operand (operands[0], DImode)
                  && GET_MODE (x3) == DImode
                  && register_operand (operands[1], DImode))
                return 459; /* *csinc2di_insn */
              break;

            default:
              break;
            }
        }
      if (GET_CODE (x4) != EQ)
        return -1;
      x7 = XEXP (x4, 0);
      if (GET_CODE (x7) != AND)
        return -1;
      x8 = XEXP (x7, 0);
      operands[1] = x8;
      x9 = XEXP (x7, 1);
      operands[2] = x9;
      x6 = XEXP (x4, 1);
      operands[3] = x6;
      x5 = XEXP (x3, 1);
      operands[4] = x5;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern280 (x3, V8QImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2561; /* aarch64_cmtstv8qi */

        case V16QImode:
          if (pattern280 (x3, V16QImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2562; /* aarch64_cmtstv16qi */

        case V4HImode:
          if (pattern280 (x3, V4HImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2563; /* aarch64_cmtstv4hi */

        case V8HImode:
          if (pattern280 (x3, V8HImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2564; /* aarch64_cmtstv8hi */

        case V2SImode:
          if (pattern280 (x3, V2SImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2565; /* aarch64_cmtstv2si */

        case V4SImode:
          if (pattern280 (x3, V4SImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2566; /* aarch64_cmtstv4si */

        case V2DImode:
          if (pattern280 (x3, V2DImode) != 0
              || !
#line 4256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2567; /* aarch64_cmtstv2di */

        default:
          return -1;
        }

    case ABS:
      x7 = XEXP (x4, 0);
      if (GET_CODE (x7) != MINUS)
        return -1;
      x8 = XEXP (x7, 0);
      operands[1] = x8;
      x9 = XEXP (x7, 1);
      operands[2] = x9;
      x5 = XEXP (x3, 1);
      operands[3] = x5;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern245 (x3, V8QImode) != 0
              || !
#line 472 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1148; /* abav8qi_3 */

        case V16QImode:
          if (pattern245 (x3, V16QImode) != 0
              || !
#line 472 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1149; /* abav16qi_3 */

        case V4HImode:
          if (pattern245 (x3, V4HImode) != 0
              || !
#line 472 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1150; /* abav4hi_3 */

        case V8HImode:
          if (pattern245 (x3, V8HImode) != 0
              || !
#line 472 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1151; /* abav8hi_3 */

        case V2SImode:
          if (pattern245 (x3, V2SImode) != 0
              || !
#line 472 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1152; /* abav2si_3 */

        case V4SImode:
          if (pattern245 (x3, V4SImode) != 0
              || !
#line 472 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1153; /* abav4si_3 */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_92 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          operands[2] = x5;
          x6 = XEXP (x3, 2);
          switch (GET_CODE (x6))
            {
            case REG:
            case SUBREG:
              operands[3] = x6;
              switch (GET_MODE (operands[0]))
                {
                case HFmode:
                  if (pattern266 (x3, HFmode) != 0
                      || !(
#line 4506 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
                    return -1;
                  return 815; /* fmahf4 */

                case SFmode:
                  if (pattern266 (x3, SFmode) != 0
                      || !
#line 4506 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 816; /* fmasf4 */

                case DFmode:
                  if (pattern266 (x3, DFmode) != 0
                      || !
#line 4506 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 817; /* fmadf4 */

                case V4HFmode:
                  if (pattern266 (x3, V4HFmode) != 0
                      || !(
#line 1588 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                    return -1;
                  return 1489; /* fmav4hf4 */

                case V8HFmode:
                  if (pattern266 (x3, V8HFmode) != 0
                      || !(
#line 1588 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                    return -1;
                  return 1490; /* fmav8hf4 */

                case V2SFmode:
                  if (pattern266 (x3, V2SFmode) != 0
                      || !
#line 1588 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1491; /* fmav2sf4 */

                case V4SFmode:
                  if (pattern266 (x3, V4SFmode) != 0
                      || !
#line 1588 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1492; /* fmav4sf4 */

                case V2DFmode:
                  if (pattern266 (x3, V2DFmode) != 0
                      || !
#line 1588 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1493; /* fmav2df4 */

                default:
                  return -1;
                }

            case NEG:
              x7 = XEXP (x6, 0);
              operands[3] = x7;
              switch (GET_MODE (operands[0]))
                {
                case SFmode:
                  if (pattern267 (x3, SFmode) != 0
                      || !
#line 4527 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 821; /* fmssf4 */

                case DFmode:
                  if (pattern267 (x3, DFmode) != 0
                      || !
#line 4527 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 822; /* fmsdf4 */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case NEG:
          x8 = XEXP (x5, 0);
          operands[2] = x8;
          x6 = XEXP (x3, 2);
          operands[3] = x6;
          switch (GET_MODE (operands[0]))
            {
            case V4HFmode:
              if (pattern252 (x3, V4HFmode) != 0
                  || !(
#line 1663 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1509; /* fnmav4hf4 */

            case V8HFmode:
              if (pattern252 (x3, V8HFmode) != 0
                  || !(
#line 1663 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1510; /* fnmav8hf4 */

            case V2SFmode:
              if (pattern252 (x3, V2SFmode) != 0
                  || !
#line 1663 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1511; /* fnmav2sf4 */

            case V4SFmode:
              if (pattern252 (x3, V4SFmode) != 0
                  || !
#line 1663 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1512; /* fnmav4sf4 */

            case V2DFmode:
              if (pattern252 (x3, V2DFmode) != 0
                  || !
#line 1663 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1513; /* fnmav2df4 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case NEG:
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          operands[2] = x5;
          x9 = XEXP (x4, 0);
          operands[1] = x9;
          x6 = XEXP (x3, 2);
          switch (GET_CODE (x6))
            {
            case REG:
            case SUBREG:
              operands[3] = x6;
              switch (GET_MODE (operands[0]))
                {
                case HFmode:
                  if (pattern268 (x3, HFmode) != 0
                      || !(
#line 4517 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
                    return -1;
                  return 818; /* fnmahf4 */

                case SFmode:
                  if (pattern268 (x3, SFmode) != 0
                      || !
#line 4517 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 819; /* fnmasf4 */

                case DFmode:
                  if (pattern268 (x3, DFmode) != 0
                      || !
#line 4517 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 820; /* fnmadf4 */

                default:
                  return -1;
                }

            case NEG:
              x7 = XEXP (x6, 0);
              operands[3] = x7;
              switch (GET_MODE (operands[0]))
                {
                case SFmode:
                  if (pattern269 (x3, SFmode) != 0
                      || !
#line 4537 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 823; /* fnmssf4 */

                case DFmode:
                  if (pattern269 (x3, DFmode) != 0
                      || !
#line 4537 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                    return -1;
                  return 824; /* fnmsdf4 */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case VEC_DUPLICATE:
          x8 = XEXP (x5, 0);
          switch (GET_CODE (x8))
            {
            case VEC_SELECT:
              x10 = XEXP (x8, 1);
              if (GET_CODE (x10) != PARALLEL
                  || XVECLEN (x10, 0) != 1)
                return -1;
              x9 = XEXP (x4, 0);
              operands[3] = x9;
              x11 = XEXP (x8, 0);
              operands[1] = x11;
              x12 = XVECEXP (x10, 0, 0);
              operands[2] = x12;
              if (!immediate_operand (operands[2], SImode))
                return -1;
              x6 = XEXP (x3, 2);
              operands[4] = x6;
              switch (GET_MODE (operands[0]))
                {
                case V2SFmode:
                  if (pattern330 (x3, V2SFmode) != 0)
                    return -1;
                  switch (GET_MODE (operands[1]))
                    {
                    case V2SFmode:
                      if (!register_operand (operands[1], V2SFmode)
                          || !
#line 1678 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 1514; /* *aarch64_fnma4_eltv2sf */

                    case V4SFmode:
                      if (!register_operand (operands[1], V4SFmode)
                          || !
#line 1696 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 1517; /* *aarch64_fnma4_elt_to_128v2sf */

                    default:
                      return -1;
                    }

                case V4SFmode:
                  if (pattern330 (x3, V4SFmode) != 0)
                    return -1;
                  switch (GET_MODE (operands[1]))
                    {
                    case V4SFmode:
                      if (!register_operand (operands[1], V4SFmode)
                          || !
#line 1678 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 1515; /* *aarch64_fnma4_eltv4sf */

                    case V2SFmode:
                      if (!register_operand (operands[1], V2SFmode)
                          || !
#line 1696 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 1518; /* *aarch64_fnma4_elt_to_64v4sf */

                    default:
                      return -1;
                    }

                case V2DFmode:
                  if (!register_operand (operands[0], V2DFmode)
                      || GET_MODE (x3) != V2DFmode
                      || GET_MODE (x4) != V2DFmode
                      || !register_operand (operands[3], V2DFmode)
                      || GET_MODE (x5) != V2DFmode
                      || GET_MODE (x8) != DFmode
                      || !register_operand (operands[1], V2DFmode)
                      || !register_operand (operands[4], V2DFmode)
                      || !
#line 1678 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1516; /* *aarch64_fnma4_eltv2df */

                default:
                  return -1;
                }

            case REG:
            case SUBREG:
              operands[1] = x8;
              x9 = XEXP (x4, 0);
              operands[2] = x9;
              x6 = XEXP (x3, 2);
              operands[3] = x6;
              switch (GET_MODE (operands[0]))
                {
                case V4HImode:
                  if (pattern270 (x3, V4HImode, HImode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1519; /* *aarch64_fnma4_elt_from_dupv4hi */

                case V8HImode:
                  if (pattern270 (x3, V8HImode, HImode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1520; /* *aarch64_fnma4_elt_from_dupv8hi */

                case V2SImode:
                  if (pattern270 (x3, V2SImode, SImode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1521; /* *aarch64_fnma4_elt_from_dupv2si */

                case V4SImode:
                  if (pattern270 (x3, V4SImode, SImode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1522; /* *aarch64_fnma4_elt_from_dupv4si */

                case V4HFmode:
                  if (pattern270 (x3, V4HFmode, HFmode) != 0
                      || !(
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                    return -1;
                  return 1523; /* *aarch64_fnma4_elt_from_dupv4hf */

                case V8HFmode:
                  if (pattern270 (x3, V8HFmode, HFmode) != 0
                      || !(
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 235 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                    return -1;
                  return 1524; /* *aarch64_fnma4_elt_from_dupv8hf */

                case V2SFmode:
                  if (pattern270 (x3, V2SFmode, SFmode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1525; /* *aarch64_fnma4_elt_from_dupv2sf */

                case V4SFmode:
                  if (pattern270 (x3, V4SFmode, SFmode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1526; /* *aarch64_fnma4_elt_from_dupv4sf */

                case V2DFmode:
                  if (pattern270 (x3, V2DFmode, DFmode) != 0
                      || !
#line 1713 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1527; /* *aarch64_fnma4_elt_from_dupv2df */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    case VEC_DUPLICATE:
      switch (pattern54 (x3))
        {
        case 0:
          x6 = XEXP (x3, 2);
          operands[4] = x6;
          switch (GET_MODE (operands[0]))
            {
            case V2SFmode:
              if (pattern304 (x3, V2SFmode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V2SFmode:
                  if (!register_operand (operands[1], V2SFmode)
                      || !
#line 1602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1494; /* *aarch64_fma4_eltv2sf */

                case V4SFmode:
                  if (!register_operand (operands[1], V4SFmode)
                      || !
#line 1619 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1497; /* *aarch64_fma4_elt_to_128v2sf */

                default:
                  return -1;
                }

            case V4SFmode:
              if (pattern304 (x3, V4SFmode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V4SFmode:
                  if (!register_operand (operands[1], V4SFmode)
                      || !
#line 1602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1495; /* *aarch64_fma4_eltv4sf */

                case V2SFmode:
                  if (!register_operand (operands[1], V2SFmode)
                      || !
#line 1619 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1498; /* *aarch64_fma4_elt_to_64v4sf */

                default:
                  return -1;
                }

            case V2DFmode:
              if (!register_operand (operands[0], V2DFmode)
                  || GET_MODE (x3) != V2DFmode
                  || GET_MODE (x4) != V2DFmode)
                return -1;
              x9 = XEXP (x4, 0);
              if (GET_MODE (x9) != DFmode
                  || !register_operand (operands[1], V2DFmode)
                  || !register_operand (operands[3], V2DFmode)
                  || !register_operand (operands[4], V2DFmode)
                  || !
#line 1602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1496; /* *aarch64_fma4_eltv2df */

            default:
              return -1;
            }

        case 1:
          x6 = XEXP (x3, 2);
          operands[3] = x6;
          switch (GET_MODE (operands[0]))
            {
            case V4HImode:
              if (pattern253 (x3, V4HImode, HImode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1499; /* *aarch64_fma4_elt_from_dupv4hi */

            case V8HImode:
              if (pattern253 (x3, V8HImode, HImode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1500; /* *aarch64_fma4_elt_from_dupv8hi */

            case V2SImode:
              if (pattern253 (x3, V2SImode, SImode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1501; /* *aarch64_fma4_elt_from_dupv2si */

            case V4SImode:
              if (pattern253 (x3, V4SImode, SImode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1502; /* *aarch64_fma4_elt_from_dupv4si */

            case V4HFmode:
              if (pattern253 (x3, V4HFmode, HFmode) != 0
                  || !(
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1503; /* *aarch64_fma4_elt_from_dupv4hf */

            case V8HFmode:
              if (pattern253 (x3, V8HFmode, HFmode) != 0
                  || !(
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 235 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1504; /* *aarch64_fma4_elt_from_dupv8hf */

            case V2SFmode:
              if (pattern253 (x3, V2SFmode, SFmode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1505; /* *aarch64_fma4_elt_from_dupv2sf */

            case V4SFmode:
              if (pattern253 (x3, V4SFmode, SFmode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1506; /* *aarch64_fma4_elt_from_dupv4sf */

            case V2DFmode:
              if (pattern253 (x3, V2DFmode, DFmode) != 0
                  || !
#line 1635 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1507; /* *aarch64_fma4_elt_from_dupv2df */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case VEC_SELECT:
      if (pattern55 (x3) != 0)
        return -1;
      x6 = XEXP (x3, 2);
      operands[4] = x6;
      if (!register_operand (operands[4], DFmode))
        return -1;
      x5 = XEXP (x3, 1);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          operands[3] = x5;
          if (!register_operand (operands[3], DFmode)
              || !
#line 1648 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1508; /* *aarch64_fma4_elt_to_64v2df */

        case NEG:
          if (GET_MODE (x5) != DFmode)
            return -1;
          x8 = XEXP (x5, 0);
          operands[3] = x8;
          if (!register_operand (operands[3], DFmode)
              || !
#line 1727 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1528; /* *aarch64_fnma4_elt_to_64v2df */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_93 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      x5 = XEXP (x3, 1);
      operands[2] = x5;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern14 (x3, SImode) != 0)
            return -1;
          return 364; /* mulsi3 */

        case DImode:
          if (pattern14 (x3, DImode) != 0)
            return -1;
          return 365; /* muldi3 */

        case HFmode:
          if (pattern14 (x3, HFmode) != 0
              || !(
#line 4740 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 883; /* mulhf3 */

        case SFmode:
          if (pattern14 (x3, SFmode) != 0
              || !
#line 4740 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 884; /* mulsf3 */

        case DFmode:
          if (pattern14 (x3, DFmode) != 0
              || !
#line 4740 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 885; /* muldf3 */

        case V8QImode:
          if (pattern14 (x3, V8QImode) != 0
              || !
#line 305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1066; /* mulv8qi3 */

        case V16QImode:
          if (pattern14 (x3, V16QImode) != 0
              || !
#line 305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1067; /* mulv16qi3 */

        case V4HImode:
          if (pattern14 (x3, V4HImode) != 0
              || !
#line 305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1068; /* mulv4hi3 */

        case V8HImode:
          if (pattern14 (x3, V8HImode) != 0
              || !
#line 305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1069; /* mulv8hi3 */

        case V2SImode:
          if (pattern14 (x3, V2SImode) != 0
              || !
#line 305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1070; /* mulv2si3 */

        case V4SImode:
          if (pattern14 (x3, V4SImode) != 0
              || !
#line 305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1071; /* mulv4si3 */

        case V4HFmode:
          if (pattern14 (x3, V4HFmode) != 0
              || !(
#line 1541 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1469; /* mulv4hf3 */

        case V8HFmode:
          if (pattern14 (x3, V8HFmode) != 0
              || !(
#line 1541 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1470; /* mulv8hf3 */

        case V2SFmode:
          if (pattern14 (x3, V2SFmode) != 0
              || !
#line 1541 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1471; /* mulv2sf3 */

        case V4SFmode:
          if (pattern14 (x3, V4SFmode) != 0
              || !
#line 1541 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1472; /* mulv4sf3 */

        case V2DFmode:
          if (pattern14 (x3, V2DFmode) != 0
              || !
#line 1541 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1473; /* mulv2df3 */

        default:
          return -1;
        }

    case NEG:
      x6 = XEXP (x4, 0);
      switch (GET_CODE (x6))
        {
        case REG:
        case SUBREG:
          operands[1] = x6;
          x5 = XEXP (x3, 1);
          operands[2] = x5;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern108 (x3, SImode) != 0)
                return -1;
              return 373; /* *mulsi_neg */

            case DImode:
              if (pattern108 (x3, DImode) != 0)
                return -1;
              return 374; /* *muldi_neg */

            case SFmode:
              if (pattern108 (x3, SFmode) != 0
                  || !
#line 4750 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && !flag_rounding_math))
                return -1;
              return 886; /* *fnmulsf3 */

            case DFmode:
              if (pattern108 (x3, DFmode) != 0
                  || !
#line 4750 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && !flag_rounding_math))
                return -1;
              return 887; /* *fnmuldf3 */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          if (pattern139 (x3, SIGN_EXTEND) != 0)
            return -1;
          return 382; /* *mulsidi_neg */

        case ZERO_EXTEND:
          if (pattern139 (x3, ZERO_EXTEND) != 0)
            return -1;
          return 383; /* *umulsidi_neg */

        default:
          return -1;
        }

    case SIGN_EXTEND:
      switch (pattern53 (x3, SIGN_EXTEND))
        {
        case 0:
          return 376; /* mulsidi3 */

        case 1:
          if (vect_par_cnst_lo_half (operands[3], V16QImode)
              && 
#line 1447 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1447; /* aarch64_simd_vec_smult_lo_v16qi */
          if (!vect_par_cnst_hi_half (operands[3], V16QImode)
              || !
#line 1474 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1453; /* aarch64_simd_vec_smult_hi_v16qi */

        case 2:
          if (vect_par_cnst_lo_half (operands[3], V8HImode)
              && 
#line 1447 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1449; /* aarch64_simd_vec_smult_lo_v8hi */
          if (!vect_par_cnst_hi_half (operands[3], V8HImode)
              || !
#line 1474 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1455; /* aarch64_simd_vec_smult_hi_v8hi */

        case 3:
          if (vect_par_cnst_lo_half (operands[3], V4SImode)
              && 
#line 1447 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1451; /* aarch64_simd_vec_smult_lo_v4si */
          if (!vect_par_cnst_hi_half (operands[3], V4SImode)
              || !
#line 1474 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1457; /* aarch64_simd_vec_smult_hi_v4si */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern53 (x3, ZERO_EXTEND))
        {
        case 0:
          return 377; /* umulsidi3 */

        case 1:
          if (vect_par_cnst_lo_half (operands[3], V16QImode)
              && 
#line 1447 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1448; /* aarch64_simd_vec_umult_lo_v16qi */
          if (!vect_par_cnst_hi_half (operands[3], V16QImode)
              || !
#line 1474 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1454; /* aarch64_simd_vec_umult_hi_v16qi */

        case 2:
          if (vect_par_cnst_lo_half (operands[3], V8HImode)
              && 
#line 1447 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1450; /* aarch64_simd_vec_umult_lo_v8hi */
          if (!vect_par_cnst_hi_half (operands[3], V8HImode)
              || !
#line 1474 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1456; /* aarch64_simd_vec_umult_hi_v8hi */

        case 3:
          if (vect_par_cnst_lo_half (operands[3], V4SImode)
              && 
#line 1447 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1452; /* aarch64_simd_vec_umult_lo_v4si */
          if (!vect_par_cnst_hi_half (operands[3], V4SImode)
              || !
#line 1474 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1458; /* aarch64_simd_vec_umult_hi_v4si */

        default:
          return -1;
        }

    case VEC_DUPLICATE:
      switch (pattern54 (x3))
        {
        case 0:
          switch (GET_MODE (operands[0]))
            {
            case V4HImode:
              if (pattern289 (x3, V4HImode, HImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V4HImode:
                  if (!register_operand (operands[1], V4HImode)
                      || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1079; /* *aarch64_mul3_eltv4hi */

                case V8HImode:
                  if (!register_operand (operands[1], V8HImode)
                      || !
#line 365 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1088; /* *aarch64_mul3_elt_to_128v4hi */

                default:
                  return -1;
                }

            case V8HImode:
              if (pattern289 (x3, V8HImode, HImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V8HImode:
                  if (!register_operand (operands[1], V8HImode)
                      || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1080; /* *aarch64_mul3_eltv8hi */

                case V4HImode:
                  if (!register_operand (operands[1], V4HImode)
                      || !
#line 365 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1089; /* *aarch64_mul3_elt_to_64v8hi */

                default:
                  return -1;
                }

            case V2SImode:
              if (pattern289 (x3, V2SImode, SImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V2SImode:
                  if (!register_operand (operands[1], V2SImode)
                      || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1081; /* *aarch64_mul3_eltv2si */

                case V4SImode:
                  if (!register_operand (operands[1], V4SImode)
                      || !
#line 365 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1090; /* *aarch64_mul3_elt_to_128v2si */

                default:
                  return -1;
                }

            case V4SImode:
              if (pattern289 (x3, V4SImode, SImode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V4SImode:
                  if (!register_operand (operands[1], V4SImode)
                      || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1082; /* *aarch64_mul3_eltv4si */

                case V2SImode:
                  if (!register_operand (operands[1], V2SImode)
                      || !
#line 365 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1091; /* *aarch64_mul3_elt_to_64v4si */

                default:
                  return -1;
                }

            case V4HFmode:
              if (pattern290 (x3, V4HFmode, HFmode) != 0
                  || !(
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1083; /* *aarch64_mul3_eltv4hf */

            case V8HFmode:
              if (pattern290 (x3, V8HFmode, HFmode) != 0
                  || !(
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 235 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1084; /* *aarch64_mul3_eltv8hf */

            case V2SFmode:
              if (pattern289 (x3, V2SFmode, SFmode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V2SFmode:
                  if (!register_operand (operands[1], V2SFmode)
                      || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1085; /* *aarch64_mul3_eltv2sf */

                case V4SFmode:
                  if (!register_operand (operands[1], V4SFmode)
                      || !
#line 365 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1092; /* *aarch64_mul3_elt_to_128v2sf */

                default:
                  return -1;
                }

            case V4SFmode:
              if (pattern289 (x3, V4SFmode, SFmode) != 0)
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case V4SFmode:
                  if (!register_operand (operands[1], V4SFmode)
                      || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1086; /* *aarch64_mul3_eltv4sf */

                case V2SFmode:
                  if (!register_operand (operands[1], V2SFmode)
                      || !
#line 365 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 1093; /* *aarch64_mul3_elt_to_64v4sf */

                default:
                  return -1;
                }

            case V2DFmode:
              if (pattern290 (x3, V2DFmode, DFmode) != 0
                  || !
#line 349 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1087; /* *aarch64_mul3_eltv2df */

            default:
              return -1;
            }

        case 1:
          switch (GET_MODE (operands[0]))
            {
            case V4HImode:
              if (pattern231 (x3, V4HImode, HImode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1094; /* *aarch64_mul3_elt_from_dupv4hi */

            case V8HImode:
              if (pattern231 (x3, V8HImode, HImode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1095; /* *aarch64_mul3_elt_from_dupv8hi */

            case V2SImode:
              if (pattern231 (x3, V2SImode, SImode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1096; /* *aarch64_mul3_elt_from_dupv2si */

            case V4SImode:
              if (pattern231 (x3, V4SImode, SImode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1097; /* *aarch64_mul3_elt_from_dupv4si */

            case V4HFmode:
              if (pattern231 (x3, V4HFmode, HFmode) != 0
                  || !(
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 234 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1098; /* *aarch64_mul3_elt_from_dupv4hf */

            case V8HFmode:
              if (pattern231 (x3, V8HFmode, HFmode) != 0
                  || !(
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 235 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
                return -1;
              return 1099; /* *aarch64_mul3_elt_from_dupv8hf */

            case V2SFmode:
              if (pattern231 (x3, V2SFmode, SFmode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1100; /* *aarch64_mul3_elt_from_dupv2sf */

            case V4SFmode:
              if (pattern231 (x3, V4SFmode, SFmode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1101; /* *aarch64_mul3_elt_from_dupv4sf */

            case V2DFmode:
              if (pattern231 (x3, V2DFmode, DFmode) != 0
                  || !
#line 380 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1102; /* *aarch64_mul3_elt_from_dupv2df */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case VEC_SELECT:
      if (pattern55 (x3) != 0)
        return -1;
      x5 = XEXP (x3, 1);
      operands[3] = x5;
      if (!register_operand (operands[3], DFmode)
          || !
#line 419 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1119; /* *aarch64_mul3_elt_to_64v2df */

    default:
      return -1;
    }
}

static int
recog_94 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != VEC_DUPLICATE)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  x5 = XEXP (x2, 2);
  operands[2] = x5;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  x6 = XEXP (x3, 0);
  switch (GET_CODE (x6))
    {
    case CONST_INT:
    case CONST_WIDE_INT:
    case CONST_FIXED:
    case CONST_DOUBLE:
    case CONST_VECTOR:
    case CONST:
    case REG:
    case SUBREG:
    case MEM:
    case LABEL_REF:
    case SYMBOL_REF:
    case HIGH:
      operands[1] = x6;
      x7 = XEXP (x2, 1);
      operands[3] = x7;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern271 (x2, V8QImode, QImode) != 0
              || !
#line 530 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1190; /* aarch64_simd_vec_setv8qi */

        case V16QImode:
          if (pattern271 (x2, V16QImode, QImode) != 0
              || !
#line 530 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1191; /* aarch64_simd_vec_setv16qi */

        case V4HImode:
          if (pattern271 (x2, V4HImode, HImode) != 0
              || !
#line 530 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1192; /* aarch64_simd_vec_setv4hi */

        case V8HImode:
          if (pattern271 (x2, V8HImode, HImode) != 0
              || !
#line 530 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1193; /* aarch64_simd_vec_setv8hi */

        case V2SImode:
          if (pattern271 (x2, V2SImode, SImode) != 0
              || !
#line 530 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1194; /* aarch64_simd_vec_setv2si */

        case V4SImode:
          if (pattern271 (x2, V4SImode, SImode) != 0
              || !
#line 530 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1195; /* aarch64_simd_vec_setv4si */

        case V2DImode:
          if (pattern272 (x2, V2DImode, DImode) != 0
              || !
#line 896 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1263; /* aarch64_simd_vec_setv2di */

        case V4HFmode:
          if (pattern272 (x2, V4HFmode, HFmode) != 0
              || !
#line 933 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1264; /* aarch64_simd_vec_setv4hf */

        case V8HFmode:
          if (pattern272 (x2, V8HFmode, HFmode) != 0
              || !
#line 933 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1265; /* aarch64_simd_vec_setv8hf */

        case V2SFmode:
          if (pattern272 (x2, V2SFmode, SFmode) != 0
              || !
#line 933 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1266; /* aarch64_simd_vec_setv2sf */

        case V4SFmode:
          if (pattern272 (x2, V4SFmode, SFmode) != 0
              || !
#line 933 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1267; /* aarch64_simd_vec_setv4sf */

        case V2DFmode:
          if (pattern272 (x2, V2DFmode, DFmode) != 0
              || !
#line 933 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1268; /* aarch64_simd_vec_setv2df */

        default:
          return -1;
        }

    case VEC_SELECT:
      x8 = XEXP (x6, 1);
      if (GET_CODE (x8) != PARALLEL
          || XVECLEN (x8, 0) != 1)
        return -1;
      x9 = XEXP (x6, 0);
      operands[3] = x9;
      x10 = XVECEXP (x8, 0, 0);
      operands[4] = x10;
      if (!immediate_operand (operands[4], SImode))
        return -1;
      x7 = XEXP (x2, 1);
      operands[1] = x7;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern331 (x2, V8QImode, QImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V8QImode:
              if (!register_operand (operands[3], V8QImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1196; /* *aarch64_simd_vec_copy_lanev8qi */

            case V16QImode:
              if (!register_operand (operands[3], V16QImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1206; /* *aarch64_simd_vec_copy_lane_to_128v8qi */

            default:
              return -1;
            }

        case V16QImode:
          if (pattern331 (x2, V16QImode, QImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V16QImode:
              if (!register_operand (operands[3], V16QImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1197; /* *aarch64_simd_vec_copy_lanev16qi */

            case V8QImode:
              if (!register_operand (operands[3], V8QImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1207; /* *aarch64_simd_vec_copy_lane_to_64v16qi */

            default:
              return -1;
            }

        case V4HImode:
          if (pattern331 (x2, V4HImode, HImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V4HImode:
              if (!register_operand (operands[3], V4HImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1198; /* *aarch64_simd_vec_copy_lanev4hi */

            case V8HImode:
              if (!register_operand (operands[3], V8HImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1208; /* *aarch64_simd_vec_copy_lane_to_128v4hi */

            default:
              return -1;
            }

        case V8HImode:
          if (pattern331 (x2, V8HImode, HImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V8HImode:
              if (!register_operand (operands[3], V8HImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1199; /* *aarch64_simd_vec_copy_lanev8hi */

            case V4HImode:
              if (!register_operand (operands[3], V4HImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1209; /* *aarch64_simd_vec_copy_lane_to_64v8hi */

            default:
              return -1;
            }

        case V2SImode:
          if (pattern331 (x2, V2SImode, SImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V2SImode:
              if (!register_operand (operands[3], V2SImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1200; /* *aarch64_simd_vec_copy_lanev2si */

            case V4SImode:
              if (!register_operand (operands[3], V4SImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1210; /* *aarch64_simd_vec_copy_lane_to_128v2si */

            default:
              return -1;
            }

        case V4SImode:
          if (pattern331 (x2, V4SImode, SImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V4SImode:
              if (!register_operand (operands[3], V4SImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1201; /* *aarch64_simd_vec_copy_lanev4si */

            case V2SImode:
              if (!register_operand (operands[3], V2SImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1211; /* *aarch64_simd_vec_copy_lane_to_64v4si */

            default:
              return -1;
            }

        case V2DImode:
          if (pattern331 (x2, V2DImode, DImode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V2DImode:
              if (!register_operand (operands[3], V2DImode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1202; /* *aarch64_simd_vec_copy_lanev2di */

            case DImode:
              if (!register_operand (operands[3], DImode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1212; /* *aarch64_simd_vec_copy_lane_to_64v2di */

            default:
              return -1;
            }

        case V2SFmode:
          if (pattern331 (x2, V2SFmode, SFmode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V2SFmode:
              if (!register_operand (operands[3], V2SFmode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1203; /* *aarch64_simd_vec_copy_lanev2sf */

            case V4SFmode:
              if (!register_operand (operands[3], V4SFmode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1213; /* *aarch64_simd_vec_copy_lane_to_128v2sf */

            default:
              return -1;
            }

        case V4SFmode:
          if (pattern331 (x2, V4SFmode, SFmode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V4SFmode:
              if (!register_operand (operands[3], V4SFmode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1204; /* *aarch64_simd_vec_copy_lanev4sf */

            case V2SFmode:
              if (!register_operand (operands[3], V2SFmode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1214; /* *aarch64_simd_vec_copy_lane_to_64v4sf */

            default:
              return -1;
            }

        case V2DFmode:
          if (pattern331 (x2, V2DFmode, DFmode) != 0)
            return -1;
          switch (GET_MODE (operands[3]))
            {
            case V2DFmode:
              if (!register_operand (operands[3], V2DFmode)
                  || !
#line 559 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1205; /* *aarch64_simd_vec_copy_lanev2df */

            case DFmode:
              if (!register_operand (operands[3], DFmode)
                  || !
#line 580 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1215; /* *aarch64_simd_vec_copy_lane_to_64v2df */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_95 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case HFmode:
          if (!register_operand (operands[0], HFmode)
              || GET_MODE (x3) != HFmode
              || !register_operand (operands[1], HFmode)
              || !(
#line 4814 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 899; /* abshf2 */

        case SFmode:
          if (!register_operand (operands[0], SFmode)
              || GET_MODE (x3) != SFmode
              || !register_operand (operands[1], SFmode)
              || !
#line 4814 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 900; /* abssf2 */

        case DFmode:
          if (!register_operand (operands[0], DFmode)
              || GET_MODE (x3) != DFmode
              || !register_operand (operands[1], DFmode)
              || !
#line 4814 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 901; /* absdf2 */

        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || !register_operand (operands[1], V8QImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1127; /* absv8qi2 */

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode
              || !register_operand (operands[1], V16QImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1128; /* absv16qi2 */

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || !register_operand (operands[1], V4HImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1129; /* absv4hi2 */

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode
              || !register_operand (operands[1], V8HImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1130; /* absv8hi2 */

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || !register_operand (operands[1], V2SImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1131; /* absv2si2 */

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode
              || !register_operand (operands[1], V4SImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1132; /* absv4si2 */

        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x3) != V2DImode
              || !register_operand (operands[1], V2DImode)
              || !
#line 438 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1133; /* absv2di2 */

        case V4HFmode:
          if (!register_operand (operands[0], V4HFmode)
              || GET_MODE (x3) != V4HFmode
              || !register_operand (operands[1], V4HFmode)
              || !(
#line 1578 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1484; /* absv4hf2 */

        case V8HFmode:
          if (!register_operand (operands[0], V8HFmode)
              || GET_MODE (x3) != V8HFmode
              || !register_operand (operands[1], V8HFmode)
              || !(
#line 1578 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1485; /* absv8hf2 */

        case V2SFmode:
          if (!register_operand (operands[0], V2SFmode)
              || GET_MODE (x3) != V2SFmode
              || !register_operand (operands[1], V2SFmode)
              || !
#line 1578 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1486; /* absv2sf2 */

        case V4SFmode:
          if (!register_operand (operands[0], V4SFmode)
              || GET_MODE (x3) != V4SFmode
              || !register_operand (operands[1], V4SFmode)
              || !
#line 1578 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1487; /* absv4sf2 */

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x3) != V2DFmode
              || !register_operand (operands[1], V2DFmode)
              || !
#line 1578 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1488; /* absv2df2 */

        default:
          return -1;
        }

    case MINUS:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern116 (x3, V8QImode) != 0
              || !
#line 461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1142; /* abdv8qi_3 */

        case V16QImode:
          if (pattern116 (x3, V16QImode) != 0
              || !
#line 461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1143; /* abdv16qi_3 */

        case V4HImode:
          if (pattern116 (x3, V4HImode) != 0
              || !
#line 461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1144; /* abdv4hi_3 */

        case V8HImode:
          if (pattern116 (x3, V8HImode) != 0
              || !
#line 461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1145; /* abdv8hi_3 */

        case V2SImode:
          if (pattern116 (x3, V2SImode) != 0
              || !
#line 461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1146; /* abdv2si_3 */

        case V4SImode:
          if (pattern116 (x3, V4SImode) != 0
              || !
#line 461 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1147; /* abdv4si_3 */

        case V4HFmode:
          if (pattern116 (x3, V4HFmode) != 0
              || !(
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 108 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1154; /* fabdv4hf3 */

        case V8HFmode:
          if (pattern116 (x3, V8HFmode) != 0
              || !(
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1155; /* fabdv8hf3 */

        case V2SFmode:
          if (pattern116 (x3, V2SFmode) != 0
              || !
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1156; /* fabdv2sf3 */

        case V4SFmode:
          if (pattern116 (x3, V4SFmode) != 0
              || !
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1157; /* fabdv4sf3 */

        case V2DFmode:
          if (pattern116 (x3, V2DFmode) != 0
              || !
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1158; /* fabdv2df3 */

        case HFmode:
          if (pattern116 (x3, HFmode) != 0
              || !(
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1159; /* fabdhf3 */

        case SFmode:
          if (pattern116 (x3, SFmode) != 0
              || !
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1160; /* fabdsf3 */

        case DFmode:
          if (pattern116 (x3, DFmode) != 0
              || !
#line 483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1161; /* fabddf3 */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_96 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  switch (GET_CODE (x2))
    {
    case LABEL_REF:
      x3 = XEXP (x1, 0);
      if (GET_CODE (x3) == PC)
        {
          x4 = XEXP (x2, 0);
          operands[0] = x4;
          return 2; /* jump */
        }
      break;

    case CONST_INT:
    case REG:
    case SUBREG:
    case MEM:
      switch (GET_CODE (x2))
        {
        case REG:
        case SUBREG:
          res = recog_3 (x1, insn, pnum_clobbers);
          if (res >= 0)
            return res;
          break;

        case CONST_INT:
          res = recog_4 (x1, insn, pnum_clobbers);
          if (res >= 0)
            return res;
          break;

        default:
          break;
        }
      operands[1] = x2;
      if (aarch64_movti_operand (operands[1], TImode))
        {
          x3 = XEXP (x1, 0);
          operands[0] = x3;
          if (nonimmediate_operand (operands[0], TImode)
              && 
#line 1119 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
((register_operand (operands[0], TImode)
    || aarch64_reg_or_zero (operands[1], TImode))))
            return 53; /* *movti_aarch64 */
        }
      break;

    default:
      break;
    }
  operands[1] = x2;
  x3 = XEXP (x1, 0);
  operands[0] = x3;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (nonimmediate_operand (operands[0], SImode)
          && aarch64_mov_operand (operands[1], SImode)
          && 
#line 1030 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
((register_operand (operands[0], SImode)
    || aarch64_reg_or_zero (operands[1], SImode))))
        return 49; /* *movsi_aarch64 */
      break;

    case DImode:
      if (nonimmediate_operand (operands[0], DImode)
          && aarch64_mov_operand (operands[1], DImode)
          && 
#line 1062 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
((register_operand (operands[0], DImode)
    || aarch64_reg_or_zero (operands[1], DImode))))
        return 50; /* *movdi_aarch64 */
      break;

    default:
      break;
    }
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      if (nonimmediate_operand (operands[0], QImode)
          && general_operand (operands[1], QImode)
          && 
#line 973 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
((register_operand (operands[0], QImode)
    || aarch64_reg_or_zero (operands[1], QImode))))
        return 47; /* *movqi_aarch64 */
      break;

    case HImode:
      if (nonimmediate_operand (operands[0], HImode)
          && general_operand (operands[1], HImode)
          && 
#line 973 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
((register_operand (operands[0], HImode)
    || aarch64_reg_or_zero (operands[1], HImode))))
        return 48; /* *movhi_aarch64 */
      break;

    case HFmode:
      if (nonimmediate_operand (operands[0], HFmode)
          && general_operand (operands[1], HFmode)
          && 
#line 1172 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (register_operand (operands[0], HFmode)
    || aarch64_reg_or_fp_zero (operands[1], HFmode))))
        return 54; /* *movhf_aarch64 */
      break;

    case SFmode:
      if (nonimmediate_operand (operands[0], SFmode)
          && general_operand (operands[1], SFmode)
          && 
#line 1192 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (register_operand (operands[0], SFmode)
    || aarch64_reg_or_fp_zero (operands[1], SFmode))))
        return 55; /* *movsf_aarch64 */
      break;

    case DFmode:
      if (nonimmediate_operand (operands[0], DFmode)
          && general_operand (operands[1], DFmode)
          && 
#line 1213 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (register_operand (operands[0], DFmode)
    || aarch64_reg_or_fp_zero (operands[1], DFmode))))
        return 56; /* *movdf_aarch64 */
      break;

    case TFmode:
      if (nonimmediate_operand (operands[0], TFmode)
          && general_operand (operands[1], TFmode)
          && 
#line 1236 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (register_operand (operands[0], TFmode)
    || aarch64_reg_or_fp_zero (operands[1], TFmode))))
        return 57; /* *movtf_aarch64 */
      break;

    case V8QImode:
      if (nonimmediate_operand (operands[0], V8QImode)
          && general_operand (operands[1], V8QImode)
          && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V8QImode)
       || register_operand (operands[1], V8QImode))))
        return 1002; /* *aarch64_simd_movv8qi */
      break;

    case V4HImode:
      if (nonimmediate_operand (operands[0], V4HImode)
          && general_operand (operands[1], V4HImode)
          && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V4HImode)
       || register_operand (operands[1], V4HImode))))
        return 1003; /* *aarch64_simd_movv4hi */
      break;

    case V4HFmode:
      if (nonimmediate_operand (operands[0], V4HFmode)
          && general_operand (operands[1], V4HFmode)
          && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V4HFmode)
       || register_operand (operands[1], V4HFmode))))
        return 1004; /* *aarch64_simd_movv4hf */
      break;

    case V2SImode:
      if (nonimmediate_operand (operands[0], V2SImode)
          && general_operand (operands[1], V2SImode)
          && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V2SImode)
       || register_operand (operands[1], V2SImode))))
        return 1005; /* *aarch64_simd_movv2si */
      break;

    case V2SFmode:
      if (nonimmediate_operand (operands[0], V2SFmode)
          && general_operand (operands[1], V2SFmode)
          && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V2SFmode)
       || register_operand (operands[1], V2SFmode))))
        return 1006; /* *aarch64_simd_movv2sf */
      break;

    case V16QImode:
      if (nonimmediate_operand (operands[0], V16QImode)
          && general_operand (operands[1], V16QImode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V16QImode)
       || register_operand (operands[1], V16QImode))))
        return 1007; /* *aarch64_simd_movv16qi */
      break;

    case V8HImode:
      if (nonimmediate_operand (operands[0], V8HImode)
          && general_operand (operands[1], V8HImode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V8HImode)
       || register_operand (operands[1], V8HImode))))
        return 1008; /* *aarch64_simd_movv8hi */
      break;

    case V4SImode:
      if (nonimmediate_operand (operands[0], V4SImode)
          && general_operand (operands[1], V4SImode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V4SImode)
       || register_operand (operands[1], V4SImode))))
        return 1009; /* *aarch64_simd_movv4si */
      break;

    case V2DImode:
      if (nonimmediate_operand (operands[0], V2DImode)
          && general_operand (operands[1], V2DImode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V2DImode)
       || register_operand (operands[1], V2DImode))))
        return 1010; /* *aarch64_simd_movv2di */
      break;

    case V8HFmode:
      if (nonimmediate_operand (operands[0], V8HFmode)
          && general_operand (operands[1], V8HFmode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V8HFmode)
       || register_operand (operands[1], V8HFmode))))
        return 1011; /* *aarch64_simd_movv8hf */
      break;

    case V4SFmode:
      if (nonimmediate_operand (operands[0], V4SFmode)
          && general_operand (operands[1], V4SFmode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V4SFmode)
       || register_operand (operands[1], V4SFmode))))
        return 1012; /* *aarch64_simd_movv4sf */
      break;

    case V2DFmode:
      if (nonimmediate_operand (operands[0], V2DFmode)
          && general_operand (operands[1], V2DFmode)
          && 
#line 128 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && (register_operand (operands[0], V2DFmode)
       || register_operand (operands[1], V2DFmode))))
        return 1013; /* *aarch64_simd_movv2df */
      break;

    case OImode:
      if (aarch64_simd_nonimmediate_operand (operands[0], OImode)
          && aarch64_simd_general_operand (operands[1], OImode)
          && 
#line 4726 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN
   && (register_operand (operands[0], OImode)
       || register_operand (operands[1], OImode))))
        return 2822; /* *aarch64_movoi */
      if (nonimmediate_operand (operands[0], OImode)
          && general_operand (operands[1], OImode)
          && 
#line 4760 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN
   && (register_operand (operands[0], OImode)
       || register_operand (operands[1], OImode))))
        return 2851; /* *aarch64_be_movoi */
      break;

    case CImode:
      if (aarch64_simd_nonimmediate_operand (operands[0], CImode)
          && aarch64_simd_general_operand (operands[1], CImode)
          && 
#line 4726 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN
   && (register_operand (operands[0], CImode)
       || register_operand (operands[1], CImode))))
        return 2823; /* *aarch64_movci */
      if (nonimmediate_operand (operands[0], CImode)
          && general_operand (operands[1], CImode)
          && 
#line 4774 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN
   && (register_operand (operands[0], CImode)
       || register_operand (operands[1], CImode))))
        return 2852; /* *aarch64_be_movci */
      break;

    case XImode:
      if (aarch64_simd_nonimmediate_operand (operands[0], XImode)
          && aarch64_simd_general_operand (operands[1], XImode)
          && 
#line 4726 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN
   && (register_operand (operands[0], XImode)
       || register_operand (operands[1], XImode))))
        return 2824; /* *aarch64_movxi */
      if (nonimmediate_operand (operands[0], XImode)
          && general_operand (operands[1], XImode)
          && 
#line 4785 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN
   && (register_operand (operands[0], XImode)
       || register_operand (operands[1], XImode))))
        return 2853; /* *aarch64_be_movxi */
      break;

    default:
      break;
    }
  if (GET_CODE (x2) != SUBREG
      || XINT (x2, 1) != 0)
    return -1;
  return recog_5 (x1, insn, pnum_clobbers);
}

static int
recog_97 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case VEC_DUPLICATE:
      x5 = XEXP (x4, 0);
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x6 = XEXP (x3, 1);
      operands[1] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V16QImode:
          if (pattern212 (x3, V8QImode, V16QImode) != 0
              || !
#line 1164 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1372; /* move_lo_quad_internal_be_v16qi */

        case V8HImode:
          if (pattern212 (x3, V4HImode, V8HImode) != 0
              || !
#line 1164 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1373; /* move_lo_quad_internal_be_v8hi */

        case V4SImode:
          if (pattern212 (x3, V2SImode, V4SImode) != 0
              || !
#line 1164 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1374; /* move_lo_quad_internal_be_v4si */

        case V8HFmode:
          if (pattern212 (x3, V4HFmode, V8HFmode) != 0
              || !
#line 1164 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1375; /* move_lo_quad_internal_be_v8hf */

        case V4SFmode:
          if (pattern212 (x3, V2SFmode, V4SFmode) != 0
              || !
#line 1164 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1376; /* move_lo_quad_internal_be_v4sf */

        default:
          return -1;
        }

    case VEC_SELECT:
      x7 = XEXP (x4, 1);
      operands[2] = x7;
      x6 = XEXP (x3, 1);
      operands[1] = x6;
      x5 = XEXP (x4, 0);
      if (!rtx_equal_p (x5, operands[0]))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case V16QImode:
          if (pattern235 (x3, V8QImode, V16QImode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1379; /* aarch64_simd_move_hi_quad_v16qi */

        case V8HImode:
          if (pattern235 (x3, V4HImode, V8HImode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1380; /* aarch64_simd_move_hi_quad_v8hi */

        case V4SImode:
          if (pattern235 (x3, V2SImode, V4SImode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1381; /* aarch64_simd_move_hi_quad_v4si */

        case V2DImode:
          if (pattern235 (x3, DImode, V2DImode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1382; /* aarch64_simd_move_hi_quad_v2di */

        case V8HFmode:
          if (pattern235 (x3, V4HFmode, V8HFmode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1383; /* aarch64_simd_move_hi_quad_v8hf */

        case V4SFmode:
          if (pattern235 (x3, V2SFmode, V4SFmode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1384; /* aarch64_simd_move_hi_quad_v4sf */

        case V2DFmode:
          if (pattern235 (x3, DFmode, V2DFmode) != 0
              || !
#line 1216 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
            return -1;
          return 1385; /* aarch64_simd_move_hi_quad_v2df */

        default:
          return -1;
        }

    case TRUNCATE:
      x6 = XEXP (x3, 1);
      if (GET_CODE (x6) != TRUNCATE)
        return -1;
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x8 = XEXP (x6, 0);
      operands[2] = x8;
      switch (GET_MODE (operands[0]))
        {
        case V16QImode:
          if (pattern236 (x3, V8HImode, V8QImode, V16QImode) != 0
              || !
#line 1286 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1396; /* vec_pack_trunc_v8hi */

        case V8HImode:
          if (pattern236 (x3, V4SImode, V4HImode, V8HImode) != 0
              || !
#line 1286 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1397; /* vec_pack_trunc_v4si */

        case V4SImode:
          if (pattern236 (x3, V2DImode, V2SImode, V4SImode) != 0
              || !
#line 1286 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1398; /* vec_pack_trunc_v2di */

        default:
          return -1;
        }

    case FLOAT_TRUNCATE:
      x5 = XEXP (x4, 0);
      operands[2] = x5;
      x6 = XEXP (x3, 1);
      operands[1] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V4SFmode:
          if (pattern213 (x3, V2SFmode, V2DFmode, V4SFmode) != 0
              || !
#line 1957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1674; /* aarch64_float_truncate_hi_v4sf_be */

        case V8HFmode:
          if (pattern213 (x3, V4HFmode, V4SFmode, V8HFmode) != 0
              || !
#line 1957 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
            return -1;
          return 1675; /* aarch64_float_truncate_hi_v8hf_be */

        default:
          return -1;
        }

    case CONST_INT:
    case CONST_WIDE_INT:
    case CONST_FIXED:
    case CONST_DOUBLE:
    case CONST_VECTOR:
    case CONST:
    case REG:
    case SUBREG:
    case MEM:
    case LABEL_REF:
    case SYMBOL_REF:
    case HIGH:
      switch (GET_CODE (x4))
        {
        case REG:
        case SUBREG:
          res = recog_88 (x1, insn, pnum_clobbers);
          if (res >= 0)
            return res;
          break;

        case CONST_INT:
          if (XWINT (x4, 0) == 0L)
            {
              x6 = XEXP (x3, 1);
              operands[1] = x6;
              switch (GET_MODE (operands[0]))
                {
                case V2DImode:
                  if (register_operand (operands[0], V2DImode)
                      && GET_MODE (x3) == V2DImode
                      && register_operand (operands[1], DImode)
                      && 
#line 1180 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return 1377; /* move_lo_quad_internal_be_v2di */
                  break;

                case V2DFmode:
                  if (register_operand (operands[0], V2DFmode)
                      && GET_MODE (x3) == V2DFmode
                      && register_operand (operands[1], DFmode)
                      && 
#line 1180 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                    return 1378; /* move_lo_quad_internal_be_v2df */
                  break;

                default:
                  break;
                }
            }
          break;

        default:
          break;
        }
      switch (GET_MODE (operands[0]))
        {
        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode)
            return -1;
          operands[1] = x4;
          if (general_operand (operands[1], V8QImode))
            {
              x6 = XEXP (x3, 1);
              operands[2] = x6;
              if (aarch64_simd_imm_zero (operands[2], V8QImode)
                  && 
#line 2716 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return 1818; /* *aarch64_combinezv8qi */
            }
          operands[2] = x4;
          if (aarch64_simd_imm_zero (operands[2], V8QImode))
            {
              x6 = XEXP (x3, 1);
              operands[1] = x6;
              if (general_operand (operands[1], V8QImode)
                  && 
#line 2731 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                return 1821; /* *aarch64_combinez_bev8qi */
            }
          operands[1] = x4;
          if (!register_operand (operands[1], V8QImode))
            return -1;
          x6 = XEXP (x3, 1);
          operands[2] = x6;
          if (!register_operand (operands[2], V8QImode)
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1824; /* aarch64_combine_internalv8qi */

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode)
            return -1;
          operands[1] = x4;
          if (general_operand (operands[1], V4HImode))
            {
              x6 = XEXP (x3, 1);
              operands[2] = x6;
              if (aarch64_simd_imm_zero (operands[2], V4HImode)
                  && 
#line 2716 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return 1819; /* *aarch64_combinezv4hi */
            }
          operands[2] = x4;
          if (aarch64_simd_imm_zero (operands[2], V4HImode))
            {
              x6 = XEXP (x3, 1);
              operands[1] = x6;
              if (general_operand (operands[1], V4HImode)
                  && 
#line 2731 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                return 1822; /* *aarch64_combinez_bev4hi */
            }
          operands[1] = x4;
          if (!register_operand (operands[1], V4HImode))
            return -1;
          x6 = XEXP (x3, 1);
          operands[2] = x6;
          if (!register_operand (operands[2], V4HImode)
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1825; /* aarch64_combine_internalv4hi */

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode)
            return -1;
          operands[1] = x4;
          if (general_operand (operands[1], V2SImode))
            {
              x6 = XEXP (x3, 1);
              operands[2] = x6;
              if (aarch64_simd_imm_zero (operands[2], V2SImode)
                  && 
#line 2716 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && !BYTES_BIG_ENDIAN))
                return 1820; /* *aarch64_combinezv2si */
            }
          operands[2] = x4;
          if (aarch64_simd_imm_zero (operands[2], V2SImode))
            {
              x6 = XEXP (x3, 1);
              operands[1] = x6;
              if (general_operand (operands[1], V2SImode)
                  && 
#line 2731 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && BYTES_BIG_ENDIAN))
                return 1823; /* *aarch64_combinez_bev2si */
            }
          operands[1] = x4;
          if (!register_operand (operands[1], V2SImode))
            return -1;
          x6 = XEXP (x3, 1);
          operands[2] = x6;
          if (!register_operand (operands[2], V2SImode)
              || !
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1827; /* aarch64_combine_internalv2si */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_98 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  if (GET_CODE (x2) != REG
      || REGNO (x2) != 66)
    return -1;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case PLUS:
      x5 = XEXP (x3, 1);
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x2) != CC_NZmode
          || GET_MODE (x3) != CC_NZmode)
        return -1;
      x6 = XEXP (x4, 0);
      operands[0] = x6;
      x7 = XEXP (x4, 1);
      operands[1] = x7;
      switch (GET_MODE (x4))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || !aarch64_plus_operand (operands[1], SImode))
            return -1;
          return 182; /* *addsi3nr_compare0 */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || !aarch64_plus_operand (operands[1], DImode))
            return -1;
          return 183; /* *adddi3nr_compare0 */

        default:
          return -1;
        }

    case NEG:
      if (GET_MODE (x2) != CC_Zmode
          || GET_MODE (x3) != CC_Zmode)
        return -1;
      x6 = XEXP (x4, 0);
      operands[0] = x6;
      x5 = XEXP (x3, 1);
      operands[1] = x5;
      switch (GET_MODE (x4))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || !register_operand (operands[1], SImode))
            return -1;
          return 184; /* *compare_negsi */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || !register_operand (operands[1], DImode))
            return -1;
          return 185; /* *compare_negdi */

        default:
          return -1;
        }

    case REG:
    case SUBREG:
      operands[0] = x4;
      x5 = XEXP (x3, 1);
      operands[1] = x5;
      switch (GET_MODE (x2))
        {
        case CCmode:
          if (GET_MODE (x3) == CCmode)
            {
              switch (GET_MODE (operands[0]))
                {
                case SImode:
                  if (register_operand (operands[0], SImode)
                      && aarch64_plus_operand (operands[1], SImode))
                    return 392; /* cmpsi */
                  break;

                case DImode:
                  if (register_operand (operands[0], DImode)
                      && aarch64_plus_operand (operands[1], DImode))
                    return 393; /* cmpdi */
                  break;

                default:
                  break;
                }
            }
          break;

        case CCFPmode:
          switch (pattern226 (x3, CCFPmode))
            {
            case 0:
              if (
#line 2989 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return 394; /* fcmpsf */
              break;

            case 1:
              if (
#line 2989 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return 395; /* fcmpdf */
              break;

            default:
              break;
            }
          break;

        case CCFPEmode:
          switch (pattern226 (x3, CCFPEmode))
            {
            case 0:
              if (
#line 3000 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return 396; /* fcmpesf */
              break;

            case 1:
              if (
#line 3000 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return 397; /* fcmpedf */
              break;

            default:
              break;
            }
          break;

        default:
          break;
        }
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x2) != CC_NZmode
          || GET_MODE (x3) != CC_NZmode)
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case QImode:
          if (!register_operand (operands[0], QImode))
            return -1;
          return 624; /* *andqi_compare0 */

        case HImode:
          if (!register_operand (operands[0], HImode))
            return -1;
          return 625; /* *andhi_compare0 */

        default:
          return -1;
        }

    case ASHIFT:
      if (GET_MODE (x2) != CC_SWPmode
          || GET_MODE (x3) != CC_SWPmode)
        return -1;
      x7 = XEXP (x4, 1);
      operands[1] = x7;
      x5 = XEXP (x3, 1);
      operands[2] = x5;
      x6 = XEXP (x4, 0);
      switch (GET_CODE (x6))
        {
        case REG:
        case SUBREG:
          operands[0] = x6;
          switch (pattern120 (x4))
            {
            case 0:
              return 398; /* *cmp_swp_lsl_regsi */

            case 1:
              return 401; /* *cmp_swp_lsl_regdi */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern263 (x4))
            {
            case 0:
              return 416; /* *cmp_swp_extendqi_shft_si */

            case 1:
              return 420; /* *cmp_swp_extendhi_shft_si */

            case 2:
              return 424; /* *cmp_swp_extendsi_shft_si */

            case 3:
              return 418; /* *cmp_swp_extendqi_shft_di */

            case 4:
              return 422; /* *cmp_swp_extendhi_shft_di */

            case 5:
              return 426; /* *cmp_swp_extendsi_shft_di */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern263 (x4))
            {
            case 0:
              return 417; /* *cmp_swp_zero_extendqi_shft_si */

            case 1:
              return 421; /* *cmp_swp_zero_extendhi_shft_si */

            case 2:
              return 425; /* *cmp_swp_zero_extendsi_shft_si */

            case 3:
              return 419; /* *cmp_swp_zero_extendqi_shft_di */

            case 4:
              return 423; /* *cmp_swp_zero_extendhi_shft_di */

            case 5:
              return 427; /* *cmp_swp_zero_extendsi_shft_di */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern121 (x1))
        {
        case 0:
          return 399; /* *cmp_swp_asr_regsi */

        case 1:
          return 402; /* *cmp_swp_asr_regdi */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern121 (x1))
        {
        case 0:
          return 400; /* *cmp_swp_lsr_regsi */

        case 1:
          return 403; /* *cmp_swp_lsr_regdi */

        default:
          return -1;
        }

    case SIGN_EXTEND:
      switch (pattern123 (x1))
        {
        case 0:
          return 404; /* *cmp_swp_extendqi_regsi */

        case 1:
          return 408; /* *cmp_swp_extendhi_regsi */

        case 2:
          return 412; /* *cmp_swp_extendsi_regsi */

        case 3:
          return 406; /* *cmp_swp_extendqi_regdi */

        case 4:
          return 410; /* *cmp_swp_extendhi_regdi */

        case 5:
          return 414; /* *cmp_swp_extendsi_regdi */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern123 (x1))
        {
        case 0:
          return 405; /* *cmp_swp_zero_extendqi_regsi */

        case 1:
          return 409; /* *cmp_swp_zero_extendhi_regsi */

        case 2:
          return 413; /* *cmp_swp_zero_extendsi_regsi */

        case 3:
          return 407; /* *cmp_swp_zero_extendqi_regdi */

        case 4:
          return 411; /* *cmp_swp_zero_extendhi_regdi */

        case 5:
          return 415; /* *cmp_swp_zero_extendsi_regdi */

        default:
          return -1;
        }

    case AND:
      x5 = XEXP (x3, 1);
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x2) != CC_NZmode
          || GET_MODE (x3) != CC_NZmode)
        return -1;
      x6 = XEXP (x4, 0);
      switch (GET_CODE (x6))
        {
        case NOT:
          x8 = XEXP (x6, 0);
          switch (GET_CODE (x8))
            {
            case REG:
            case SUBREG:
              operands[0] = x8;
              x7 = XEXP (x4, 1);
              operands[1] = x7;
              switch (GET_MODE (x4))
                {
                case SImode:
                  if (GET_MODE (x6) != SImode
                      || !register_operand (operands[0], SImode)
                      || !register_operand (operands[1], SImode))
                    return -1;
                  return 558; /* *and_one_cmplsi3_compare0_no_reuse */

                case DImode:
                  if (GET_MODE (x6) != DImode
                      || !register_operand (operands[0], DImode)
                      || !register_operand (operands[1], DImode))
                    return -1;
                  return 559; /* *and_one_cmpldi3_compare0_no_reuse */

                default:
                  return -1;
                }

            case ASHIFT:
              switch (pattern264 (x4))
                {
                case 0:
                  return 608; /* *and_one_cmpl_ashlsi3_compare0_no_reuse */

                case 1:
                  return 612; /* *and_one_cmpl_ashldi3_compare0_no_reuse */

                default:
                  return -1;
                }

            case ASHIFTRT:
              switch (pattern264 (x4))
                {
                case 0:
                  return 609; /* *and_one_cmpl_ashrsi3_compare0_no_reuse */

                case 1:
                  return 613; /* *and_one_cmpl_ashrdi3_compare0_no_reuse */

                default:
                  return -1;
                }

            case LSHIFTRT:
              switch (pattern264 (x4))
                {
                case 0:
                  return 610; /* *and_one_cmpl_lshrsi3_compare0_no_reuse */

                case 1:
                  return 614; /* *and_one_cmpl_lshrdi3_compare0_no_reuse */

                default:
                  return -1;
                }

            case ROTATERT:
              switch (pattern264 (x4))
                {
                case 0:
                  return 611; /* *and_one_cmpl_rotrsi3_compare0_no_reuse */

                case 1:
                  return 615; /* *and_one_cmpl_rotrdi3_compare0_no_reuse */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case REG:
        case SUBREG:
          operands[0] = x6;
          x7 = XEXP (x4, 1);
          operands[1] = x7;
          switch (GET_MODE (x4))
            {
            case SImode:
              if (!register_operand (operands[0], SImode)
                  || !aarch64_logical_operand (operands[1], SImode))
                return -1;
              return 630; /* *andsi3nr_compare0 */

            case DImode:
              if (!register_operand (operands[0], DImode)
                  || !aarch64_logical_operand (operands[1], DImode))
                return -1;
              return 631; /* *anddi3nr_compare0 */

            default:
              return -1;
            }

        case ASHIFT:
          switch (pattern246 (x4))
            {
            case 0:
              return 634; /* *and_ashlsi3nr_compare0 */

            case 1:
              return 638; /* *and_ashldi3nr_compare0 */

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern246 (x4))
            {
            case 0:
              return 635; /* *and_ashrsi3nr_compare0 */

            case 1:
              return 639; /* *and_ashrdi3nr_compare0 */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern246 (x4))
            {
            case 0:
              return 636; /* *and_lshrsi3nr_compare0 */

            case 1:
              return 640; /* *and_lshrdi3nr_compare0 */

            default:
              return -1;
            }

        case ROTATERT:
          switch (pattern246 (x4))
            {
            case 0:
              return 637; /* *and_rotrsi3nr_compare0 */

            case 1:
              return 641; /* *and_rotrdi3nr_compare0 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ZERO_EXTRACT:
      x5 = XEXP (x3, 1);
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x2) != CC_NZmode
          || GET_MODE (x3) != CC_NZmode)
        return -1;
      x6 = XEXP (x4, 0);
      operands[0] = x6;
      x7 = XEXP (x4, 1);
      operands[1] = x7;
      x9 = XEXP (x4, 2);
      operands[2] = x9;
      switch (GET_MODE (x4))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || !const_int_operand (operands[1], SImode)
              || !const_int_operand (operands[2], SImode)
              || !
#line 3846 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[1]) > 0
   && ((INTVAL (operands[1]) + INTVAL (operands[2]))
	<= GET_MODE_BITSIZE (SImode))
   && aarch64_bitmask_imm (
	UINTVAL (aarch64_mask_from_zextract_ops (operands[1],
						 operands[2])),
	SImode)))
            return -1;
          return 632; /* *andsi3nr_compare0_zextract */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || !const_int_operand (operands[1], DImode)
              || !const_int_operand (operands[2], DImode)
              || !
#line 3846 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[1]) > 0
   && ((INTVAL (operands[1]) + INTVAL (operands[2]))
	<= GET_MODE_BITSIZE (DImode))
   && aarch64_bitmask_imm (
	UINTVAL (aarch64_mask_from_zextract_ops (operands[1],
						 operands[2])),
	DImode)))
            return -1;
          return 633; /* *anddi3nr_compare0_zextract */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_99 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || GET_MODE (x3) != SImode
              || !register_operand (operands[1], SImode))
            return -1;
          return 337; /* negsi2 */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || GET_MODE (x3) != DImode
              || !register_operand (operands[1], DImode))
            return -1;
          return 338; /* negdi2 */

        case HFmode:
          if (!register_operand (operands[0], HFmode)
              || GET_MODE (x3) != HFmode
              || !register_operand (operands[1], HFmode)
              || !(
#line 4789 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
            return -1;
          return 893; /* neghf2 */

        case SFmode:
          if (!register_operand (operands[0], SFmode)
              || GET_MODE (x3) != SFmode
              || !register_operand (operands[1], SFmode)
              || !
#line 4789 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 894; /* negsf2 */

        case DFmode:
          if (!register_operand (operands[0], DFmode)
              || GET_MODE (x3) != DFmode
              || !register_operand (operands[1], DFmode)
              || !
#line 4789 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 895; /* negdf2 */

        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || !register_operand (operands[1], V8QImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1120; /* negv8qi2 */

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode
              || !register_operand (operands[1], V16QImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1121; /* negv16qi2 */

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || !register_operand (operands[1], V4HImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1122; /* negv4hi2 */

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode
              || !register_operand (operands[1], V8HImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1123; /* negv8hi2 */

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || !register_operand (operands[1], V2SImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1124; /* negv2si2 */

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode
              || !register_operand (operands[1], V4SImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1125; /* negv4si2 */

        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x3) != V2DImode
              || !register_operand (operands[1], V2DImode)
              || !
#line 430 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1126; /* negv2di2 */

        case V4HFmode:
          if (!register_operand (operands[0], V4HFmode)
              || GET_MODE (x3) != V4HFmode
              || !register_operand (operands[1], V4HFmode)
              || !(
#line 1570 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1479; /* negv4hf2 */

        case V8HFmode:
          if (!register_operand (operands[0], V8HFmode)
              || GET_MODE (x3) != V8HFmode
              || !register_operand (operands[1], V8HFmode)
              || !(
#line 1570 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1480; /* negv8hf2 */

        case V2SFmode:
          if (!register_operand (operands[0], V2SFmode)
              || GET_MODE (x3) != V2SFmode
              || !register_operand (operands[1], V2SFmode)
              || !
#line 1570 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1481; /* negv2sf2 */

        case V4SFmode:
          if (!register_operand (operands[0], V4SFmode)
              || GET_MODE (x3) != V4SFmode
              || !register_operand (operands[1], V4SFmode)
              || !
#line 1570 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1482; /* negv4sf2 */

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x3) != V2DFmode
              || !register_operand (operands[1], V2DFmode)
              || !
#line 1570 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1483; /* negv2df2 */

        default:
          return -1;
        }

    case ASHIFT:
      switch (pattern52 (x3))
        {
        case 0:
          return 352; /* *neg_lsl_si2 */

        case 1:
          return 355; /* *neg_lsl_di2 */

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern52 (x3))
        {
        case 0:
          return 353; /* *neg_asr_si2 */

        case 1:
          return 356; /* *neg_asr_di2 */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern52 (x3))
        {
        case 0:
          return 354; /* *neg_lsr_si2 */

        case 1:
          return 357; /* *neg_lsr_di2 */

        default:
          return -1;
        }

    case MULT:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      switch (GET_CODE (operands[2]))
        {
        case CONST_INT:
          switch (pattern210 (x3))
            {
            case 0:
              return 361; /* *neg_mul_imm_si2 */

            case 1:
              return 362; /* *neg_mul_imm_di2 */

            default:
              return -1;
            }

        case REG:
        case SUBREG:
          switch (GET_MODE (operands[0]))
            {
            case SFmode:
              if (pattern116 (x3, SFmode) != 0
                  || !
#line 4760 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return -1;
              return 888; /* *fnmulsf3 */

            case DFmode:
              if (pattern116 (x3, DFmode) != 0
                  || !
#line 4760 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return -1;
              return 889; /* *fnmuldf3 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case NE:
    case EQ:
    case GE:
    case GT:
    case LE:
    case LT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNGE:
    case UNGT:
    case UNLE:
    case UNLT:
      return recog_14 (x1, insn, pnum_clobbers);

    case FMA:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      x7 = XEXP (x4, 2);
      operands[3] = x7;
      switch (GET_MODE (operands[0]))
        {
        case SFmode:
          if (pattern230 (x3, SFmode) != 0
              || !
#line 4548 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!HONOR_SIGNED_ZEROS (SFmode) && TARGET_FLOAT))
            return -1;
          return 825; /* *fnmaddsf4 */

        case DFmode:
          if (pattern230 (x3, DFmode) != 0
              || !
#line 4548 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!HONOR_SIGNED_ZEROS (DFmode) && TARGET_FLOAT))
            return -1;
          return 826; /* *fnmadddf4 */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_100 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern12 (x1))
    {
    case 0:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 752; /* lbtruncuhfsi2 */

    case 1:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 772; /* lbtruncusfsi2 */

    case 2:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 792; /* lbtruncudfsi2 */

    case 3:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 762; /* lbtruncuhfdi2 */

    case 4:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 782; /* lbtruncusfdi2 */

    case 5:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 802; /* lbtruncudfdi2 */

    case 6:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1569; /* lbtruncuv4hfv4hi2 */

    case 7:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1579; /* lbtruncuv8hfv8hi2 */

    case 8:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1589; /* lbtruncuv2sfv2si2 */

    case 9:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1599; /* lbtruncuv4sfv4si2 */

    case 10:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1609; /* lbtruncuv2dfv2di2 */

    case 11:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1619; /* lbtruncuhfhi2 */

    case 12:
      if (!
#line 1791 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && IN_RANGE (aarch64_vec_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (GET_MODE_INNER (V2SFmode)))))
        return -1;
      return 1629; /* *aarch64_fcvtuv2sfv2si2_mult */

    case 13:
      if (!
#line 1791 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && IN_RANGE (aarch64_vec_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (GET_MODE_INNER (V4SFmode)))))
        return -1;
      return 1631; /* *aarch64_fcvtuv4sfv4si2_mult */

    case 14:
      if (!
#line 1791 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && IN_RANGE (aarch64_vec_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (GET_MODE_INNER (V2DFmode)))))
        return -1;
      return 1633; /* *aarch64_fcvtuv2dfv2di2_mult */

    case 15:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 753; /* lceiluhfsi2 */

    case 16:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 773; /* lceilusfsi2 */

    case 17:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 793; /* lceiludfsi2 */

    case 18:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 763; /* lceiluhfdi2 */

    case 19:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 783; /* lceilusfdi2 */

    case 20:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 803; /* lceiludfdi2 */

    case 21:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1570; /* lceiluv4hfv4hi2 */

    case 22:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1580; /* lceiluv8hfv8hi2 */

    case 23:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1590; /* lceiluv2sfv2si2 */

    case 24:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1600; /* lceiluv4sfv4si2 */

    case 25:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1610; /* lceiluv2dfv2di2 */

    case 26:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1620; /* lceiluhfhi2 */

    case 27:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 754; /* lflooruhfsi2 */

    case 28:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 774; /* lfloorusfsi2 */

    case 29:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 794; /* lfloorudfsi2 */

    case 30:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 764; /* lflooruhfdi2 */

    case 31:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 784; /* lfloorusfdi2 */

    case 32:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 804; /* lfloorudfdi2 */

    case 33:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1571; /* lflooruv4hfv4hi2 */

    case 34:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1581; /* lflooruv8hfv8hi2 */

    case 35:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1591; /* lflooruv2sfv2si2 */

    case 36:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1601; /* lflooruv4sfv4si2 */

    case 37:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1611; /* lflooruv2dfv2di2 */

    case 38:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1621; /* lflooruhfhi2 */

    case 39:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 755; /* lrounduhfsi2 */

    case 40:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 775; /* lroundusfsi2 */

    case 41:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 795; /* lroundudfsi2 */

    case 42:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 765; /* lrounduhfdi2 */

    case 43:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 785; /* lroundusfdi2 */

    case 44:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 805; /* lroundudfdi2 */

    case 45:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1572; /* lrounduv4hfv4hi2 */

    case 46:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1582; /* lrounduv8hfv8hi2 */

    case 47:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1592; /* lrounduv2sfv2si2 */

    case 48:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1602; /* lrounduv4sfv4si2 */

    case 49:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1612; /* lrounduv2dfv2di2 */

    case 50:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1622; /* lrounduhfhi2 */

    case 51:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 756; /* lfrintnuhfsi2 */

    case 52:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 776; /* lfrintnusfsi2 */

    case 53:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 796; /* lfrintnudfsi2 */

    case 54:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 766; /* lfrintnuhfdi2 */

    case 55:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 786; /* lfrintnusfdi2 */

    case 56:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 806; /* lfrintnudfdi2 */

    case 57:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1573; /* lfrintnuv4hfv4hi2 */

    case 58:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1583; /* lfrintnuv8hfv8hi2 */

    case 59:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1593; /* lfrintnuv2sfv2si2 */

    case 60:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1603; /* lfrintnuv4sfv4si2 */

    case 61:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1613; /* lfrintnuv2dfv2di2 */

    case 62:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1623; /* lfrintnuhfhi2 */

    case 63:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (SImode))))
        return -1;
      return 808; /* *aarch64_fcvtusfsi2_mult */

    case 64:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (SImode))))
        return -1;
      return 812; /* *aarch64_fcvtudfsi2_mult */

    case 65:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (DImode))))
        return -1;
      return 810; /* *aarch64_fcvtusfdi2_mult */

    case 66:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (DImode))))
        return -1;
      return 814; /* *aarch64_fcvtudfdi2_mult */

    case 67:
      if (!(
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 834; /* fixuns_trunchfsi2 */

    case 68:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 838; /* fixuns_truncsfsi2 */

    case 69:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 842; /* fixuns_truncdfsi2 */

    case 70:
      if (!(
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 836; /* fixuns_trunchfdi2 */

    case 71:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 840; /* fixuns_truncsfdi2 */

    case 72:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 844; /* fixuns_truncdfdi2 */

    case 73:
      if (!
#line 1771 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1625; /* fixuns_trunchfhi2 */

    default:
      return -1;
    }
}

static int
recog_101 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern12 (x1))
    {
    case 0:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 747; /* lbtrunchfsi2 */

    case 1:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 767; /* lbtruncsfsi2 */

    case 2:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 787; /* lbtruncdfsi2 */

    case 3:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 757; /* lbtrunchfdi2 */

    case 4:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 777; /* lbtruncsfdi2 */

    case 5:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 797; /* lbtruncdfdi2 */

    case 6:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1564; /* lbtruncv4hfv4hi2 */

    case 7:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1574; /* lbtruncv8hfv8hi2 */

    case 8:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1584; /* lbtruncv2sfv2si2 */

    case 9:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1594; /* lbtruncv4sfv4si2 */

    case 10:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1604; /* lbtruncv2dfv2di2 */

    case 11:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1614; /* lbtrunchfhi2 */

    case 12:
      if (!
#line 1791 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && IN_RANGE (aarch64_vec_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (GET_MODE_INNER (V2SFmode)))))
        return -1;
      return 1628; /* *aarch64_fcvtv2sfv2si2_mult */

    case 13:
      if (!
#line 1791 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && IN_RANGE (aarch64_vec_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (GET_MODE_INNER (V4SFmode)))))
        return -1;
      return 1630; /* *aarch64_fcvtv4sfv4si2_mult */

    case 14:
      if (!
#line 1791 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && IN_RANGE (aarch64_vec_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (GET_MODE_INNER (V2DFmode)))))
        return -1;
      return 1632; /* *aarch64_fcvtv2dfv2di2_mult */

    case 15:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 748; /* lceilhfsi2 */

    case 16:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 768; /* lceilsfsi2 */

    case 17:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 788; /* lceildfsi2 */

    case 18:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 758; /* lceilhfdi2 */

    case 19:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 778; /* lceilsfdi2 */

    case 20:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 798; /* lceildfdi2 */

    case 21:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1565; /* lceilv4hfv4hi2 */

    case 22:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1575; /* lceilv8hfv8hi2 */

    case 23:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1585; /* lceilv2sfv2si2 */

    case 24:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1595; /* lceilv4sfv4si2 */

    case 25:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1605; /* lceilv2dfv2di2 */

    case 26:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1615; /* lceilhfhi2 */

    case 27:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 749; /* lfloorhfsi2 */

    case 28:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 769; /* lfloorsfsi2 */

    case 29:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 789; /* lfloordfsi2 */

    case 30:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 759; /* lfloorhfdi2 */

    case 31:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 779; /* lfloorsfdi2 */

    case 32:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 799; /* lfloordfdi2 */

    case 33:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1566; /* lfloorv4hfv4hi2 */

    case 34:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1576; /* lfloorv8hfv8hi2 */

    case 35:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1586; /* lfloorv2sfv2si2 */

    case 36:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1596; /* lfloorv4sfv4si2 */

    case 37:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1606; /* lfloorv2dfv2di2 */

    case 38:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1616; /* lfloorhfhi2 */

    case 39:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 750; /* lroundhfsi2 */

    case 40:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 770; /* lroundsfsi2 */

    case 41:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 790; /* lrounddfsi2 */

    case 42:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 760; /* lroundhfdi2 */

    case 43:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 780; /* lroundsfdi2 */

    case 44:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 800; /* lrounddfdi2 */

    case 45:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1567; /* lroundv4hfv4hi2 */

    case 46:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1577; /* lroundv8hfv8hi2 */

    case 47:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1587; /* lroundv2sfv2si2 */

    case 48:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1597; /* lroundv4sfv4si2 */

    case 49:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1607; /* lroundv2dfv2di2 */

    case 50:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1617; /* lroundhfhi2 */

    case 51:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 751; /* lfrintnhfsi2 */

    case 52:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 771; /* lfrintnsfsi2 */

    case 53:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 791; /* lfrintndfsi2 */

    case 54:
      if (!(
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 761; /* lfrintnhfdi2 */

    case 55:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 781; /* lfrintnsfdi2 */

    case 56:
      if (!
#line 4475 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 801; /* lfrintndfdi2 */

    case 57:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1568; /* lfrintnv4hfv4hi2 */

    case 58:
      if (!(
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1578; /* lfrintnv8hfv8hi2 */

    case 59:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1588; /* lfrintnv2sfv2si2 */

    case 60:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1598; /* lfrintnv4sfv4si2 */

    case 61:
      if (!
#line 1753 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1608; /* lfrintnv2dfv2di2 */

    case 62:
      if (!
#line 1763 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1618; /* lfrintnhfhi2 */

    case 63:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (SImode))))
        return -1;
      return 807; /* *aarch64_fcvtsfsi2_mult */

    case 64:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (SImode))))
        return -1;
      return 811; /* *aarch64_fcvtdfsi2_mult */

    case 65:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (DImode))))
        return -1;
      return 809; /* *aarch64_fcvtsfdi2_mult */

    case 66:
      if (!
#line 4486 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT
   && IN_RANGE (aarch64_fpconst_pow_of_2 (operands[2]), 1,
		GET_MODE_BITSIZE (DImode))))
        return -1;
      return 813; /* *aarch64_fcvtdfdi2_mult */

    case 67:
      if (!(
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 833; /* fix_trunchfsi2 */

    case 68:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 837; /* fix_truncsfsi2 */

    case 69:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 841; /* fix_truncdfsi2 */

    case 70:
      if (!(
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 835; /* fix_trunchfdi2 */

    case 71:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 839; /* fix_truncsfdi2 */

    case 72:
      if (!
#line 4608 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 843; /* fix_truncdfdi2 */

    case 73:
      if (!
#line 1771 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
        return -1;
      return 1624; /* fix_trunchfhi2 */

    default:
      return -1;
    }
}

static int
recog_102 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != MULT)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != SIGN_EXTEND)
    return -1;
  x5 = XEXP (x3, 1);
  if (GET_CODE (x5) != SIGN_EXTEND)
    return -1;
  x6 = XEXP (x2, 1);
  if (x6 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
    return -1;
  x7 = XEXP (x1, 0);
  operands[0] = x7;
  x8 = XEXP (x4, 0);
  switch (GET_CODE (x8))
    {
    case REG:
    case SUBREG:
      operands[1] = x8;
      x9 = XEXP (x5, 0);
      switch (GET_CODE (x9))
        {
        case REG:
        case SUBREG:
          operands[2] = x9;
          switch (GET_MODE (operands[0]))
            {
            case V4SImode:
              if (pattern293 (x2, V4HImode, V4SImode) != 0
                  || !
#line 3729 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2221; /* aarch64_sqdmullv4hi */

            case V2DImode:
              if (pattern293 (x2, V2SImode, V2DImode) != 0
                  || !
#line 3729 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2222; /* aarch64_sqdmullv2si */

            case SImode:
              if (pattern293 (x2, HImode, SImode) != 0
                  || !
#line 3729 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2223; /* aarch64_sqdmullhi */

            case DImode:
              if (pattern293 (x2, SImode, DImode) != 0
                  || !
#line 3729 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2224; /* aarch64_sqdmullsi */

            default:
              return -1;
            }

        case VEC_DUPLICATE:
          x10 = XEXP (x9, 0);
          switch (GET_CODE (x10))
            {
            case VEC_SELECT:
              x11 = XEXP (x10, 1);
              if (GET_CODE (x11) != PARALLEL
                  || XVECLEN (x11, 0) != 1)
                return -1;
              x12 = XEXP (x10, 0);
              operands[2] = x12;
              x13 = XVECEXP (x11, 0, 0);
              operands[3] = x13;
              if (!immediate_operand (operands[3], SImode))
                return -1;
              switch (GET_MODE (operands[0]))
                {
                case V4SImode:
                  if (pattern353 (x2, V4HImode, V4SImode) != 0)
                    return -1;
                  switch (pattern378 (x5))
                    {
                    case 0:
                      if (!
#line 3749 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2225; /* aarch64_sqdmull_lanev4hi */

                    case 1:
                      if (!
#line 3770 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2227; /* aarch64_sqdmull_laneqv4hi */

                    default:
                      return -1;
                    }

                case V2DImode:
                  if (pattern353 (x2, V2SImode, V2DImode) != 0)
                    return -1;
                  switch (pattern379 (x5))
                    {
                    case 0:
                      if (!
#line 3749 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2226; /* aarch64_sqdmull_lanev2si */

                    case 1:
                      if (!
#line 3770 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2228; /* aarch64_sqdmull_laneqv2si */

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            case REG:
            case SUBREG:
              operands[2] = x10;
              switch (GET_MODE (operands[0]))
                {
                case V4SImode:
                  if (pattern306 (x2, HImode, V4HImode, V4SImode) != 0
                      || !
#line 3831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2233; /* aarch64_sqdmull_nv4hi */

                case V2DImode:
                  if (pattern306 (x2, SImode, V2SImode, V2DImode) != 0
                      || !
#line 3831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2234; /* aarch64_sqdmull_nv2si */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case VEC_SELECT:
          x14 = XEXP (x9, 1);
          if (GET_CODE (x14) != PARALLEL
              || XVECLEN (x14, 0) != 1)
            return -1;
          x10 = XEXP (x9, 0);
          operands[2] = x10;
          x15 = XVECEXP (x14, 0, 0);
          operands[3] = x15;
          if (!immediate_operand (operands[3], SImode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern349 (x2, HImode, SImode) != 0)
                return -1;
              switch (GET_MODE (operands[2]))
                {
                case V4HImode:
                  if (!register_operand (operands[2], V4HImode)
                      || !
#line 3790 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2229; /* aarch64_sqdmull_lanehi */

                case V8HImode:
                  if (!register_operand (operands[2], V8HImode)
                      || !
#line 3810 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2231; /* aarch64_sqdmull_laneqhi */

                default:
                  return -1;
                }

            case DImode:
              if (pattern349 (x2, SImode, DImode) != 0)
                return -1;
              switch (GET_MODE (operands[2]))
                {
                case V2SImode:
                  if (!register_operand (operands[2], V2SImode)
                      || !
#line 3790 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2230; /* aarch64_sqdmull_lanesi */

                case V4SImode:
                  if (!register_operand (operands[2], V4SImode)
                      || !
#line 3810 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2232; /* aarch64_sqdmull_laneqsi */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    case VEC_SELECT:
      x16 = XEXP (x8, 0);
      operands[1] = x16;
      x9 = XEXP (x5, 0);
      switch (GET_CODE (x9))
        {
        case VEC_SELECT:
          x17 = XEXP (x8, 1);
          operands[3] = x17;
          x10 = XEXP (x9, 0);
          operands[2] = x10;
          x14 = XEXP (x9, 1);
          if (!rtx_equal_p (x14, operands[3]))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case V4SImode:
              if (pattern332 (x2, V8HImode, V4HImode, V4SImode) != 0
                  || !
#line 3854 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2235; /* aarch64_sqdmull2v8hi_internal */

            case V2DImode:
              if (pattern332 (x2, V4SImode, V2SImode, V2DImode) != 0
                  || !
#line 3854 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2236; /* aarch64_sqdmull2v4si_internal */

            default:
              return -1;
            }

        case VEC_DUPLICATE:
          x10 = XEXP (x9, 0);
          switch (GET_CODE (x10))
            {
            case VEC_SELECT:
              x11 = XEXP (x10, 1);
              if (GET_CODE (x11) != PARALLEL
                  || XVECLEN (x11, 0) != 1)
                return -1;
              x17 = XEXP (x8, 1);
              operands[4] = x17;
              x12 = XEXP (x10, 0);
              operands[2] = x12;
              x13 = XVECEXP (x11, 0, 0);
              operands[3] = x13;
              if (!immediate_operand (operands[3], SImode))
                return -1;
              switch (GET_MODE (operands[0]))
                {
                case V4SImode:
                  if (pattern356 (x2, V8HImode, V4HImode, V4SImode) != 0)
                    return -1;
                  switch (pattern378 (x5))
                    {
                    case 0:
                      if (!
#line 3888 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2237; /* aarch64_sqdmull2_lanev8hi_internal */

                    case 1:
                      if (!
#line 3911 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2239; /* aarch64_sqdmull2_laneqv8hi_internal */

                    default:
                      return -1;
                    }

                case V2DImode:
                  if (pattern356 (x2, V4SImode, V2SImode, V2DImode) != 0)
                    return -1;
                  switch (pattern379 (x5))
                    {
                    case 0:
                      if (!
#line 3888 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2238; /* aarch64_sqdmull2_lanev4si_internal */

                    case 1:
                      if (!
#line 3911 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                        return -1;
                      return 2240; /* aarch64_sqdmull2_laneqv4si_internal */

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            case REG:
            case SUBREG:
              operands[2] = x10;
              x17 = XEXP (x8, 1);
              operands[3] = x17;
              switch (GET_MODE (operands[0]))
                {
                case V4SImode:
                  if (pattern333 (x2, HImode, V4HImode, V4SImode, V8HImode) != 0
                      || !
#line 3962 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2241; /* aarch64_sqdmull2_nv8hi_internal */

                case V2DImode:
                  if (pattern333 (x2, SImode, V2SImode, V2DImode, V4SImode) != 0
                      || !
#line 3962 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                    return -1;
                  return 2242; /* aarch64_sqdmull2_nv4si_internal */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_103 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  switch (XVECLEN (x3, 0))
    {
    case 2:
      x4 = XVECEXP (x3, 0, 1);
      operands[2] = x4;
      switch (XINT (x3, 1))
        {
        case 6:
          x5 = XVECEXP (x3, 0, 0);
          operands[1] = x5;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern61 (x3, SImode) != 0
                  || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
                return -1;
              return 956; /* probe_stack_range_si */

            case DImode:
              if (pattern61 (x3, DImode) != 0
                  || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
                return -1;
              return 957; /* probe_stack_range_di */

            default:
              return -1;
            }

        case 15:
          if (pnum_clobbers == NULL
              || !const_int_operand (operands[2], SImode))
            return -1;
          x5 = XVECEXP (x3, 0, 0);
          switch (GET_CODE (x5))
            {
            case PLUS:
              switch (pattern255 (x3))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3118; /* aarch64_atomic_addqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3123; /* aarch64_atomic_addhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3128; /* aarch64_atomic_addsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3133; /* aarch64_atomic_adddi */

                default:
                  return -1;
                }

            case MINUS:
              switch (pattern255 (x3))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3119; /* aarch64_atomic_subqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3124; /* aarch64_atomic_subhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3129; /* aarch64_atomic_subsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3134; /* aarch64_atomic_subdi */

                default:
                  return -1;
                }

            case IOR:
              switch (pattern257 (x3))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3120; /* aarch64_atomic_orqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3125; /* aarch64_atomic_orhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3130; /* aarch64_atomic_orsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3135; /* aarch64_atomic_ordi */

                default:
                  return -1;
                }

            case XOR:
              switch (pattern257 (x3))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3121; /* aarch64_atomic_xorqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3126; /* aarch64_atomic_xorhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3131; /* aarch64_atomic_xorsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3136; /* aarch64_atomic_xordi */

                default:
                  return -1;
                }

            case AND:
              switch (pattern257 (x3))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3122; /* aarch64_atomic_andqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3127; /* aarch64_atomic_andhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3132; /* aarch64_atomic_andsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3137; /* aarch64_atomic_anddi */

                default:
                  return -1;
                }

            case NOT:
              x6 = XEXP (x5, 0);
              if (GET_CODE (x6) != AND)
                return -1;
              x7 = XEXP (x6, 1);
              operands[1] = x7;
              x8 = XEXP (x6, 0);
              if (!rtx_equal_p (x8, operands[0]))
                return -1;
              switch (GET_MODE (operands[0]))
                {
                case QImode:
                  if (pattern305 (x3, QImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3158; /* atomic_nandqi */

                case HImode:
                  if (pattern305 (x3, HImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3159; /* atomic_nandhi */

                case SImode:
                  if (pattern305 (x3, SImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3160; /* atomic_nandsi */

                case DImode:
                  if (pattern305 (x3, DImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3161; /* atomic_nanddi */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 9:
          x5 = XVECEXP (x3, 0, 0);
          operands[1] = x5;
          if (!const_int_operand (operands[2], SImode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (!register_operand (operands[0], QImode)
                  || GET_MODE (x3) != QImode
                  || !aarch64_sync_memory_operand (operands[1], QImode))
                return -1;
              return 3250; /* atomic_loadqi */

            case HImode:
              if (!register_operand (operands[0], HImode)
                  || GET_MODE (x3) != HImode
                  || !aarch64_sync_memory_operand (operands[1], HImode))
                return -1;
              return 3251; /* atomic_loadhi */

            case SImode:
              if (!register_operand (operands[0], SImode)
                  || GET_MODE (x3) != SImode
                  || !aarch64_sync_memory_operand (operands[1], SImode))
                return -1;
              return 3252; /* atomic_loadsi */

            case DImode:
              if (!register_operand (operands[0], DImode)
                  || GET_MODE (x3) != DImode
                  || !aarch64_sync_memory_operand (operands[1], DImode))
                return -1;
              return 3253; /* atomic_loaddi */

            default:
              return -1;
            }

        case 10:
          x5 = XVECEXP (x3, 0, 0);
          operands[1] = x5;
          if (!const_int_operand (operands[2], SImode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (!aarch64_sync_memory_operand (operands[0], QImode)
                  || GET_MODE (x3) != QImode
                  || !general_operand (operands[1], QImode))
                return -1;
              return 3254; /* atomic_storeqi */

            case HImode:
              if (!aarch64_sync_memory_operand (operands[0], HImode)
                  || GET_MODE (x3) != HImode
                  || !general_operand (operands[1], HImode))
                return -1;
              return 3255; /* atomic_storehi */

            case SImode:
              if (!aarch64_sync_memory_operand (operands[0], SImode)
                  || GET_MODE (x3) != SImode
                  || !general_operand (operands[1], SImode))
                return -1;
              return 3256; /* atomic_storesi */

            case DImode:
              if (!aarch64_sync_memory_operand (operands[0], DImode)
                  || GET_MODE (x3) != DImode
                  || !general_operand (operands[1], DImode))
                return -1;
              return 3257; /* atomic_storedi */

            default:
              return -1;
            }

        case 7:
          x5 = XVECEXP (x3, 0, 0);
          operands[1] = x5;
          if (!const_int_operand (operands[2], SImode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (!register_operand (operands[0], SImode)
                  || GET_MODE (x3) != SImode
                  || !aarch64_sync_memory_operand (operands[1], SImode))
                return -1;
              return 3260; /* aarch64_load_exclusivesi */

            case DImode:
              if (!register_operand (operands[0], DImode)
                  || GET_MODE (x3) != DImode
                  || !aarch64_sync_memory_operand (operands[1], DImode))
                return -1;
              return 3261; /* aarch64_load_exclusivedi */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case 1:
      x5 = XVECEXP (x3, 0, 0);
      if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || !register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode)
        return -1;
      switch (XINT (x3, 1))
        {
        case 1:
          return 963; /* get_fpcr */

        case 3:
          return 965; /* get_fpsr */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_104 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      switch (pattern107 (x3))
        {
        case 0:
          return 469; /* xorsi3 */

        case 1:
          return 472; /* xordi3 */

        case 2:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1176; /* xorv8qi3 */

        case 3:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1177; /* xorv16qi3 */

        case 4:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1178; /* xorv4hi3 */

        case 5:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1179; /* xorv8hi3 */

        case 6:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1180; /* xorv2si3 */

        case 7:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1181; /* xorv4si3 */

        case 8:
          if (!
#line 510 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1182; /* xorv2di3 */

        default:
          return -1;
        }

    case ASHIFT:
      switch (pattern42 (x3))
        {
        case 0:
          return 499; /* *xor_ashlsi3 */

        case 1:
          return 511; /* *xor_ashldi3 */

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 500; /* *xor_ashrsi3 */

        case 1:
          return 512; /* *xor_ashrdi3 */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 501; /* *xor_lshrsi3 */

        case 1:
          return 513; /* *xor_lshrdi3 */

        default:
          return -1;
        }

    case ROTATERT:
      switch (pattern42 (x3))
        {
        case 0:
          return 502; /* *xor_rotrsi3 */

        case 1:
          return 514; /* *xor_rotrdi3 */

        default:
          return -1;
        }

    case ROTATE:
      switch (pattern42 (x3))
        {
        case 0:
          return 517; /* *xor_rolsi3 */

        case 1:
          return 520; /* *xor_roldi3 */

        default:
          return -1;
        }

    case NOT:
      x5 = XEXP (x3, 1);
      operands[3] = x5;
      x6 = XEXP (x4, 0);
      switch (GET_CODE (x6))
        {
        case ASHIFT:
          switch (pattern183 (x3))
            {
            case 0:
              return 568; /* xor_one_cmpl_ashlsi3 */

            case 1:
              return 580; /* xor_one_cmpl_ashldi3 */

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern183 (x3))
            {
            case 0:
              return 569; /* xor_one_cmpl_ashrsi3 */

            case 1:
              return 581; /* xor_one_cmpl_ashrdi3 */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern183 (x3))
            {
            case 0:
              return 570; /* xor_one_cmpl_lshrsi3 */

            case 1:
              return 582; /* xor_one_cmpl_lshrdi3 */

            default:
              return -1;
            }

        case ROTATERT:
          switch (pattern183 (x3))
            {
            case 0:
              return 571; /* xor_one_cmpl_rotrsi3 */

            case 1:
              return 583; /* xor_one_cmpl_rotrdi3 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case AND:
      x6 = XEXP (x4, 0);
      if (GET_CODE (x6) != XOR)
        return -1;
      x7 = XEXP (x6, 0);
      operands[3] = x7;
      x8 = XEXP (x6, 1);
      operands[2] = x8;
      x9 = XEXP (x4, 1);
      operands[1] = x9;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (pattern251 (x3, V8QImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1778; /* aarch64_simd_bslv8qi_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1786; /* *aarch64_simd_bslv8qi_alt */

        case V16QImode:
          if (pattern251 (x3, V16QImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1779; /* aarch64_simd_bslv16qi_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1787; /* *aarch64_simd_bslv16qi_alt */

        case V4HImode:
          if (pattern251 (x3, V4HImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1780; /* aarch64_simd_bslv4hi_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1788; /* *aarch64_simd_bslv4hi_alt */

        case V8HImode:
          if (pattern251 (x3, V8HImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1781; /* aarch64_simd_bslv8hi_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1789; /* *aarch64_simd_bslv8hi_alt */

        case V2SImode:
          if (pattern251 (x3, V2SImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1782; /* aarch64_simd_bslv2si_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1790; /* *aarch64_simd_bslv2si_alt */

        case V4SImode:
          if (pattern251 (x3, V4SImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1783; /* aarch64_simd_bslv4si_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1791; /* *aarch64_simd_bslv4si_alt */

        case V2DImode:
          if (pattern251 (x3, V2DImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1784; /* aarch64_simd_bslv2di_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1792; /* *aarch64_simd_bslv2di_alt */

        case DImode:
          if (pattern251 (x3, DImode) != 0)
            return -1;
          x5 = XEXP (x3, 1);
          if (rtx_equal_p (x5, operands[3])
              && 
#line 2237 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1785; /* aarch64_simd_bsldi_internal */
          if (!rtx_equal_p (x5, operands[2])
              || !
#line 2260 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1793; /* *aarch64_simd_bsldi_alt */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_105 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      switch (pattern107 (x3))
        {
        case 0:
          return 468; /* iorsi3 */

        case 1:
          return 471; /* iordi3 */

        case 2:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1169; /* iorv8qi3 */

        case 3:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1170; /* iorv16qi3 */

        case 4:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1171; /* iorv4hi3 */

        case 5:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1172; /* iorv8hi3 */

        case 6:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1173; /* iorv2si3 */

        case 7:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1174; /* iorv4si3 */

        case 8:
          if (!
#line 501 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1175; /* iorv2di3 */

        default:
          return -1;
        }

    case ASHIFT:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x3, 1);
      switch (GET_CODE (x6))
        {
        case REG:
        case SUBREG:
          operands[3] = x6;
          x7 = XEXP (x4, 1);
          operands[2] = x7;
          switch (pattern41 (x3))
            {
            case 0:
              return 495; /* *ior_ashlsi3 */

            case 1:
              return 507; /* *ior_ashldi3 */

            default:
              return -1;
            }

        case LSHIFTRT:
          x7 = XEXP (x4, 1);
          operands[3] = x7;
          if (!const_int_operand (operands[3], VOIDmode))
            return -1;
          x8 = XEXP (x6, 0);
          operands[2] = x8;
          x9 = XEXP (x6, 1);
          operands[4] = x9;
          if (!const_int_operand (operands[4], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern291 (x3, SImode) != 0
                  || !
#line 4165 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[3]) < GET_MODE_BITSIZE (SImode) &&
   (UINTVAL (operands[3]) + UINTVAL (operands[4]) == GET_MODE_BITSIZE (SImode))))
                return -1;
              return 665; /* *extrsi5_insn */

            case DImode:
              if (pattern291 (x3, DImode) != 0
                  || !
#line 4165 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[3]) < GET_MODE_BITSIZE (DImode) &&
   (UINTVAL (operands[3]) + UINTVAL (operands[4]) == GET_MODE_BITSIZE (DImode))))
                return -1;
              return 666; /* *extrdi5_insn */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 496; /* *ior_ashrsi3 */

        case 1:
          return 508; /* *ior_ashrdi3 */

        default:
          return -1;
        }

    case LSHIFTRT:
      x6 = XEXP (x3, 1);
      switch (GET_CODE (x6))
        {
        case REG:
        case SUBREG:
          operands[3] = x6;
          x5 = XEXP (x4, 0);
          operands[1] = x5;
          x7 = XEXP (x4, 1);
          operands[2] = x7;
          switch (pattern41 (x3))
            {
            case 0:
              return 497; /* *ior_lshrsi3 */

            case 1:
              return 509; /* *ior_lshrdi3 */

            default:
              return -1;
            }

        case ASHIFT:
          x5 = XEXP (x4, 0);
          operands[2] = x5;
          x7 = XEXP (x4, 1);
          operands[4] = x7;
          if (!const_int_operand (operands[4], VOIDmode))
            return -1;
          x8 = XEXP (x6, 0);
          operands[1] = x8;
          x9 = XEXP (x6, 1);
          operands[3] = x9;
          if (!const_int_operand (operands[3], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern292 (x3, SImode) != 0
                  || !
#line 4179 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[3]) < GET_MODE_BITSIZE (SImode)
   && (UINTVAL (operands[3]) + UINTVAL (operands[4])
       == GET_MODE_BITSIZE (SImode))))
                return -1;
              return 667; /* *extrsi5_insn_alt */

            case DImode:
              if (pattern292 (x3, DImode) != 0
                  || !
#line 4179 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[3]) < GET_MODE_BITSIZE (DImode)
   && (UINTVAL (operands[3]) + UINTVAL (operands[4])
       == GET_MODE_BITSIZE (DImode))))
                return -1;
              return 668; /* *extrdi5_insn_alt */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ROTATERT:
      switch (pattern42 (x3))
        {
        case 0:
          return 498; /* *ior_rotrsi3 */

        case 1:
          return 510; /* *ior_rotrdi3 */

        default:
          return -1;
        }

    case ROTATE:
      switch (pattern42 (x3))
        {
        case 0:
          return 516; /* *ior_rolsi3 */

        case 1:
          return 519; /* *ior_roldi3 */

        default:
          return -1;
        }

    case NOT:
      switch (pattern111 (x3))
        {
        case 0:
          return 547; /* *ior_one_cmplsi3 */

        case 1:
          return 549; /* *ior_one_cmpldi3 */

        case 2:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1038; /* ornv8qi3 */

        case 3:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1039; /* ornv16qi3 */

        case 4:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1040; /* ornv4hi3 */

        case 5:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1041; /* ornv8hi3 */

        case 6:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1042; /* ornv2si3 */

        case 7:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1043; /* ornv4si3 */

        case 8:
          if (!
#line 269 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1044; /* ornv2di3 */

        case 9:
          return 564; /* ior_one_cmpl_ashlsi3 */

        case 10:
          return 576; /* ior_one_cmpl_ashldi3 */

        case 11:
          return 565; /* ior_one_cmpl_ashrsi3 */

        case 12:
          return 577; /* ior_one_cmpl_ashrdi3 */

        case 13:
          return 566; /* ior_one_cmpl_lshrsi3 */

        case 14:
          return 578; /* ior_one_cmpl_lshrdi3 */

        case 15:
          return 567; /* ior_one_cmpl_rotrsi3 */

        case 16:
          return 579; /* ior_one_cmpl_rotrdi3 */

        default:
          return -1;
        }

    case AND:
      x6 = XEXP (x3, 1);
      if (GET_CODE (x6) != AND)
        return -1;
      x5 = XEXP (x4, 0);
      switch (GET_CODE (x5))
        {
        case ASHIFT:
          x10 = XEXP (x5, 1);
          if (x10 != const_int_rtx[MAX_SAVED_CONST_INT + 8])
            return -1;
          x8 = XEXP (x6, 0);
          if (GET_CODE (x8) != LSHIFTRT)
            return -1;
          x11 = XEXP (x8, 1);
          if (x11 != const_int_rtx[MAX_SAVED_CONST_INT + 8])
            return -1;
          x12 = XEXP (x5, 0);
          operands[1] = x12;
          x7 = XEXP (x4, 1);
          operands[3] = x7;
          x9 = XEXP (x6, 1);
          operands[2] = x9;
          x13 = XEXP (x8, 0);
          if (!rtx_equal_p (x13, operands[1]))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern328 (x3, SImode) != 0
                  || !
#line 4423 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch_rev16_shleft_mask_imm_p (operands[3], SImode)
   && aarch_rev16_shright_mask_imm_p (operands[2], SImode)))
                return -1;
              return 721; /* rev16si2 */

            case DImode:
              if (pattern328 (x3, DImode) != 0
                  || !
#line 4423 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch_rev16_shleft_mask_imm_p (operands[3], DImode)
   && aarch_rev16_shright_mask_imm_p (operands[2], DImode)))
                return -1;
              return 722; /* rev16di2 */

            default:
              return -1;
            }

        case LSHIFTRT:
          x10 = XEXP (x5, 1);
          if (x10 != const_int_rtx[MAX_SAVED_CONST_INT + 8])
            return -1;
          x8 = XEXP (x6, 0);
          if (GET_CODE (x8) != ASHIFT)
            return -1;
          x11 = XEXP (x8, 1);
          if (x11 != const_int_rtx[MAX_SAVED_CONST_INT + 8])
            return -1;
          x12 = XEXP (x5, 0);
          operands[1] = x12;
          x7 = XEXP (x4, 1);
          operands[2] = x7;
          x9 = XEXP (x6, 1);
          operands[3] = x9;
          x13 = XEXP (x8, 0);
          if (!rtx_equal_p (x13, operands[1]))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern329 (x3, SImode) != 0
                  || !
#line 4437 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch_rev16_shleft_mask_imm_p (operands[3], SImode)
   && aarch_rev16_shright_mask_imm_p (operands[2], SImode)))
                return -1;
              return 723; /* rev16si2_alt */

            case DImode:
              if (pattern329 (x3, DImode) != 0
                  || !
#line 4437 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch_rev16_shleft_mask_imm_p (operands[3], DImode)
   && aarch_rev16_shright_mask_imm_p (operands[2], DImode)))
                return -1;
              return 724; /* rev16di2_alt */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_106 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  switch (XVECLEN (x2, 0))
    {
    case 2:
      return recog_83 (x1, insn, pnum_clobbers);

    case 1:
      return recog_85 (x1, insn, pnum_clobbers);

    case 3:
      return recog_84 (x1, insn, pnum_clobbers);

    case 4:
      x3 = XVECEXP (x2, 0, 3);
      if (GET_CODE (x3) != UNSPEC
          || XVECLEN (x3, 0) != 1
          || XINT (x3, 1) != 61)
        return -1;
      x4 = XVECEXP (x3, 0, 0);
      if (x4 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x5 = XEXP (x1, 0);
      operands[0] = x5;
      x6 = XVECEXP (x2, 0, 0);
      operands[1] = x6;
      if (!aarch64_simd_struct_operand (operands[1], BLKmode))
        return -1;
      x7 = XVECEXP (x2, 0, 1);
      operands[2] = x7;
      x8 = XVECEXP (x2, 0, 2);
      operands[3] = x8;
      if (!immediate_operand (operands[3], SImode))
        return -1;
      switch (XINT (x2, 1))
        {
        case 34:
          switch (pattern327 (x2, OImode))
            {
            case 0:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2672; /* aarch64_vec_load_lanesoi_lanev8qi */

            case 1:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2673; /* aarch64_vec_load_lanesoi_lanev16qi */

            case 2:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2674; /* aarch64_vec_load_lanesoi_lanev4hi */

            case 3:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2675; /* aarch64_vec_load_lanesoi_lanev8hi */

            case 4:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2676; /* aarch64_vec_load_lanesoi_lanev2si */

            case 5:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2677; /* aarch64_vec_load_lanesoi_lanev4si */

            case 6:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2678; /* aarch64_vec_load_lanesoi_lanev2di */

            case 7:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2679; /* aarch64_vec_load_lanesoi_lanev4hf */

            case 8:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2680; /* aarch64_vec_load_lanesoi_lanev8hf */

            case 9:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2681; /* aarch64_vec_load_lanesoi_lanev2sf */

            case 10:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2682; /* aarch64_vec_load_lanesoi_lanev4sf */

            case 11:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2683; /* aarch64_vec_load_lanesoi_lanev2df */

            case 12:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2684; /* aarch64_vec_load_lanesoi_lanedi */

            case 13:
              if (!
#line 4417 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2685; /* aarch64_vec_load_lanesoi_lanedf */

            default:
              return -1;
            }

        case 35:
          switch (pattern327 (x2, CImode))
            {
            case 0:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2728; /* aarch64_vec_load_lanesci_lanev8qi */

            case 1:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2729; /* aarch64_vec_load_lanesci_lanev16qi */

            case 2:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2730; /* aarch64_vec_load_lanesci_lanev4hi */

            case 3:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2731; /* aarch64_vec_load_lanesci_lanev8hi */

            case 4:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2732; /* aarch64_vec_load_lanesci_lanev2si */

            case 5:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2733; /* aarch64_vec_load_lanesci_lanev4si */

            case 6:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2734; /* aarch64_vec_load_lanesci_lanev2di */

            case 7:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2735; /* aarch64_vec_load_lanesci_lanev4hf */

            case 8:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2736; /* aarch64_vec_load_lanesci_lanev8hf */

            case 9:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2737; /* aarch64_vec_load_lanesci_lanev2sf */

            case 10:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2738; /* aarch64_vec_load_lanesci_lanev4sf */

            case 11:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2739; /* aarch64_vec_load_lanesci_lanev2df */

            case 12:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2740; /* aarch64_vec_load_lanesci_lanedi */

            case 13:
              if (!
#line 4515 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2741; /* aarch64_vec_load_lanesci_lanedf */

            default:
              return -1;
            }

        case 36:
          switch (pattern327 (x2, XImode))
            {
            case 0:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2784; /* aarch64_vec_load_lanesxi_lanev8qi */

            case 1:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2785; /* aarch64_vec_load_lanesxi_lanev16qi */

            case 2:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2786; /* aarch64_vec_load_lanesxi_lanev4hi */

            case 3:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2787; /* aarch64_vec_load_lanesxi_lanev8hi */

            case 4:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2788; /* aarch64_vec_load_lanesxi_lanev2si */

            case 5:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2789; /* aarch64_vec_load_lanesxi_lanev4si */

            case 6:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2790; /* aarch64_vec_load_lanesxi_lanev2di */

            case 7:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2791; /* aarch64_vec_load_lanesxi_lanev4hf */

            case 8:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2792; /* aarch64_vec_load_lanesxi_lanev8hf */

            case 9:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2793; /* aarch64_vec_load_lanesxi_lanev2sf */

            case 10:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2794; /* aarch64_vec_load_lanesxi_lanev4sf */

            case 11:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2795; /* aarch64_vec_load_lanesxi_lanev2df */

            case 12:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2796; /* aarch64_vec_load_lanesxi_lanedi */

            case 13:
              if (!
#line 4613 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2797; /* aarch64_vec_load_lanesxi_lanedf */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_107 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 1);
  operands[2] = x4;
  x5 = XEXP (x3, 0);
  switch (GET_CODE (x5))
    {
    case REG:
    case SUBREG:
      operands[1] = x5;
      switch (GET_CODE (operands[2]))
        {
        case CONST_INT:
        case REG:
        case SUBREG:
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern184 (x3) != 0)
                return -1;
              return 642; /* *aarch64_ashl_sisd_or_int_si3 */

            case DImode:
              if (pattern185 (x3, DImode) != 0)
                return -1;
              return 643; /* *aarch64_ashl_sisd_or_int_di3 */

            case QImode:
              if (pattern211 (x3, QImode) != 0
                  || !
#line 4151 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
                return -1;
              return 659; /* *ashlqi3_insn */

            case HImode:
              if (pattern211 (x3, HImode) != 0
                  || !
#line 4151 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
                return -1;
              return 662; /* *ashlhi3_insn */

            case V8QImode:
              if (pattern14 (x3, V8QImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1237; /* aarch64_simd_reg_sshlv8qi */

            case V16QImode:
              if (pattern14 (x3, V16QImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1238; /* aarch64_simd_reg_sshlv16qi */

            case V4HImode:
              if (pattern14 (x3, V4HImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1239; /* aarch64_simd_reg_sshlv4hi */

            case V8HImode:
              if (pattern14 (x3, V8HImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1240; /* aarch64_simd_reg_sshlv8hi */

            case V2SImode:
              if (pattern14 (x3, V2SImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1241; /* aarch64_simd_reg_sshlv2si */

            case V4SImode:
              if (pattern14 (x3, V4SImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1242; /* aarch64_simd_reg_sshlv4si */

            case V2DImode:
              if (pattern14 (x3, V2DImode) != 0
                  || !
#line 623 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1243; /* aarch64_simd_reg_sshlv2di */

            default:
              return -1;
            }

        case CONST_VECTOR:
          switch (GET_MODE (operands[0]))
            {
            case V8QImode:
              if (pattern234 (x3, V8QImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1230; /* aarch64_simd_imm_shlv8qi */

            case V16QImode:
              if (pattern234 (x3, V16QImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1231; /* aarch64_simd_imm_shlv16qi */

            case V4HImode:
              if (pattern234 (x3, V4HImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1232; /* aarch64_simd_imm_shlv4hi */

            case V8HImode:
              if (pattern234 (x3, V8HImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1233; /* aarch64_simd_imm_shlv8hi */

            case V2SImode:
              if (pattern234 (x3, V2SImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1234; /* aarch64_simd_imm_shlv2si */

            case V4SImode:
              if (pattern234 (x3, V4SImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1235; /* aarch64_simd_imm_shlv4si */

            case V2DImode:
              if (pattern234 (x3, V2DImode) != 0
                  || !
#line 614 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1236; /* aarch64_simd_imm_shlv2di */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case SIGN_EXTEND:
      switch (pattern143 (x3))
        {
        case 0:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
            return -1;
          return 704; /* *extendqi_shft_si */

        case 1:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
            return -1;
          return 708; /* *extendhi_shft_si */

        case 2:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
            return -1;
          return 712; /* *extendsi_shft_si */

        case 3:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 64))
            return -1;
          return 706; /* *extendqi_shft_di */

        case 4:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 64))
            return -1;
          return 710; /* *extendhi_shft_di */

        case 5:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 64))
            return -1;
          return 714; /* *extendsi_shft_di */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern143 (x3))
        {
        case 0:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
            return -1;
          return 705; /* *zero_extendqi_shft_si */

        case 1:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
            return -1;
          return 709; /* *zero_extendhi_shft_si */

        case 2:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 32))
            return -1;
          return 713; /* *zero_extendsi_shft_si */

        case 3:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 64))
            return -1;
          return 707; /* *zero_extendqi_shft_di */

        case 4:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 64))
            return -1;
          return 711; /* *zero_extendhi_shft_di */

        case 5:
          if (!
#line 4373 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < 64))
            return -1;
          return 715; /* *zero_extendsi_shft_di */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_108 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != PARALLEL)
    return -1;
  operands[2] = x3;
  res = recog_87 (x1, insn, pnum_clobbers);
  if (res >= 0)
    return res;
  if (XVECLEN (x3, 0) != 1)
    return -1;
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  x5 = XEXP (x2, 0);
  operands[1] = x5;
  x6 = XVECEXP (x3, 0, 0);
  operands[2] = x6;
  if (!immediate_operand (operands[2], SImode))
    return -1;
  switch (GET_MODE (operands[0]))
    {
    case QImode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], QImode)
          || GET_MODE (x2) != QImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V8QImode:
          if (!register_operand (operands[1], V8QImode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1806; /* aarch64_get_lanev8qi */

        case V16QImode:
          if (!register_operand (operands[1], V16QImode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1807; /* aarch64_get_lanev16qi */

        default:
          return -1;
        }

    case HImode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], HImode)
          || GET_MODE (x2) != HImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V4HImode:
          if (!register_operand (operands[1], V4HImode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1808; /* aarch64_get_lanev4hi */

        case V8HImode:
          if (!register_operand (operands[1], V8HImode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1809; /* aarch64_get_lanev8hi */

        default:
          return -1;
        }

    case SImode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], SImode)
          || GET_MODE (x2) != SImode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V2SImode:
          if (!register_operand (operands[1], V2SImode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1810; /* aarch64_get_lanev2si */

        case V4SImode:
          if (!register_operand (operands[1], V4SImode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1811; /* aarch64_get_lanev4si */

        default:
          return -1;
        }

    case DImode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], DImode)
          || GET_MODE (x2) != DImode
          || !register_operand (operands[1], V2DImode)
          || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1812; /* aarch64_get_lanev2di */

    case HFmode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], HFmode)
          || GET_MODE (x2) != HFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V4HFmode:
          if (!register_operand (operands[1], V4HFmode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1813; /* aarch64_get_lanev4hf */

        case V8HFmode:
          if (!register_operand (operands[1], V8HFmode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1814; /* aarch64_get_lanev8hf */

        default:
          return -1;
        }

    case SFmode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], SFmode)
          || GET_MODE (x2) != SFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case V2SFmode:
          if (!register_operand (operands[1], V2SFmode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1815; /* aarch64_get_lanev2sf */

        case V4SFmode:
          if (!register_operand (operands[1], V4SFmode)
              || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1816; /* aarch64_get_lanev4sf */

        default:
          return -1;
        }

    case DFmode:
      if (!aarch64_simd_nonimmediate_operand (operands[0], DFmode)
          || GET_MODE (x2) != DFmode
          || !register_operand (operands[1], V2DFmode)
          || !
#line 2690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1817; /* aarch64_get_lanev2df */

    default:
      return -1;
    }
}

static int
recog_109 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (!register_operand (operands[0], SImode)
              || GET_MODE (x3) != SImode
              || !register_operand (operands[1], SImode))
            return -1;
          return 536; /* one_cmplsi2 */

        case DImode:
          if (!register_operand (operands[0], DImode)
              || GET_MODE (x3) != DImode
              || !register_operand (operands[1], DImode))
            return -1;
          return 537; /* one_cmpldi2 */

        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || !register_operand (operands[1], V8QImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1183; /* one_cmplv8qi2 */

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x3) != V16QImode
              || !register_operand (operands[1], V16QImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1184; /* one_cmplv16qi2 */

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || !register_operand (operands[1], V4HImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1185; /* one_cmplv4hi2 */

        case V8HImode:
          if (!register_operand (operands[0], V8HImode)
              || GET_MODE (x3) != V8HImode
              || !register_operand (operands[1], V8HImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1186; /* one_cmplv8hi2 */

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || !register_operand (operands[1], V2SImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1187; /* one_cmplv2si2 */

        case V4SImode:
          if (!register_operand (operands[0], V4SImode)
              || GET_MODE (x3) != V4SImode
              || !register_operand (operands[1], V4SImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1188; /* one_cmplv4si2 */

        case V2DImode:
          if (!register_operand (operands[0], V2DImode)
              || GET_MODE (x3) != V2DImode
              || !register_operand (operands[1], V2DImode)
              || !
#line 518 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1189; /* one_cmplv2di2 */

        default:
          return -1;
        }

    case ASHIFT:
      switch (pattern52 (x3))
        {
        case 0:
          return 538; /* *one_cmpl_ashlsi2 */

        case 1:
          return 542; /* *one_cmpl_ashldi2 */

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern52 (x3))
        {
        case 0:
          return 539; /* *one_cmpl_ashrsi2 */

        case 1:
          return 543; /* *one_cmpl_ashrdi2 */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern52 (x3))
        {
        case 0:
          return 540; /* *one_cmpl_lshrsi2 */

        case 1:
          return 544; /* *one_cmpl_lshrdi2 */

        default:
          return -1;
        }

    case ROTATERT:
      switch (pattern52 (x3))
        {
        case 0:
          return 541; /* *one_cmpl_rotrsi2 */

        case 1:
          return 545; /* *one_cmpl_rotrdi2 */

        default:
          return -1;
        }

    case XOR:
      x5 = XEXP (x4, 0);
      switch (GET_CODE (x5))
        {
        case REG:
        case SUBREG:
          switch (pattern117 (x3))
            {
            case 0:
              return 553; /* *xor_one_cmplsi3 */

            case 1:
              return 554; /* *xor_one_cmpldi3 */

            default:
              return -1;
            }

        case ASHIFT:
          switch (pattern140 (x3))
            {
            case 0:
              return 584; /* *eor_one_cmpl_ashlsi3_alt */

            case 1:
              return 588; /* *eor_one_cmpl_ashldi3_alt */

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern140 (x3))
            {
            case 0:
              return 585; /* *eor_one_cmpl_ashrsi3_alt */

            case 1:
              return 589; /* *eor_one_cmpl_ashrdi3_alt */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern140 (x3))
            {
            case 0:
              return 586; /* *eor_one_cmpl_lshrsi3_alt */

            case 1:
              return 590; /* *eor_one_cmpl_lshrdi3_alt */

            default:
              return -1;
            }

        case ROTATERT:
          switch (pattern140 (x3))
            {
            case 0:
              return 587; /* *eor_one_cmpl_rotrsi3_alt */

            case 1:
              return 591; /* *eor_one_cmpl_rotrdi3_alt */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_110 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
    case MEM:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case DImode:
          switch (pattern155 (x3))
            {
            case 0:
              return 82; /* *extendsidi2_aarch64 */

            case 1:
              return 87; /* *extendqidi2_aarch64 */

            case 2:
              return 89; /* *extendhidi2_aarch64 */

            default:
              return -1;
            }

        case SImode:
          switch (pattern156 (x3))
            {
            case 0:
              return 86; /* *extendqisi2_aarch64 */

            case 1:
              return 88; /* *extendhisi2_aarch64 */

            default:
              return -1;
            }

        case HImode:
          if (!register_operand (operands[0], HImode)
              || GET_MODE (x3) != HImode
              || !nonimmediate_operand (operands[1], QImode))
            return -1;
          return 94; /* *extendqihi2_aarch64 */

        default:
          return -1;
        }

    case ASHIFT:
      switch (pattern40 (x3))
        {
        case 0:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 674; /* *extendsi_ashlqi */

        case 1:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 678; /* *extendsi_ashlhi */

        case 2:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 676; /* *extenddi_ashlqi */

        case 3:
          if (!
#line 4244 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 680; /* *extenddi_ashlhi */

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern40 (x3))
        {
        case 0:
          if (!
#line 4270 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 686; /* *extendsi_ashrqi */

        case 1:
          if (!
#line 4270 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 688; /* *extendsi_ashrhi */

        case 2:
          if (!
#line 4270 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 687; /* *extenddi_ashrqi */

        case 3:
          if (!
#line 4270 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 689; /* *extenddi_ashrhi */

        default:
          return -1;
        }

    case VEC_SELECT:
      x5 = XEXP (x4, 1);
      if (GET_CODE (x5) != PARALLEL)
        return -1;
      operands[2] = x5;
      switch (pattern158 (x3))
        {
        case 0:
          if (vect_par_cnst_lo_half (operands[2], V16QImode)
              && 
#line 1305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1399; /* aarch64_simd_vec_unpacks_lo_v16qi */
          if (vect_par_cnst_hi_half (operands[2], V16QImode)
              && 
#line 1316 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1405; /* aarch64_simd_vec_unpacks_hi_v16qi */
          break;

        case 1:
          if (vect_par_cnst_lo_half (operands[2], V8HImode)
              && 
#line 1305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1401; /* aarch64_simd_vec_unpacks_lo_v8hi */
          if (vect_par_cnst_hi_half (operands[2], V8HImode)
              && 
#line 1316 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1407; /* aarch64_simd_vec_unpacks_hi_v8hi */
          break;

        case 2:
          if (vect_par_cnst_lo_half (operands[2], V4SImode)
              && 
#line 1305 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1403; /* aarch64_simd_vec_unpacks_lo_v4si */
          if (vect_par_cnst_hi_half (operands[2], V4SImode)
              && 
#line 1316 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1409; /* aarch64_simd_vec_unpacks_hi_v4si */
          break;

        default:
          break;
        }
      if (XVECLEN (x5, 0) != 1)
        return -1;
      x6 = XEXP (x4, 0);
      operands[1] = x6;
      x7 = XVECEXP (x5, 0, 0);
      operands[2] = x7;
      if (!immediate_operand (operands[2], SImode))
        return -1;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          switch (pattern261 (x3, SImode))
            {
            case 0:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1794; /* *aarch64_get_lane_extendsiv8qi */

            case 1:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1796; /* *aarch64_get_lane_extendsiv16qi */

            case 2:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1798; /* *aarch64_get_lane_extendsiv4hi */

            case 3:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1800; /* *aarch64_get_lane_extendsiv8hi */

            default:
              return -1;
            }

        case DImode:
          switch (pattern261 (x3, DImode))
            {
            case 0:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1795; /* *aarch64_get_lane_extenddiv8qi */

            case 1:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1797; /* *aarch64_get_lane_extenddiv16qi */

            case 2:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1799; /* *aarch64_get_lane_extenddiv4hi */

            case 3:
              if (!
#line 2660 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 1801; /* *aarch64_get_lane_extenddiv8hi */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_111 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case CONST_INT:
    case REG:
    case SUBREG:
      return recog_13 (x1, insn, pnum_clobbers);

    case MINUS:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 1);
      switch (GET_CODE (x6))
        {
        case REG:
        case SUBREG:
          operands[2] = x6;
          x7 = XEXP (x3, 1);
          operands[3] = x7;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern247 (x3, SImode) != 0)
                return -1;
              return 325; /* *subsi3_carryin */

            case DImode:
              if (pattern247 (x3, DImode) != 0)
                return -1;
              return 326; /* *subdi3_carryin */

            default:
              return -1;
            }

        case EQ:
        case LTU:
          operands[3] = x6;
          x7 = XEXP (x3, 1);
          operands[2] = x7;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern248 (x3, SImode) != 0)
                return -1;
              return 328; /* *subsi3_carryin_alt */

            case DImode:
              if (pattern248 (x3, DImode) != 0)
                return -1;
              return 329; /* *subdi3_carryin_alt */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case NEG:
      x5 = XEXP (x4, 0);
      operands[2] = x5;
      x7 = XEXP (x3, 1);
      operands[1] = x7;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern209 (x3, SImode) != 0)
            return -1;
          return 340; /* *ngcsi */

        case DImode:
          if (pattern209 (x3, DImode) != 0)
            return -1;
          return 341; /* *ngcdi */

        default:
          return -1;
        }

    case SIGN_EXTEND:
      switch (pattern51 (x3, SIGN_EXTEND))
        {
        case 0:
          if (vect_par_cnst_hi_half (operands[3], V16QImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1832; /* aarch64_ssublv16qi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V16QImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1844; /* aarch64_ssublv16qi_lo_internal */

        case 1:
          if (vect_par_cnst_hi_half (operands[3], V8HImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1836; /* aarch64_ssublv8hi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V8HImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1848; /* aarch64_ssublv8hi_lo_internal */

        case 2:
          if (vect_par_cnst_hi_half (operands[3], V4SImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1840; /* aarch64_ssublv4si_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V4SImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1852; /* aarch64_ssublv4si_lo_internal */

        case 3:
          if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1856; /* aarch64_ssublv8qi */

        case 4:
          if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1860; /* aarch64_ssublv4hi */

        case 5:
          if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1864; /* aarch64_ssublv2si */

        default:
          return -1;
        }

    case ZERO_EXTEND:
      switch (pattern51 (x3, ZERO_EXTEND))
        {
        case 0:
          if (vect_par_cnst_hi_half (operands[3], V16QImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1834; /* aarch64_usublv16qi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V16QImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1846; /* aarch64_usublv16qi_lo_internal */

        case 1:
          if (vect_par_cnst_hi_half (operands[3], V8HImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1838; /* aarch64_usublv8hi_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V8HImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1850; /* aarch64_usublv8hi_lo_internal */

        case 2:
          if (vect_par_cnst_hi_half (operands[3], V4SImode)
              && 
#line 2804 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1842; /* aarch64_usublv4si_hi_internal */
          if (!vect_par_cnst_lo_half (operands[3], V4SImode)
              || !
#line 2817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1854; /* aarch64_usublv4si_lo_internal */

        case 3:
          if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1858; /* aarch64_usublv8qi */

        case 4:
          if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1862; /* aarch64_usublv4hi */

        case 5:
          if (!
#line 2877 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1866; /* aarch64_usublv2si */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_112 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern24 (x1))
    {
    case 0:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2001; /* aarch64_sqsubv8qi */

    case 1:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2005; /* aarch64_sqsubv16qi */

    case 2:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2009; /* aarch64_sqsubv4hi */

    case 3:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2013; /* aarch64_sqsubv8hi */

    case 4:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2017; /* aarch64_sqsubv2si */

    case 5:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2021; /* aarch64_sqsubv4si */

    case 6:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2025; /* aarch64_sqsubv2di */

    case 7:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2029; /* aarch64_sqsubqi */

    case 8:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2033; /* aarch64_sqsubhi */

    case 9:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2037; /* aarch64_sqsubsi */

    case 10:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2041; /* aarch64_sqsubdi */

    case 11:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2178; /* aarch64_sqdmlslv4hi */

    case 12:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2180; /* aarch64_sqdmlslv2si */

    case 13:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2182; /* aarch64_sqdmlslhi */

    case 14:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2184; /* aarch64_sqdmlslsi */

    case 15:
      if (!
#line 3411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2186; /* aarch64_sqdmlsl_lanev4hi */

    case 16:
      if (!
#line 3435 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2190; /* aarch64_sqdmlsl_laneqv4hi */

    case 17:
      if (!
#line 3411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2188; /* aarch64_sqdmlsl_lanev2si */

    case 18:
      if (!
#line 3435 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2192; /* aarch64_sqdmlsl_laneqv2si */

    case 19:
      if (!
#line 3504 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2202; /* aarch64_sqdmlsl_nv4hi */

    case 20:
      if (!
#line 3504 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2204; /* aarch64_sqdmlsl_nv2si */

    case 21:
      if (!
#line 3458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2194; /* aarch64_sqdmlsl_lanehi */

    case 22:
      if (!
#line 3481 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2198; /* aarch64_sqdmlsl_laneqhi */

    case 23:
      if (!
#line 3458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2196; /* aarch64_sqdmlsl_lanesi */

    case 24:
      if (!
#line 3481 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2200; /* aarch64_sqdmlsl_laneqsi */

    case 25:
      if (!
#line 3526 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2206; /* aarch64_sqdmlsl2v8hi_internal */

    case 26:
      if (!
#line 3526 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2208; /* aarch64_sqdmlsl2v4si_internal */

    case 27:
      if (!
#line 3576 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2210; /* aarch64_sqdmlsl2_lanev8hi_internal */

    case 28:
      if (!
#line 3602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2214; /* aarch64_sqdmlsl2_laneqv8hi_internal */

    case 29:
      if (!
#line 3576 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2212; /* aarch64_sqdmlsl2_lanev4si_internal */

    case 30:
      if (!
#line 3602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2216; /* aarch64_sqdmlsl2_laneqv4si_internal */

    case 31:
      if (!
#line 3685 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2218; /* aarch64_sqdmlsl2_nv8hi_internal */

    case 32:
      if (!
#line 3685 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2220; /* aarch64_sqdmlsl2_nv4si_internal */

    default:
      return -1;
    }
}

static int
recog_113 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  int res ATTRIBUTE_UNUSED;
  switch (pattern24 (x1))
    {
    case 0:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1999; /* aarch64_sqaddv8qi */

    case 1:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2003; /* aarch64_sqaddv16qi */

    case 2:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2007; /* aarch64_sqaddv4hi */

    case 3:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2011; /* aarch64_sqaddv8hi */

    case 4:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2015; /* aarch64_sqaddv2si */

    case 5:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2019; /* aarch64_sqaddv4si */

    case 6:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2023; /* aarch64_sqaddv2di */

    case 7:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2027; /* aarch64_sqaddqi */

    case 8:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2031; /* aarch64_sqaddhi */

    case 9:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2035; /* aarch64_sqaddsi */

    case 10:
      if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2039; /* aarch64_sqadddi */

    case 11:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2177; /* aarch64_sqdmlalv4hi */

    case 12:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2179; /* aarch64_sqdmlalv2si */

    case 13:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2181; /* aarch64_sqdmlalhi */

    case 14:
      if (!
#line 3389 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2183; /* aarch64_sqdmlalsi */

    case 15:
      if (!
#line 3411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2185; /* aarch64_sqdmlal_lanev4hi */

    case 16:
      if (!
#line 3435 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2189; /* aarch64_sqdmlal_laneqv4hi */

    case 17:
      if (!
#line 3411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2187; /* aarch64_sqdmlal_lanev2si */

    case 18:
      if (!
#line 3435 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2191; /* aarch64_sqdmlal_laneqv2si */

    case 19:
      if (!
#line 3504 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2201; /* aarch64_sqdmlal_nv4hi */

    case 20:
      if (!
#line 3504 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2203; /* aarch64_sqdmlal_nv2si */

    case 21:
      if (!
#line 3458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2193; /* aarch64_sqdmlal_lanehi */

    case 22:
      if (!
#line 3481 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2197; /* aarch64_sqdmlal_laneqhi */

    case 23:
      if (!
#line 3458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2195; /* aarch64_sqdmlal_lanesi */

    case 24:
      if (!
#line 3481 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2199; /* aarch64_sqdmlal_laneqsi */

    case 25:
      if (!
#line 3526 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2205; /* aarch64_sqdmlal2v8hi_internal */

    case 26:
      if (!
#line 3526 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2207; /* aarch64_sqdmlal2v4si_internal */

    case 27:
      if (!
#line 3576 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2209; /* aarch64_sqdmlal2_lanev8hi_internal */

    case 28:
      if (!
#line 3602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2213; /* aarch64_sqdmlal2_laneqv8hi_internal */

    case 29:
      if (!
#line 3576 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2211; /* aarch64_sqdmlal2_lanev4si_internal */

    case 30:
      if (!
#line 3602 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2215; /* aarch64_sqdmlal2_laneqv4si_internal */

    case 31:
      if (!
#line 3685 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2217; /* aarch64_sqdmlal2_nv8hi_internal */

    case 32:
      if (!
#line 3685 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2219; /* aarch64_sqdmlal2_nv4si_internal */

    default:
      return -1;
    }
}

static int
recog_114 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode
          || !register_operand (operands[1], HFmode)
          || !(
#line 4806 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 896; /* *sqrthf2 */

    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], SFmode)
          || !
#line 4806 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 897; /* *sqrtsf2 */

    case DFmode:
      if (!register_operand (operands[0], DFmode)
          || GET_MODE (x3) != DFmode
          || !register_operand (operands[1], DFmode)
          || !
#line 4806 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 898; /* *sqrtdf2 */

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4HFmode)
          || !(
#line 4383 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 2646; /* *sqrtv4hf2 */

    case V8HFmode:
      if (!register_operand (operands[0], V8HFmode)
          || GET_MODE (x3) != V8HFmode
          || !register_operand (operands[1], V8HFmode)
          || !(
#line 4383 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 2647; /* *sqrtv8hf2 */

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2SFmode)
          || !
#line 4383 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2648; /* *sqrtv2sf2 */

    case V4SFmode:
      if (!register_operand (operands[0], V4SFmode)
          || GET_MODE (x3) != V4SFmode
          || !register_operand (operands[1], V4SFmode)
          || !
#line 4383 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2649; /* *sqrtv4sf2 */

    case V2DFmode:
      if (!register_operand (operands[0], V2DFmode)
          || GET_MODE (x3) != V2DFmode
          || !register_operand (operands[1], V2DFmode)
          || !
#line 4383 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 2650; /* *sqrtv2df2 */

    default:
      return -1;
    }
}

static int
recog_115 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case DFmode:
          if (!register_operand (operands[0], DFmode)
              || GET_MODE (x3) != DFmode)
            return -1;
          switch (GET_MODE (operands[1]))
            {
            case SFmode:
              if (!register_operand (operands[1], SFmode)
                  || !
#line 4560 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return -1;
              return 827; /* extendsfdf2 */

            case HFmode:
              if (!register_operand (operands[1], HFmode)
                  || !
#line 4576 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
                return -1;
              return 829; /* extendhfdf2 */

            default:
              return -1;
            }

        case SFmode:
          if (!register_operand (operands[0], SFmode)
              || GET_MODE (x3) != SFmode
              || !register_operand (operands[1], HFmode)
              || !
#line 4568 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 828; /* extendhfsf2 */

        case V2DFmode:
          if (!register_operand (operands[0], V2DFmode)
              || GET_MODE (x3) != V2DFmode
              || !register_operand (operands[1], V2SFmode)
              || !
#line 1924 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1668; /* aarch64_float_extend_lo_v2df */

        case V4SFmode:
          if (!register_operand (operands[0], V4SFmode)
              || GET_MODE (x3) != V4SFmode
              || !register_operand (operands[1], V4HFmode)
              || !
#line 1924 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1669; /* aarch64_float_extend_lo_v4sf */

        default:
          return -1;
        }

    case VEC_SELECT:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      switch (GET_MODE (operands[0]))
        {
        case V4SFmode:
          if (pattern157 (x3, V8HFmode, V4HFmode, V4SFmode) != 0)
            return -1;
          if (vect_par_cnst_lo_half (operands[2], V8HFmode)
              && 
#line 1848 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1644; /* aarch64_simd_vec_unpacks_lo_v8hf */
          if (!vect_par_cnst_hi_half (operands[2], V8HFmode)
              || !
#line 1904 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1666; /* aarch64_simd_vec_unpacks_hi_v8hf */

        case V2DFmode:
          if (pattern157 (x3, V4SFmode, V2SFmode, V2DFmode) != 0)
            return -1;
          if (vect_par_cnst_lo_half (operands[2], V4SFmode)
              && 
#line 1848 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return 1645; /* aarch64_simd_vec_unpacks_lo_v4sf */
          if (!vect_par_cnst_hi_half (operands[2], V4SFmode)
              || !
#line 1904 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1667; /* aarch64_simd_vec_unpacks_hi_v4sf */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_116 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (!register_operand (operands[0], SImode)
          || GET_MODE (x3) != SImode
          || !register_operand (operands[1], SImode))
        return -1;
      return 718; /* bswapsi2 */

    case DImode:
      if (!register_operand (operands[0], DImode)
          || GET_MODE (x3) != DImode
          || !register_operand (operands[1], DImode))
        return -1;
      return 719; /* bswapdi2 */

    case HImode:
      if (!register_operand (operands[0], HImode)
          || GET_MODE (x3) != HImode
          || !register_operand (operands[1], HImode))
        return -1;
      return 720; /* bswaphi2 */

    case V4HImode:
      if (!register_operand (operands[0], V4HImode)
          || GET_MODE (x3) != V4HImode
          || !register_operand (operands[1], V4HImode)
          || !
#line 313 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1072; /* bswapv4hi2 */

    case V8HImode:
      if (!register_operand (operands[0], V8HImode)
          || GET_MODE (x3) != V8HImode
          || !register_operand (operands[1], V8HImode)
          || !
#line 313 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1073; /* bswapv8hi2 */

    case V2SImode:
      if (!register_operand (operands[0], V2SImode)
          || GET_MODE (x3) != V2SImode
          || !register_operand (operands[1], V2SImode)
          || !
#line 313 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1074; /* bswapv2si2 */

    case V4SImode:
      if (!register_operand (operands[0], V4SImode)
          || GET_MODE (x3) != V4SImode
          || !register_operand (operands[1], V4SImode)
          || !
#line 313 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1075; /* bswapv4si2 */

    case V2DImode:
      if (!register_operand (operands[0], V2DImode)
          || GET_MODE (x3) != V2DImode
          || !register_operand (operands[1], V2DImode)
          || !
#line 313 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1076; /* bswapv2di2 */

    default:
      return -1;
    }
}

static int
recog_117 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case REG:
    case SUBREG:
      switch (pattern107 (x3))
        {
        case 0:
          return 467; /* andsi3 */

        case 1:
          return 470; /* anddi3 */

        case 2:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1162; /* andv8qi3 */

        case 3:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1163; /* andv16qi3 */

        case 4:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1164; /* andv4hi3 */

        case 5:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1165; /* andv8hi3 */

        case 6:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1166; /* andv2si3 */

        case 7:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1167; /* andv4si3 */

        case 8:
          if (!
#line 492 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1168; /* andv2di3 */

        default:
          return -1;
        }

    case ASHIFT:
      x5 = XEXP (x4, 0);
      operands[1] = x5;
      x6 = XEXP (x4, 1);
      operands[2] = x6;
      x7 = XEXP (x3, 1);
      operands[3] = x7;
      switch (GET_CODE (operands[3]))
        {
        case REG:
        case SUBREG:
          switch (pattern41 (x3))
            {
            case 0:
              return 491; /* *and_ashlsi3 */

            case 1:
              return 503; /* *and_ashldi3 */

            default:
              return -1;
            }

        case CONST_INT:
          if (!const_int_operand (operands[3], VOIDmode)
              || !const_int_operand (operands[2], VOIDmode))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern282 (x3, SImode) != 0
                  || !
#line 4390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_mask_and_shift_for_ubfiz_p (SImode, operands[3], operands[2])))
                return -1;
              return 716; /* *andim_ashiftsi_bfiz */

            case DImode:
              if (pattern282 (x3, DImode) != 0
                  || !
#line 4390 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_mask_and_shift_for_ubfiz_p (DImode, operands[3], operands[2])))
                return -1;
              return 717; /* *andim_ashiftdi_bfiz */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 492; /* *and_ashrsi3 */

        case 1:
          return 504; /* *and_ashrdi3 */

        default:
          return -1;
        }

    case LSHIFTRT:
      switch (pattern42 (x3))
        {
        case 0:
          return 493; /* *and_lshrsi3 */

        case 1:
          return 505; /* *and_lshrdi3 */

        default:
          return -1;
        }

    case ROTATERT:
      switch (pattern42 (x3))
        {
        case 0:
          return 494; /* *and_rotrsi3 */

        case 1:
          return 506; /* *and_rotrdi3 */

        default:
          return -1;
        }

    case ROTATE:
      switch (pattern42 (x3))
        {
        case 0:
          return 515; /* *and_rolsi3 */

        case 1:
          return 518; /* *and_roldi3 */

        default:
          return -1;
        }

    case NOT:
      switch (pattern111 (x3))
        {
        case 0:
          return 546; /* *and_one_cmplsi3 */

        case 1:
          return 548; /* *and_one_cmpldi3 */

        case 2:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1045; /* bicv8qi3 */

        case 3:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1046; /* bicv16qi3 */

        case 4:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1047; /* bicv4hi3 */

        case 5:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1048; /* bicv8hi3 */

        case 6:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1049; /* bicv2si3 */

        case 7:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1050; /* bicv4si3 */

        case 8:
          if (!
#line 278 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1051; /* bicv2di3 */

        case 9:
          return 560; /* and_one_cmpl_ashlsi3 */

        case 10:
          return 572; /* and_one_cmpl_ashldi3 */

        case 11:
          return 561; /* and_one_cmpl_ashrsi3 */

        case 12:
          return 573; /* and_one_cmpl_ashrdi3 */

        case 13:
          return 562; /* and_one_cmpl_lshrsi3 */

        case 14:
          return 574; /* and_one_cmpl_lshrdi3 */

        case 15:
          return 563; /* and_one_cmpl_rotrsi3 */

        case 16:
          return 575; /* and_one_cmpl_rotrdi3 */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_118 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  switch (GET_CODE (x4))
    {
    case LSHIFTRT:
      if (pattern56 (x3, 64, TImode, MULT) != 0)
        return -1;
      x5 = XEXP (x4, 0);
      x6 = XEXP (x5, 0);
      if (GET_MODE (x6) != TImode)
        return -1;
      x7 = XEXP (x5, 1);
      if (GET_MODE (x7) != TImode)
        return -1;
      switch (GET_CODE (x6))
        {
        case SIGN_EXTEND:
          if (GET_CODE (x7) != SIGN_EXTEND)
            return -1;
          x8 = XEXP (x6, 0);
          operands[1] = x8;
          if (!register_operand (operands[1], DImode))
            return -1;
          x9 = XEXP (x7, 0);
          operands[2] = x9;
          if (!register_operand (operands[2], DImode))
            return -1;
          return 384; /* smuldi3_highpart */

        case ZERO_EXTEND:
          if (GET_CODE (x7) != ZERO_EXTEND)
            return -1;
          x8 = XEXP (x6, 0);
          operands[1] = x8;
          if (!register_operand (operands[1], DImode))
            return -1;
          x9 = XEXP (x7, 0);
          operands[2] = x9;
          if (!register_operand (operands[2], DImode))
            return -1;
          return 385; /* umuldi3_highpart */

        default:
          return -1;
        }

    case REG:
    case SUBREG:
      operands[1] = x4;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x3) != V8QImode
              || !register_operand (operands[1], V8HImode)
              || !
#line 1258 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1393; /* aarch64_simd_vec_pack_trunc_v8hi */

        case V4HImode:
          if (!register_operand (operands[0], V4HImode)
              || GET_MODE (x3) != V4HImode
              || !register_operand (operands[1], V4SImode)
              || !
#line 1258 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1394; /* aarch64_simd_vec_pack_trunc_v4si */

        case V2SImode:
          if (!register_operand (operands[0], V2SImode)
              || GET_MODE (x3) != V2SImode
              || !register_operand (operands[1], V2DImode)
              || !
#line 1258 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1395; /* aarch64_simd_vec_pack_trunc_v2di */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_119 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == NE
      && GET_MODE (x2) == CC_Cmode)
    {
      res = recog_12 (x1, insn, pnum_clobbers);
      if (res >= 0)
        return res;
    }
  operands[1] = x2;
  x3 = XEXP (x2, 1);
  if (x3 == const_int_rtx[MAX_SAVED_CONST_INT + 0])
    {
      x4 = XEXP (x1, 0);
      operands[0] = x4;
      x5 = XEXP (x2, 0);
      operands[2] = x5;
      if (cc_register (operands[2], VOIDmode))
        {
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (register_operand (operands[0], QImode)
                  && aarch64_comparison_operator_mode (operands[1], QImode))
                return 428; /* aarch64_cstoreqi */
              break;

            case HImode:
              if (register_operand (operands[0], HImode)
                  && aarch64_comparison_operator_mode (operands[1], HImode))
                return 429; /* aarch64_cstorehi */
              break;

            case SImode:
              if (register_operand (operands[0], SImode)
                  && aarch64_comparison_operator_mode (operands[1], SImode))
                return 430; /* aarch64_cstoresi */
              break;

            case DImode:
              if (register_operand (operands[0], DImode)
                  && aarch64_comparison_operator_mode (operands[1], DImode))
                return 431; /* aarch64_cstoredi */
              break;

            default:
              break;
            }
        }
    }
  x4 = XEXP (x1, 0);
  operands[0] = x4;
  x5 = XEXP (x2, 0);
  operands[1] = x5;
  operands[2] = x3;
  switch (GET_CODE (x2))
    {
    case EQ:
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern27 (x2, SImode) != 0
              || !
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), SImode)
   && !aarch64_plus_operand (operands[2], SImode)
   && !reload_completed))
            return -1;
          return 432; /* *compare_cstoresi_insn */

        case DImode:
          if (pattern27 (x2, DImode) != 0
              || !
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), DImode)
   && !aarch64_plus_operand (operands[2], DImode)
   && !reload_completed))
            return -1;
          return 434; /* *compare_cstoredi_insn */

        default:
          return -1;
        }

    case NE:
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern27 (x2, SImode) != 0
              || !
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), SImode)
   && !aarch64_plus_operand (operands[2], SImode)
   && !reload_completed))
            return -1;
          return 433; /* *compare_cstoresi_insn */

        case DImode:
          if (pattern27 (x2, DImode) != 0
              || !
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), DImode)
   && !aarch64_plus_operand (operands[2], DImode)
   && !reload_completed))
            return -1;
          return 435; /* *compare_cstoredi_insn */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_120 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  switch (GET_MODE (operands[0]))
    {
    case SFmode:
      if (!register_operand (operands[0], SFmode)
          || GET_MODE (x3) != SFmode
          || !register_operand (operands[1], DFmode)
          || !
#line 4584 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 830; /* truncdfsf2 */

    case HFmode:
      if (!register_operand (operands[0], HFmode)
          || GET_MODE (x3) != HFmode)
        return -1;
      switch (GET_MODE (operands[1]))
        {
        case SFmode:
          if (!register_operand (operands[1], SFmode)
              || !
#line 4592 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 831; /* truncsfhf2 */

        case DFmode:
          if (!register_operand (operands[1], DFmode)
              || !
#line 4600 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 832; /* truncdfhf2 */

        default:
          return -1;
        }

    case V2SFmode:
      if (!register_operand (operands[0], V2SFmode)
          || GET_MODE (x3) != V2SFmode
          || !register_operand (operands[1], V2DFmode)
          || !
#line 1935 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1670; /* aarch64_float_truncate_lo_v2sf */

    case V4HFmode:
      if (!register_operand (operands[0], V4HFmode)
          || GET_MODE (x3) != V4HFmode
          || !register_operand (operands[1], V4SFmode)
          || !
#line 1935 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1671; /* aarch64_float_truncate_lo_v4hf */

    default:
      return -1;
    }
}

static int
recog_121 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  x4 = XEXP (x3, 0);
  operands[1] = x4;
  x5 = XEXP (x3, 1);
  operands[2] = x5;
  switch (GET_MODE (operands[0]))
    {
    case SImode:
      if (pattern14 (x3, SImode) != 0)
        return -1;
      return 386; /* divsi3 */

    case DImode:
      if (pattern14 (x3, DImode) != 0)
        return -1;
      return 388; /* divdi3 */

    case HFmode:
      if (pattern14 (x3, HFmode) != 0
          || !(
#line 4781 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT) && 
#line 45 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(AARCH64_ISA_F16)))
        return -1;
      return 890; /* *divhf3 */

    case SFmode:
      if (pattern14 (x3, SFmode) != 0
          || !
#line 4781 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 891; /* *divsf3 */

    case DFmode:
      if (pattern14 (x3, DFmode) != 0
          || !
#line 4781 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
        return -1;
      return 892; /* *divdf3 */

    case V4HFmode:
      if (pattern14 (x3, V4HFmode) != 0
          || !(
#line 1562 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1474; /* *divv4hf3 */

    case V8HFmode:
      if (pattern14 (x3, V8HFmode) != 0
          || !(
#line 1562 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
        return -1;
      return 1475; /* *divv8hf3 */

    case V2SFmode:
      if (pattern14 (x3, V2SFmode) != 0
          || !
#line 1562 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1476; /* *divv2sf3 */

    case V4SFmode:
      if (pattern14 (x3, V4SFmode) != 0
          || !
#line 1562 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1477; /* *divv4sf3 */

    case V2DFmode:
      if (pattern14 (x3, V2DFmode) != 0
          || !
#line 1562 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
        return -1;
      return 1478; /* *divv2df3 */

    default:
      return -1;
    }
}

static int
recog_122 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != CONST_INT)
    return -1;
  x4 = XEXP (x2, 2);
  operands[3] = x4;
  if (const_int_operand (operands[3], VOIDmode))
    {
      res = recog_86 (x1, insn, pnum_clobbers);
      if (res >= 0)
        return res;
    }
  if (XWINT (x3, 0) != 64L
      || GET_CODE (x4) != CONST_INT)
    return -1;
  x5 = XEXP (x1, 0);
  operands[0] = x5;
  if (!register_operand (operands[0], DImode)
      || GET_MODE (x2) != DImode)
    return -1;
  x6 = XEXP (x2, 0);
  operands[1] = x6;
  switch (XWINT (x4, 0))
    {
    case 0L:
      switch (GET_MODE (operands[1]))
        {
        case TImode:
          if (!register_operand (operands[1], TImode)
              || !
#line 4954 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
            return -1;
          return 918; /* aarch64_movdi_tilow */

        case TFmode:
          if (!register_operand (operands[1], TFmode)
              || !
#line 4954 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
            return -1;
          return 919; /* aarch64_movdi_tflow */

        default:
          return -1;
        }

    case 64L:
      switch (GET_MODE (operands[1]))
        {
        case TImode:
          if (!register_operand (operands[1], TImode)
              || !
#line 4964 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
            return -1;
          return 920; /* aarch64_movdi_tihigh */

        case TFmode:
          if (!register_operand (operands[1], TFmode)
              || !
#line 4964 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT && (reload_completed || reload_in_progress)))
            return -1;
          return 921; /* aarch64_movdi_tfhigh */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_123 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) != MEM
      || GET_MODE (x3) != DImode)
    return -1;
  x4 = XEXP (x3, 0);
  if (GET_CODE (x4) != UNSPEC
      || XVECLEN (x4, 0) != 2
      || XINT (x4, 1) != 0)
    return -1;
  x5 = XEXP (x2, 0);
  if (GET_CODE (x5) != PC)
    return -1;
  x6 = XVECEXP (x1, 0, 1);
  if (pattern144 (x6, CCmode, 66) != 0)
    return -1;
  x7 = XVECEXP (x1, 0, 4);
  if (GET_CODE (x7) != USE)
    return -1;
  x8 = XEXP (x7, 0);
  if (GET_CODE (x8) != LABEL_REF)
    return -1;
  x9 = XVECEXP (x4, 0, 0);
  operands[0] = x9;
  if (!register_operand (operands[0], DImode))
    return -1;
  x10 = XVECEXP (x4, 0, 1);
  operands[1] = x10;
  if (!register_operand (operands[1], SImode))
    return -1;
  x11 = XVECEXP (x1, 0, 2);
  x12 = XEXP (x11, 0);
  operands[3] = x12;
  if (!scratch_operand (operands[3], DImode))
    return -1;
  x13 = XEXP (x8, 0);
  operands[2] = x13;
  return 18; /* casesi_dispatch */
}

static int
recog_124 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  x3 = XEXP (x2, 1);
  operands[3] = x3;
  switch (GET_CODE (operands[1]))
    {
    case MEM:
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern283 (SImode) != 0
              || !
#line 1292 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[3], 0),
		plus_constant (Pmode,
			       XEXP (operands[1], 0),
			       GET_MODE_SIZE (SImode)))))
            return -1;
          return 58; /* load_pairsi */

        case DImode:
          if (pattern283 (DImode) != 0
              || !
#line 1308 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[3], 0),
		plus_constant (Pmode,
			       XEXP (operands[1], 0),
			       GET_MODE_SIZE (DImode)))))
            return -1;
          return 59; /* load_pairdi */

        case SFmode:
          if (pattern283 (SFmode) != 0
              || !
#line 1361 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[3], 0),
		plus_constant (Pmode,
			       XEXP (operands[1], 0),
			       GET_MODE_SIZE (SFmode)))))
            return -1;
          return 62; /* load_pairsf */

        case DFmode:
          if (pattern283 (DFmode) != 0
              || !
#line 1377 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[3], 0),
		plus_constant (Pmode,
			       XEXP (operands[1], 0),
			       GET_MODE_SIZE (DFmode)))))
            return -1;
          return 63; /* load_pairdf */

        case V8QImode:
          if (pattern283 (V8QImode) != 0
              || !
#line 161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[3], 0),
		   plus_constant (Pmode,
				  XEXP (operands[1], 0),
				  GET_MODE_SIZE (V8QImode)))))
            return -1;
          return 1014; /* load_pairv8qi */

        case V4HImode:
          if (pattern283 (V4HImode) != 0
              || !
#line 161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[3], 0),
		   plus_constant (Pmode,
				  XEXP (operands[1], 0),
				  GET_MODE_SIZE (V4HImode)))))
            return -1;
          return 1015; /* load_pairv4hi */

        case V4HFmode:
          if (pattern283 (V4HFmode) != 0
              || !
#line 161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[3], 0),
		   plus_constant (Pmode,
				  XEXP (operands[1], 0),
				  GET_MODE_SIZE (V4HFmode)))))
            return -1;
          return 1016; /* load_pairv4hf */

        case V2SImode:
          if (pattern283 (V2SImode) != 0
              || !
#line 161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[3], 0),
		   plus_constant (Pmode,
				  XEXP (operands[1], 0),
				  GET_MODE_SIZE (V2SImode)))))
            return -1;
          return 1017; /* load_pairv2si */

        case V2SFmode:
          if (pattern283 (V2SFmode) != 0
              || !
#line 161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[3], 0),
		   plus_constant (Pmode,
				  XEXP (operands[1], 0),
				  GET_MODE_SIZE (V2SFmode)))))
            return -1;
          return 1018; /* load_pairv2sf */

        default:
          return -1;
        }

    case CONST_INT:
    case CONST_DOUBLE:
    case REG:
    case SUBREG:
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern284 (SImode) != 0
              || !
#line 1327 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[2], 0),
		plus_constant (Pmode,
			       XEXP (operands[0], 0),
			       GET_MODE_SIZE (SImode)))))
            return -1;
          return 60; /* store_pairsi */

        case DImode:
          if (pattern284 (DImode) != 0
              || !
#line 1343 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[2], 0),
		plus_constant (Pmode,
			       XEXP (operands[0], 0),
			       GET_MODE_SIZE (DImode)))))
            return -1;
          return 61; /* store_pairdi */

        case SFmode:
          if (pattern285 (SFmode) != 0
              || !
#line 1395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[2], 0),
		plus_constant (Pmode,
			       XEXP (operands[0], 0),
			       GET_MODE_SIZE (SFmode)))))
            return -1;
          return 64; /* store_pairsf */

        case DFmode:
          if (pattern285 (DFmode) != 0
              || !
#line 1411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[2], 0),
		plus_constant (Pmode,
			       XEXP (operands[0], 0),
			       GET_MODE_SIZE (DFmode)))))
            return -1;
          return 65; /* store_pairdf */

        case V8QImode:
          if (pattern286 (V8QImode) != 0
              || !
#line 175 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[2], 0),
		   plus_constant (Pmode,
				  XEXP (operands[0], 0),
				  GET_MODE_SIZE (V8QImode)))))
            return -1;
          return 1019; /* store_pairv8qi */

        case V4HImode:
          if (pattern286 (V4HImode) != 0
              || !
#line 175 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[2], 0),
		   plus_constant (Pmode,
				  XEXP (operands[0], 0),
				  GET_MODE_SIZE (V4HImode)))))
            return -1;
          return 1020; /* store_pairv4hi */

        case V4HFmode:
          if (pattern286 (V4HFmode) != 0
              || !
#line 175 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[2], 0),
		   plus_constant (Pmode,
				  XEXP (operands[0], 0),
				  GET_MODE_SIZE (V4HFmode)))))
            return -1;
          return 1021; /* store_pairv4hf */

        case V2SImode:
          if (pattern286 (V2SImode) != 0
              || !
#line 175 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[2], 0),
		   plus_constant (Pmode,
				  XEXP (operands[0], 0),
				  GET_MODE_SIZE (V2SImode)))))
            return -1;
          return 1022; /* store_pairv2si */

        case V2SFmode:
          if (pattern286 (V2SFmode) != 0
              || !
#line 175 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD
   && rtx_equal_p (XEXP (operands[2], 0),
		   plus_constant (Pmode,
				  XEXP (operands[0], 0),
				  GET_MODE_SIZE (V2SFmode)))))
            return -1;
          return 1023; /* store_pairv2sf */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_125 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20, x21, x22;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) != REG
      || REGNO (x3) != 66)
    return -1;
  x4 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x4) != SET)
    return -1;
  x5 = XEXP (x4, 0);
  operands[0] = x5;
  x6 = XEXP (x2, 1);
  x7 = XEXP (x6, 0);
  switch (GET_CODE (x7))
    {
    case PLUS:
      x8 = XEXP (x6, 1);
      if (x8 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x3) != CC_NZmode
          || GET_MODE (x6) != CC_NZmode)
        return -1;
      x9 = XEXP (x7, 0);
      switch (GET_CODE (x9))
        {
        case REG:
        case SUBREG:
          operands[1] = x9;
          x10 = XEXP (x7, 1);
          operands[2] = x10;
          x11 = XEXP (x4, 1);
          switch (GET_CODE (x11))
            {
            case PLUS:
              x12 = XEXP (x11, 0);
              if (!rtx_equal_p (x12, operands[1]))
                return -1;
              x13 = XEXP (x11, 1);
              if (!rtx_equal_p (x13, operands[2]))
                return -1;
              switch (GET_MODE (x7))
                {
                case SImode:
                  if (pattern367 (x11, SImode) != 0)
                    return -1;
                  return 99; /* addsi3_compare0 */

                case DImode:
                  if (pattern367 (x11, DImode) != 0)
                    return -1;
                  return 100; /* adddi3_compare0 */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              if (pattern344 (x1, PLUS) != 0
                  || !register_operand (operands[1], SImode)
                  || !aarch64_plus_operand (operands[2], SImode)
                  || !register_operand (operands[0], DImode))
                return -1;
              x12 = XEXP (x11, 0);
              x14 = XEXP (x12, 0);
              if (!rtx_equal_p (x14, operands[1]))
                return -1;
              x15 = XEXP (x12, 1);
              if (!rtx_equal_p (x15, operands[2]))
                return -1;
              return 101; /* *addsi3_compare0_uxtw */

            default:
              return -1;
            }

        case ASHIFT:
          x11 = XEXP (x4, 1);
          if (GET_CODE (x11) != PLUS)
            return -1;
          x12 = XEXP (x11, 0);
          if (GET_CODE (x12) != ASHIFT)
            return -1;
          x16 = XEXP (x9, 1);
          operands[2] = x16;
          x10 = XEXP (x7, 1);
          operands[3] = x10;
          x15 = XEXP (x12, 1);
          if (!rtx_equal_p (x15, operands[2]))
            return -1;
          x13 = XEXP (x11, 1);
          if (!rtx_equal_p (x13, operands[3]))
            return -1;
          x17 = XEXP (x9, 0);
          switch (GET_CODE (x17))
            {
            case REG:
            case SUBREG:
              operands[1] = x17;
              x14 = XEXP (x12, 0);
              if (!rtx_equal_p (x14, operands[1]))
                return -1;
              switch (pattern308 (x1))
                {
                case 0:
                  return 110; /* *adds_shift_imm_si */

                case 1:
                  return 113; /* *adds_shift_imm_di */

                default:
                  return -1;
                }

            case SIGN_EXTEND:
              switch (pattern372 (x1, SIGN_EXTEND))
                {
                case 0:
                  return 150; /* *adds_extendqi_shift_si */

                case 1:
                  return 154; /* *adds_extendhi_shift_si */

                case 2:
                  return 158; /* *adds_extendsi_shift_si */

                case 3:
                  return 152; /* *adds_extendqi_shift_di */

                case 4:
                  return 156; /* *adds_extendhi_shift_di */

                case 5:
                  return 160; /* *adds_extendsi_shift_di */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              switch (pattern372 (x1, ZERO_EXTEND))
                {
                case 0:
                  return 151; /* *adds_zero_extendqi_shift_si */

                case 1:
                  return 155; /* *adds_zero_extendhi_shift_si */

                case 2:
                  return 159; /* *adds_zero_extendsi_shift_si */

                case 3:
                  return 153; /* *adds_zero_extendqi_shift_di */

                case 4:
                  return 157; /* *adds_zero_extendhi_shift_di */

                case 5:
                  return 161; /* *adds_zero_extendsi_shift_di */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern310 (x1, ASHIFTRT))
            {
            case 0:
              return 111; /* *adds_shift_imm_si */

            case 1:
              return 114; /* *adds_shift_imm_di */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern310 (x1, LSHIFTRT))
            {
            case 0:
              return 112; /* *adds_shift_imm_si */

            case 1:
              return 115; /* *adds_shift_imm_di */

            default:
              return -1;
            }

        case MULT:
          x11 = XEXP (x4, 1);
          if (GET_CODE (x11) != PLUS)
            return -1;
          x12 = XEXP (x11, 0);
          if (GET_CODE (x12) != MULT)
            return -1;
          x17 = XEXP (x9, 0);
          operands[1] = x17;
          x16 = XEXP (x9, 1);
          operands[2] = x16;
          x10 = XEXP (x7, 1);
          operands[3] = x10;
          x14 = XEXP (x12, 0);
          if (!rtx_equal_p (x14, operands[1]))
            return -1;
          x15 = XEXP (x12, 1);
          if (!rtx_equal_p (x15, operands[2]))
            return -1;
          x13 = XEXP (x11, 1);
          if (!rtx_equal_p (x13, operands[3]))
            return -1;
          switch (GET_MODE (x7))
            {
            case SImode:
              if (GET_MODE (x9) != SImode
                  || !register_operand (operands[1], SImode)
                  || !aarch64_pwr_2_si (operands[2], QImode)
                  || pattern307 (x11, SImode) != 0)
                return -1;
              return 122; /* *adds_mul_imm_si */

            case DImode:
              if (GET_MODE (x9) != DImode
                  || !register_operand (operands[1], DImode)
                  || !aarch64_pwr_2_di (operands[2], QImode)
                  || pattern307 (x11, DImode) != 0)
                return -1;
              return 123; /* *adds_mul_imm_di */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern312 (x1, SIGN_EXTEND))
            {
            case 0:
              return 126; /* *adds_extendqi_si */

            case 1:
              return 130; /* *adds_extendhi_si */

            case 2:
              return 134; /* *adds_extendsi_si */

            case 3:
              return 128; /* *adds_extendqi_di */

            case 4:
              return 132; /* *adds_extendhi_di */

            case 5:
              return 136; /* *adds_extendsi_di */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern312 (x1, ZERO_EXTEND))
            {
            case 0:
              return 127; /* *adds_zero_extendqi_si */

            case 1:
              return 131; /* *adds_zero_extendhi_si */

            case 2:
              return 135; /* *adds_zero_extendsi_si */

            case 3:
              return 129; /* *adds_zero_extendqi_di */

            case 4:
              return 133; /* *adds_zero_extendhi_di */

            case 5:
              return 137; /* *adds_zero_extendsi_di */

            default:
              return -1;
            }

        case SIGN_EXTRACT:
          switch (pattern315 (x1, SIGN_EXTRACT))
            {
            case 0:
              if (!
#line 1983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
                return -1;
              return 174; /* *adds_extvsi_multp2 */

            case 1:
              if (!
#line 1983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
                return -1;
              return 176; /* *adds_extvdi_multp2 */

            default:
              return -1;
            }

        case ZERO_EXTRACT:
          switch (pattern315 (x1, ZERO_EXTRACT))
            {
            case 0:
              if (!
#line 1983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
                return -1;
              return 175; /* *adds_extzvsi_multp2 */

            case 1:
              if (!
#line 1983 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
                return -1;
              return 177; /* *adds_extzvdi_multp2 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case MINUS:
      x8 = XEXP (x6, 1);
      if (x8 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x3) != CC_NZmode
          || GET_MODE (x6) != CC_NZmode)
        return -1;
      x10 = XEXP (x7, 1);
      switch (GET_CODE (x10))
        {
        case ASHIFT:
          x11 = XEXP (x4, 1);
          if (GET_CODE (x11) != MINUS)
            return -1;
          x13 = XEXP (x11, 1);
          if (GET_CODE (x13) != ASHIFT)
            return -1;
          x9 = XEXP (x7, 0);
          operands[1] = x9;
          x18 = XEXP (x10, 1);
          operands[3] = x18;
          x12 = XEXP (x11, 0);
          if (!rtx_equal_p (x12, operands[1]))
            return -1;
          x19 = XEXP (x13, 1);
          if (!rtx_equal_p (x19, operands[3]))
            return -1;
          x20 = XEXP (x10, 0);
          switch (GET_CODE (x20))
            {
            case REG:
            case SUBREG:
              operands[2] = x20;
              x21 = XEXP (x13, 0);
              if (!rtx_equal_p (x21, operands[2]))
                return -1;
              switch (pattern316 (x1))
                {
                case 0:
                  return 116; /* *subs_shift_imm_si */

                case 1:
                  return 119; /* *subs_shift_imm_di */

                default:
                  return -1;
                }

            case SIGN_EXTEND:
              switch (pattern374 (x1, SIGN_EXTEND))
                {
                case 0:
                  return 162; /* *subs_extendqi_shift_si */

                case 1:
                  return 166; /* *subs_extendhi_shift_si */

                case 2:
                  return 170; /* *subs_extendsi_shift_si */

                case 3:
                  return 164; /* *subs_extendqi_shift_di */

                case 4:
                  return 168; /* *subs_extendhi_shift_di */

                case 5:
                  return 172; /* *subs_extendsi_shift_di */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              switch (pattern374 (x1, ZERO_EXTEND))
                {
                case 0:
                  return 163; /* *subs_zero_extendqi_shift_si */

                case 1:
                  return 167; /* *subs_zero_extendhi_shift_si */

                case 2:
                  return 171; /* *subs_zero_extendsi_shift_si */

                case 3:
                  return 165; /* *subs_zero_extendqi_shift_di */

                case 4:
                  return 169; /* *subs_zero_extendhi_shift_di */

                case 5:
                  return 173; /* *subs_zero_extendsi_shift_di */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern317 (x1, ASHIFTRT))
            {
            case 0:
              return 117; /* *subs_shift_imm_si */

            case 1:
              return 120; /* *subs_shift_imm_di */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern317 (x1, LSHIFTRT))
            {
            case 0:
              return 118; /* *subs_shift_imm_si */

            case 1:
              return 121; /* *subs_shift_imm_di */

            default:
              return -1;
            }

        case MULT:
          x11 = XEXP (x4, 1);
          if (GET_CODE (x11) != MINUS)
            return -1;
          x13 = XEXP (x11, 1);
          if (GET_CODE (x13) != MULT)
            return -1;
          x9 = XEXP (x7, 0);
          operands[1] = x9;
          x20 = XEXP (x10, 0);
          operands[2] = x20;
          x18 = XEXP (x10, 1);
          operands[3] = x18;
          x12 = XEXP (x11, 0);
          if (!rtx_equal_p (x12, operands[1]))
            return -1;
          x21 = XEXP (x13, 0);
          if (!rtx_equal_p (x21, operands[2]))
            return -1;
          x19 = XEXP (x13, 1);
          if (!rtx_equal_p (x19, operands[3]))
            return -1;
          switch (GET_MODE (x7))
            {
            case SImode:
              if (!register_operand (operands[1], SImode)
                  || GET_MODE (x10) != SImode
                  || !register_operand (operands[2], SImode)
                  || !aarch64_pwr_2_si (operands[3], QImode)
                  || !register_operand (operands[0], SImode)
                  || GET_MODE (x11) != SImode
                  || GET_MODE (x13) != SImode)
                return -1;
              return 124; /* *subs_mul_imm_si */

            case DImode:
              if (!register_operand (operands[1], DImode)
                  || GET_MODE (x10) != DImode
                  || !register_operand (operands[2], DImode)
                  || !aarch64_pwr_2_di (operands[3], QImode)
                  || !register_operand (operands[0], DImode)
                  || GET_MODE (x11) != DImode
                  || GET_MODE (x13) != DImode)
                return -1;
              return 125; /* *subs_mul_imm_di */

            default:
              return -1;
            }

        case SIGN_EXTEND:
          switch (pattern319 (x1, SIGN_EXTEND))
            {
            case 0:
              return 138; /* *subs_extendqi_si */

            case 1:
              return 142; /* *subs_extendhi_si */

            case 2:
              return 146; /* *subs_extendsi_si */

            case 3:
              return 140; /* *subs_extendqi_di */

            case 4:
              return 144; /* *subs_extendhi_di */

            case 5:
              return 148; /* *subs_extendsi_di */

            default:
              return -1;
            }

        case ZERO_EXTEND:
          switch (pattern319 (x1, ZERO_EXTEND))
            {
            case 0:
              return 139; /* *subs_zero_extendqi_si */

            case 1:
              return 143; /* *subs_zero_extendhi_si */

            case 2:
              return 147; /* *subs_zero_extendsi_si */

            case 3:
              return 141; /* *subs_zero_extendqi_di */

            case 4:
              return 145; /* *subs_zero_extendhi_di */

            case 5:
              return 149; /* *subs_zero_extendsi_di */

            default:
              return -1;
            }

        case SIGN_EXTRACT:
          switch (pattern321 (x1, SIGN_EXTRACT))
            {
            case 0:
              if (!
#line 2003 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
                return -1;
              return 178; /* *subs_extvsi_multp2 */

            case 1:
              if (!
#line 2003 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
                return -1;
              return 180; /* *subs_extvdi_multp2 */

            default:
              return -1;
            }

        case ZERO_EXTRACT:
          switch (pattern321 (x1, ZERO_EXTRACT))
            {
            case 0:
              if (!
#line 2003 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (SImode, operands[2], operands[3])))
                return -1;
              return 179; /* *subs_extzvsi_multp2 */

            case 1:
              if (!
#line 2003 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_is_extend_from_extract (DImode, operands[2], operands[3])))
                return -1;
              return 181; /* *subs_extzvdi_multp2 */

            default:
              return -1;
            }

        case REG:
        case SUBREG:
          operands[2] = x10;
          x9 = XEXP (x7, 0);
          operands[1] = x9;
          x11 = XEXP (x4, 1);
          switch (GET_CODE (x11))
            {
            case MINUS:
              x12 = XEXP (x11, 0);
              if (!rtx_equal_p (x12, operands[1]))
                return -1;
              x13 = XEXP (x11, 1);
              if (!rtx_equal_p (x13, operands[2]))
                return -1;
              switch (GET_MODE (x7))
                {
                case SImode:
                  if (pattern368 (x11, SImode) != 0)
                    return -1;
                  return 267; /* *subsi3_compare0 */

                case DImode:
                  if (pattern368 (x11, DImode) != 0)
                    return -1;
                  return 268; /* *subdi3_compare0 */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              if (pattern344 (x1, MINUS) != 0
                  || !register_operand (operands[1], SImode)
                  || !register_operand (operands[2], SImode)
                  || !register_operand (operands[0], DImode))
                return -1;
              x12 = XEXP (x11, 0);
              x14 = XEXP (x12, 0);
              if (!rtx_equal_p (x14, operands[1]))
                return -1;
              x15 = XEXP (x12, 1);
              if (!rtx_equal_p (x15, operands[2]))
                return -1;
              return 269; /* *subsi3_compare0_uxtw */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case CONST_INT:
    case REG:
    case SUBREG:
      operands[1] = x7;
      x11 = XEXP (x4, 1);
      if (GET_CODE (x11) != MINUS
          || GET_MODE (x3) != CCmode
          || GET_MODE (x6) != CCmode)
        return -1;
      x8 = XEXP (x6, 1);
      operands[2] = x8;
      if (aarch64_reg_or_zero (operands[2], SImode)
          && pattern343 (x11, SImode) == 0)
        return 270; /* subsi3_compare1 */
      if (!aarch64_reg_or_zero (operands[2], DImode)
          || pattern343 (x11, DImode) != 0)
        return -1;
      return 271; /* subdi3_compare1 */

    case NEG:
      x8 = XEXP (x6, 1);
      if (x8 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x3) != CC_NZmode
          || GET_MODE (x6) != CC_NZmode)
        return -1;
      x9 = XEXP (x7, 0);
      switch (GET_CODE (x9))
        {
        case REG:
        case SUBREG:
          operands[1] = x9;
          x11 = XEXP (x4, 1);
          switch (GET_CODE (x11))
            {
            case NEG:
              x12 = XEXP (x11, 0);
              if (!rtx_equal_p (x12, operands[1]))
                return -1;
              switch (GET_MODE (x7))
                {
                case SImode:
                  if (!register_operand (operands[1], SImode)
                      || !register_operand (operands[0], SImode)
                      || GET_MODE (x11) != SImode)
                    return -1;
                  return 343; /* negsi2_compare0 */

                case DImode:
                  if (!register_operand (operands[1], DImode)
                      || !register_operand (operands[0], DImode)
                      || GET_MODE (x11) != DImode)
                    return -1;
                  return 344; /* negdi2_compare0 */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              if (pattern344 (x1, NEG) != 0
                  || !register_operand (operands[1], SImode)
                  || !register_operand (operands[0], DImode))
                return -1;
              x12 = XEXP (x11, 0);
              x14 = XEXP (x12, 0);
              if (!rtx_equal_p (x14, operands[1]))
                return -1;
              return 345; /* *negsi2_compare0_uxtw */

            default:
              return -1;
            }

        case ASHIFT:
          switch (pattern322 (x1, ASHIFT))
            {
            case 0:
              return 346; /* *neg_lslsi3_compare0 */

            case 1:
              return 349; /* *neg_lsldi3_compare0 */

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern322 (x1, ASHIFTRT))
            {
            case 0:
              return 347; /* *neg_asrsi3_compare0 */

            case 1:
              return 350; /* *neg_asrdi3_compare0 */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern322 (x1, LSHIFTRT))
            {
            case 0:
              return 348; /* *neg_lsrsi3_compare0 */

            case 1:
              return 351; /* *neg_lsrdi3_compare0 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case AND:
      x8 = XEXP (x6, 1);
      if (x8 != const_int_rtx[MAX_SAVED_CONST_INT + 0]
          || GET_MODE (x3) != CC_NZmode
          || GET_MODE (x6) != CC_NZmode)
        return -1;
      x9 = XEXP (x7, 0);
      switch (GET_CODE (x9))
        {
        case REG:
        case SUBREG:
          operands[1] = x9;
          x10 = XEXP (x7, 1);
          operands[2] = x10;
          x11 = XEXP (x4, 1);
          switch (GET_CODE (x11))
            {
            case AND:
              x12 = XEXP (x11, 0);
              if (!rtx_equal_p (x12, operands[1]))
                return -1;
              x13 = XEXP (x11, 1);
              if (!rtx_equal_p (x13, operands[2]))
                return -1;
              switch (GET_MODE (x7))
                {
                case SImode:
                  if (pattern369 (x11, SImode) != 0)
                    return -1;
                  return 476; /* *andsi3_compare0 */

                case DImode:
                  if (pattern369 (x11, DImode) != 0)
                    return -1;
                  return 477; /* *anddi3_compare0 */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              if (pattern344 (x1, AND) != 0
                  || !register_operand (operands[1], SImode)
                  || !aarch64_logical_operand (operands[2], SImode)
                  || !register_operand (operands[0], DImode))
                return -1;
              x12 = XEXP (x11, 0);
              x14 = XEXP (x12, 0);
              if (!rtx_equal_p (x14, operands[1]))
                return -1;
              x15 = XEXP (x12, 1);
              if (!rtx_equal_p (x15, operands[2]))
                return -1;
              return 478; /* *andsi3_compare0_uxtw */

            default:
              return -1;
            }

        case ASHIFT:
          switch (pattern323 (x1, ASHIFT))
            {
            case 0:
              return 479; /* *and_ashlsi3_compare0 */

            case 1:
              return 483; /* *and_ashldi3_compare0 */

            case 2:
              return 487; /* *and_ashlsi3_compare0_uxtw */

            default:
              return -1;
            }

        case ASHIFTRT:
          switch (pattern323 (x1, ASHIFTRT))
            {
            case 0:
              return 480; /* *and_ashrsi3_compare0 */

            case 1:
              return 484; /* *and_ashrdi3_compare0 */

            case 2:
              return 488; /* *and_ashrsi3_compare0_uxtw */

            default:
              return -1;
            }

        case LSHIFTRT:
          switch (pattern323 (x1, LSHIFTRT))
            {
            case 0:
              return 481; /* *and_lshrsi3_compare0 */

            case 1:
              return 485; /* *and_lshrdi3_compare0 */

            case 2:
              return 489; /* *and_lshrsi3_compare0_uxtw */

            default:
              return -1;
            }

        case ROTATERT:
          switch (pattern323 (x1, ROTATERT))
            {
            case 0:
              return 482; /* *and_rotrsi3_compare0 */

            case 1:
              return 486; /* *and_rotrdi3_compare0 */

            case 2:
              return 490; /* *and_rotrsi3_compare0_uxtw */

            default:
              return -1;
            }

        case NOT:
          x17 = XEXP (x9, 0);
          switch (GET_CODE (x17))
            {
            case REG:
            case SUBREG:
              operands[1] = x17;
              x10 = XEXP (x7, 1);
              operands[2] = x10;
              x11 = XEXP (x4, 1);
              switch (GET_CODE (x11))
                {
                case AND:
                  x12 = XEXP (x11, 0);
                  if (GET_CODE (x12) != NOT)
                    return -1;
                  x14 = XEXP (x12, 0);
                  if (!rtx_equal_p (x14, operands[1]))
                    return -1;
                  x13 = XEXP (x11, 1);
                  if (!rtx_equal_p (x13, operands[2]))
                    return -1;
                  switch (GET_MODE (x7))
                    {
                    case SImode:
                      if (pattern376 (x1, SImode) != 0)
                        return -1;
                      return 555; /* *and_one_cmplsi3_compare0 */

                    case DImode:
                      if (pattern376 (x1, DImode) != 0)
                        return -1;
                      return 556; /* *and_one_cmpldi3_compare0 */

                    default:
                      return -1;
                    }

                case ZERO_EXTEND:
                  if (GET_MODE (x11) != DImode)
                    return -1;
                  x12 = XEXP (x11, 0);
                  if (GET_CODE (x12) != AND
                      || GET_MODE (x12) != SImode)
                    return -1;
                  x14 = XEXP (x12, 0);
                  if (GET_CODE (x14) != NOT
                      || GET_MODE (x14) != SImode
                      || GET_MODE (x7) != SImode
                      || GET_MODE (x9) != SImode
                      || !register_operand (operands[1], SImode)
                      || !register_operand (operands[2], SImode)
                      || !register_operand (operands[0], DImode))
                    return -1;
                  x22 = XEXP (x14, 0);
                  if (!rtx_equal_p (x22, operands[1]))
                    return -1;
                  x15 = XEXP (x12, 1);
                  if (!rtx_equal_p (x15, operands[2]))
                    return -1;
                  return 557; /* *and_one_cmplsi3_compare0_uxtw */

                default:
                  return -1;
                }

            case ASHIFT:
              switch (pattern334 (x1, ASHIFT))
                {
                case 0:
                  return 596; /* *and_one_cmpl_ashlsi3_compare0 */

                case 1:
                  return 600; /* *and_one_cmpl_ashldi3_compare0 */

                case 2:
                  return 604; /* *and_one_cmpl_ashlsi3_compare0_uxtw */

                default:
                  return -1;
                }

            case ASHIFTRT:
              switch (pattern334 (x1, ASHIFTRT))
                {
                case 0:
                  return 597; /* *and_one_cmpl_ashrsi3_compare0 */

                case 1:
                  return 601; /* *and_one_cmpl_ashrdi3_compare0 */

                case 2:
                  return 605; /* *and_one_cmpl_ashrsi3_compare0_uxtw */

                default:
                  return -1;
                }

            case LSHIFTRT:
              switch (pattern334 (x1, LSHIFTRT))
                {
                case 0:
                  return 598; /* *and_one_cmpl_lshrsi3_compare0 */

                case 1:
                  return 602; /* *and_one_cmpl_lshrdi3_compare0 */

                case 2:
                  return 606; /* *and_one_cmpl_lshrsi3_compare0_uxtw */

                default:
                  return -1;
                }

            case ROTATERT:
              switch (pattern334 (x1, ROTATERT))
                {
                case 0:
                  return 599; /* *and_one_cmpl_rotrsi3_compare0 */

                case 1:
                  return 603; /* *and_one_cmpl_rotrdi3_compare0 */

                case 2:
                  return 607; /* *and_one_cmpl_rotrsi3_compare0_uxtw */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    case ZERO_EXTEND:
      x8 = XEXP (x6, 1);
      if (x8 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      x11 = XEXP (x4, 1);
      if (GET_CODE (x11) != ZERO_EXTEND
          || GET_MODE (x3) != CC_NZmode
          || GET_MODE (x6) != CC_NZmode)
        return -1;
      x9 = XEXP (x7, 0);
      operands[1] = x9;
      x12 = XEXP (x11, 0);
      if (!rtx_equal_p (x12, operands[1]))
        return -1;
      switch (GET_MODE (x7))
        {
        case SImode:
          switch (pattern350 (x11, SImode))
            {
            case 0:
              return 626; /* *andsqi_compare0 */

            case 1:
              return 628; /* *andshi_compare0 */

            default:
              return -1;
            }

        case DImode:
          switch (pattern350 (x11, DImode))
            {
            case 0:
              return 627; /* *andsqi_compare0 */

            case 1:
              return 629; /* *andshi_compare0 */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_126 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 1);
  if (GET_CODE (x2) != SET)
    return -1;
  x3 = XVECEXP (x1, 0, 0);
  x4 = XEXP (x3, 0);
  operands[0] = x4;
  x5 = XEXP (x3, 1);
  operands[1] = x5;
  x6 = XEXP (x2, 0);
  operands[2] = x6;
  res = recog_124 (x1, insn, pnum_clobbers);
  if (res >= 0)
    return res;
  x7 = XEXP (x2, 1);
  if (GET_CODE (x7) != UNSPEC_VOLATILE
      || !rtx_equal_p (x6, operands[1]))
    return -1;
  switch (XVECLEN (x7, 0))
    {
    case 2:
      x8 = XVECEXP (x7, 0, 1);
      operands[3] = x8;
      if (!const_int_operand (operands[3], SImode))
        return -1;
      switch (XINT (x7, 1))
        {
        case 12:
          x9 = XVECEXP (x7, 0, 0);
          operands[2] = x9;
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (pattern345 (x7, QImode) != 0)
                return -1;
              if (pnum_clobbers != NULL)
                {
                  *pnum_clobbers = 2;
                  return 3110; /* aarch64_atomic_exchangeqi */
                }
              if (!
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              return 3114; /* aarch64_atomic_exchangeqi_lse */

            case HImode:
              if (pattern345 (x7, HImode) != 0)
                return -1;
              if (pnum_clobbers != NULL)
                {
                  *pnum_clobbers = 2;
                  return 3111; /* aarch64_atomic_exchangehi */
                }
              if (!
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              return 3115; /* aarch64_atomic_exchangehi_lse */

            case SImode:
              if (pattern345 (x7, SImode) != 0)
                return -1;
              if (pnum_clobbers != NULL)
                {
                  *pnum_clobbers = 2;
                  return 3112; /* aarch64_atomic_exchangesi */
                }
              if (!
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              return 3116; /* aarch64_atomic_exchangesi_lse */

            case DImode:
              if (pattern345 (x7, DImode) != 0)
                return -1;
              if (pnum_clobbers != NULL)
                {
                  *pnum_clobbers = 2;
                  return 3113; /* aarch64_atomic_exchangedi */
                }
              if (!
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              return 3117; /* aarch64_atomic_exchangedi_lse */

            default:
              return -1;
            }

        case 15:
          if (pnum_clobbers == NULL)
            return -1;
          x9 = XVECEXP (x7, 0, 0);
          switch (GET_CODE (x9))
            {
            case PLUS:
              switch (pattern336 (x7))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3162; /* aarch64_atomic_fetch_addqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3167; /* aarch64_atomic_fetch_addhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3172; /* aarch64_atomic_fetch_addsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3177; /* aarch64_atomic_fetch_adddi */

                default:
                  return -1;
                }

            case MINUS:
              switch (pattern336 (x7))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3163; /* aarch64_atomic_fetch_subqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3168; /* aarch64_atomic_fetch_subhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3173; /* aarch64_atomic_fetch_subsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3178; /* aarch64_atomic_fetch_subdi */

                default:
                  return -1;
                }

            case IOR:
              switch (pattern338 (x7))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3164; /* aarch64_atomic_fetch_orqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3169; /* aarch64_atomic_fetch_orhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3174; /* aarch64_atomic_fetch_orsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3179; /* aarch64_atomic_fetch_ordi */

                default:
                  return -1;
                }

            case XOR:
              switch (pattern338 (x7))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3165; /* aarch64_atomic_fetch_xorqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3170; /* aarch64_atomic_fetch_xorhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3175; /* aarch64_atomic_fetch_xorsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3180; /* aarch64_atomic_fetch_xordi */

                default:
                  return -1;
                }

            case AND:
              switch (pattern338 (x7))
                {
                case 0:
                  *pnum_clobbers = 3;
                  return 3166; /* aarch64_atomic_fetch_andqi */

                case 1:
                  *pnum_clobbers = 3;
                  return 3171; /* aarch64_atomic_fetch_andhi */

                case 2:
                  *pnum_clobbers = 3;
                  return 3176; /* aarch64_atomic_fetch_andsi */

                case 3:
                  *pnum_clobbers = 3;
                  return 3181; /* aarch64_atomic_fetch_anddi */

                default:
                  return -1;
                }

            case NOT:
              x10 = XEXP (x9, 0);
              if (GET_CODE (x10) != AND)
                return -1;
              x11 = XEXP (x10, 1);
              operands[2] = x11;
              x12 = XEXP (x10, 0);
              if (!rtx_equal_p (x12, operands[1]))
                return -1;
              switch (GET_MODE (operands[0]))
                {
                case QImode:
                  if (pattern370 (x7, QImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3202; /* atomic_fetch_nandqi */

                case HImode:
                  if (pattern370 (x7, HImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3203; /* atomic_fetch_nandhi */

                case SImode:
                  if (pattern370 (x7, SImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3204; /* atomic_fetch_nandsi */

                case DImode:
                  if (pattern370 (x7, DImode) != 0)
                    return -1;
                  *pnum_clobbers = 3;
                  return 3205; /* atomic_fetch_nanddi */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 16:
          x9 = XVECEXP (x7, 0, 0);
          switch (GET_CODE (x9))
            {
            case PLUS:
              switch (pattern336 (x7))
                {
                case 0:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3182; /* aarch64_atomic_fetch_addqi_lse */

                case 1:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3187; /* aarch64_atomic_fetch_addhi_lse */

                case 2:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3192; /* aarch64_atomic_fetch_addsi_lse */

                case 3:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3197; /* aarch64_atomic_fetch_adddi_lse */

                default:
                  return -1;
                }

            case MINUS:
              switch (pattern336 (x7))
                {
                case 0:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3183; /* aarch64_atomic_fetch_subqi_lse */

                case 1:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3188; /* aarch64_atomic_fetch_subhi_lse */

                case 2:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3193; /* aarch64_atomic_fetch_subsi_lse */

                case 3:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3198; /* aarch64_atomic_fetch_subdi_lse */

                default:
                  return -1;
                }

            case IOR:
              switch (pattern338 (x7))
                {
                case 0:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3184; /* aarch64_atomic_fetch_orqi_lse */

                case 1:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3189; /* aarch64_atomic_fetch_orhi_lse */

                case 2:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3194; /* aarch64_atomic_fetch_orsi_lse */

                case 3:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3199; /* aarch64_atomic_fetch_ordi_lse */

                default:
                  return -1;
                }

            case XOR:
              switch (pattern338 (x7))
                {
                case 0:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3185; /* aarch64_atomic_fetch_xorqi_lse */

                case 1:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3190; /* aarch64_atomic_fetch_xorhi_lse */

                case 2:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3195; /* aarch64_atomic_fetch_xorsi_lse */

                case 3:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3200; /* aarch64_atomic_fetch_xordi_lse */

                default:
                  return -1;
                }

            case AND:
              switch (pattern338 (x7))
                {
                case 0:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3186; /* aarch64_atomic_fetch_andqi_lse */

                case 1:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3191; /* aarch64_atomic_fetch_andhi_lse */

                case 2:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3196; /* aarch64_atomic_fetch_andsi_lse */

                case 3:
                  if (!
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3201; /* aarch64_atomic_fetch_anddi_lse */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 14:
          x9 = XVECEXP (x7, 0, 0);
          operands[2] = x9;
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (pattern345 (x7, QImode) != 0
                  || !
#line 597 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3267; /* aarch64_atomic_swpqi */

            case HImode:
              if (pattern345 (x7, HImode) != 0
                  || !
#line 597 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3268; /* aarch64_atomic_swphi */

            case SImode:
              if (pattern345 (x7, SImode) != 0
                  || !
#line 597 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3269; /* aarch64_atomic_swpsi */

            case DImode:
              if (pattern345 (x7, DImode) != 0
                  || !
#line 597 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3270; /* aarch64_atomic_swpdi */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case 3:
      x8 = XVECEXP (x7, 0, 1);
      operands[2] = x8;
      x13 = XVECEXP (x7, 0, 2);
      operands[3] = x13;
      if (!const_int_operand (operands[3], SImode))
        return -1;
      switch (XINT (x7, 1))
        {
        case 13:
          x9 = XVECEXP (x7, 0, 0);
          if (!rtx_equal_p (x9, operands[0]))
            return -1;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern339 (x7, SImode) != 0
                  || !
#line 646 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3273; /* aarch64_atomic_cassi */

            case DImode:
              if (pattern339 (x7, DImode) != 0
                  || !
#line 646 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3274; /* aarch64_atomic_casdi */

            default:
              return -1;
            }

        case 17:
          switch (pattern340 (x7))
            {
            case 0:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3275; /* aarch64_atomic_loadsetqi */

            case 1:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3279; /* aarch64_atomic_loadsethi */

            case 2:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3283; /* aarch64_atomic_loadsetsi */

            case 3:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3287; /* aarch64_atomic_loadsetdi */

            default:
              return -1;
            }

        case 18:
          switch (pattern340 (x7))
            {
            case 0:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3276; /* aarch64_atomic_loadclrqi */

            case 1:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3280; /* aarch64_atomic_loadclrhi */

            case 2:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3284; /* aarch64_atomic_loadclrsi */

            case 3:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3288; /* aarch64_atomic_loadclrdi */

            default:
              return -1;
            }

        case 19:
          switch (pattern340 (x7))
            {
            case 0:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3277; /* aarch64_atomic_loadeorqi */

            case 1:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3281; /* aarch64_atomic_loadeorhi */

            case 2:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3285; /* aarch64_atomic_loadeorsi */

            case 3:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3289; /* aarch64_atomic_loadeordi */

            default:
              return -1;
            }

        case 20:
          switch (pattern340 (x7))
            {
            case 0:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3278; /* aarch64_atomic_loadaddqi */

            case 1:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3282; /* aarch64_atomic_loadaddhi */

            case 2:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3286; /* aarch64_atomic_loadaddsi */

            case 3:
              if (!
#line 670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                return -1;
              return 3290; /* aarch64_atomic_loadadddi */

            default:
              return -1;
            }

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static int
recog_127 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  x3 = XEXP (x2, 1);
  x4 = XEXP (x3, 1);
  operands[2] = x4;
  x5 = XVECEXP (x1, 0, 1);
  switch (GET_CODE (x5))
    {
    case USE:
      x6 = XVECEXP (x1, 0, 2);
      if (pattern37 (x6, DImode, 30) != 0)
        return -1;
      x7 = XEXP (x5, 0);
      operands[3] = x7;
      if (register_operand (operands[1], DImode))
        return 43; /* *call_value_reg */
      if (!
#line 835 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(GET_CODE (operands[1]) == SYMBOL_REF
   && !aarch64_is_long_call_p (operands[1])
   && !aarch64_is_noplt_call_p (operands[1])))
        return -1;
      return 44; /* *call_value_symbol */

    case RETURN:
      x6 = XVECEXP (x1, 0, 2);
      if (GET_CODE (x6) != USE
          || !aarch64_call_insn_operand (operands[1], DImode))
        return -1;
      x8 = XEXP (x6, 0);
      operands[3] = x8;
      if (!
#line 922 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(SIBLING_CALL_P (insn)))
        return -1;
      return 46; /* *sibcall_value_insn */

    default:
      return -1;
    }
}

static int
recog_128 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20, x21, x22, x23, x24, x25;
  rtx x26;
  int res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  switch (GET_CODE (x2))
    {
    case SET:
      x3 = XEXP (x2, 1);
      switch (GET_CODE (x3))
        {
        case IF_THEN_ELSE:
          x4 = XEXP (x3, 1);
          if (GET_CODE (x4) != LABEL_REF)
            return -1;
          x5 = XEXP (x3, 2);
          if (GET_CODE (x5) != PC)
            return -1;
          x6 = XEXP (x2, 0);
          if (GET_CODE (x6) != PC)
            return -1;
          x7 = XVECEXP (x1, 0, 1);
          if (pattern144 (x7, CCmode, 66) != 0)
            return -1;
          x8 = XEXP (x3, 0);
          switch (GET_CODE (x8))
            {
            case EQ:
              switch (pattern294 (x3))
                {
                case 0:
                  return 29; /* *tbeqsi1 */

                case 1:
                  return 31; /* *tbeqdi1 */

                default:
                  return -1;
                }

            case NE:
              switch (pattern294 (x3))
                {
                case 0:
                  return 30; /* *tbnesi1 */

                case 1:
                  return 32; /* *tbnedi1 */

                default:
                  return -1;
                }

            case LT:
              switch (pattern295 (x3))
                {
                case 0:
                  return 33; /* *cbltqi1 */

                case 1:
                  return 35; /* *cblthi1 */

                case 2:
                  return 37; /* *cbltsi1 */

                case 3:
                  return 39; /* *cbltdi1 */

                default:
                  return -1;
                }

            case GE:
              switch (pattern295 (x3))
                {
                case 0:
                  return 34; /* *cbgeqi1 */

                case 1:
                  return 36; /* *cbgehi1 */

                case 2:
                  return 38; /* *cbgesi1 */

                case 3:
                  return 40; /* *cbgedi1 */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case CALL:
          if (pnum_clobbers == NULL)
            return -1;
          x8 = XEXP (x3, 0);
          if (GET_CODE (x8) != MEM
              || GET_MODE (x8) != DImode)
            return -1;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          x7 = XVECEXP (x1, 0, 1);
          if (GET_CODE (x7) == USE)
            {
              x9 = XEXP (x8, 0);
              operands[1] = x9;
              x4 = XEXP (x3, 1);
              operands[2] = x4;
              x10 = XEXP (x7, 0);
              operands[3] = x10;
              if (register_operand (operands[1], DImode))
                {
                  *pnum_clobbers = 1;
                  return 43; /* *call_value_reg */
                }
              if (
#line 835 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(GET_CODE (operands[1]) == SYMBOL_REF
   && !aarch64_is_long_call_p (operands[1])
   && !aarch64_is_noplt_call_p (operands[1])))
                {
                  *pnum_clobbers = 1;
                  return 44; /* *call_value_symbol */
                }
            }
          if (!register_operand (operands[0], VOIDmode)
              || pattern237 (x1) != 0)
            return -1;
          x9 = XEXP (x8, 0);
          operands[2] = x9;
          x11 = XVECEXP (x7, 0, 0);
          operands[1] = x11;
          if (!aarch64_valid_symref (operands[1], DImode))
            return -1;
          *pnum_clobbers = 1;
          return 937; /* *tlsgd_small */

        case SIGN_EXTEND:
          if (GET_MODE (x3) != DImode)
            return -1;
          x7 = XVECEXP (x1, 0, 1);
          if (GET_CODE (x7) != SET)
            return -1;
          x12 = XEXP (x7, 1);
          if (GET_CODE (x12) != SIGN_EXTEND
              || GET_MODE (x12) != DImode)
            return -1;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          if (!register_operand (operands[0], DImode))
            return -1;
          x8 = XEXP (x3, 0);
          operands[1] = x8;
          if (!aarch64_mem_pair_operand (operands[1], SImode))
            return -1;
          x10 = XEXP (x7, 0);
          operands[2] = x10;
          if (!register_operand (operands[2], DImode))
            return -1;
          x13 = XEXP (x12, 0);
          operands[3] = x13;
          if (!memory_operand (operands[3], SImode)
              || !
#line 1513 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[3], 0),
		plus_constant (Pmode,
			       XEXP (operands[1], 0),
			       GET_MODE_SIZE (SImode)))))
            return -1;
          return 83; /* *load_pair_extendsidi2_aarch64 */

        case ZERO_EXTEND:
          x7 = XVECEXP (x1, 0, 1);
          if (GET_CODE (x7) != SET)
            return -1;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          x8 = XEXP (x3, 0);
          operands[1] = x8;
          x12 = XEXP (x7, 1);
          switch (GET_CODE (x12))
            {
            case ZERO_EXTEND:
              if (GET_MODE (x12) != DImode
                  || !register_operand (operands[0], DImode)
                  || GET_MODE (x3) != DImode
                  || !aarch64_mem_pair_operand (operands[1], SImode))
                return -1;
              x10 = XEXP (x7, 0);
              operands[2] = x10;
              if (!register_operand (operands[2], DImode))
                return -1;
              x13 = XEXP (x12, 0);
              operands[3] = x13;
              if (!memory_operand (operands[3], SImode)
                  || !
#line 1536 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(rtx_equal_p (XEXP (operands[3], 0),
		plus_constant (Pmode,
			       XEXP (operands[1], 0),
			       GET_MODE_SIZE (SImode)))))
                return -1;
              return 85; /* *load_pair_zero_extendsidi2_aarch64 */

            case UNSPEC_VOLATILE:
              if (XVECLEN (x12, 0) != 3
                  || XINT (x12, 1) != 13
                  || !register_operand (operands[0], SImode)
                  || GET_MODE (x3) != SImode)
                return -1;
              x14 = XVECEXP (x12, 0, 1);
              operands[2] = x14;
              x15 = XVECEXP (x12, 0, 2);
              operands[3] = x15;
              if (!const_int_operand (operands[3], SImode))
                return -1;
              x16 = XVECEXP (x12, 0, 0);
              if (!rtx_equal_p (x16, operands[0]))
                return -1;
              x10 = XEXP (x7, 0);
              if (!rtx_equal_p (x10, operands[1]))
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case QImode:
                  if (!aarch64_sync_memory_operand (operands[1], QImode)
                      || GET_MODE (x12) != QImode
                      || !register_operand (operands[2], QImode)
                      || !
#line 622 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                    return -1;
                  return 3271; /* aarch64_atomic_casqi */

                case HImode:
                  if (!aarch64_sync_memory_operand (operands[1], HImode)
                      || GET_MODE (x12) != HImode
                      || !register_operand (operands[2], HImode)
                      || !
#line 622 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE && reload_completed))
                    return -1;
                  return 3272; /* aarch64_atomic_cashi */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case COMPARE:
          return recog_125 (x1, insn, pnum_clobbers);

        case NE:
          if (GET_MODE (x3) != CC_Cmode)
            return -1;
          x8 = XEXP (x3, 0);
          if (GET_CODE (x8) != PLUS)
            return -1;
          x9 = XEXP (x8, 0);
          if (GET_CODE (x9) != ZERO_EXTEND)
            return -1;
          x4 = XEXP (x3, 1);
          if (GET_CODE (x4) != ZERO_EXTEND)
            return -1;
          x17 = XEXP (x4, 0);
          if (GET_CODE (x17) != PLUS)
            return -1;
          x6 = XEXP (x2, 0);
          if (GET_CODE (x6) != REG
              || REGNO (x6) != 66
              || GET_MODE (x6) != CC_Cmode)
            return -1;
          x7 = XVECEXP (x1, 0, 1);
          if (GET_CODE (x7) != SET)
            return -1;
          x12 = XEXP (x7, 1);
          if (GET_CODE (x12) != PLUS)
            return -1;
          x18 = XEXP (x9, 0);
          operands[1] = x18;
          x10 = XEXP (x7, 0);
          operands[0] = x10;
          x19 = XEXP (x17, 0);
          if (!rtx_equal_p (x19, operands[1]))
            return -1;
          x13 = XEXP (x12, 0);
          if (!rtx_equal_p (x13, operands[1]))
            return -1;
          x20 = XEXP (x8, 1);
          switch (GET_CODE (x20))
            {
            case CONST_INT:
            case CONST_WIDE_INT:
              operands[3] = x20;
              x21 = XEXP (x17, 1);
              operands[2] = x21;
              x22 = XEXP (x12, 1);
              if (!rtx_equal_p (x22, operands[2]))
                return -1;
              switch (GET_MODE (x8))
                {
                case DImode:
                  if (pattern383 (x1, SImode, DImode) != 0
                      || !
#line 1817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_zero_extend_const_eq (DImode, operands[3],
                                 SImode, operands[2])))
                    return -1;
                  return 106; /* *addsi3_compareC_imm */

                case TImode:
                  if (pattern383 (x1, DImode, TImode) != 0
                      || !
#line 1817 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_zero_extend_const_eq (TImode, operands[3],
                                 DImode, operands[2])))
                    return -1;
                  return 107; /* *adddi3_compareC_imm */

                default:
                  return -1;
                }

            case ZERO_EXTEND:
              x23 = XEXP (x20, 0);
              operands[2] = x23;
              x21 = XEXP (x17, 1);
              if (!rtx_equal_p (x21, operands[2]))
                return -1;
              x22 = XEXP (x12, 1);
              if (!rtx_equal_p (x22, operands[2]))
                return -1;
              switch (GET_MODE (x8))
                {
                case DImode:
                  if (pattern384 (x1, SImode, DImode) != 0)
                    return -1;
                  return 108; /* addsi3_compareC */

                case TImode:
                  if (pattern384 (x1, DImode, TImode) != 0)
                    return -1;
                  return 109; /* adddi3_compareC */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case UNSPEC:
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          switch (XVECLEN (x3, 0))
            {
            case 1:
              if (XINT (x3, 1) != 62)
                return -1;
              x7 = XVECEXP (x1, 0, 1);
              if (GET_CODE (x7) != SET)
                return -1;
              x12 = XEXP (x7, 1);
              if (x12 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                return -1;
              x24 = XVECEXP (x3, 0, 0);
              operands[1] = x24;
              x10 = XEXP (x7, 0);
              operands[2] = x10;
              switch (GET_MODE (operands[0]))
                {
                case SImode:
                  if (pattern296 (x3, SImode) != 0
                      || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
                    return -1;
                  return 958; /* stack_protect_set_si */

                case DImode:
                  if (pattern296 (x3, DImode) != 0
                      || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
                    return -1;
                  return 959; /* stack_protect_set_di */

                default:
                  return -1;
                }

            case 2:
              if (XINT (x3, 1) != 63)
                return -1;
              x7 = XVECEXP (x1, 0, 1);
              if (GET_CODE (x7) != CLOBBER)
                return -1;
              x24 = XVECEXP (x3, 0, 0);
              operands[1] = x24;
              x25 = XVECEXP (x3, 0, 1);
              operands[2] = x25;
              x10 = XEXP (x7, 0);
              operands[3] = x10;
              switch (GET_MODE (operands[0]))
                {
                case SImode:
                  if (pattern297 (x3, SImode) != 0
                      || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode))
                    return -1;
                  return 960; /* stack_protect_test_si */

                case DImode:
                  if (pattern297 (x3, DImode) != 0
                      || !
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode))
                    return -1;
                  return 961; /* stack_protect_test_di */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case NEG:
          if (GET_MODE (x3) != DImode)
            return -1;
          x7 = XVECEXP (x1, 0, 1);
          if (pattern144 (x7, CCmode, 66) != 0)
            return -1;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          x8 = XEXP (x3, 0);
          switch (pattern274 (x8))
            {
            case 0:
              if (!
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2515; /* aarch64_cmltdi */

            case 1:
              if (!
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2516; /* aarch64_cmledi */

            case 2:
              if (!
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2517; /* aarch64_cmeqdi */

            case 3:
              if (!
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2518; /* aarch64_cmgedi */

            case 4:
              if (!
#line 4136 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2519; /* aarch64_cmgtdi */

            case 5:
              if (!
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2553; /* aarch64_cmltudi */

            case 6:
              if (!
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2554; /* aarch64_cmleudi */

            case 7:
              if (!
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2555; /* aarch64_cmgeudi */

            case 8:
              if (!
#line 4199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2556; /* aarch64_cmgtudi */

            case 9:
              if (!
#line 4270 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
                return -1;
              return 2568; /* aarch64_cmtstdi */

            default:
              return -1;
            }

        case CONST_INT:
        case CONST_DOUBLE:
        case REG:
        case SUBREG:
        case MEM:
          return recog_126 (x1, insn, pnum_clobbers);

        case UNSPEC_VOLATILE:
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          switch (XVECLEN (x3, 0))
            {
            case 2:
              switch (pattern190 (x1))
                {
                case 0:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3138; /* aarch64_atomic_addqi_lse */

                case 1:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3143; /* aarch64_atomic_addhi_lse */

                case 2:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3148; /* aarch64_atomic_addsi_lse */

                case 3:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3153; /* aarch64_atomic_adddi_lse */

                case 4:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3139; /* aarch64_atomic_subqi_lse */

                case 5:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3144; /* aarch64_atomic_subhi_lse */

                case 6:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3149; /* aarch64_atomic_subsi_lse */

                case 7:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3154; /* aarch64_atomic_subdi_lse */

                case 8:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3140; /* aarch64_atomic_orqi_lse */

                case 9:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3145; /* aarch64_atomic_orhi_lse */

                case 10:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3150; /* aarch64_atomic_orsi_lse */

                case 11:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3155; /* aarch64_atomic_ordi_lse */

                case 12:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3141; /* aarch64_atomic_xorqi_lse */

                case 13:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3146; /* aarch64_atomic_xorhi_lse */

                case 14:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3151; /* aarch64_atomic_xorsi_lse */

                case 15:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3156; /* aarch64_atomic_xordi_lse */

                case 16:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3142; /* aarch64_atomic_andqi_lse */

                case 17:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3147; /* aarch64_atomic_andhi_lse */

                case 18:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3152; /* aarch64_atomic_andsi_lse */

                case 19:
                  if (!
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                    return -1;
                  return 3157; /* aarch64_atomic_anddi_lse */

                default:
                  return -1;
                }

            case 1:
              if (XINT (x3, 1) != 8
                  || GET_MODE (x3) != SImode)
                return -1;
              x24 = XVECEXP (x3, 0, 0);
              if (x24 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                return -1;
              x7 = XVECEXP (x1, 0, 1);
              if (GET_CODE (x7) != SET)
                return -1;
              x12 = XEXP (x7, 1);
              if (GET_CODE (x12) != UNSPEC_VOLATILE
                  || XVECLEN (x12, 0) != 2
                  || XINT (x12, 1) != 8
                  || !register_operand (operands[0], SImode))
                return -1;
              x10 = XEXP (x7, 0);
              operands[1] = x10;
              x16 = XVECEXP (x12, 0, 0);
              operands[2] = x16;
              x14 = XVECEXP (x12, 0, 1);
              operands[3] = x14;
              if (!const_int_operand (operands[3], SImode))
                return -1;
              switch (GET_MODE (operands[1]))
                {
                case QImode:
                  if (!aarch64_sync_memory_operand (operands[1], QImode)
                      || GET_MODE (x12) != QImode
                      || !register_operand (operands[2], QImode))
                    return -1;
                  return 3262; /* aarch64_store_exclusiveqi */

                case HImode:
                  if (!aarch64_sync_memory_operand (operands[1], HImode)
                      || GET_MODE (x12) != HImode
                      || !register_operand (operands[2], HImode))
                    return -1;
                  return 3263; /* aarch64_store_exclusivehi */

                case SImode:
                  if (!aarch64_sync_memory_operand (operands[1], SImode)
                      || GET_MODE (x12) != SImode
                      || !register_operand (operands[2], SImode))
                    return -1;
                  return 3264; /* aarch64_store_exclusivesi */

                case DImode:
                  if (!aarch64_sync_memory_operand (operands[1], DImode)
                      || GET_MODE (x12) != DImode
                      || !register_operand (operands[2], DImode))
                    return -1;
                  return 3265; /* aarch64_store_exclusivedi */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case PLUS:
          switch (pattern113 (x1, pnum_clobbers))
            {
            case 0:
              *pnum_clobbers = 2;
              return 3206; /* aarch64_atomic_add_fetchqi */

            case 1:
              *pnum_clobbers = 2;
              return 3211; /* aarch64_atomic_add_fetchhi */

            case 2:
              *pnum_clobbers = 2;
              return 3216; /* aarch64_atomic_add_fetchsi */

            case 3:
              *pnum_clobbers = 2;
              return 3221; /* aarch64_atomic_add_fetchdi */

            case 4:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3226; /* aarch64_atomic_add_fetchqi_lse */

            case 5:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3231; /* aarch64_atomic_add_fetchhi_lse */

            case 6:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3236; /* aarch64_atomic_add_fetchsi_lse */

            case 7:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3241; /* aarch64_atomic_add_fetchdi_lse */

            default:
              return -1;
            }

        case MINUS:
          switch (pattern113 (x1, pnum_clobbers))
            {
            case 0:
              *pnum_clobbers = 2;
              return 3207; /* aarch64_atomic_sub_fetchqi */

            case 1:
              *pnum_clobbers = 2;
              return 3212; /* aarch64_atomic_sub_fetchhi */

            case 2:
              *pnum_clobbers = 2;
              return 3217; /* aarch64_atomic_sub_fetchsi */

            case 3:
              *pnum_clobbers = 2;
              return 3222; /* aarch64_atomic_sub_fetchdi */

            case 4:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3227; /* aarch64_atomic_sub_fetchqi_lse */

            case 5:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3232; /* aarch64_atomic_sub_fetchhi_lse */

            case 6:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3237; /* aarch64_atomic_sub_fetchsi_lse */

            case 7:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3242; /* aarch64_atomic_sub_fetchdi_lse */

            default:
              return -1;
            }

        case IOR:
          switch (pattern115 (x1, pnum_clobbers))
            {
            case 0:
              *pnum_clobbers = 2;
              return 3208; /* aarch64_atomic_or_fetchqi */

            case 1:
              *pnum_clobbers = 2;
              return 3213; /* aarch64_atomic_or_fetchhi */

            case 2:
              *pnum_clobbers = 2;
              return 3218; /* aarch64_atomic_or_fetchsi */

            case 3:
              *pnum_clobbers = 2;
              return 3223; /* aarch64_atomic_or_fetchdi */

            case 4:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3228; /* aarch64_atomic_or_fetchqi_lse */

            case 5:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3233; /* aarch64_atomic_or_fetchhi_lse */

            case 6:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3238; /* aarch64_atomic_or_fetchsi_lse */

            case 7:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3243; /* aarch64_atomic_or_fetchdi_lse */

            default:
              return -1;
            }

        case XOR:
          switch (pattern115 (x1, pnum_clobbers))
            {
            case 0:
              *pnum_clobbers = 2;
              return 3209; /* aarch64_atomic_xor_fetchqi */

            case 1:
              *pnum_clobbers = 2;
              return 3214; /* aarch64_atomic_xor_fetchhi */

            case 2:
              *pnum_clobbers = 2;
              return 3219; /* aarch64_atomic_xor_fetchsi */

            case 3:
              *pnum_clobbers = 2;
              return 3224; /* aarch64_atomic_xor_fetchdi */

            case 4:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3229; /* aarch64_atomic_xor_fetchqi_lse */

            case 5:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3234; /* aarch64_atomic_xor_fetchhi_lse */

            case 6:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3239; /* aarch64_atomic_xor_fetchsi_lse */

            case 7:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3244; /* aarch64_atomic_xor_fetchdi_lse */

            default:
              return -1;
            }

        case AND:
          switch (pattern115 (x1, pnum_clobbers))
            {
            case 0:
              *pnum_clobbers = 2;
              return 3210; /* aarch64_atomic_and_fetchqi */

            case 1:
              *pnum_clobbers = 2;
              return 3215; /* aarch64_atomic_and_fetchhi */

            case 2:
              *pnum_clobbers = 2;
              return 3220; /* aarch64_atomic_and_fetchsi */

            case 3:
              *pnum_clobbers = 2;
              return 3225; /* aarch64_atomic_and_fetchdi */

            case 4:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3230; /* aarch64_atomic_and_fetchqi_lse */

            case 5:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3235; /* aarch64_atomic_and_fetchhi_lse */

            case 6:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3240; /* aarch64_atomic_and_fetchsi_lse */

            case 7:
              if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                return -1;
              *pnum_clobbers = 1;
              return 3245; /* aarch64_atomic_and_fetchdi_lse */

            default:
              return -1;
            }

        case NOT:
          if (pnum_clobbers == NULL
              || pattern145 (x1) != 0)
            return -1;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          x8 = XEXP (x3, 0);
          x9 = XEXP (x8, 0);
          operands[1] = x9;
          x20 = XEXP (x8, 1);
          operands[2] = x20;
          x7 = XVECEXP (x1, 0, 1);
          x12 = XEXP (x7, 1);
          x15 = XVECEXP (x12, 0, 2);
          operands[3] = x15;
          if (!const_int_operand (operands[3], SImode))
            return -1;
          switch (pattern347 (x1))
            {
            case 0:
              *pnum_clobbers = 2;
              return 3246; /* atomic_nand_fetchqi */

            case 1:
              *pnum_clobbers = 2;
              return 3247; /* atomic_nand_fetchhi */

            case 2:
              *pnum_clobbers = 2;
              return 3248; /* atomic_nand_fetchsi */

            case 3:
              *pnum_clobbers = 2;
              return 3249; /* atomic_nand_fetchdi */

            default:
              return -1;
            }

        default:
          return -1;
        }

    case CALL:
      if (pnum_clobbers == NULL)
        return -1;
      x6 = XEXP (x2, 0);
      if (GET_CODE (x6) != MEM
          || GET_MODE (x6) != DImode)
        return -1;
      x7 = XVECEXP (x1, 0, 1);
      if (GET_CODE (x7) != USE)
        return -1;
      x26 = XEXP (x6, 0);
      operands[0] = x26;
      x3 = XEXP (x2, 1);
      operands[1] = x3;
      x10 = XEXP (x7, 0);
      operands[2] = x10;
      if (register_operand (operands[0], DImode))
        {
          *pnum_clobbers = 1;
          return 41; /* *call_reg */
        }
      if (!
#line 771 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(GET_CODE (operands[0]) == SYMBOL_REF
   && !aarch64_is_long_call_p (operands[0])
   && !aarch64_is_noplt_call_p (operands[0])))
        return -1;
      *pnum_clobbers = 1;
      return 42; /* *call_symbol */

    default:
      return -1;
    }
}

static int
recog_129 (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8;
  int res ATTRIBUTE_UNUSED;
  x2 = XEXP (x1, 1);
  switch (GET_CODE (x2))
    {
    case IF_THEN_ELSE:
      x3 = XEXP (x2, 0);
      switch (GET_CODE (x3))
        {
        case NE:
        case EQ:
        case GE:
        case GT:
        case LE:
        case LT:
        case GEU:
        case GTU:
        case LEU:
        case LTU:
        case UNORDERED:
        case ORDERED:
        case UNGE:
        case UNGT:
        case UNLE:
        case UNLT:
          if (aarch64_comparison_operator (x3, VOIDmode))
            {
              res = recog_1 (x1, insn, pnum_clobbers);
              if (res >= 0)
                return res;
            }
          x4 = XEXP (x3, 1);
          if (GET_CODE (x4) == CONST_INT)
            {
              res = recog_2 (x1, insn, pnum_clobbers);
              if (res >= 0)
                return res;
            }
          operands[1] = x3;
          if (!aarch64_comparison_operation (operands[1], VOIDmode))
            return -1;
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          x6 = XEXP (x2, 2);
          operands[3] = x6;
          x7 = XEXP (x2, 1);
          switch (GET_CODE (x7))
            {
            case PLUS:
              x8 = XEXP (x7, 1);
              if (x8 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
                return -1;
              switch (pattern219 (x2))
                {
                case 0:
                  return 460; /* csinc3si_insn */

                case 1:
                  return 461; /* csinc3di_insn */

                default:
                  return -1;
                }

            case NOT:
              switch (pattern219 (x2))
                {
                case 0:
                  return 462; /* *csinv3si_insn */

                case 1:
                  return 463; /* *csinv3di_insn */

                default:
                  return -1;
                }

            case NEG:
              switch (pattern219 (x2))
                {
                case 0:
                  return 465; /* csneg3si_insn */

                case 1:
                  return 466; /* csneg3di_insn */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    case CONST_INT:
    case CONST_WIDE_INT:
    case CONST_FIXED:
    case CONST_DOUBLE:
    case CONST_VECTOR:
    case CONST:
    case REG:
    case SUBREG:
    case MEM:
    case LABEL_REF:
    case SYMBOL_REF:
    case HIGH:
      return recog_96 (x1, insn, pnum_clobbers);

    case SIGN_EXTEND:
      return recog_110 (x1, insn, pnum_clobbers);

    case ZERO_EXTEND:
      return recog_90 (x1, insn, pnum_clobbers);

    case PLUS:
      return recog_91 (x1, insn, pnum_clobbers);

    case NE:
    case EQ:
    case GE:
    case GT:
    case LE:
    case LT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNGE:
    case UNGT:
    case UNLE:
    case UNLT:
      return recog_119 (x1, insn, pnum_clobbers);

    case COMPARE:
      return recog_98 (x1, insn, pnum_clobbers);

    case MINUS:
      return recog_111 (x1, insn, pnum_clobbers);

    case NEG:
      return recog_99 (x1, insn, pnum_clobbers);

    case MULT:
      return recog_93 (x1, insn, pnum_clobbers);

    case TRUNCATE:
      return recog_118 (x1, insn, pnum_clobbers);

    case DIV:
      return recog_121 (x1, insn, pnum_clobbers);

    case UDIV:
      x5 = XEXP (x1, 0);
      operands[0] = x5;
      x3 = XEXP (x2, 0);
      operands[1] = x3;
      x7 = XEXP (x2, 1);
      operands[2] = x7;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern14 (x2, SImode) != 0)
            return -1;
          return 387; /* udivsi3 */

        case DImode:
          if (pattern14 (x2, DImode) != 0)
            return -1;
          return 389; /* udivdi3 */

        default:
          return -1;
        }

    case UNSPEC:
      return recog_106 (x1, insn, pnum_clobbers);

    case AND:
      return recog_117 (x1, insn, pnum_clobbers);

    case IOR:
      return recog_105 (x1, insn, pnum_clobbers);

    case XOR:
      return recog_104 (x1, insn, pnum_clobbers);

    case NOT:
      return recog_109 (x1, insn, pnum_clobbers);

    case CLZ:
      switch (pattern0 (x1))
        {
        case 0:
          return 616; /* clzsi2 */

        case 1:
          return 617; /* clzdi2 */

        case 2:
          if (!
#line 2132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1726; /* clzv8qi2 */

        case 3:
          if (!
#line 2132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1727; /* clzv16qi2 */

        case 4:
          if (!
#line 2132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1728; /* clzv4hi2 */

        case 5:
          if (!
#line 2132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1729; /* clzv8hi2 */

        case 6:
          if (!
#line 2132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1730; /* clzv2si2 */

        case 7:
          if (!
#line 2132 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1731; /* clzv4si2 */

        default:
          return -1;
        }

    case CLRSB:
      switch (pattern0 (x1))
        {
        case 0:
          return 618; /* clrsbsi2 */

        case 1:
          return 619; /* clrsbdi2 */

        case 2:
          if (!
#line 2124 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1720; /* clrsbv8qi2 */

        case 3:
          if (!
#line 2124 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1721; /* clrsbv16qi2 */

        case 4:
          if (!
#line 2124 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1722; /* clrsbv4hi2 */

        case 5:
          if (!
#line 2124 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1723; /* clrsbv8hi2 */

        case 6:
          if (!
#line 2124 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1724; /* clrsbv2si2 */

        case 7:
          if (!
#line 2124 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1725; /* clrsbv4si2 */

        default:
          return -1;
        }

    case CTZ:
      switch (pattern2 (x1))
        {
        case 0:
          return 622; /* ctzsi2 */

        case 1:
          return 623; /* ctzdi2 */

        default:
          return -1;
        }

    case ASHIFT:
      return recog_107 (x1, insn, pnum_clobbers);

    case LSHIFTRT:
      switch (pattern4 (x1))
        {
        case 0:
          if (pattern184 (x2) != 0)
            return -1;
          return 644; /* *aarch64_lshr_sisd_or_int_si3 */

        case 1:
          if (pattern185 (x2, DImode) != 0)
            return -1;
          return 645; /* *aarch64_lshr_sisd_or_int_di3 */

        case 2:
          if (pattern211 (x2, QImode) != 0
              || !
#line 4151 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 661; /* *lshrqi3_insn */

        case 3:
          if (pattern211 (x2, HImode) != 0
              || !
#line 4151 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 664; /* *lshrhi3_insn */

        case 4:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1216; /* aarch64_simd_lshrv8qi */

        case 5:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1217; /* aarch64_simd_lshrv16qi */

        case 6:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1218; /* aarch64_simd_lshrv4hi */

        case 7:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1219; /* aarch64_simd_lshrv8hi */

        case 8:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1220; /* aarch64_simd_lshrv2si */

        case 9:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1221; /* aarch64_simd_lshrv4si */

        case 10:
          if (!
#line 596 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1222; /* aarch64_simd_lshrv2di */

        default:
          return -1;
        }

    case ASHIFTRT:
      switch (pattern4 (x1))
        {
        case 0:
          if (pattern185 (x2, SImode) != 0)
            return -1;
          return 646; /* *aarch64_ashr_sisd_or_int_si3 */

        case 1:
          if (pattern185 (x2, DImode) != 0)
            return -1;
          return 647; /* *aarch64_ashr_sisd_or_int_di3 */

        case 2:
          if (pattern211 (x2, QImode) != 0
              || !
#line 4151 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (QImode)))
            return -1;
          return 660; /* *ashrqi3_insn */

        case 3:
          if (pattern211 (x2, HImode) != 0
              || !
#line 4151 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (HImode)))
            return -1;
          return 663; /* *ashrhi3_insn */

        case 4:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1223; /* aarch64_simd_ashrv8qi */

        case 5:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1224; /* aarch64_simd_ashrv16qi */

        case 6:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1225; /* aarch64_simd_ashrv4hi */

        case 7:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1226; /* aarch64_simd_ashrv8hi */

        case 8:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1227; /* aarch64_simd_ashrv2si */

        case 9:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1228; /* aarch64_simd_ashrv4si */

        case 10:
          if (!
#line 605 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1229; /* aarch64_simd_ashrv2di */

        default:
          return -1;
        }

    case ROTATERT:
      x5 = XEXP (x1, 0);
      operands[0] = x5;
      x3 = XEXP (x2, 0);
      operands[1] = x3;
      x7 = XEXP (x2, 1);
      operands[2] = x7;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (pattern184 (x2) != 0)
            return -1;
          return 653; /* *rorsi3_insn */

        case DImode:
          if (pattern185 (x2, DImode) != 0)
            return -1;
          return 654; /* *rordi3_insn */

        default:
          return -1;
        }

    case ROTATE:
      switch (pattern5 (x1))
        {
        case 0:
          if (!
#line 4217 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (SImode)))
            return -1;
          return 671; /* *rorsi3_insn */

        case 1:
          if (!
#line 4217 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(UINTVAL (operands[2]) < GET_MODE_BITSIZE (DImode)))
            return -1;
          return 672; /* *rordi3_insn */

        default:
          return -1;
        }

    case SIGN_EXTRACT:
      x5 = XEXP (x1, 0);
      operands[0] = x5;
      x3 = XEXP (x2, 0);
      operands[1] = x3;
      x7 = XEXP (x2, 1);
      operands[2] = x7;
      if (!const_int_operand (operands[2], VOIDmode))
        return -1;
      x6 = XEXP (x2, 2);
      operands[3] = x6;
      if (!const_int_operand (operands[3], VOIDmode))
        return -1;
      switch (pattern1 (x2))
        {
        case 0:
          return 690; /* *extvsi */

        case 1:
          return 692; /* *extvdi */

        default:
          return -1;
        }

    case ZERO_EXTRACT:
      return recog_122 (x1, insn, pnum_clobbers);

    case BSWAP:
      return recog_116 (x1, insn, pnum_clobbers);

    case FIX:
      return recog_101 (x1, insn, pnum_clobbers);

    case UNSIGNED_FIX:
      return recog_100 (x1, insn, pnum_clobbers);

    case FMA:
      return recog_92 (x1, insn, pnum_clobbers);

    case FLOAT_EXTEND:
      return recog_115 (x1, insn, pnum_clobbers);

    case FLOAT_TRUNCATE:
      return recog_120 (x1, insn, pnum_clobbers);

    case FLOAT:
      switch (pattern13 (x1))
        {
        case 0:
          if (!
#line 4616 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 845; /* floatsisf2 */

        case 1:
          if (!
#line 4628 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 849; /* floatdisf2 */

        case 2:
          if (!
#line 4616 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 847; /* floatdidf2 */

        case 3:
          if (!
#line 4628 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 851; /* floatsidf2 */

        case 4:
          if (!
#line 4636 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
            return -1;
          return 853; /* floatsihf2 */

        case 5:
          if (!
#line 4636 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
            return -1;
          return 855; /* floatdihf2 */

        case 6:
          if (!
#line 1779 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
            return -1;
          return 1626; /* floathihf2 */

        case 7:
          if (!(
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1634; /* floatv4hiv4hf2 */

        case 8:
          if (!(
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1636; /* floatv8hiv8hf2 */

        case 9:
          if (!
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1638; /* floatv2siv2sf2 */

        case 10:
          if (!
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1640; /* floatv4siv4sf2 */

        case 11:
          if (!
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1642; /* floatv2div2df2 */

        default:
          return -1;
        }

    case UNSIGNED_FLOAT:
      switch (pattern13 (x1))
        {
        case 0:
          if (!
#line 4616 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 846; /* floatunssisf2 */

        case 1:
          if (!
#line 4628 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 850; /* floatunsdisf2 */

        case 2:
          if (!
#line 4616 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 848; /* floatunsdidf2 */

        case 3:
          if (!
#line 4628 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 852; /* floatunssidf2 */

        case 4:
          if (!
#line 4636 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
            return -1;
          return 854; /* floatunssihf2 */

        case 5:
          if (!
#line 4636 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FP_F16INST))
            return -1;
          return 856; /* floatunsdihf2 */

        case 6:
          if (!
#line 1779 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD_F16INST))
            return -1;
          return 1627; /* floatunshihf2 */

        case 7:
          if (!(
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1635; /* floatunsv4hiv4hf2 */

        case 8:
          if (!(
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1637; /* floatunsv8hiv8hf2 */

        case 9:
          if (!
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1639; /* floatunsv2siv2sf2 */

        case 10:
          if (!
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1641; /* floatunsv4siv4sf2 */

        case 11:
          if (!
#line 1831 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1643; /* floatunsv2div2df2 */

        default:
          return -1;
        }

    case SQRT:
      return recog_114 (x1, insn, pnum_clobbers);

    case ABS:
      return recog_95 (x1, insn, pnum_clobbers);

    case SMAX:
      switch (pattern15 (x1))
        {
        case 0:
          if (!
#line 4827 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 902; /* smaxsf3 */

        case 1:
          if (!
#line 4827 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 903; /* smaxdf3 */

        case 2:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1297; /* smaxv8qi3 */

        case 3:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1301; /* smaxv16qi3 */

        case 4:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1305; /* smaxv4hi3 */

        case 5:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1309; /* smaxv8hi3 */

        case 6:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1313; /* smaxv2si3 */

        case 7:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1317; /* smaxv4si3 */

        case 8:
          if (!(
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1676; /* smaxv4hf3 */

        case 9:
          if (!(
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1678; /* smaxv8hf3 */

        case 10:
          if (!
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1680; /* smaxv2sf3 */

        case 11:
          if (!
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1682; /* smaxv4sf3 */

        case 12:
          if (!
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1684; /* smaxv2df3 */

        default:
          return -1;
        }

    case SMIN:
      switch (pattern15 (x1))
        {
        case 0:
          if (!
#line 4836 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 904; /* sminsf3 */

        case 1:
          if (!
#line 4836 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_FLOAT))
            return -1;
          return 905; /* smindf3 */

        case 2:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1298; /* sminv8qi3 */

        case 3:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1302; /* sminv16qi3 */

        case 4:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1306; /* sminv4hi3 */

        case 5:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1310; /* sminv8hi3 */

        case 6:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1314; /* sminv2si3 */

        case 7:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1318; /* sminv4si3 */

        case 8:
          if (!(
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 99 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1677; /* sminv4hf3 */

        case 9:
          if (!(
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 100 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(TARGET_SIMD_F16INST)))
            return -1;
          return 1679; /* sminv8hf3 */

        case 10:
          if (!
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1681; /* sminv2sf3 */

        case 11:
          if (!
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1683; /* sminv4sf3 */

        case 12:
          if (!
#line 2036 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1685; /* sminv2df3 */

        default:
          return -1;
        }

    case LO_SUM:
      x5 = XEXP (x1, 0);
      operands[0] = x5;
      x3 = XEXP (x2, 0);
      operands[1] = x3;
      x7 = XEXP (x2, 1);
      operands[2] = x7;
      if (!aarch64_valid_symref (operands[2], VOIDmode))
        return -1;
      switch (pattern1 (x2))
        {
        case 0:
          if (!
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode))
            return -1;
          return 927; /* add_losym_si */

        case 1:
          return 928; /* add_losym_di */

        default:
          return -1;
        }

    case UNSPEC_VOLATILE:
      return recog_103 (x1, insn, pnum_clobbers);

    case VEC_DUPLICATE:
      return recog_89 (x1, insn, pnum_clobbers);

    case VEC_SELECT:
      return recog_108 (x1, insn, pnum_clobbers);

    case VEC_MERGE:
      return recog_94 (x1, insn, pnum_clobbers);

    case UMAX:
      switch (pattern16 (x1))
        {
        case 0:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1299; /* umaxv8qi3 */

        case 1:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1303; /* umaxv16qi3 */

        case 2:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1307; /* umaxv4hi3 */

        case 3:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1311; /* umaxv8hi3 */

        case 4:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1315; /* umaxv2si3 */

        case 5:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1319; /* umaxv4si3 */

        default:
          return -1;
        }

    case UMIN:
      switch (pattern16 (x1))
        {
        case 0:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1300; /* uminv8qi3 */

        case 1:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1304; /* uminv16qi3 */

        case 2:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1308; /* uminv4hi3 */

        case 3:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1312; /* uminv8hi3 */

        case 4:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1316; /* uminv2si3 */

        case 5:
          if (!
#line 1057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1320; /* uminv4si3 */

        default:
          return -1;
        }

    case VEC_CONCAT:
      return recog_97 (x1, insn, pnum_clobbers);

    case POPCOUNT:
      x5 = XEXP (x1, 0);
      operands[0] = x5;
      x3 = XEXP (x2, 0);
      operands[1] = x3;
      switch (GET_MODE (operands[0]))
        {
        case V8QImode:
          if (!register_operand (operands[0], V8QImode)
              || GET_MODE (x2) != V8QImode
              || !register_operand (operands[1], V8QImode)
              || !
#line 2140 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1732; /* popcountv8qi2 */

        case V16QImode:
          if (!register_operand (operands[0], V16QImode)
              || GET_MODE (x2) != V16QImode
              || !register_operand (operands[1], V16QImode)
              || !
#line 2140 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 1733; /* popcountv16qi2 */

        default:
          return -1;
        }

    case SS_PLUS:
      return recog_113 (x1, insn, pnum_clobbers);

    case US_PLUS:
      switch (pattern25 (x1))
        {
        case 0:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2000; /* aarch64_uqaddv8qi */

        case 1:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2004; /* aarch64_uqaddv16qi */

        case 2:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2008; /* aarch64_uqaddv4hi */

        case 3:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2012; /* aarch64_uqaddv8hi */

        case 4:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2016; /* aarch64_uqaddv2si */

        case 5:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2020; /* aarch64_uqaddv4si */

        case 6:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2024; /* aarch64_uqaddv2di */

        case 7:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2028; /* aarch64_uqaddqi */

        case 8:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2032; /* aarch64_uqaddhi */

        case 9:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2036; /* aarch64_uqaddsi */

        case 10:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2040; /* aarch64_uqadddi */

        default:
          return -1;
        }

    case SS_MINUS:
      return recog_112 (x1, insn, pnum_clobbers);

    case US_MINUS:
      switch (pattern25 (x1))
        {
        case 0:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2002; /* aarch64_uqsubv8qi */

        case 1:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2006; /* aarch64_uqsubv16qi */

        case 2:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2010; /* aarch64_uqsubv4hi */

        case 3:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2014; /* aarch64_uqsubv8hi */

        case 4:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2018; /* aarch64_uqsubv2si */

        case 5:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2022; /* aarch64_uqsubv4si */

        case 6:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2026; /* aarch64_uqsubv2di */

        case 7:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2030; /* aarch64_uqsubqi */

        case 8:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2034; /* aarch64_uqsubhi */

        case 9:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2038; /* aarch64_uqsubsi */

        case 10:
          if (!
#line 3161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2042; /* aarch64_uqsubdi */

        default:
          return -1;
        }

    case SS_NEG:
      switch (pattern26 (x1))
        {
        case 0:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2083; /* aarch64_sqnegv8qi */

        case 1:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2085; /* aarch64_sqnegv16qi */

        case 2:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2087; /* aarch64_sqnegv4hi */

        case 3:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2089; /* aarch64_sqnegv8hi */

        case 4:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2091; /* aarch64_sqnegv2si */

        case 5:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2093; /* aarch64_sqnegv4si */

        case 6:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2095; /* aarch64_sqnegv2di */

        case 7:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2097; /* aarch64_sqnegqi */

        case 8:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2099; /* aarch64_sqneghi */

        case 9:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2101; /* aarch64_sqnegsi */

        case 10:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2103; /* aarch64_sqnegdi */

        default:
          return -1;
        }

    case SS_ABS:
      switch (pattern26 (x1))
        {
        case 0:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2084; /* aarch64_sqabsv8qi */

        case 1:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2086; /* aarch64_sqabsv16qi */

        case 2:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2088; /* aarch64_sqabsv4hi */

        case 3:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2090; /* aarch64_sqabsv8hi */

        case 4:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2092; /* aarch64_sqabsv2si */

        case 5:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2094; /* aarch64_sqabsv4si */

        case 6:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2096; /* aarch64_sqabsv2di */

        case 7:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2098; /* aarch64_sqabsqi */

        case 8:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2100; /* aarch64_sqabshi */

        case 9:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2102; /* aarch64_sqabssi */

        case 10:
          if (!
#line 3206 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD))
            return -1;
          return 2104; /* aarch64_sqabsdi */

        default:
          return -1;
        }

    case SS_ASHIFT:
      return recog_102 (x1, insn, pnum_clobbers);

    default:
      return -1;
    }
}

int
recog (rtx x1 ATTRIBUTE_UNUSED,
	rtx uncast_insn ATTRIBUTE_UNUSED,
	int *pnum_clobbers ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18, x19, x20, x21, x22, x23, x24, x25;
  rtx x26, x27, x28, x29, x30, x31, x32, x33;
  rtx x34, x35, x36;
  int res ATTRIBUTE_UNUSED;
  recog_data.insn = NULL;
  rtx_insn *insn ATTRIBUTE_UNUSED;
  insn = safe_as_a <rtx_insn *> (uncast_insn);
  switch (GET_CODE (x1))
    {
    case SET:
      return recog_129 (x1, insn, pnum_clobbers);

    case PARALLEL:
      switch (XVECLEN (x1, 0))
        {
        case 5:
          x2 = XVECEXP (x1, 0, 0);
          if (GET_CODE (x2) != SET)
            return -1;
          x3 = XVECEXP (x1, 0, 2);
          if (GET_CODE (x3) != CLOBBER)
            return -1;
          x4 = XVECEXP (x1, 0, 3);
          if (GET_CODE (x4) != CLOBBER)
            return -1;
          x5 = XEXP (x4, 0);
          operands[4] = x5;
          if (scratch_operand (operands[4], DImode))
            {
              res = recog_123 (x1, insn, pnum_clobbers);
              if (res >= 0)
                return res;
            }
          x6 = XVECEXP (x1, 0, 1);
          if (GET_CODE (x6) != SET)
            return -1;
          x7 = XEXP (x6, 1);
          if (GET_CODE (x7) != UNSPEC_VOLATILE
              || XVECLEN (x7, 0) != 2
              || XINT (x7, 1) != 15)
            return -1;
          x8 = XEXP (x3, 0);
          if (GET_CODE (x8) != REG
              || REGNO (x8) != 66
              || GET_MODE (x8) != CCmode)
            return -1;
          x9 = XVECEXP (x1, 0, 4);
          if (GET_CODE (x9) != CLOBBER)
            return -1;
          x10 = XEXP (x2, 0);
          operands[0] = x10;
          x11 = XEXP (x2, 1);
          operands[1] = x11;
          x12 = XVECEXP (x7, 0, 1);
          operands[3] = x12;
          if (!const_int_operand (operands[3], SImode))
            return -1;
          switch (pattern362 (x1))
            {
            case 0:
              return 3162; /* aarch64_atomic_fetch_addqi */

            case 1:
              return 3167; /* aarch64_atomic_fetch_addhi */

            case 2:
              return 3172; /* aarch64_atomic_fetch_addsi */

            case 3:
              return 3177; /* aarch64_atomic_fetch_adddi */

            case 4:
              return 3163; /* aarch64_atomic_fetch_subqi */

            case 5:
              return 3168; /* aarch64_atomic_fetch_subhi */

            case 6:
              return 3173; /* aarch64_atomic_fetch_subsi */

            case 7:
              return 3178; /* aarch64_atomic_fetch_subdi */

            case 8:
              return 3164; /* aarch64_atomic_fetch_orqi */

            case 9:
              return 3169; /* aarch64_atomic_fetch_orhi */

            case 10:
              return 3174; /* aarch64_atomic_fetch_orsi */

            case 11:
              return 3179; /* aarch64_atomic_fetch_ordi */

            case 12:
              return 3165; /* aarch64_atomic_fetch_xorqi */

            case 13:
              return 3170; /* aarch64_atomic_fetch_xorhi */

            case 14:
              return 3175; /* aarch64_atomic_fetch_xorsi */

            case 15:
              return 3180; /* aarch64_atomic_fetch_xordi */

            case 16:
              return 3166; /* aarch64_atomic_fetch_andqi */

            case 17:
              return 3171; /* aarch64_atomic_fetch_andhi */

            case 18:
              return 3176; /* aarch64_atomic_fetch_andsi */

            case 19:
              return 3181; /* aarch64_atomic_fetch_anddi */

            case 20:
              return 3202; /* atomic_fetch_nandqi */

            case 21:
              return 3203; /* atomic_fetch_nandhi */

            case 22:
              return 3204; /* atomic_fetch_nandsi */

            case 23:
              return 3205; /* atomic_fetch_nanddi */

            default:
              return -1;
            }

        case 2:
          return recog_128 (x1, insn, pnum_clobbers);

        case 3:
          x2 = XVECEXP (x1, 0, 0);
          switch (GET_CODE (x2))
            {
            case CALL:
              x10 = XEXP (x2, 0);
              if (GET_CODE (x10) != MEM
                  || GET_MODE (x10) != DImode)
                return -1;
              x13 = XEXP (x10, 0);
              operands[0] = x13;
              x11 = XEXP (x2, 1);
              operands[1] = x11;
              x6 = XVECEXP (x1, 0, 1);
              switch (GET_CODE (x6))
                {
                case USE:
                  x3 = XVECEXP (x1, 0, 2);
                  if (pattern37 (x3, DImode, 30) != 0)
                    return -1;
                  x14 = XEXP (x6, 0);
                  operands[2] = x14;
                  if (register_operand (operands[0], DImode))
                    return 41; /* *call_reg */
                  if (!
#line 771 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(GET_CODE (operands[0]) == SYMBOL_REF
   && !aarch64_is_long_call_p (operands[0])
   && !aarch64_is_noplt_call_p (operands[0])))
                    return -1;
                  return 42; /* *call_symbol */

                case RETURN:
                  x3 = XVECEXP (x1, 0, 2);
                  if (GET_CODE (x3) != USE
                      || !aarch64_call_insn_operand (operands[0], DImode))
                    return -1;
                  x8 = XEXP (x3, 0);
                  operands[2] = x8;
                  if (!
#line 908 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(SIBLING_CALL_P (insn)))
                    return -1;
                  return 45; /* *sibcall_insn */

                default:
                  return -1;
                }

            case SET:
              x11 = XEXP (x2, 1);
              switch (GET_CODE (x11))
                {
                case CALL:
                  x15 = XEXP (x11, 0);
                  if (GET_CODE (x15) != MEM
                      || GET_MODE (x15) != DImode)
                    return -1;
                  x10 = XEXP (x2, 0);
                  operands[0] = x10;
                  x16 = XEXP (x15, 0);
                  operands[1] = x16;
                  res = recog_127 (x1, insn, pnum_clobbers);
                  if (res >= 0)
                    return res;
                  if (!register_operand (operands[0], VOIDmode)
                      || pattern237 (x1) != 0)
                    return -1;
                  x3 = XVECEXP (x1, 0, 2);
                  if (pattern37 (x3, DImode, 30) != 0)
                    return -1;
                  operands[2] = x16;
                  x6 = XVECEXP (x1, 0, 1);
                  x17 = XVECEXP (x6, 0, 0);
                  operands[1] = x17;
                  if (!aarch64_valid_symref (operands[1], DImode))
                    return -1;
                  return 937; /* *tlsgd_small */

                case PLUS:
                  x6 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x6) != SET)
                    return -1;
                  x10 = XEXP (x2, 0);
                  operands[0] = x10;
                  x15 = XEXP (x11, 0);
                  operands[1] = x15;
                  x7 = XEXP (x6, 1);
                  switch (GET_CODE (x7))
                    {
                    case MEM:
                      x3 = XVECEXP (x1, 0, 2);
                      if (GET_CODE (x3) != SET)
                        return -1;
                      x18 = XEXP (x3, 1);
                      if (GET_CODE (x18) != MEM)
                        return -1;
                      x19 = XEXP (x18, 0);
                      if (GET_CODE (x19) != PLUS)
                        return -1;
                      x20 = XEXP (x11, 1);
                      operands[4] = x20;
                      x14 = XEXP (x6, 0);
                      operands[2] = x14;
                      x8 = XEXP (x3, 0);
                      operands[3] = x8;
                      x21 = XEXP (x19, 1);
                      operands[5] = x21;
                      x22 = XEXP (x7, 0);
                      if (!rtx_equal_p (x22, operands[1]))
                        return -1;
                      x23 = XEXP (x19, 0);
                      if (!rtx_equal_p (x23, operands[1]))
                        return -1;
                      switch (GET_MODE (operands[0]))
                        {
                        case SImode:
                          switch (pattern364 (x1, SImode))
                            {
                            case 0:
                              if (!(
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (SImode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 66; /* loadwb_pairsi_si */

                            case 1:
                              if (!(
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (DImode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 68; /* loadwb_pairdi_si */

                            case 2:
                              if (!(
#line 1449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (SFmode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 70; /* loadwb_pairsf_si */

                            case 3:
                              if (!(
#line 1449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (DFmode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 72; /* loadwb_pairdf_si */

                            default:
                              return -1;
                            }

                        case DImode:
                          switch (pattern364 (x1, DImode))
                            {
                            case 0:
                              if (!(
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (SImode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 67; /* loadwb_pairsi_di */

                            case 1:
                              if (!(
#line 1434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (DImode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 69; /* loadwb_pairdi_di */

                            case 2:
                              if (!(
#line 1449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (SFmode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 71; /* loadwb_pairsf_di */

                            case 3:
                              if (!(
#line 1449 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == GET_MODE_SIZE (DFmode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 73; /* loadwb_pairdf_di */

                            default:
                              return -1;
                            }

                        default:
                          return -1;
                        }

                    case REG:
                    case SUBREG:
                      operands[2] = x7;
                      x14 = XEXP (x6, 0);
                      if (GET_CODE (x14) != MEM)
                        return -1;
                      x24 = XEXP (x14, 0);
                      if (GET_CODE (x24) != PLUS)
                        return -1;
                      x3 = XVECEXP (x1, 0, 2);
                      if (GET_CODE (x3) != SET)
                        return -1;
                      x8 = XEXP (x3, 0);
                      if (GET_CODE (x8) != MEM)
                        return -1;
                      x25 = XEXP (x8, 0);
                      if (GET_CODE (x25) != PLUS)
                        return -1;
                      x20 = XEXP (x11, 1);
                      operands[4] = x20;
                      x26 = XEXP (x25, 1);
                      operands[5] = x26;
                      x18 = XEXP (x3, 1);
                      operands[3] = x18;
                      x27 = XEXP (x24, 0);
                      if (!rtx_equal_p (x27, operands[0]))
                        return -1;
                      x28 = XEXP (x24, 1);
                      if (!rtx_equal_p (x28, operands[4]))
                        return -1;
                      x29 = XEXP (x25, 0);
                      if (!rtx_equal_p (x29, operands[0]))
                        return -1;
                      switch (GET_MODE (operands[0]))
                        {
                        case SImode:
                          switch (pattern377 (x1, SImode))
                            {
                            case 0:
                              if (!(
#line 1467 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (SImode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 74; /* storewb_pairsi_si */

                            case 1:
                              if (!(
#line 1467 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (DImode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 76; /* storewb_pairdi_si */

                            case 2:
                              if (!(
#line 1483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (SFmode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 78; /* storewb_pairsf_si */

                            case 3:
                              if (!(
#line 1483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (DFmode)) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)))
                                return -1;
                              return 80; /* storewb_pairdf_si */

                            default:
                              return -1;
                            }

                        case DImode:
                          switch (pattern377 (x1, DImode))
                            {
                            case 0:
                              if (!(
#line 1467 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (SImode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 75; /* storewb_pairsi_di */

                            case 1:
                              if (!(
#line 1467 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (DImode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 77; /* storewb_pairdi_di */

                            case 2:
                              if (!(
#line 1483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (SFmode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 79; /* storewb_pairsf_di */

                            case 3:
                              if (!(
#line 1483 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (DFmode)) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)))
                                return -1;
                              return 81; /* storewb_pairdf_di */

                            default:
                              return -1;
                            }

                        default:
                          return -1;
                        }

                    case UNSPEC_VOLATILE:
                      if (XVECLEN (x7, 0) != 3
                          || XINT (x7, 1) != 16)
                        return -1;
                      x3 = XVECEXP (x1, 0, 2);
                      if (GET_CODE (x3) != CLOBBER)
                        return -1;
                      switch (pattern147 (x1))
                        {
                        case 0:
                          if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                            return -1;
                          return 3226; /* aarch64_atomic_add_fetchqi_lse */

                        case 1:
                          if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                            return -1;
                          return 3231; /* aarch64_atomic_add_fetchhi_lse */

                        case 2:
                          if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                            return -1;
                          return 3236; /* aarch64_atomic_add_fetchsi_lse */

                        case 3:
                          if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                            return -1;
                          return 3241; /* aarch64_atomic_add_fetchdi_lse */

                        default:
                          return -1;
                        }

                    default:
                      return -1;
                    }

                case UNSPEC_VOLATILE:
                  if (XVECLEN (x11, 0) != 1
                      || XINT (x11, 1) != 11
                      || GET_MODE (x11) != CCmode)
                    return -1;
                  x30 = XVECEXP (x11, 0, 0);
                  if (x30 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
                    return -1;
                  x10 = XEXP (x2, 0);
                  if (GET_CODE (x10) != REG
                      || REGNO (x10) != 66
                      || GET_MODE (x10) != CCmode)
                    return -1;
                  x6 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x6) != SET)
                    return -1;
                  switch (pattern298 (x1))
                    {
                    case 0:
                      if (pnum_clobbers != NULL)
                        {
                          *pnum_clobbers = 1;
                          return 3102; /* aarch64_compare_and_swapqi */
                        }
                      if (!
#line 102 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3106; /* aarch64_compare_and_swapqi_lse */

                    case 1:
                      if (pnum_clobbers != NULL)
                        {
                          *pnum_clobbers = 1;
                          return 3103; /* aarch64_compare_and_swaphi */
                        }
                      if (!
#line 102 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3107; /* aarch64_compare_and_swaphi_lse */

                    case 2:
                      if (pnum_clobbers != NULL)
                        {
                          *pnum_clobbers = 1;
                          return 3104; /* aarch64_compare_and_swapsi */
                        }
                      if (!
#line 127 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3108; /* aarch64_compare_and_swapsi_lse */

                    case 3:
                      if (pnum_clobbers != NULL)
                        {
                          *pnum_clobbers = 1;
                          return 3105; /* aarch64_compare_and_swapdi */
                        }
                      if (!
#line 127 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3109; /* aarch64_compare_and_swapdi_lse */

                    default:
                      return -1;
                    }

                case MINUS:
                  x6 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x6) != SET)
                    return -1;
                  switch (pattern148 (x1))
                    {
                    case 0:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3227; /* aarch64_atomic_sub_fetchqi_lse */

                    case 1:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3232; /* aarch64_atomic_sub_fetchhi_lse */

                    case 2:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3237; /* aarch64_atomic_sub_fetchsi_lse */

                    case 3:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3242; /* aarch64_atomic_sub_fetchdi_lse */

                    default:
                      return -1;
                    }

                case IOR:
                  x6 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x6) != SET)
                    return -1;
                  switch (pattern150 (x1))
                    {
                    case 0:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3228; /* aarch64_atomic_or_fetchqi_lse */

                    case 1:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3233; /* aarch64_atomic_or_fetchhi_lse */

                    case 2:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3238; /* aarch64_atomic_or_fetchsi_lse */

                    case 3:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3243; /* aarch64_atomic_or_fetchdi_lse */

                    default:
                      return -1;
                    }

                case XOR:
                  x6 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x6) != SET)
                    return -1;
                  switch (pattern150 (x1))
                    {
                    case 0:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3229; /* aarch64_atomic_xor_fetchqi_lse */

                    case 1:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3234; /* aarch64_atomic_xor_fetchhi_lse */

                    case 2:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3239; /* aarch64_atomic_xor_fetchsi_lse */

                    case 3:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3244; /* aarch64_atomic_xor_fetchdi_lse */

                    default:
                      return -1;
                    }

                case AND:
                  x6 = XVECEXP (x1, 0, 1);
                  if (GET_CODE (x6) != SET)
                    return -1;
                  switch (pattern150 (x1))
                    {
                    case 0:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3230; /* aarch64_atomic_and_fetchqi_lse */

                    case 1:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3235; /* aarch64_atomic_and_fetchhi_lse */

                    case 2:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3240; /* aarch64_atomic_and_fetchsi_lse */

                    case 3:
                      if (!
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE))
                        return -1;
                      return 3245; /* aarch64_atomic_and_fetchdi_lse */

                    default:
                      return -1;
                    }

                default:
                  return -1;
                }

            default:
              return -1;
            }

        case 4:
          x2 = XVECEXP (x1, 0, 0);
          if (GET_CODE (x2) != SET)
            return -1;
          x4 = XVECEXP (x1, 0, 3);
          if (GET_CODE (x4) != CLOBBER)
            return -1;
          x11 = XEXP (x2, 1);
          switch (GET_CODE (x11))
            {
            case UNSPEC:
              if (XVECLEN (x11, 0) != 1
                  || XINT (x11, 1) != 54)
                return -1;
              x10 = XEXP (x2, 0);
              if (GET_CODE (x10) != REG
                  || REGNO (x10) != 0)
                return -1;
              x6 = XVECEXP (x1, 0, 1);
              if (pattern144 (x6, DImode, 30) != 0)
                return -1;
              x3 = XVECEXP (x1, 0, 2);
              if (pattern37 (x3, CCmode, 66) != 0)
                return -1;
              x30 = XVECEXP (x11, 0, 0);
              operands[0] = x30;
              if (!aarch64_valid_symref (operands[0], VOIDmode))
                return -1;
              x5 = XEXP (x4, 0);
              operands[1] = x5;
              if (!scratch_operand (operands[1], DImode))
                return -1;
              switch (GET_MODE (x10))
                {
                case SImode:
                  if (GET_MODE (x11) != SImode
                      || !(
#line 5210 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_TLS_DESC) && 
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode)))
                    return -1;
                  return 952; /* tlsdesc_small_si */

                case DImode:
                  if (GET_MODE (x11) != DImode
                      || !(
#line 5210 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_TLS_DESC) && 
#line 92 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode)))
                    return -1;
                  return 953; /* tlsdesc_small_di */

                default:
                  return -1;
                }

            case UNSPEC_VOLATILE:
              x5 = XEXP (x4, 0);
              if (!scratch_operand (x5, SImode))
                return -1;
              switch (pattern198 (x1))
                {
                case 0:
                  return 3102; /* aarch64_compare_and_swapqi */

                case 1:
                  return 3103; /* aarch64_compare_and_swaphi */

                case 2:
                  return 3104; /* aarch64_compare_and_swapsi */

                case 3:
                  return 3105; /* aarch64_compare_and_swapdi */

                case 4:
                  return 3118; /* aarch64_atomic_addqi */

                case 5:
                  return 3123; /* aarch64_atomic_addhi */

                case 6:
                  return 3128; /* aarch64_atomic_addsi */

                case 7:
                  return 3133; /* aarch64_atomic_adddi */

                case 8:
                  return 3119; /* aarch64_atomic_subqi */

                case 9:
                  return 3124; /* aarch64_atomic_subhi */

                case 10:
                  return 3129; /* aarch64_atomic_subsi */

                case 11:
                  return 3134; /* aarch64_atomic_subdi */

                case 12:
                  return 3120; /* aarch64_atomic_orqi */

                case 13:
                  return 3125; /* aarch64_atomic_orhi */

                case 14:
                  return 3130; /* aarch64_atomic_orsi */

                case 15:
                  return 3135; /* aarch64_atomic_ordi */

                case 16:
                  return 3121; /* aarch64_atomic_xorqi */

                case 17:
                  return 3126; /* aarch64_atomic_xorhi */

                case 18:
                  return 3131; /* aarch64_atomic_xorsi */

                case 19:
                  return 3136; /* aarch64_atomic_xordi */

                case 20:
                  return 3122; /* aarch64_atomic_andqi */

                case 21:
                  return 3127; /* aarch64_atomic_andhi */

                case 22:
                  return 3132; /* aarch64_atomic_andsi */

                case 23:
                  return 3137; /* aarch64_atomic_anddi */

                case 24:
                  return 3158; /* atomic_nandqi */

                case 25:
                  return 3159; /* atomic_nandhi */

                case 26:
                  return 3160; /* atomic_nandsi */

                case 27:
                  return 3161; /* atomic_nanddi */

                default:
                  return -1;
                }

            case SUBREG:
            case MEM:
              operands[1] = x11;
              if (pattern38 (x1, 12, 2) != 0)
                return -1;
              x10 = XEXP (x2, 0);
              operands[0] = x10;
              x6 = XVECEXP (x1, 0, 1);
              x7 = XEXP (x6, 1);
              x31 = XVECEXP (x7, 0, 0);
              operands[2] = x31;
              x12 = XVECEXP (x7, 0, 1);
              operands[3] = x12;
              if (!const_int_operand (operands[3], SImode))
                return -1;
              x5 = XEXP (x4, 0);
              operands[4] = x5;
              if (!scratch_operand (operands[4], SImode))
                return -1;
              switch (pattern375 (x6))
                {
                case 0:
                  return 3110; /* aarch64_atomic_exchangeqi */

                case 1:
                  return 3111; /* aarch64_atomic_exchangehi */

                case 2:
                  return 3112; /* aarch64_atomic_exchangesi */

                case 3:
                  return 3113; /* aarch64_atomic_exchangedi */

                default:
                  return -1;
                }

            case PLUS:
              switch (pattern152 (x1))
                {
                case 0:
                  return 3206; /* aarch64_atomic_add_fetchqi */

                case 1:
                  return 3211; /* aarch64_atomic_add_fetchhi */

                case 2:
                  return 3216; /* aarch64_atomic_add_fetchsi */

                case 3:
                  return 3221; /* aarch64_atomic_add_fetchdi */

                default:
                  return -1;
                }

            case MINUS:
              switch (pattern152 (x1))
                {
                case 0:
                  return 3207; /* aarch64_atomic_sub_fetchqi */

                case 1:
                  return 3212; /* aarch64_atomic_sub_fetchhi */

                case 2:
                  return 3217; /* aarch64_atomic_sub_fetchsi */

                case 3:
                  return 3222; /* aarch64_atomic_sub_fetchdi */

                default:
                  return -1;
                }

            case IOR:
              switch (pattern154 (x1))
                {
                case 0:
                  return 3208; /* aarch64_atomic_or_fetchqi */

                case 1:
                  return 3213; /* aarch64_atomic_or_fetchhi */

                case 2:
                  return 3218; /* aarch64_atomic_or_fetchsi */

                case 3:
                  return 3223; /* aarch64_atomic_or_fetchdi */

                default:
                  return -1;
                }

            case XOR:
              switch (pattern154 (x1))
                {
                case 0:
                  return 3209; /* aarch64_atomic_xor_fetchqi */

                case 1:
                  return 3214; /* aarch64_atomic_xor_fetchhi */

                case 2:
                  return 3219; /* aarch64_atomic_xor_fetchsi */

                case 3:
                  return 3224; /* aarch64_atomic_xor_fetchdi */

                default:
                  return -1;
                }

            case AND:
              switch (pattern154 (x1))
                {
                case 0:
                  return 3210; /* aarch64_atomic_and_fetchqi */

                case 1:
                  return 3215; /* aarch64_atomic_and_fetchhi */

                case 2:
                  return 3220; /* aarch64_atomic_and_fetchsi */

                case 3:
                  return 3225; /* aarch64_atomic_and_fetchdi */

                default:
                  return -1;
                }

            case NOT:
              x15 = XEXP (x11, 0);
              if (GET_CODE (x15) != AND
                  || pattern38 (x1, 15, 3) != 0)
                return -1;
              x10 = XEXP (x2, 0);
              operands[0] = x10;
              x16 = XEXP (x15, 0);
              operands[1] = x16;
              x32 = XEXP (x15, 1);
              operands[2] = x32;
              x6 = XVECEXP (x1, 0, 1);
              x7 = XEXP (x6, 1);
              x33 = XVECEXP (x7, 0, 2);
              operands[3] = x33;
              if (!const_int_operand (operands[3], SImode))
                return -1;
              x5 = XEXP (x4, 0);
              operands[4] = x5;
              if (!scratch_operand (operands[4], SImode))
                return -1;
              switch (pattern347 (x1))
                {
                case 0:
                  return 3246; /* atomic_nand_fetchqi */

                case 1:
                  return 3247; /* atomic_nand_fetchhi */

                case 2:
                  return 3248; /* atomic_nand_fetchsi */

                case 3:
                  return 3249; /* atomic_nand_fetchdi */

                default:
                  return -1;
                }

            default:
              return -1;
            }

        default:
          return -1;
        }

    case UNSPEC:
      if (XVECLEN (x1, 0) != 1
          || XINT (x1, 1) != 38)
        return -1;
      x2 = XVECEXP (x1, 0, 0);
      if (x2 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
        return -1;
      return 19; /* nop */

    case PREFETCH:
      x34 = XEXP (x1, 0);
      operands[0] = x34;
      if (!register_operand (operands[0], DImode))
        return -1;
      x35 = XEXP (x1, 1);
      operands[1] = x35;
      if (!const_int_operand (operands[1], QImode))
        return -1;
      x36 = XEXP (x1, 2);
      operands[2] = x36;
      if (!const_int_operand (operands[2], QImode))
        return -1;
      return 20; /* prefetch */

    case TRAP_IF:
      x34 = XEXP (x1, 0);
      if (x34 != const_int_rtx[MAX_SAVED_CONST_INT + 1])
        return -1;
      x35 = XEXP (x1, 1);
      if (x35 != const_int_rtx[MAX_SAVED_CONST_INT + 8])
        return -1;
      return 21; /* trap */

    case RETURN:
      return 22; /* *do_return */

    case SIMPLE_RETURN:
      return 23; /* simple_return */

    case UNSPEC_VOLATILE:
      if (XVECLEN (x1, 0) != 1)
        return -1;
      switch (XINT (x1, 1))
        {
        case 0:
          x2 = XVECEXP (x1, 0, 0);
          operands[0] = x2;
          if (!register_operand (operands[0], DImode))
            return -1;
          return 24; /* eh_return */

        case 5:
          x2 = XVECEXP (x1, 0, 0);
          if (x2 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return -1;
          return 955; /* blockage */

        case 2:
          x2 = XVECEXP (x1, 0, 0);
          operands[0] = x2;
          if (!register_operand (operands[0], SImode))
            return -1;
          return 962; /* set_fpcr */

        case 4:
          x2 = XVECEXP (x1, 0, 0);
          operands[0] = x2;
          if (!register_operand (operands[0], SImode))
            return -1;
          return 964; /* set_fpsr */

        default:
          return -1;
        }

    default:
      return -1;
    }
}

static rtx_insn *
split_1 (rtx x1 ATTRIBUTE_UNUSED, rtx_insn *insn ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10;
  rtx_insn *res ATTRIBUTE_UNUSED;
  x2 = XVECEXP (x1, 0, 0);
  if (GET_CODE (x2) != SET)
    return NULL;
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  x4 = XEXP (x2, 1);
  switch (GET_CODE (x4))
    {
    case NEG:
      if (GET_MODE (x4) != DImode)
        return NULL;
      x5 = XVECEXP (x1, 0, 1);
      if (pattern144 (x5, CCmode, 66) != 0)
        return NULL;
      x6 = XEXP (x4, 0);
      switch (pattern274 (x6))
        {
        case 0:
          if (!
#line 4138 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_50 (insn, operands);

        case 1:
          if (!
#line 4138 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_51 (insn, operands);

        case 2:
          if (!
#line 4138 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_52 (insn, operands);

        case 3:
          if (!
#line 4138 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_53 (insn, operands);

        case 4:
          if (!
#line 4138 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_54 (insn, operands);

        case 5:
          if (!
#line 4201 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_55 (insn, operands);

        case 6:
          if (!
#line 4201 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_56 (insn, operands);

        case 7:
          if (!
#line 4201 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_57 (insn, operands);

        case 8:
          if (!
#line 4201 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_58 (insn, operands);

        case 9:
          if (!
#line 4272 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(reload_completed))
            return NULL;
          return gen_split_59 (insn, operands);

        default:
          return NULL;
        }

    case SUBREG:
    case MEM:
      operands[1] = x4;
      x5 = XVECEXP (x1, 0, 1);
      if (GET_CODE (x5) != SET)
        return NULL;
      x7 = XEXP (x5, 1);
      if (GET_CODE (x7) != UNSPEC_VOLATILE
          || XVECLEN (x7, 0) != 2)
        return NULL;
      x8 = XVECEXP (x7, 0, 1);
      operands[3] = x8;
      if (!const_int_operand (operands[3], SImode))
        return NULL;
      x9 = XEXP (x5, 0);
      if (!rtx_equal_p (x9, operands[1]))
        return NULL;
      switch (XINT (x7, 1))
        {
        case 12:
          x10 = XVECEXP (x7, 0, 0);
          operands[2] = x10;
          switch (GET_MODE (operands[0]))
            {
            case QImode:
              if (pattern345 (x7, QImode) != 0
                  || !(
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 191 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_79 (insn, operands);

            case HImode:
              if (pattern345 (x7, HImode) != 0
                  || !(
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 191 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_80 (insn, operands);

            case SImode:
              if (pattern345 (x7, SImode) != 0
                  || !(
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 191 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_81 (insn, operands);

            case DImode:
              if (pattern345 (x7, DImode) != 0
                  || !(
#line 189 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 191 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_82 (insn, operands);

            default:
              return NULL;
            }

        case 16:
          x10 = XVECEXP (x7, 0, 0);
          switch (GET_CODE (x10))
            {
            case PLUS:
              switch (pattern336 (x7))
                {
                case 0:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_147 (insn, operands);

                case 1:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_152 (insn, operands);

                case 2:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_157 (insn, operands);

                case 3:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_162 (insn, operands);

                default:
                  return NULL;
                }

            case MINUS:
              switch (pattern336 (x7))
                {
                case 0:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_148 (insn, operands);

                case 1:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_153 (insn, operands);

                case 2:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_158 (insn, operands);

                case 3:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_163 (insn, operands);

                default:
                  return NULL;
                }

            case IOR:
              switch (pattern338 (x7))
                {
                case 0:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_149 (insn, operands);

                case 1:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_154 (insn, operands);

                case 2:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_159 (insn, operands);

                case 3:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_164 (insn, operands);

                default:
                  return NULL;
                }

            case XOR:
              switch (pattern338 (x7))
                {
                case 0:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_150 (insn, operands);

                case 1:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_155 (insn, operands);

                case 2:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_160 (insn, operands);

                case 3:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_165 (insn, operands);

                default:
                  return NULL;
                }

            case AND:
              switch (pattern338 (x7))
                {
                case 0:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_151 (insn, operands);

                case 1:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_156 (insn, operands);

                case 2:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_161 (insn, operands);

                case 3:
                  if (!(
#line 338 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 340 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                    return NULL;
                  return gen_split_166 (insn, operands);

                default:
                  return NULL;
                }

            default:
              return NULL;
            }

        default:
          return NULL;
        }

    case UNSPEC_VOLATILE:
      if (XVECLEN (x4, 0) != 2)
        return NULL;
      switch (pattern190 (x1))
        {
        case 0:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_103 (insn, operands);

        case 1:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_108 (insn, operands);

        case 2:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_113 (insn, operands);

        case 3:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_118 (insn, operands);

        case 4:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_104 (insn, operands);

        case 5:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_109 (insn, operands);

        case 6:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_114 (insn, operands);

        case 7:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_119 (insn, operands);

        case 8:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_105 (insn, operands);

        case 9:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_110 (insn, operands);

        case 10:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_115 (insn, operands);

        case 11:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_120 (insn, operands);

        case 12:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_106 (insn, operands);

        case 13:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_111 (insn, operands);

        case 14:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_116 (insn, operands);

        case 15:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_121 (insn, operands);

        case 16:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_107 (insn, operands);

        case 17:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_112 (insn, operands);

        case 18:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_117 (insn, operands);

        case 19:
          if (!(
#line 250 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 252 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
            return NULL;
          return gen_split_122 (insn, operands);

        default:
          return NULL;
        }

    default:
      return NULL;
    }
}

static rtx_insn *
split_2 (rtx x1 ATTRIBUTE_UNUSED, rtx_insn *insn ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15, x16, x17;
  rtx x18;
  rtx_insn *res ATTRIBUTE_UNUSED;
  switch (XVECLEN (x1, 0))
    {
    case 2:
      return split_1 (x1, insn);

    case 4:
      x2 = XVECEXP (x1, 0, 0);
      if (GET_CODE (x2) != SET)
        return NULL;
      x3 = XVECEXP (x1, 0, 3);
      if (GET_CODE (x3) != CLOBBER)
        return NULL;
      x4 = XEXP (x3, 0);
      if (!scratch_operand (x4, SImode))
        return NULL;
      x5 = XEXP (x2, 1);
      switch (GET_CODE (x5))
        {
        case UNSPEC_VOLATILE:
          switch (pattern198 (x1))
            {
            case 0:
              if (!
#line 56 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_67 (insn, operands);

            case 1:
              if (!
#line 56 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_68 (insn, operands);

            case 2:
              if (!
#line 80 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_69 (insn, operands);

            case 3:
              if (!
#line 80 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_70 (insn, operands);

            case 4:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_83 (insn, operands);

            case 5:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_88 (insn, operands);

            case 6:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_93 (insn, operands);

            case 7:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_98 (insn, operands);

            case 8:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_84 (insn, operands);

            case 9:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_89 (insn, operands);

            case 10:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_94 (insn, operands);

            case 11:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_99 (insn, operands);

            case 12:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_85 (insn, operands);

            case 13:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_90 (insn, operands);

            case 14:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_95 (insn, operands);

            case 15:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_100 (insn, operands);

            case 16:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_86 (insn, operands);

            case 17:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_91 (insn, operands);

            case 18:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_96 (insn, operands);

            case 19:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_101 (insn, operands);

            case 20:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_87 (insn, operands);

            case 21:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_92 (insn, operands);

            case 22:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_97 (insn, operands);

            case 23:
              if (!
#line 233 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_102 (insn, operands);

            case 24:
              if (!
#line 274 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_123 (insn, operands);

            case 25:
              if (!
#line 274 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_124 (insn, operands);

            case 26:
              if (!
#line 274 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_125 (insn, operands);

            case 27:
              if (!
#line 274 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_126 (insn, operands);

            default:
              return NULL;
            }

        case SUBREG:
        case MEM:
          operands[1] = x5;
          if (pattern38 (x1, 12, 2) != 0)
            return NULL;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          x7 = XVECEXP (x1, 0, 1);
          x8 = XEXP (x7, 1);
          x9 = XVECEXP (x8, 0, 0);
          operands[2] = x9;
          x10 = XVECEXP (x8, 0, 1);
          operands[3] = x10;
          if (!const_int_operand (operands[3], SImode))
            return NULL;
          operands[4] = x4;
          switch (pattern375 (x7))
            {
            case 0:
              if (!
#line 172 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_75 (insn, operands);

            case 1:
              if (!
#line 172 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_76 (insn, operands);

            case 2:
              if (!
#line 172 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_77 (insn, operands);

            case 3:
              if (!
#line 172 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_78 (insn, operands);

            default:
              return NULL;
            }

        case PLUS:
          switch (pattern200 (x1))
            {
            case 0:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_171 (insn, operands);

            case 1:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_176 (insn, operands);

            case 2:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_181 (insn, operands);

            case 3:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_186 (insn, operands);

            default:
              return NULL;
            }

        case MINUS:
          switch (pattern200 (x1))
            {
            case 0:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_172 (insn, operands);

            case 1:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_177 (insn, operands);

            case 2:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_182 (insn, operands);

            case 3:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_187 (insn, operands);

            default:
              return NULL;
            }

        case IOR:
          switch (pattern201 (x1))
            {
            case 0:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_173 (insn, operands);

            case 1:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_178 (insn, operands);

            case 2:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_183 (insn, operands);

            case 3:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_188 (insn, operands);

            default:
              return NULL;
            }

        case XOR:
          switch (pattern201 (x1))
            {
            case 0:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_174 (insn, operands);

            case 1:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_179 (insn, operands);

            case 2:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_184 (insn, operands);

            case 3:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_189 (insn, operands);

            default:
              return NULL;
            }

        case AND:
          switch (pattern201 (x1))
            {
            case 0:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_175 (insn, operands);

            case 1:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_180 (insn, operands);

            case 2:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_185 (insn, operands);

            case 3:
              if (!
#line 411 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_190 (insn, operands);

            default:
              return NULL;
            }

        case NOT:
          if (pattern145 (x1) != 0)
            return NULL;
          x11 = XVECEXP (x1, 0, 2);
          if (GET_CODE (x11) != CLOBBER)
            return NULL;
          x12 = XEXP (x11, 0);
          if (GET_CODE (x12) != REG
              || REGNO (x12) != 66
              || GET_MODE (x12) != CCmode)
            return NULL;
          x6 = XEXP (x2, 0);
          operands[0] = x6;
          x13 = XEXP (x5, 0);
          x14 = XEXP (x13, 0);
          operands[1] = x14;
          x15 = XEXP (x13, 1);
          operands[2] = x15;
          x7 = XVECEXP (x1, 0, 1);
          x8 = XEXP (x7, 1);
          x16 = XVECEXP (x8, 0, 2);
          operands[3] = x16;
          if (!const_int_operand (operands[3], SImode))
            return NULL;
          operands[4] = x4;
          switch (pattern347 (x1))
            {
            case 0:
              if (!
#line 458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_211 (insn, operands);

            case 1:
              if (!
#line 458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_212 (insn, operands);

            case 2:
              if (!
#line 458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_213 (insn, operands);

            case 3:
              if (!
#line 458 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
                return NULL;
              return gen_split_214 (insn, operands);

            default:
              return NULL;
            }

        default:
          return NULL;
        }

    case 3:
      x2 = XVECEXP (x1, 0, 0);
      if (GET_CODE (x2) != SET)
        return NULL;
      x7 = XVECEXP (x1, 0, 1);
      if (GET_CODE (x7) != SET)
        return NULL;
      x5 = XEXP (x2, 1);
      switch (GET_CODE (x5))
        {
        case UNSPEC_VOLATILE:
          if (XVECLEN (x5, 0) != 1
              || XINT (x5, 1) != 11
              || GET_MODE (x5) != CCmode)
            return NULL;
          x17 = XVECEXP (x5, 0, 0);
          if (x17 != const_int_rtx[MAX_SAVED_CONST_INT + 0])
            return NULL;
          x6 = XEXP (x2, 0);
          if (GET_CODE (x6) != REG
              || REGNO (x6) != 66
              || GET_MODE (x6) != CCmode)
            return NULL;
          switch (pattern298 (x1))
            {
            case 0:
              if (!(
#line 102 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_71 (insn, operands);

            case 1:
              if (!(
#line 102 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 104 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_72 (insn, operands);

            case 2:
              if (!(
#line 127 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 129 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_73 (insn, operands);

            case 3:
              if (!(
#line 127 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 129 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_74 (insn, operands);

            default:
              return NULL;
            }

        case PLUS:
          switch (pattern148 (x1))
            {
            case 0:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_191 (insn, operands);

            case 1:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_196 (insn, operands);

            case 2:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_201 (insn, operands);

            case 3:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_206 (insn, operands);

            default:
              return NULL;
            }

        case MINUS:
          switch (pattern148 (x1))
            {
            case 0:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_192 (insn, operands);

            case 1:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_197 (insn, operands);

            case 2:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_202 (insn, operands);

            case 3:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_207 (insn, operands);

            default:
              return NULL;
            }

        case IOR:
          switch (pattern150 (x1))
            {
            case 0:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_193 (insn, operands);

            case 1:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_198 (insn, operands);

            case 2:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_203 (insn, operands);

            case 3:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_208 (insn, operands);

            default:
              return NULL;
            }

        case XOR:
          switch (pattern150 (x1))
            {
            case 0:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_194 (insn, operands);

            case 1:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_199 (insn, operands);

            case 2:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_204 (insn, operands);

            case 3:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_209 (insn, operands);

            default:
              return NULL;
            }

        case AND:
          switch (pattern150 (x1))
            {
            case 0:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_195 (insn, operands);

            case 1:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_200 (insn, operands);

            case 2:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_205 (insn, operands);

            case 3:
              if (!(
#line 432 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
(TARGET_LSE) && 
#line 434 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed)))
                return NULL;
              return gen_split_210 (insn, operands);

            default:
              return NULL;
            }

        default:
          return NULL;
        }

    case 5:
      x2 = XVECEXP (x1, 0, 0);
      if (GET_CODE (x2) != SET
          || pattern38 (x1, 15, 2) != 0)
        return NULL;
      x3 = XVECEXP (x1, 0, 3);
      if (GET_CODE (x3) != CLOBBER)
        return NULL;
      x18 = XVECEXP (x1, 0, 4);
      if (GET_CODE (x18) != CLOBBER)
        return NULL;
      x6 = XEXP (x2, 0);
      operands[0] = x6;
      x5 = XEXP (x2, 1);
      operands[1] = x5;
      x7 = XVECEXP (x1, 0, 1);
      x8 = XEXP (x7, 1);
      x10 = XVECEXP (x8, 0, 1);
      operands[3] = x10;
      if (!const_int_operand (operands[3], SImode))
        return NULL;
      x4 = XEXP (x3, 0);
      operands[4] = x4;
      switch (pattern362 (x1))
        {
        case 0:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_127 (insn, operands);

        case 1:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_132 (insn, operands);

        case 2:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_137 (insn, operands);

        case 3:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_142 (insn, operands);

        case 4:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_128 (insn, operands);

        case 5:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_133 (insn, operands);

        case 6:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_138 (insn, operands);

        case 7:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_143 (insn, operands);

        case 8:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_129 (insn, operands);

        case 9:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_134 (insn, operands);

        case 10:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_139 (insn, operands);

        case 11:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_144 (insn, operands);

        case 12:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_130 (insn, operands);

        case 13:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_135 (insn, operands);

        case 14:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_140 (insn, operands);

        case 15:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_145 (insn, operands);

        case 16:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_131 (insn, operands);

        case 17:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_136 (insn, operands);

        case 18:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_141 (insn, operands);

        case 19:
          if (!
#line 320 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_146 (insn, operands);

        case 20:
          if (!
#line 364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_167 (insn, operands);

        case 21:
          if (!
#line 364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_168 (insn, operands);

        case 22:
          if (!
#line 364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_169 (insn, operands);

        case 23:
          if (!
#line 364 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/atomics.md"
( reload_completed))
            return NULL;
          return gen_split_170 (insn, operands);

        default:
          return NULL;
        }

    default:
      return NULL;
    }
}

rtx_insn *
split_insns (rtx x1 ATTRIBUTE_UNUSED, rtx_insn *insn ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12;
  rtx_insn *res ATTRIBUTE_UNUSED;
  recog_data.insn = NULL;
  switch (GET_CODE (x1))
    {
    case SET:
      x2 = XEXP (x1, 1);
      switch (GET_CODE (x2))
        {
        case IF_THEN_ELSE:
          x3 = XEXP (x2, 1);
          if (GET_CODE (x3) != LABEL_REF)
            return NULL;
          x4 = XEXP (x2, 2);
          if (GET_CODE (x4) != PC)
            return NULL;
          x5 = XEXP (x1, 0);
          if (GET_CODE (x5) != PC)
            return NULL;
          x6 = XEXP (x3, 0);
          operands[2] = x6;
          x7 = XEXP (x2, 0);
          switch (GET_CODE (x7))
            {
            case EQ:
              switch (pattern215 (x2))
                {
                case 0:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_1 (insn, operands);

                case 1:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_3 (insn, operands);

                case 2:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_5 (insn, operands);

                case 3:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_7 (insn, operands);

                default:
                  return NULL;
                }

            case NE:
              switch (pattern215 (x2))
                {
                case 0:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_2 (insn, operands);

                case 1:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), SImode)
   && !aarch64_plus_operand (operands[1], SImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_4 (insn, operands);

                case 2:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 87 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == SImode || Pmode == SImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_6 (insn, operands);

                case 3:
                  if (!((
#line 424 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[1]), DImode)
   && !aarch64_plus_operand (operands[1], DImode)
   && !reload_completed) && 
#line 88 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/iterators.md"
(ptr_mode == DImode || Pmode == DImode)) && 
#line 428 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                    return NULL;
                  return gen_split_8 (insn, operands);

                default:
                  return NULL;
                }

            default:
              return NULL;
            }

        case CONST_INT:
        case CONST_WIDE_INT:
        case CONST_FIXED:
        case CONST_DOUBLE:
        case CONST_VECTOR:
        case CONST:
        case REG:
        case SUBREG:
        case MEM:
        case LABEL_REF:
        case SYMBOL_REF:
        case HIGH:
          operands[1] = x2;
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (!nonimmediate_operand (operands[0], SImode)
                  || !aarch64_mov_operand (operands[1], SImode)
                  || !
#line 1047 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), SImode)
    && REG_P (operands[0]) && GP_REGNUM_P (REGNO (operands[0]))))
                return NULL;
              return gen_split_10 (insn, operands);

            case DImode:
              if (!nonimmediate_operand (operands[0], DImode)
                  || !aarch64_mov_operand (operands[1], DImode)
                  || !
#line 1080 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
((CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), DImode))
    && REG_P (operands[0]) && GP_REGNUM_P (REGNO (operands[0]))))
                return NULL;
              return gen_split_11 (insn, operands);

            case TImode:
              if (!register_operand (operands[0], TImode)
                  || !aarch64_reg_or_imm (operands[1], TImode)
                  || !
#line 1144 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed && aarch64_split_128bit_move_p (operands[0], operands[1])))
                return NULL;
              return gen_split_12 (insn, operands);

            case TFmode:
              if (!register_operand (operands[0], TFmode)
                  || !aarch64_reg_or_imm (operands[1], TFmode)
                  || !
#line 1259 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed && aarch64_split_128bit_move_p (operands[0], operands[1])))
                return NULL;
              return gen_split_13 (insn, operands);

            case V16QImode:
              if (!register_operand (operands[0], V16QImode)
                  || !register_operand (operands[1], V16QImode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_29 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_36 (insn, operands);

            case V8HImode:
              if (!register_operand (operands[0], V8HImode)
                  || !register_operand (operands[1], V8HImode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_30 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_37 (insn, operands);

            case V4SImode:
              if (!register_operand (operands[0], V4SImode)
                  || !register_operand (operands[1], V4SImode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_31 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_38 (insn, operands);

            case V2DImode:
              if (!register_operand (operands[0], V2DImode)
                  || !register_operand (operands[1], V2DImode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_32 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_39 (insn, operands);

            case V8HFmode:
              if (!register_operand (operands[0], V8HFmode)
                  || !register_operand (operands[1], V8HFmode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_33 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_40 (insn, operands);

            case V4SFmode:
              if (!register_operand (operands[0], V4SFmode)
                  || !register_operand (operands[1], V4SFmode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_34 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_41 (insn, operands);

            case V2DFmode:
              if (!register_operand (operands[0], V2DFmode)
                  || !register_operand (operands[1], V2DFmode))
                return NULL;
              if (
#line 187 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && GP_REGNUM_P (REGNO (operands[0]))
   && GP_REGNUM_P (REGNO (operands[1]))))
                return gen_split_35 (insn, operands);
              if (!
#line 199 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed
   && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
       || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))))
                return NULL;
              return gen_split_42 (insn, operands);

            case OImode:
              if (!register_operand (operands[0], OImode)
                  || !register_operand (operands[1], OImode)
                  || !
#line 4796 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_63 (insn, operands);

            case CImode:
              if (!nonimmediate_operand (operands[0], CImode)
                  || !general_operand (operands[1], CImode)
                  || !
#line 4806 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_64 (insn, operands);

            case XImode:
              if (!nonimmediate_operand (operands[0], XImode)
                  || !general_operand (operands[1], XImode)
                  || !
#line 4834 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_65 (insn, operands);

            default:
              return NULL;
            }

        case PLUS:
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          switch (pattern36 (x2))
            {
            case 0:
              if (!
#line 1694 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(epilogue_completed))
                return NULL;
              return gen_split_14 (insn, operands);

            case 1:
              if (!
#line 1694 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(epilogue_completed))
                return NULL;
              return gen_split_15 (insn, operands);

            default:
              return NULL;
            }

        case ZERO_EXTEND:
          if (GET_MODE (x2) != DImode)
            return NULL;
          x7 = XEXP (x2, 0);
          if (GET_CODE (x7) != PLUS
              || GET_MODE (x7) != SImode)
            return NULL;
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          if (!register_operand (operands[0], DImode))
            return NULL;
          x8 = XEXP (x7, 0);
          operands[1] = x8;
          if (!register_operand (operands[1], SImode))
            return NULL;
          x9 = XEXP (x7, 1);
          operands[2] = x9;
          if (!aarch64_pluslong_strict_immedate (operands[2], SImode)
              || !
#line 1711 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(epilogue_completed))
            return NULL;
          return gen_split_16 (insn, operands);

        case EQ:
          switch (pattern28 (x1))
            {
            case 0:
              if (!(
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), SImode)
   && !aarch64_plus_operand (operands[2], SImode)
   && !reload_completed) && 
#line 3109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                return NULL;
              return gen_split_17 (insn, operands);

            case 1:
              if (!(
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), DImode)
   && !aarch64_plus_operand (operands[2], DImode)
   && !reload_completed) && 
#line 3109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                return NULL;
              return gen_split_19 (insn, operands);

            default:
              return NULL;
            }

        case NE:
          switch (pattern28 (x1))
            {
            case 0:
              if (!(
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), SImode)
   && !aarch64_plus_operand (operands[2], SImode)
   && !reload_completed) && 
#line 3109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                return NULL;
              return gen_split_18 (insn, operands);

            case 1:
              if (!(
#line 3105 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(!aarch64_move_imm (INTVAL (operands[2]), DImode)
   && !aarch64_plus_operand (operands[2], DImode)
   && !reload_completed) && 
#line 3109 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
( true)))
                return NULL;
              return gen_split_20 (insn, operands);

            default:
              return NULL;
            }

        case NOT:
          x7 = XEXP (x2, 0);
          if (GET_CODE (x7) != XOR)
            return NULL;
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          switch (pattern117 (x2))
            {
            case 0:
              if (!
#line 3607 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed && FP_REGNUM_P (REGNO (operands[0]))))
                return NULL;
              return gen_split_21 (insn, operands);

            case 1:
              if (!
#line 3607 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed && FP_REGNUM_P (REGNO (operands[0]))))
                return NULL;
              return gen_split_22 (insn, operands);

            default:
              return NULL;
            }

        case CTZ:
          switch (pattern2 (x1))
            {
            case 0:
              if (!
#line 3796 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed))
                return NULL;
              return gen_split_23 (insn, operands);

            case 1:
              if (!
#line 3796 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed))
                return NULL;
              return gen_split_24 (insn, operands);

            default:
              return NULL;
            }

        case LSHIFTRT:
          switch (pattern29 (x1))
            {
            case 0:
              if (!
#line 3995 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_25 (insn, operands);

            case 1:
              if (!
#line 4010 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_26 (insn, operands);

            default:
              return NULL;
            }

        case ASHIFTRT:
          switch (pattern29 (x1))
            {
            case 0:
              if (!
#line 4042 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_27 (insn, operands);

            case 1:
              if (!
#line 4057 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(TARGET_SIMD && reload_completed))
                return NULL;
              return gen_split_28 (insn, operands);

            default:
              return NULL;
            }

        case VEC_CONCAT:
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          x7 = XEXP (x2, 0);
          operands[1] = x7;
          x3 = XEXP (x2, 1);
          operands[2] = x3;
          switch (GET_MODE (operands[0]))
            {
            case V16QImode:
              if (pattern199 (x2, V8QImode, V16QImode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_43 (insn, operands);

            case V8HImode:
              if (pattern199 (x2, V4HImode, V8HImode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_44 (insn, operands);

            case V8HFmode:
              if (pattern199 (x2, V4HFmode, V8HFmode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_45 (insn, operands);

            case V4SImode:
              if (pattern199 (x2, V2SImode, V4SImode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_46 (insn, operands);

            case V4SFmode:
              if (pattern199 (x2, V2SFmode, V4SFmode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_47 (insn, operands);

            case V2DImode:
              if (pattern199 (x2, DImode, V2DImode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_48 (insn, operands);

            case V2DFmode:
              if (pattern199 (x2, DFmode, V2DFmode) != 0
                  || !(
#line 2767 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 2769 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_49 (insn, operands);

            default:
              return NULL;
            }

        case UNSPEC:
          if (XVECLEN (x2, 0) != 2)
            return NULL;
          x5 = XEXP (x1, 0);
          operands[0] = x5;
          x10 = XVECEXP (x2, 0, 0);
          operands[1] = x10;
          x11 = XVECEXP (x2, 0, 1);
          operands[2] = x11;
          if (!register_operand (operands[2], V16QImode))
            return NULL;
          switch (XINT (x2, 1))
            {
            case 165:
              switch (pattern232 (x2))
                {
                case 0:
                  if (!(
#line 4690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 4692 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                    return NULL;
                  return gen_split_60 (insn, operands);

                case 1:
                  if (!(
#line 4690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 4692 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                    return NULL;
                  return gen_split_61 (insn, operands);

                case 2:
                  if (!(
#line 4690 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 4692 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                    return NULL;
                  return gen_split_62 (insn, operands);

                default:
                  return NULL;
                }

            case 138:
              if (GET_MODE (x2) != OImode
                  || !register_operand (operands[0], OImode)
                  || !register_operand (operands[1], V16QImode)
                  || !(
#line 5374 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
(TARGET_SIMD) && 
#line 5376 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-simd.md"
( reload_completed)))
                return NULL;
              return gen_split_66 (insn, operands);

            default:
              return NULL;
            }

        default:
          return NULL;
        }

    case UNSPEC_VOLATILE:
      if (XVECLEN (x1, 0) != 1
          || XINT (x1, 1) != 0)
        return NULL;
      x12 = XVECEXP (x1, 0, 0);
      operands[0] = x12;
      if (!register_operand (operands[0], DImode)
          || !
#line 606 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(reload_completed))
        return NULL;
      return gen_split_9 (insn, operands);

    case PARALLEL:
      return split_2 (x1, insn);

    default:
      return NULL;
    }
}

rtx_insn *
peephole2_insns (rtx x1 ATTRIBUTE_UNUSED,
	rtx_insn *insn ATTRIBUTE_UNUSED,
	int *pmatch_len_ ATTRIBUTE_UNUSED)
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x2, x3, x4, x5, x6, x7, x8, x9;
  rtx x10, x11, x12, x13, x14, x15;
  rtx_insn *res ATTRIBUTE_UNUSED;
  recog_data.insn = NULL;
  if (GET_CODE (x1) != SET)
    return NULL;
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  x3 = XEXP (x1, 1);
  switch (GET_CODE (x3))
    {
    case PLUS:
      switch (pattern36 (x3))
        {
        case 0:
          if (!
#line 1670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_move_imm (INTVAL (operands[2]), SImode)))
            return NULL;
          *pmatch_len_ = 0;
          return gen_peephole2_1 (insn, operands);

        case 1:
          if (!
#line 1670 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_move_imm (INTVAL (operands[2]), DImode)))
            return NULL;
          *pmatch_len_ = 0;
          return gen_peephole2_2 (insn, operands);

        default:
          return NULL;
        }

    case ZERO_EXTEND:
      if (GET_MODE (x3) != DImode
          || !register_operand (operands[0], DImode))
        return NULL;
      x4 = XEXP (x3, 0);
      switch (GET_CODE (x4))
        {
        case PLUS:
          if (GET_MODE (x4) != SImode)
            return NULL;
          x5 = XEXP (x4, 0);
          operands[1] = x5;
          if (!register_operand (operands[1], SImode))
            return NULL;
          x6 = XEXP (x4, 1);
          operands[2] = x6;
          if (!aarch64_pluslong_strict_immedate (operands[2], SImode)
              || !
#line 1682 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md"
(aarch64_move_imm (INTVAL (operands[2]), SImode)))
            return NULL;
          *pmatch_len_ = 0;
          return gen_peephole2_3 (insn, operands);

        case SUBREG:
        case MEM:
          if (peep2_current_count < 2
              || pattern202 (x4, ZERO_EXTEND) != 0)
            return NULL;
          if (aarch64_mem_pair_operand (operands[1], SImode)
              && 
#line 169 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, SImode)))
            {
              *pmatch_len_ = 1;
              res = gen_peephole2_23 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          if (peep2_current_count < 3)
            return NULL;
          x7 = PATTERN (peep2_next_insn (2));
          if (pattern348 (x7, ZERO_EXTEND) != 0
              || !
#line 296 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)))
            return NULL;
          *pmatch_len_ = 3;
          return gen_peephole2_29 (insn, operands);

        default:
          return NULL;
        }

    case SIGN_EXTEND:
      if (peep2_current_count < 2
          || GET_MODE (x3) != DImode
          || !register_operand (operands[0], DImode))
        return NULL;
      x4 = XEXP (x3, 0);
      if (pattern202 (x4, SIGN_EXTEND) != 0)
        return NULL;
      if (aarch64_mem_pair_operand (operands[1], SImode)
          && 
#line 149 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, SImode)))
        {
          *pmatch_len_ = 1;
          res = gen_peephole2_22 (insn, operands);
          if (res != NULL_RTX)
            return res;
        }
      if (peep2_current_count < 3)
        return NULL;
      x7 = PATTERN (peep2_next_insn (2));
      if (pattern348 (x7, SIGN_EXTEND) != 0
          || !
#line 264 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)))
        return NULL;
      *pmatch_len_ = 3;
      return gen_peephole2_28 (insn, operands);

    case CONST_INT:
    case CONST_DOUBLE:
    case REG:
    case SUBREG:
    case MEM:
      if (peep2_current_count < 2)
        return NULL;
      operands[1] = x3;
      x8 = PATTERN (peep2_next_insn (1));
      if (GET_CODE (x8) != SET)
        return NULL;
      x9 = XEXP (x8, 0);
      operands[2] = x9;
      x10 = XEXP (x8, 1);
      operands[3] = x10;
      switch (GET_CODE (operands[1]))
        {
        case MEM:
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern275 (SImode) == 0
                  && 
#line 26 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, SImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_4 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case DImode:
              if (pattern275 (DImode) == 0
                  && 
#line 26 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, DImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_5 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case SFmode:
              if (pattern275 (SFmode) == 0
                  && 
#line 66 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, SFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_8 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case DFmode:
              if (pattern275 (DFmode) == 0
                  && 
#line 66 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, DFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_9 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V8QImode:
              if (pattern275 (V8QImode) == 0
                  && 
#line 106 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, V8QImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_12 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V4HImode:
              if (pattern275 (V4HImode) == 0
                  && 
#line 106 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, V4HImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_13 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V4HFmode:
              if (pattern275 (V4HFmode) == 0
                  && 
#line 106 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, V4HFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_14 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V2SImode:
              if (pattern275 (V2SImode) == 0
                  && 
#line 106 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, V2SImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_15 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V2SFmode:
              if (pattern275 (V2SFmode) == 0
                  && 
#line 106 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, true, V2SFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_16 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            default:
              break;
            }
          break;

        case CONST_INT:
        case CONST_DOUBLE:
        case REG:
        case SUBREG:
          switch (GET_MODE (operands[0]))
            {
            case SImode:
              if (pattern276 (SImode) == 0
                  && 
#line 46 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, false, SImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_6 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case DImode:
              if (pattern276 (DImode) == 0
                  && 
#line 46 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, false, DImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_7 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case SFmode:
              if (pattern277 (SFmode) == 0
                  && 
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, false, SFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_10 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case DFmode:
              if (pattern277 (DFmode) == 0
                  && 
#line 86 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_ok_for_ldpstp (operands, false, DFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_11 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V8QImode:
              if (pattern278 (V8QImode) == 0
                  && 
#line 126 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(TARGET_SIMD && aarch64_operands_ok_for_ldpstp (operands, false, V8QImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_17 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V4HImode:
              if (pattern278 (V4HImode) == 0
                  && 
#line 126 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(TARGET_SIMD && aarch64_operands_ok_for_ldpstp (operands, false, V4HImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_18 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V4HFmode:
              if (pattern278 (V4HFmode) == 0
                  && 
#line 126 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(TARGET_SIMD && aarch64_operands_ok_for_ldpstp (operands, false, V4HFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_19 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V2SImode:
              if (pattern278 (V2SImode) == 0
                  && 
#line 126 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(TARGET_SIMD && aarch64_operands_ok_for_ldpstp (operands, false, V2SImode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_20 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            case V2SFmode:
              if (pattern278 (V2SFmode) == 0
                  && 
#line 126 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(TARGET_SIMD && aarch64_operands_ok_for_ldpstp (operands, false, V2SFmode)))
                {
                  *pmatch_len_ = 1;
                  res = gen_peephole2_21 (insn, operands);
                  if (res != NULL_RTX)
                    return res;
                }
              break;

            default:
              break;
            }
          break;

        default:
          break;
        }
      if (peep2_current_count < 3
          || peep2_current_count < 4)
        return NULL;
      x7 = PATTERN (peep2_next_insn (2));
      if (GET_CODE (x7) != SET)
        return NULL;
      x11 = XEXP (x7, 0);
      operands[4] = x11;
      x12 = XEXP (x7, 1);
      operands[5] = x12;
      x13 = PATTERN (peep2_next_insn (3));
      if (GET_CODE (x13) != SET)
        return NULL;
      x14 = XEXP (x13, 0);
      operands[6] = x14;
      x15 = XEXP (x13, 1);
      operands[7] = x15;
      switch (GET_MODE (operands[0]))
        {
        case SImode:
          if (register_operand (operands[0], SImode)
              && pattern365 (SImode) == 0
              && 
#line 200 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, true, SImode)))
            {
              *pmatch_len_ = 3;
              res = gen_peephole2_24 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          if (memory_operand (operands[0], SImode)
              && pattern366 (SImode) == 0
              && 
#line 328 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, false, SImode)))
            {
              *pmatch_len_ = 3;
              res = gen_peephole2_30 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          break;

        case DImode:
          if (register_operand (operands[0], DImode)
              && pattern365 (DImode) == 0
              && 
#line 200 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, true, DImode)))
            {
              *pmatch_len_ = 3;
              res = gen_peephole2_25 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          if (memory_operand (operands[0], DImode)
              && pattern366 (DImode) == 0
              && 
#line 328 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, false, DImode)))
            {
              *pmatch_len_ = 3;
              res = gen_peephole2_31 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          break;

        case SFmode:
          if (register_operand (operands[0], SFmode)
              && pattern365 (SFmode) == 0
              && 
#line 232 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, true, SFmode)))
            {
              *pmatch_len_ = 3;
              res = gen_peephole2_26 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          break;

        case DFmode:
          if (register_operand (operands[0], DFmode)
              && pattern365 (DFmode) == 0
              && 
#line 232 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, true, DFmode)))
            {
              *pmatch_len_ = 3;
              res = gen_peephole2_27 (insn, operands);
              if (res != NULL_RTX)
                return res;
            }
          break;

        default:
          break;
        }
      switch (GET_MODE (operands[0]))
        {
        case SFmode:
          if (pattern354 (SFmode) != 0
              || !
#line 360 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, false, SFmode)))
            return NULL;
          *pmatch_len_ = 3;
          return gen_peephole2_32 (insn, operands);

        case DFmode:
          if (pattern354 (DFmode) != 0
              || !
#line 360 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64-ldpstp.md"
(aarch64_operands_adjust_ok_for_ldpstp (operands, false, DFmode)))
            return NULL;
          *pmatch_len_ = 3;
          return gen_peephole2_33 (insn, operands);

        default:
          return NULL;
        }

    default:
      return NULL;
    }
}
