/* Generated automatically by the program `genattrtab'
   from the machine description file `md'.  */

#define IN_TARGET_CODE 1
#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 "options.h"
#include "varasm.h"
#include "stor-layout.h"
#include "calls.h"
#include "insn-attr.h"
#include "memmodel.h"
#include "tm_p.h"
#include "insn-config.h"
#include "recog.h"
#include "regs.h"
#include "real.h"
#include "output.h"
#include "toplev.h"
#include "flags.h"
#include "emit-rtl.h"

#define operands recog_data.operand

int
insn_current_length (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    default:
      return 0;

    }
}

int
insn_variable_length_p (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    default:
      return 0;

    }
}

int
insn_min_length (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case 79:  /* *movdf_internal */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 4;
        }
      else if (((1ULL << which_alternative) & 0x6ULL))
        {
	  return 8;
        }
      else if (which_alternative == 3)
        {
	  return 16 /* 0x10 */;
        }
      else
        {
	  return 8;
        }

    case 78:  /* *movdf_internal_64 */
    case 77:  /* *movdf_internal_64_bshift */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x7ULL))
        {
	  return 4;
        }
      else if (which_alternative == 3)
        {
	  return 16 /* 0x10 */;
        }
      else
        {
	  return 4;
        }

    case 73:  /* *movhi_internal2 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x7ULL))
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 74:  /* *movqi_internal2 */
    case 72:  /* *movsi_internal2 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 4;
        }
      else if (which_alternative == 2)
        {
	  return 8;
        }
      else if (which_alternative == 3)
        {
	  return 4;
        }
      else if (which_alternative == 4)
        {
	  return 8;
        }
      else if (which_alternative == 5)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 67:  /* *movdi_internal */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0xfULL))
        {
	  return 8;
        }
      else if (which_alternative == 4)
        {
	  return 12 /* 0xc */;
        }
      else if (which_alternative == 5)
        {
	  return 8;
        }
      else
        {
	  return 12 /* 0xc */;
        }

    case 66:  /* *movdi_internal2 */
    case 65:  /* *movdi_internal2_bshift */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 4;
        }
      else if (which_alternative == 2)
        {
	  return 12 /* 0xc */;
        }
      else if (which_alternative == 3)
        {
	  return 4;
        }
      else if (which_alternative == 4)
        {
	  return 8;
        }
      else if (which_alternative == 5)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 53:  /* zero_extendqisi2 */
    case 52:  /* zero_extendqihi2 */
    case 26:  /* mulsi3 */
    case 17:  /* addsi3 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 142:  /* set_text */
    case 141:  /* set_got */
    case 118:  /* branch_compare */
    case 117:  /* long_branch_compare */
    case 116:  /* branch_compare64 */
    case 69:  /* movsi_status */
    case 68:  /* movdi_long_int */
    case 62:  /* movdi_status */
      return 12 /* 0xc */;

    case 130:  /* blockage */
      return 0;

    case 106:  /* *lshrsi_reg */
    case 101:  /* lshrdi3_reg */
    case 98:  /* *ashrsi_reg */
    case 93:  /* ashrdi3_reg */
    case 90:  /* *ashlsi_reg */
    case 84:  /* ashldi3_reg */
      return 28 /* 0x1c */;

    case 105:  /* *lshrsi_inline */
    case 97:  /* *ashrsi_inline */
    case 89:  /* *ashlsi_inline */
      return 124 /* 0x7c */;

    case 104:  /* *lshrsi3_with_size_opt */
    case 100:  /* lshrdi3_const */
    case 96:  /* *ashrsi3_with_size_opt */
    case 92:  /* ashrdi3_const */
    case 87:  /* *ashlsi3_with_size_opt */
    case 83:  /* ashldi3_const */
    case 61:  /* extendsidi2 */
      return 20 /* 0x14 */;

    case 88:  /* *ashlsi3_with_rotate */
      return 80 /* 0x50 */;

    case 86:  /* *ashlsi3_with_mul_nodelay */
    case 56:  /* zero_extendqidi2 */
    case 55:  /* zero_extendsidi2 */
    case 54:  /* zero_extendhidi2 */
    case 41:  /* *microblaze.md:1015 */
    case 38:  /* negdi2 */
    case 29:  /* usmulsidi3 */
    case 28:  /* umulsidi3 */
    case 27:  /* mulsidi3 */
    case 25:  /* subdi3_small */
    case 22:  /* iprefetch */
    case 20:  /* *adddi3_all */
    case 2:  /* bswaphi2 */
      return 8;

    case 51:  /* zero_extendhisi2 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 8;
        }
      else if (which_alternative == 1)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 60:  /* extendsidi2_long */
    case 50:  /* xorsi3 */
    case 47:  /* iorsi3 */
    case 44:  /* andsi3 */
    case 21:  /* subsi3 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    default:
      return 4;

    }
}

int
insn_default_length (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case 79:  /* *movdf_internal */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 4;
        }
      else if (((1ULL << which_alternative) & 0x6ULL))
        {
	  return 8;
        }
      else if (which_alternative == 3)
        {
	  return 16 /* 0x10 */;
        }
      else
        {
	  return 8;
        }

    case 78:  /* *movdf_internal_64 */
    case 77:  /* *movdf_internal_64_bshift */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x7ULL))
        {
	  return 4;
        }
      else if (which_alternative == 3)
        {
	  return 16 /* 0x10 */;
        }
      else
        {
	  return 4;
        }

    case 73:  /* *movhi_internal2 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x7ULL))
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 74:  /* *movqi_internal2 */
    case 72:  /* *movsi_internal2 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 4;
        }
      else if (which_alternative == 2)
        {
	  return 8;
        }
      else if (which_alternative == 3)
        {
	  return 4;
        }
      else if (which_alternative == 4)
        {
	  return 8;
        }
      else if (which_alternative == 5)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 67:  /* *movdi_internal */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0xfULL))
        {
	  return 8;
        }
      else if (which_alternative == 4)
        {
	  return 12 /* 0xc */;
        }
      else if (which_alternative == 5)
        {
	  return 8;
        }
      else
        {
	  return 12 /* 0xc */;
        }

    case 66:  /* *movdi_internal2 */
    case 65:  /* *movdi_internal2_bshift */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 4;
        }
      else if (which_alternative == 2)
        {
	  return 12 /* 0xc */;
        }
      else if (which_alternative == 3)
        {
	  return 4;
        }
      else if (which_alternative == 4)
        {
	  return 8;
        }
      else if (which_alternative == 5)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 53:  /* zero_extendqisi2 */
    case 52:  /* zero_extendqihi2 */
    case 26:  /* mulsi3 */
    case 17:  /* addsi3 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 142:  /* set_text */
    case 141:  /* set_got */
    case 118:  /* branch_compare */
    case 117:  /* long_branch_compare */
    case 116:  /* branch_compare64 */
    case 69:  /* movsi_status */
    case 68:  /* movdi_long_int */
    case 62:  /* movdi_status */
      return 12 /* 0xc */;

    case 130:  /* blockage */
      return 0;

    case 106:  /* *lshrsi_reg */
    case 101:  /* lshrdi3_reg */
    case 98:  /* *ashrsi_reg */
    case 93:  /* ashrdi3_reg */
    case 90:  /* *ashlsi_reg */
    case 84:  /* ashldi3_reg */
      return 28 /* 0x1c */;

    case 105:  /* *lshrsi_inline */
    case 97:  /* *ashrsi_inline */
    case 89:  /* *ashlsi_inline */
      return 124 /* 0x7c */;

    case 104:  /* *lshrsi3_with_size_opt */
    case 100:  /* lshrdi3_const */
    case 96:  /* *ashrsi3_with_size_opt */
    case 92:  /* ashrdi3_const */
    case 87:  /* *ashlsi3_with_size_opt */
    case 83:  /* ashldi3_const */
    case 61:  /* extendsidi2 */
      return 20 /* 0x14 */;

    case 88:  /* *ashlsi3_with_rotate */
      return 80 /* 0x50 */;

    case 86:  /* *ashlsi3_with_mul_nodelay */
    case 56:  /* zero_extendqidi2 */
    case 55:  /* zero_extendsidi2 */
    case 54:  /* zero_extendhidi2 */
    case 41:  /* *microblaze.md:1015 */
    case 38:  /* negdi2 */
    case 29:  /* usmulsidi3 */
    case 28:  /* umulsidi3 */
    case 27:  /* mulsidi3 */
    case 25:  /* subdi3_small */
    case 22:  /* iprefetch */
    case 20:  /* *adddi3_all */
    case 2:  /* bswaphi2 */
      return 8;

    case 51:  /* zero_extendhisi2 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 8;
        }
      else if (which_alternative == 1)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case 60:  /* extendsidi2_long */
    case 50:  /* xorsi3 */
    case 47:  /* iorsi3 */
    case 44:  /* andsi3 */
    case 21:  /* subsi3 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 4;
        }
      else
        {
	  return 8;
        }

    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    default:
      return 4;

    }
}

int
bypass_p (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    default:
      return 0;

    }
}

int
num_delay_slots (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  enum attr_type cached_type ATTRIBUTE_UNUSED;

  switch (recog_memoized (insn))
    {
    case 138:  /* call_value_intern */
    case 137:  /* call_value_intern_64 */
    case 136:  /* call_value_intern_plt */
    case 135:  /* call_value_intern_plt_64 */
    case 134:  /* call_internal1 */
    case 133:  /* call_internal1_64 */
    case 132:  /* call_internal_plt */
    case 131:  /* call_internal_plt_64 */
    case 129:  /* simple_return_internal */
    case 128:  /* return_internal */
    case 127:  /* *simple_return */
    case 126:  /* *return */
    case 125:  /* *microblaze.md:3031 */
    case 124:  /* *microblaze.md:3006 */
    case 123:  /* tablejump_internal2 */
    case 122:  /* tablejump_internal1 */
    case 121:  /* indirect_jump_internal1 */
    case 120:  /* jump */
    case 119:  /* jump_64 */
    case 118:  /* branch_compare */
    case 117:  /* long_branch_compare */
    case 116:  /* branch_compare64 */
    case 115:  /* branch_zero */
    case 114:  /* long_branch_zero */
    case 113:  /* branch_zero_64 */
      return 1;

    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
      if (((cached_type = get_attr_type (insn)) == TYPE_BRANCH) || (cached_type == TYPE_CALL) || (cached_type == TYPE_JUMP))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    default:
      return 0;

    }
}

