/* Generated automatically by the program 'build/genpreds'
   from the machine description file '../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/aarch64.md'.  */

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "predict.h"
#include "tree.h"
#include "rtl.h"
#include "alias.h"
#include "varasm.h"
#include "stor-layout.h"
#include "calls.h"
#include "tm_p.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 "emit-rtl.h"
#include "tm-constrs.h"

int
cc_register (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == REG) && ((
#line 23 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(REGNO (op) == CC_REGNUM)) && ((
#line 24 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(mode == GET_MODE (op))) || (
#line 25 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(mode == VOIDmode
			      && GET_MODE_CLASS (GET_MODE (op)) == MODE_CC))));
}

int
aarch64_call_insn_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return ((GET_CODE (op) == SYMBOL_REF) && (
(mode == VOIDmode || GET_MODE (op) == mode))) || (register_operand (op, mode));
}

int
const0_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 36 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(op == CONST0_RTX (mode)));
}

int
aarch64_ccmp_immediate (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 40 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), -31, 31)));
}

int
aarch64_ccmp_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (aarch64_ccmp_immediate (op, mode));
}

int
aarch64_simd_register (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return ((GET_CODE (op) == REG) && ((
#line 48 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(REGNO_REG_CLASS (REGNO (op)) == FP_LO_REGS)) || (
#line 49 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(REGNO_REG_CLASS (REGNO (op)) == FP_REGS)))) && (
(mode == VOIDmode || GET_MODE (op) == mode));
}

int
aarch64_reg_or_zero (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case CONST_INT:
      break;
    default:
      return false;
    }
  return ((register_operand (op, mode)) || (
#line 54 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(op == const0_rtx))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

int
aarch64_reg_or_fp_zero (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case CONST_DOUBLE:
      break;
    default:
      return false;
    }
  return ((register_operand (op, mode)) || (
#line 59 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_float_const_zero_rtx_p (op)))) && (
(mode == VOIDmode || GET_MODE (op) == mode));
}

int
aarch64_reg_zero_or_m1_or_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case CONST_INT:
      break;
    default:
      return false;
    }
  return ((register_operand (op, mode)) || ((
#line 64 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(op == const0_rtx)) || ((
#line 65 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(op == constm1_rtx)) || (
#line 66 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(op == const1_rtx))))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

int
aarch64_fp_compare_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (((GET_CODE (op) == CONST_DOUBLE) && (
#line 71 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_float_const_zero_rtx_p (op)))) && (
(mode == VOIDmode || GET_MODE (op) == mode)));
}

int
aarch64_fp_pow2 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return ((GET_CODE (op) == CONST_DOUBLE) && (
#line 75 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_fpconst_pow_of_2 (op) > 0))) && (
(mode == VOIDmode || GET_MODE (op) == mode));
}

int
aarch64_fp_vec_pow2 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (
#line 78 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_vec_fpconst_pow_of_2 (op) > 0)) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

int
aarch64_plus_immediate (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && ((
#line 82 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_uimm12_shift (INTVAL (op)))) || (
#line 83 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_uimm12_shift (-INTVAL (op)))));
}

int
aarch64_plus_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (aarch64_plus_immediate (op, mode));
}

int
aarch64_pluslong_immediate (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 91 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
((INTVAL (op) < 0xffffff && INTVAL (op) > -0xffffff)));
}

int
aarch64_pluslong_strict_immedate (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (aarch64_pluslong_immediate (op, mode)) && (!(aarch64_plus_immediate (op, mode)));
}

int
aarch64_pluslong_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (aarch64_pluslong_immediate (op, mode));
}

int
aarch64_logical_immediate (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 103 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_bitmask_imm (INTVAL (op), mode)));
}

int
aarch64_logical_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (aarch64_logical_immediate (op, mode));
}

int
aarch64_shift_imm_si (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 111 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
((unsigned HOST_WIDE_INT) INTVAL (op) < 32));
}

int
aarch64_shift_imm_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 115 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
((unsigned HOST_WIDE_INT) INTVAL (op) < 64));
}

int
aarch64_shift_imm64_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 119 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
((unsigned HOST_WIDE_INT) INTVAL (op) <= 64));
}

int
aarch64_reg_or_shift_imm_si (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (aarch64_shift_imm_si (op, mode));
}

int
aarch64_reg_or_shift_imm_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (register_operand (op, mode)) || (aarch64_shift_imm_di (op, mode));
}

int
aarch64_imm3 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 133 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
((unsigned HOST_WIDE_INT) INTVAL (op) <= 4));
}