enum attr_mode
get_attr_mode (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case 10:  /* adddf3 */
    case 11:  /* subdf3 */
    case 12:  /* muldf3 */
    case 13:  /* divdf3 */
    case 14:  /* sqrtdf2 */
    case 15:  /* floatdidf2 */
    case 77:  /* *movdf_internal_64_bshift */
    case 78:  /* *movdf_internal_64 */
    case 79:  /* *movdf_internal */
    case 112:  /* cstoredf4 */
      return MODE_DF;

    case 3:  /* addsf3 */
    case 4:  /* subsf3 */
    case 5:  /* mulsf3 */
    case 6:  /* divsf3 */
    case 7:  /* sqrtsf2 */
    case 8:  /* floatsisf2 */
    case 9:  /* fix_truncsfsi2 */
    case 76:  /* *movsf_internal */
    case 111:  /* cstoresf4 */
      return MODE_SF;

    case 16:  /* fix_truncdfdi2 */
    case 18:  /* adddi3_int */
    case 19:  /* *adddi3_long */
    case 20:  /* *adddi3_all */
    case 23:  /* subdi316imm */
    case 24:  /* subsidi3 */
    case 25:  /* subdi3_small */
    case 27:  /* mulsidi3 */
    case 28:  /* umulsidi3 */
    case 29:  /* usmulsidi3 */
    case 37:  /* negdi2_long */
    case 38:  /* negdi2 */
    case 40:  /* *microblaze.md:1006 */
    case 41:  /* *microblaze.md:1015 */
    case 42:  /* anddi3imm16 */
    case 43:  /* anddi3 */
    case 45:  /* iordi3imm16 */
    case 46:  /* iordi3 */
    case 48:  /* xordi3imm16 */
    case 49:  /* xordi3 */
    case 54:  /* zero_extendhidi2 */
    case 55:  /* zero_extendsidi2 */
    case 56:  /* zero_extendqidi2 */
    case 59:  /* extendhidi2 */
    case 60:  /* extendsidi2_long */
    case 61:  /* extendsidi2 */
    case 62:  /* movdi_status */
    case 63:  /* *movdi_internal3 */
    case 64:  /* *movdi_internal5_pltop */
    case 65:  /* *movdi_internal2_bshift */
    case 66:  /* *movdi_internal2 */
    case 67:  /* *movdi_internal */
    case 68:  /* movdi_long_int */
    case 82:  /* ashldi3_long */
    case 83:  /* ashldi3_const */
    case 84:  /* ashldi3_reg */
    case 91:  /* ashrdi3_long */
    case 92:  /* ashrdi3_const */
    case 93:  /* ashrdi3_reg */
    case 99:  /* lshrdi3_long */
    case 100:  /* lshrdi3_const */
    case 107:  /* seq_internal_pat_long */
    case 108:  /* sne_internal_pat_long */
      return MODE_DI;

    case 52:  /* zero_extendqihi2 */
    case 73:  /* *movhi_internal2 */
      return MODE_HI;

    case 74:  /* *movqi_internal2 */
      return MODE_QI;

    case 113:  /* branch_zero_64 */
    case 114:  /* long_branch_zero */
    case 115:  /* branch_zero */
    case 116:  /* branch_compare64 */
    case 117:  /* long_branch_compare */
    case 118:  /* branch_compare */
    case 119:  /* jump_64 */
    case 120:  /* jump */
    case 121:  /* indirect_jump_internal1 */
    case 122:  /* tablejump_internal1 */
    case 123:  /* tablejump_internal2 */
    case 124:  /* *microblaze.md:3006 */
    case 125:  /* *microblaze.md:3031 */
    case 126:  /* *return */
    case 127:  /* *simple_return */
    case 128:  /* return_internal */
    case 129:  /* simple_return_internal */
    case 130:  /* blockage */
    case 131:  /* call_internal_plt_64 */
    case 132:  /* call_internal_plt */
    case 133:  /* call_internal1_64 */
    case 134:  /* call_internal1 */
    case 135:  /* call_value_intern_plt_64 */
    case 136:  /* call_value_intern_plt */
    case 137:  /* call_value_intern_64 */
    case 138:  /* call_value_intern */
    case 139:  /* nop */
      return MODE_NONE;

    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    case 140:  /* trap */
    case 141:  /* set_got */
    case 142:  /* set_text */
    case 144:  /* extv_32 */
    case 145:  /* insv_32 */
    case 146:  /* atomic_compare_and_swapsi */
      return MODE_UNKNOWN;

    default:
      return MODE_SI;

    }
}

enum attr_type
get_attr_type (rtx_insn *insn ATTRIBUTE_UNUSED)
{
  switch (recog_memoized (insn))
    {
    case 79:  /* *movdf_internal */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_NO_DELAY_MOVE;
        }
      else if (((1ULL << which_alternative) & 0xeULL))
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 78:  /* *movdf_internal_64 */
    case 77:  /* *movdf_internal_64_bshift */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return TYPE_NO_DELAY_MOVE;
        }
      else if (((1ULL << which_alternative) & 0x1cULL))
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 76:  /* *movsf_internal */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_MOVE;
        }
      else if (which_alternative == 1)
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else if (which_alternative == 2)
        {
	  return TYPE_LOAD;
        }
      else if (((1ULL << which_alternative) & 0x18ULL))
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else if (which_alternative == 5)
        {
	  return TYPE_STORE;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 74:  /* *movqi_internal2 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return TYPE_ARITH;
        }
      else if (which_alternative == 2)
        {
	  return TYPE_MOVE;
        }
      else if (which_alternative == 3)
        {
	  return TYPE_LOAD;
        }
      else if (which_alternative == 4)
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else if (which_alternative == 5)
        {
	  return TYPE_STORE;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 72:  /* *movsi_internal2 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return TYPE_LOAD;
        }
      else if (which_alternative == 2)
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else if (which_alternative == 3)
        {
	  return TYPE_LOAD;
        }
      else if (which_alternative == 4)
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else if (which_alternative == 5)
        {
	  return TYPE_STORE;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 67:  /* *movdi_internal */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_NO_DELAY_MOVE;
        }
      else if (((1ULL << which_alternative) & 0x6ULL))
        {
	  return TYPE_NO_DELAY_ARITH;
        }
      else if (((1ULL << which_alternative) & 0x18ULL))
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 66:  /* *movdi_internal2 */
    case 65:  /* *movdi_internal2_bshift */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_LOAD;
        }
      else if (((1ULL << which_alternative) & 0x1eULL))
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 26:  /* mulsi3 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return TYPE_IMUL;
        }
      else
        {
	  return TYPE_NO_DELAY_IMUL;
        }

    case 70:  /* *movsi_internal3 */
    case 50:  /* xorsi3 */
    case 44:  /* andsi3 */
    case 17:  /* addsi3 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return TYPE_ARITH;
        }
      else
        {
	  return TYPE_NO_DELAY_ARITH;
        }

    case 19:  /* *adddi3_long */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_DARITH;
        }
      else
        {
	  return TYPE_NO_DELAY_ARITH;
        }

    case 63:  /* *movdi_internal3 */
    case 47:  /* iorsi3 */
    case 43:  /* anddi3 */
    case 24:  /* subsidi3 */
    case 21:  /* subsi3 */
    case 46:  /* iordi3 */
    case 49:  /* xordi3 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_ARITH;
        }
      else
        {
	  return TYPE_NO_DELAY_ARITH;
        }

    case 51:  /* zero_extendhisi2 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_NO_DELAY_ARITH;
        }
      else if (which_alternative == 1)
        {
	  return TYPE_LOAD;
        }
      else
        {
	  return TYPE_NO_DELAY_LOAD;
        }

    case 52:  /* zero_extendqihi2 */
    case 53:  /* zero_extendqisi2 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_ARITH;
        }
      else if (which_alternative == 1)
        {
	  return TYPE_LOAD;
        }
      else
        {
	  return TYPE_NO_DELAY_LOAD;
        }

    case 73:  /* *movhi_internal2 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_ARITH;
        }
      else if (which_alternative == 1)
        {
	  return TYPE_MOVE;
        }
      else if (which_alternative == 2)
        {
	  return TYPE_LOAD;
        }
      else if (which_alternative == 3)
        {
	  return TYPE_NO_DELAY_LOAD;
        }
      else if (which_alternative == 4)
        {
	  return TYPE_STORE;
        }
      else
        {
	  return TYPE_NO_DELAY_STORE;
        }

    case 75:  /* movsi4_rev */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return TYPE_LOAD;
        }
      else
        {
	  return TYPE_STORE;
        }

    case 140:  /* trap */
      return TYPE_TRAP;

    case 9:  /* fix_truncsfsi2 */
      return TYPE_FINT;

    case 8:  /* floatsisf2 */
    case 15:  /* floatdidf2 */
    case 16:  /* fix_truncdfdi2 */
      return TYPE_FCVT;

    case 7:  /* sqrtsf2 */
    case 14:  /* sqrtdf2 */
      return TYPE_FSQRT;

    case 111:  /* cstoresf4 */
    case 112:  /* cstoredf4 */
      return TYPE_FCMP;

    case 6:  /* divsf3 */
    case 13:  /* divdf3 */
      return TYPE_FDIV;

    case 5:  /* mulsf3 */
    case 12:  /* muldf3 */
      return TYPE_FMUL;

    case 4:  /* subsf3 */
    case 11:  /* subdf3 */
      return TYPE_FRSUB;

    case 3:  /* addsf3 */
    case 10:  /* adddf3 */
      return TYPE_FADD;

    case 81:  /* ashlsi3_bshift */
    case 82:  /* ashldi3_long */
    case 91:  /* ashrdi3_long */
    case 95:  /* *ashrsi3_bshift */
    case 99:  /* lshrdi3_long */
    case 103:  /* *lshrsi3_bshift */
    case 144:  /* extv_32 */
    case 145:  /* insv_32 */
      return TYPE_BSHIFT;

    case 1:  /* bswapsi2 */
    case 2:  /* bswaphi2 */
    case 27:  /* mulsidi3 */
    case 28:  /* umulsidi3 */
    case 29:  /* usmulsidi3 */
    case 40:  /* *microblaze.md:1006 */
    case 54:  /* zero_extendhidi2 */
    case 55:  /* zero_extendsidi2 */
    case 56:  /* zero_extendqidi2 */
    case 68:  /* movdi_long_int */
    case 86:  /* *ashlsi3_with_mul_nodelay */
      return TYPE_NO_DELAY_ARITH;

    case 139:  /* nop */
      return TYPE_NOP;

    case 33:  /* divsi3_internal */
    case 34:  /* udivsi3 */
      return TYPE_IDIV;

    case 30:  /* *smulsi3_highpart */
    case 31:  /* *umulsi3_highpart */
    case 32:  /* *usmulsi3_highpart */
      return TYPE_IMUL;

    case 18:  /* adddi3_int */
    case 20:  /* *adddi3_all */
    case 23:  /* subdi316imm */
    case 25:  /* subdi3_small */
    case 37:  /* negdi2_long */
    case 38:  /* negdi2 */
    case 41:  /* *microblaze.md:1015 */
    case 42:  /* anddi3imm16 */
    case 45:  /* iordi3imm16 */
    case 48:  /* xordi3imm16 */
      return TYPE_DARITH;

    case 22:  /* iprefetch */
    case 35:  /* negsi2 */
    case 36:  /* negsi_long */
    case 39:  /* one_cmplsi2 */
    case 57:  /* extendqisi2 */
    case 58:  /* extendhisi2 */
    case 59:  /* extendhidi2 */
    case 80:  /* *ashlsi3_byone */
    case 85:  /* *ashlsi3_with_mul_delay */
    case 92:  /* ashrdi3_const */
    case 94:  /* *ashrsi3_byone */
    case 96:  /* *ashrsi3_with_size_opt */
    case 102:  /* *lshrsi3_byone */
    case 107:  /* seq_internal_pat_long */
    case 108:  /* sne_internal_pat_long */
    case 109:  /* seq_internal_pat */
    case 110:  /* sne_internal_pat */
    case 143:  /* clzsi2 */
      return TYPE_ARITH;

    case 62:  /* movdi_status */
    case 69:  /* movsi_status */
      return TYPE_MOVE;

    case 64:  /* *movdi_internal5_pltop */
    case 71:  /* *movsi_internal5_pltop */
      return TYPE_LOAD;

    case 131:  /* call_internal_plt_64 */
    case 132:  /* call_internal_plt */
    case 133:  /* call_internal1_64 */
    case 134:  /* call_internal1 */
    case 135:  /* call_value_intern_plt_64 */
    case 136:  /* call_value_intern_plt */
    case 137:  /* call_value_intern_64 */
    case 138:  /* call_value_intern */
      return TYPE_CALL;

    case 119:  /* jump_64 */
    case 120:  /* jump */
    case 121:  /* indirect_jump_internal1 */
    case 122:  /* tablejump_internal1 */
    case 123:  /* tablejump_internal2 */
    case 124:  /* *microblaze.md:3006 */
    case 125:  /* *microblaze.md:3031 */
    case 126:  /* *return */
    case 127:  /* *simple_return */
    case 128:  /* return_internal */
    case 129:  /* simple_return_internal */
      return TYPE_JUMP;

    case 113:  /* branch_zero_64 */
    case 114:  /* long_branch_zero */
    case 115:  /* branch_zero */
    case 116:  /* branch_compare64 */
    case 117:  /* long_branch_compare */
    case 118:  /* branch_compare */
      return TYPE_BRANCH;

    case 130:  /* blockage */
    case 146:  /* atomic_compare_and_swapsi */
      return TYPE_UNKNOWN;

    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
    default:
      return TYPE_MULTI;

    }
}