int
aarch64_imm24 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 138 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (UINTVAL (op), 0, 0xffffff)));
}

int
aarch64_pwr_imm3 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 142 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(INTVAL (op) != 0
		    && (unsigned) exact_log2 (INTVAL (op)) <= 4));
}

int
aarch64_pwr_2_si (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 147 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(INTVAL (op) != 0
		    && (unsigned) exact_log2 (INTVAL (op)) < 32));
}

int
aarch64_pwr_2_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 152 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(INTVAL (op) != 0
		    && (unsigned) exact_log2 (INTVAL (op)) < 64));
}

int
aarch64_mem_pair_offset (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 157 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_offset_7bit_signed_scaled_p (mode, INTVAL (op))));
}

int
aarch64_mem_pair_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return ((GET_CODE (op) == MEM) && (
#line 161 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_legitimate_address_p (mode, XEXP (op, 0), PARALLEL,
					       0)))) && (
(mode == VOIDmode || GET_MODE (op) == mode));
}

static inline int
aarch64_valid_symref_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 166 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return (aarch64_classify_symbolic_expression (op)
	  != SYMBOL_FORCE_TO_MEM);
}

int
aarch64_valid_symref (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case CONST:
    case SYMBOL_REF:
    case LABEL_REF:
      break;
    default:
      return false;
    }
  return (
(aarch64_valid_symref_1 (op, mode))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

static inline int
aarch64_tls_ie_symref_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 173 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  switch (GET_CODE (op))
    {
    case CONST:
      op = XEXP (op, 0);
      if (GET_CODE (op) != PLUS
	  || GET_CODE (XEXP (op, 0)) != SYMBOL_REF
	  || GET_CODE (XEXP (op, 1)) != CONST_INT)
	return false;
      op = XEXP (op, 0);

    case SYMBOL_REF:
      return SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_INITIAL_EXEC;

    default:
      gcc_unreachable ();
    }
}

int
aarch64_tls_ie_symref (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case CONST:
    case SYMBOL_REF:
    case LABEL_REF:
      break;
    default:
      return false;
    }
  return (
(aarch64_tls_ie_symref_1 (op, mode))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

static inline int
aarch64_tls_le_symref_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 194 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  switch (GET_CODE (op))
    {
    case CONST:
      op = XEXP (op, 0);
      if (GET_CODE (op) != PLUS
	  || GET_CODE (XEXP (op, 0)) != SYMBOL_REF
	  || GET_CODE (XEXP (op, 1)) != CONST_INT)
	return false;
      op = XEXP (op, 0);

    case SYMBOL_REF:
      return SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC;

    default:
      gcc_unreachable ();
    }
}

int
aarch64_tls_le_symref (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case CONST:
    case SYMBOL_REF:
    case LABEL_REF:
      break;
    default:
      return false;
    }
  return (
(aarch64_tls_le_symref_1 (op, mode))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

int
aarch64_mov_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case MEM:
    case CONST:
    case CONST_INT:
    case SYMBOL_REF:
    case LABEL_REF:
    case HIGH:
      break;
    default:
      return false;
    }
  return ((register_operand (op, mode)) || ((memory_operand (op, mode)) || (
#line 217 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_mov_operand_p (op, mode))))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

int
aarch64_movti_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case MEM:
    case CONST_INT:
      break;
    default:
      return false;
    }
  return (register_operand (op, mode)) || ((memory_operand (op, mode)) || (const_int_operand (op, mode)));
}

int
aarch64_reg_or_imm (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case CONST_INT:
      break;
    default:
      return false;
    }
  return (register_operand (op, mode)) || (const_int_operand (op, mode));
}

int
aarch64_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case EQ:
    case NE:
    case LE:
    case LT:
    case GE:
    case GT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNLT:
    case UNLE:
    case UNGE:
    case UNGT:
      return true;
    default:
      break;
    }
  return false;
}

int
aarch64_comparison_operator_mode (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case EQ:
    case NE:
    case LE:
    case LT:
    case GE:
    case GT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNLT:
    case UNLE:
    case UNGE:
    case UNGT:
      break;
    default:
      return false;
    }
  return 
(mode == VOIDmode || GET_MODE (op) == mode);
}

static inline int
aarch64_comparison_operation_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 245 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  if (XEXP (op, 1) != const0_rtx)
    return false;
  rtx op0 = XEXP (op, 0);
  if (!REG_P (op0) || REGNO (op0) != CC_REGNUM)
    return false;
  return aarch64_get_condition_code (op) >= 0;
}