int
eligible_for_delay (rtx_insn *delay_insn ATTRIBUTE_UNUSED, int slot, 
		   rtx_insn *candidate_insn, int flags ATTRIBUTE_UNUSED)
{
  rtx_insn *insn ATTRIBUTE_UNUSED;

  if (num_delay_slots (delay_insn) == 0)
    return 0;
  gcc_assert (slot < 1);

  if (!INSN_P (candidate_insn))
    return 0;

  insn = candidate_insn;
  switch (recog_memoized (insn))
    {
    case 76:  /* *movsf_internal */
      extract_constrain_insn_cached (insn);
      if ((((1ULL << which_alternative) & 0x25ULL)) && ((! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))) || (!((1ULL << which_alternative) & 0x24ULL))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 74:  /* *movqi_internal2 */
      extract_constrain_insn_cached (insn);
      if ((((1ULL << which_alternative) & 0x2fULL)) && ((! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))) || (!((1ULL << which_alternative) & 0x28ULL))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 73:  /* *movhi_internal2 */
      extract_constrain_insn_cached (insn);
      if ((((1ULL << which_alternative) & 0x17ULL)) && ((! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))) || (!((1ULL << which_alternative) & 0x14ULL))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 72:  /* *movsi_internal2 */
      extract_constrain_insn_cached (insn);
      if ((((1ULL << which_alternative) & 0x2bULL)) && (! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 66:  /* *movdi_internal2 */
    case 65:  /* *movdi_internal2_bshift */
      extract_constrain_insn_cached (insn);
      if ((which_alternative == 0) && (! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 53:  /* zero_extendqisi2 */
    case 52:  /* zero_extendqihi2 */
      extract_constrain_insn_cached (insn);
      if ((((1ULL << which_alternative) & 0x3ULL)) && ((! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))) || (which_alternative != 1)))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 51:  /* zero_extendhisi2 */
      extract_constrain_insn_cached (insn);
      if ((which_alternative == 1) && (! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 63:  /* *movdi_internal3 */
    case 49:  /* xordi3 */
    case 47:  /* iorsi3 */
    case 46:  /* iordi3 */
    case 43:  /* anddi3 */
    case 24:  /* subsidi3 */
    case 21:  /* subsi3 */
      extract_constrain_insn_cached (insn);
      if (which_alternative == 0)
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 70:  /* *movsi_internal3 */
    case 50:  /* xorsi3 */
    case 44:  /* andsi3 */
    case 26:  /* mulsi3 */
    case 17:  /* addsi3 */
      extract_constrain_insn_cached (insn);
      if (((1ULL << which_alternative) & 0x3ULL))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case 146:  /* atomic_compare_and_swapsi */
    case 145:  /* insv_32 */
    case 144:  /* extv_32 */
    case 143:  /* clzsi2 */
    case 140:  /* trap */
    case 139:  /* nop */
    case 130:  /* blockage */
    case 110:  /* sne_internal_pat */
    case 109:  /* seq_internal_pat */
    case 108:  /* sne_internal_pat_long */
    case 107:  /* seq_internal_pat_long */
    case 103:  /* *lshrsi3_bshift */
    case 102:  /* *lshrsi3_byone */
    case 99:  /* lshrdi3_long */
    case 96:  /* *ashrsi3_with_size_opt */
    case 95:  /* *ashrsi3_bshift */
    case 94:  /* *ashrsi3_byone */
    case 92:  /* ashrdi3_const */
    case 91:  /* ashrdi3_long */
    case 85:  /* *ashlsi3_with_mul_delay */
    case 82:  /* ashldi3_long */
    case 81:  /* ashlsi3_bshift */
    case 80:  /* *ashlsi3_byone */
    case 69:  /* movsi_status */
    case 62:  /* movdi_status */
    case 59:  /* extendhidi2 */
    case 58:  /* extendhisi2 */
    case 57:  /* extendqisi2 */
    case 39:  /* one_cmplsi2 */
    case 36:  /* negsi_long */
    case 35:  /* negsi2 */
    case 34:  /* udivsi3 */
    case 33:  /* divsi3_internal */
    case 32:  /* *usmulsi3_highpart */
    case 31:  /* *umulsi3_highpart */
    case 30:  /* *smulsi3_highpart */
    case 22:  /* iprefetch */
    case 16:  /* fix_truncdfdi2 */
    case 15:  /* floatdidf2 */
    case 14:  /* sqrtdf2 */
    case 9:  /* fix_truncsfsi2 */
    case 8:  /* floatsisf2 */
    case 7:  /* sqrtsf2 */
      return 1;

    case 112:  /* cstoredf4 */
    case 111:  /* cstoresf4 */
    case 75:  /* movsi4_rev */
    case 71:  /* *movsi_internal5_pltop */
    case 64:  /* *movdi_internal5_pltop */
    case 13:  /* divdf3 */
    case 12:  /* muldf3 */
    case 11:  /* subdf3 */
    case 10:  /* adddf3 */
    case 6:  /* divsf3 */
    case 5:  /* mulsf3 */
    case 4:  /* subsf3 */
    case 3:  /* addsf3 */
      extract_constrain_insn_cached (insn);
      if (! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay)))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    case -1:
      if (GET_CODE (PATTERN (insn)) != ASM_INPUT
          && asm_noperands (PATTERN (insn)) < 0)
        fatal_insn_not_found (insn);
      /* FALLTHRU */
      extract_constrain_insn_cached (insn);
      if ((! ((get_attr_type (insn) == TYPE_BRANCH) || (get_attr_type (insn) == TYPE_CALL) || (get_attr_type (insn) == TYPE_JUMP) || (get_attr_type (insn) == TYPE_ICMP) || (get_attr_type (insn) == TYPE_MULTI) || (get_attr_type (insn) == TYPE_NO_DELAY_ARITH) || (get_attr_type (insn) == TYPE_NO_DELAY_LOAD) || (get_attr_type (insn) == TYPE_NO_DELAY_STORE) || (get_attr_type (insn) == TYPE_NO_DELAY_IMUL) || (get_attr_type (insn) == TYPE_NO_DELAY_MOVE) || (get_attr_type (insn) == TYPE_DARITH))) && ((! (
#line 467 "../../../../../../../work-shared/gcc-12.2.0-r0/gcc-12.2.0/gcc/config/microblaze/microblaze.md"
(microblaze_no_unsafe_delay))) || (! ((get_attr_type (insn) == TYPE_FADD) || (get_attr_type (insn) == TYPE_FRSUB) || (get_attr_type (insn) == TYPE_FMUL) || (get_attr_type (insn) == TYPE_FDIV) || (get_attr_type (insn) == TYPE_FCMP) || (get_attr_type (insn) == TYPE_STORE) || (get_attr_type (insn) == TYPE_LOAD)))))
        {
	  return 1;
        }
      else
        {
	  return 0;
        }

    default:
      return 0;

    }
}

int
eligible_for_annul_true (rtx_insn *delay_insn ATTRIBUTE_UNUSED,
    int slot ATTRIBUTE_UNUSED,
    rtx_insn *candidate_insn ATTRIBUTE_UNUSED,
    int flags ATTRIBUTE_UNUSED)
{
  return 0;
}

int
eligible_for_annul_false (rtx_insn *delay_insn ATTRIBUTE_UNUSED,
    int slot ATTRIBUTE_UNUSED,
    rtx_insn *candidate_insn ATTRIBUTE_UNUSED,
    int flags ATTRIBUTE_UNUSED)
{
  return 0;
}

int
const_num_delay_slots (rtx_insn *insn)
{
  switch (recog_memoized (insn))
    {
    default:
      return 1;
    }
}

EXPORTED_CONST int length_unit_log = 2;