int
aarch64_comparison_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case EQ:
    case NE:
    case LE:
    case LT:
    case GE:
    case GT:
    case GEU:
    case GTU:
    case LEU:
    case LTU:
    case UNORDERED:
    case ORDERED:
    case UNLT:
    case UNLE:
    case UNGE:
    case UNGT:
      break;
    default:
      return false;
    }
  return 
(aarch64_comparison_operation_1 (op, mode));
}

static inline int
aarch64_carry_operation_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 256 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  if (XEXP (op, 1) != const0_rtx)
    return false;
  machine_mode ccmode = (GET_CODE (op) == NE ? CC_Cmode : CCmode);
  rtx op0 = XEXP (op, 0);
  return REG_P (op0) && REGNO (op0) == CC_REGNUM && GET_MODE (op0) == ccmode;
}

int
aarch64_carry_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case NE:
    case GEU:
      break;
    default:
      return false;
    }
  return 
(aarch64_carry_operation_1 (op, mode));
}

static inline int
aarch64_borrow_operation_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 266 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  if (XEXP (op, 1) != const0_rtx)
    return false;
  machine_mode ccmode = (GET_CODE (op) == EQ ? CC_Cmode : CCmode);
  rtx op0 = XEXP (op, 0);
  return REG_P (op0) && REGNO (op0) == CC_REGNUM && GET_MODE (op0) == ccmode;
}

int
aarch64_borrow_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case EQ:
    case LTU:
      break;
    default:
      return false;
    }
  return 
(aarch64_borrow_operation_1 (op, mode));
}

int
aarch64_sync_memory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (memory_operand (op, mode)) && (GET_CODE (XEXP (op, 0)) == REG);
}

static inline int
vect_par_cnst_hi_half_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 282 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return aarch64_simd_check_vect_par_cnst_half (op, mode, true);
}

int
vect_par_cnst_hi_half (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == PARALLEL) && (
(vect_par_cnst_hi_half_1 (op, mode)));
}

static inline int
vect_par_cnst_lo_half_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 288 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return aarch64_simd_check_vect_par_cnst_half (op, mode, false);
}

int
vect_par_cnst_lo_half (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == PARALLEL) && (
(vect_par_cnst_lo_half_1 (op, mode)));
}

static inline int
aarch64_simd_lshift_imm_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 294 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return aarch64_simd_shift_imm_p (op, mode, true);
}

int
aarch64_simd_lshift_imm (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_VECTOR) && (
(aarch64_simd_lshift_imm_1 (op, mode)));
}

static inline int
aarch64_simd_rshift_imm_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 300 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return aarch64_simd_shift_imm_p (op, mode, false);
}

int
aarch64_simd_rshift_imm (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_VECTOR) && (
(aarch64_simd_rshift_imm_1 (op, mode)));
}

int
aarch64_simd_reg_or_zero (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  switch (GET_CODE (op))
    {
    case REG:
    case SUBREG:
    case CONST_INT:
    case CONST_DOUBLE:
    case CONST_VECTOR:
      break;
    default:
      return false;
    }
  return ((register_operand (op, mode)) || ((
#line 307 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(op == const0_rtx)) || (
#line 308 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(aarch64_simd_imm_zero_p (op, mode))))) && (
(mode == VOIDmode || GET_MODE (op) == mode || GET_MODE (op) == VOIDmode));
}

int
aarch64_simd_struct_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return ((GET_CODE (op) == MEM) && (
#line 312 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(TARGET_SIMD && aarch64_simd_mem_operand_p (op)))) && (
(mode == VOIDmode || GET_MODE (op) == mode));
}

int
aarch64_simd_general_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (general_operand (op, mode)) && (
#line 317 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(!MEM_P (op)
		    || GET_CODE (XEXP (op, 0)) == POST_INC
		    || GET_CODE (XEXP (op, 0)) == REG));
}

int
aarch64_simd_nonimmediate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (nonimmediate_operand (op, mode)) && (
#line 324 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(!MEM_P (op)
		    || GET_CODE (XEXP (op, 0)) == POST_INC
		    || GET_CODE (XEXP (op, 0)) == REG));
}

static inline int
aarch64_simd_imm_zero_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 330 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return aarch64_simd_imm_zero_p (op, mode);
}

int
aarch64_simd_imm_zero (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_VECTOR) && (
(aarch64_simd_imm_zero_1 (op, mode)));
}

static inline int
aarch64_simd_imm_minus_one_1 (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
#line 336 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
{
  return aarch64_const_vec_all_same_int_p (op, -1);
}

int
aarch64_simd_imm_minus_one (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_VECTOR) && (
(aarch64_simd_imm_minus_one_1 (op, mode)));
}

int
aarch64_simd_shift_imm_qi (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 347 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 7)));
}

int
aarch64_simd_shift_imm_hi (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 351 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 15)));
}

int
aarch64_simd_shift_imm_si (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 355 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 31)));
}

int
aarch64_simd_shift_imm_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 359 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 63)));
}

int
aarch64_simd_shift_imm_offset_qi (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 363 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 1, 8)));
}

int
aarch64_simd_shift_imm_offset_hi (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 367 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 1, 16)));
}

int
aarch64_simd_shift_imm_offset_si (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 371 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 1, 32)));
}

int
aarch64_simd_shift_imm_offset_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 375 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 1, 64)));
}

int
aarch64_simd_shift_imm_bitsize_qi (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 379 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 8)));
}

int
aarch64_simd_shift_imm_bitsize_hi (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 383 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 16)));
}

int
aarch64_simd_shift_imm_bitsize_si (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 387 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 32)));
}

int
aarch64_simd_shift_imm_bitsize_di (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return (GET_CODE (op) == CONST_INT) && (
#line 391 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(IN_RANGE (INTVAL (op), 0, 64)));
}

int
aarch64_constant_pool_symref (rtx op, machine_mode mode ATTRIBUTE_UNUSED)
{
  return ((GET_CODE (op) == SYMBOL_REF) && (
#line 395 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/predicates.md"
(CONSTANT_POOL_ADDRESS_P (op)))) && (
(mode == VOIDmode || GET_MODE (op) == mode));
}

enum constraint_num
lookup_constraint_1 (const char *str)
{
  switch (str[0])
    {
    case '<':
      return CONSTRAINT__l;
    case '>':
      return CONSTRAINT__g;
    case 'D':
      if (!strncmp (str + 1, "h", 1))
        return CONSTRAINT_Dh;
      if (!strncmp (str + 1, "q", 1))
        return CONSTRAINT_Dq;
      if (!strncmp (str + 1, "l", 1))
        return CONSTRAINT_Dl;
      if (!strncmp (str + 1, "r", 1))
        return CONSTRAINT_Dr;
      if (!strncmp (str + 1, "z", 1))
        return CONSTRAINT_Dz;
      if (!strncmp (str + 1, "d", 1))
        return CONSTRAINT_Dd;
      if (!strncmp (str + 1, "n", 1))
        return CONSTRAINT_Dn;
      break;
    case 'E':
      return CONSTRAINT_E;
    case 'F':
      return CONSTRAINT_F;
    case 'I':
      return CONSTRAINT_I;
    case 'J':
      return CONSTRAINT_J;
    case 'K':
      return CONSTRAINT_K;
    case 'L':
      return CONSTRAINT_L;
    case 'M':
      return CONSTRAINT_M;
    case 'N':
      return CONSTRAINT_N;
    case 'Q':
      return CONSTRAINT_Q;
    case 'S':
      return CONSTRAINT_S;
    case 'U':
      if (!strncmp (str + 1, "pl", 2))
        return CONSTRAINT_Upl;
      if (!strncmp (str + 1, "sh", 2))
        return CONSTRAINT_Ush;
      if (!strncmp (str + 1, "ss", 2))
        return CONSTRAINT_Uss;
      if (!strncmp (str + 1, "sn", 2))
        return CONSTRAINT_Usn;
      if (!strncmp (str + 1, "sd", 2))
        return CONSTRAINT_Usd;
      if (!strncmp (str + 1, "sf", 2))
        return CONSTRAINT_Usf;
      if (!strncmp (str + 1, "sM", 2))
        return CONSTRAINT_UsM;
      if (!strncmp (str + 1, "i1", 2))
        return CONSTRAINT_Ui1;
      if (!strncmp (str + 1, "i3", 2))
        return CONSTRAINT_Ui3;
      if (!strncmp (str + 1, "p3", 2))
        return CONSTRAINT_Up3;
      if (!strncmp (str + 1, "mp", 2))
        return CONSTRAINT_Ump;
      if (!strncmp (str + 1, "tv", 2))
        return CONSTRAINT_Utv;
      if (!strncmp (str + 1, "fc", 2))
        return CONSTRAINT_Ufc;
      if (!strncmp (str + 1, "cs", 2))
        return CONSTRAINT_Ucs;
      break;
    case 'V':
      return CONSTRAINT_V;
    case 'X':
      return CONSTRAINT_X;
    case 'Y':
      return CONSTRAINT_Y;
    case 'Z':
      return CONSTRAINT_Z;
    case 'i':
      return CONSTRAINT_i;
    case 'k':
      return CONSTRAINT_k;
    case 'm':
      return CONSTRAINT_m;
    case 'n':
      return CONSTRAINT_n;
    case 'o':
      return CONSTRAINT_o;
    case 'p':
      return CONSTRAINT_p;
    case 'r':
      return CONSTRAINT_r;
    case 's':
      return CONSTRAINT_s;
    case 'w':
      return CONSTRAINT_w;
    case 'x':
      return CONSTRAINT_x;
    default: break;
    }
  return CONSTRAINT__UNKNOWN;
}

const unsigned char lookup_constraint_array[] = {
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT__l, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT__g, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  UCHAR_MAX,
  MIN ((int) CONSTRAINT_E, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_F, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_I, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_J, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_K, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_L, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_M, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_N, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_Q, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_S, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  UCHAR_MAX,
  MIN ((int) CONSTRAINT_V, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_X, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_Y, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_Z, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_i, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_k, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_m, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_n, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_o, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_p, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_r, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_s, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  MIN ((int) CONSTRAINT_w, (int) UCHAR_MAX),
  MIN ((int) CONSTRAINT_x, (int) UCHAR_MAX),
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN,
  CONSTRAINT__UNKNOWN
};

enum reg_class
reg_class_for_constraint_1 (enum constraint_num c)
{
  switch (c)
    {
    case CONSTRAINT_r: return GENERAL_REGS;
    case CONSTRAINT_k: return STACK_REG;
    case CONSTRAINT_Ucs: return CALLER_SAVE_REGS;
    case CONSTRAINT_w: return FP_REGS;
    case CONSTRAINT_x: return FP_LO_REGS;
    default: break;
    }
  return NO_REGS;
}

bool (*constraint_satisfied_p_array[]) (rtx) = {
  satisfies_constraint_I,
  satisfies_constraint_J,
  satisfies_constraint_K,
  satisfies_constraint_L,
  satisfies_constraint_M,
  satisfies_constraint_N,
  satisfies_constraint_m,
  satisfies_constraint_o,
  satisfies_constraint_Q,
  satisfies_constraint_Ump,
  satisfies_constraint_Utv,
  satisfies_constraint_p,
  satisfies_constraint_Upl,
  satisfies_constraint_S,
  satisfies_constraint_Y,
  satisfies_constraint_Ush,
  satisfies_constraint_Uss,
  satisfies_constraint_Usn,
  satisfies_constraint_Usd,
  satisfies_constraint_Usf,
  satisfies_constraint_Ui3,
  satisfies_constraint_Up3,
  satisfies_constraint_Ufc,
  satisfies_constraint_Dn,
  satisfies_constraint_Dh,
  satisfies_constraint_Dq,
  satisfies_constraint_Dl,
  satisfies_constraint_Dr,
  satisfies_constraint_Dz,
  satisfies_constraint_Dd,
  satisfies_constraint_V,
  satisfies_constraint__l,
  satisfies_constraint__g,
  satisfies_constraint_i,
  satisfies_constraint_s,
  satisfies_constraint_n,
  satisfies_constraint_E,
  satisfies_constraint_F,
  satisfies_constraint_X,
  satisfies_constraint_Z,
  satisfies_constraint_UsM,
  satisfies_constraint_Ui1
};

bool
insn_const_int_ok_for_constraint (HOST_WIDE_INT ival, enum constraint_num c)
{
  switch (c)
    {
    case CONSTRAINT_I:
      return 
#line 36 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/constraints.md"
(aarch64_uimm12_shift (ival));

    case CONSTRAINT_J:
      return 
#line 46 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/constraints.md"
(aarch64_uimm12_shift (-ival));

    case CONSTRAINT_K:
      return 
#line 55 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/constraints.md"
(aarch64_bitmask_imm (ival, SImode));

    case CONSTRAINT_L:
      return 
#line 60 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/constraints.md"
(aarch64_bitmask_imm (ival, DImode));

    case CONSTRAINT_M:
      return 
#line 65 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/constraints.md"
(aarch64_move_imm (ival, SImode));

    case CONSTRAINT_N:
      return 
#line 70 "../../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/gcc/config/aarch64/constraints.md"
(aarch64_move_imm (ival, DImode));

    default: break;
    }
  return false;
}

