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

#define IN_TARGET_CODE 1
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "insn-config.h"
#include "recog.h"
#include "diagnostic-core.h"

/* This variable is used as the "location" of any missing operand
   whose numbers are skipped by a given pattern.  */
static rtx junk ATTRIBUTE_UNUSED;

void
insn_extract (rtx_insn *insn)
{
  rtx *ro = recog_data.operand;
  rtx **ro_loc = recog_data.operand_loc;
  rtx pat = PATTERN (insn);
  int i ATTRIBUTE_UNUSED; /* only for peepholes */

  if (flag_checking)
    {
      memset (ro, 0xab, sizeof (*ro) * MAX_RECOG_OPERANDS);
      memset (ro_loc, 0xab, sizeof (*ro_loc) * MAX_RECOG_OPERANDS);
    }

  switch (INSN_CODE (insn))
    {
    default:
      /* Control reaches here if insn_extract has been called with an
         unrecognizable insn (code -1), or an insn whose INSN_CODE
         corresponds to a DEFINE_EXPAND in the machine description;
         either way, a bug.  */
      if (INSN_CODE (insn) < 0)
        fatal_insn ("unrecognizable insn:", insn);
      else
        fatal_insn ("insn with invalid code number:", insn);

    case 146:  /* atomic_compare_and_swapsi */
      ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XVECEXP (pat, 0, 1), 0));
      ro[2] = *(ro_loc[2] = &XVECEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0, 0));
      ro[3] = *(ro_loc[3] = &XVECEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0, 1));
      ro[4] = *(ro_loc[4] = &XVECEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0, 2));
      ro[5] = *(ro_loc[5] = &XVECEXP (pat, 0, 3));
      ro[6] = *(ro_loc[6] = &XVECEXP (pat, 0, 4));
      ro[7] = *(ro_loc[7] = &XVECEXP (pat, 0, 5));
      ro[8] = *(ro_loc[8] = &XEXP (XVECEXP (pat, 0, 6), 0));
      recog_data.dup_loc[0] = &XEXP (XVECEXP (pat, 0, 2), 0);
      recog_data.dup_num[0] = 2;
      break;

    case 145:  /* insv_32 */
      ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 0), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 0), 1));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 0), 2));
      ro[3] = *(ro_loc[3] = &XEXP (pat, 1));
      break;

    case 144:  /* extv_32 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
      ro[3] = *(ro_loc[3] = &XEXP (XEXP (pat, 1), 2));
      break;

    case 142:  /* set_text */
    case 141:  /* set_got */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      break;

    case 138:  /* call_value_intern */
    case 137:  /* call_value_intern_64 */
      ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
      ro[3] = *(ro_loc[3] = &XEXP (XVECEXP (pat, 0, 1), 0));
      break;

    case 136:  /* call_value_intern_plt */
    case 135:  /* call_value_intern_plt_64 */
      ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
      ro[3] = *(ro_loc[3] = &XEXP (XVECEXP (pat, 0, 1), 0));
      ro[4] = *(ro_loc[4] = &XEXP (XVECEXP (pat, 0, 2), 0));
      break;

    case 134:  /* call_internal1 */
    case 133:  /* call_internal1_64 */
    case 132:  /* call_internal_plt */
    case 131:  /* call_internal_plt_64 */
      ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 0), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XVECEXP (pat, 0, 0), 1));
      break;

    case 129:  /* simple_return_internal */
    case 128:  /* return_internal */
      ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
      break;

    case 140:  /* trap */
    case 139:  /* nop */
    case 130:  /* blockage */
    case 127:  /* *simple_return */
    case 126:  /* *return */
      break;

    case 125:  /* *microblaze.md:3096 */
    case 124:  /* *microblaze.md:3071 */
      ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0));
      recog_data.dup_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 0), 0);
      recog_data.dup_num[0] = 1;
      break;

    case 123:  /* tablejump_internal2 */
    case 122:  /* tablejump_internal1 */
      ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 1));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 0), 0));
      break;

    case 121:  /* indirect_jump_internal1 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 1));
      break;

    case 120:  /* jump */
    case 119:  /* jump_64 */
      ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
      break;

    case 118:  /* branch_compare */
    case 117:  /* long_branch_compare */
    case 116:  /* branch_compare64 */
      ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1));
      ro[3] = *(ro_loc[3] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0));
      break;

    case 115:  /* branch_zero */
    case 114:  /* long_branch_zero */
    case 113:  /* branch_zero_64 */
      ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
      ro[3] = *(ro_loc[3] = &XEXP (XEXP (pat, 1), 2));
      break;

    case 112:  /* cstoredf4 */
    case 111:  /* cstoresf4 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (pat, 1));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 0));
      ro[3] = *(ro_loc[3] = &XEXP (XEXP (pat, 1), 1));
      break;

    case 79:  /* *movdf_internal */
    case 78:  /* *movdf_internal_64 */
    case 77:  /* *movdf_internal_64_bshift */
    case 76:  /* *movsf_internal */
    case 74:  /* *movqi_internal2 */
    case 73:  /* *movhi_internal2 */
    case 72:  /* *movsi_internal2 */
    case 71:  /* *movsi_internal5_pltop */
    case 70:  /* *movsi_internal3 */
    case 69:  /* movsi_status */
    case 68:  /* movdi_long_int */
    case 67:  /* *movdi_internal */
    case 66:  /* *movdi_internal2 */
    case 65:  /* *movdi_internal2_bshift */
    case 64:  /* *movdi_internal5_pltop */
    case 63:  /* *movdi_internal3 */
    case 62:  /* movdi_status */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (pat, 1));
      break;

    case 32:  /* *usmulsi3_highpart */
    case 31:  /* *umulsi3_highpart */
    case 30:  /* *smulsi3_highpart */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XEXP (XEXP (pat, 1), 0), 0), 0), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XEXP (XEXP (pat, 1), 0), 0), 1), 0));
      break;

    case 29:  /* usmulsidi3 */
    case 28:  /* umulsidi3 */
    case 27:  /* mulsidi3 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (pat, 1), 1), 0));
      break;

    case 22:  /* iprefetch */
      ro[0] = *(ro_loc[0] = &XVECEXP (XVECEXP (pat, 0, 0), 0, 0));
      break;

    case 16:  /* fix_truncdfdi2 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
      break;

    case 110:  /* sne_internal_pat */
    case 109:  /* seq_internal_pat */
    case 108:  /* sne_internal_pat_long */
    case 107:  /* seq_internal_pat_long */
    case 106:  /* *lshrsi_reg */
    case 105:  /* *lshrsi_inline */
    case 104:  /* *lshrsi3_with_size_opt */
    case 103:  /* *lshrsi3_bshift */
    case 102:  /* *lshrsi3_byone */
    case 101:  /* lshrdi3_reg */
    case 100:  /* lshrdi3_const */
    case 99:  /* lshrdi3_long */
    case 98:  /* *ashrsi_reg */
    case 97:  /* *ashrsi_inline */
    case 96:  /* *ashrsi3_with_size_opt */
    case 95:  /* *ashrsi3_bshift */
    case 94:  /* *ashrsi3_byone */
    case 93:  /* ashrdi3_reg */
    case 92:  /* ashrdi3_const */
    case 91:  /* ashrdi3_long */
    case 90:  /* *ashlsi_reg */
    case 89:  /* *ashlsi_inline */
    case 88:  /* *ashlsi3_with_rotate */
    case 87:  /* *ashlsi3_with_size_opt */
    case 86:  /* *ashlsi3_with_mul_nodelay */
    case 85:  /* *ashlsi3_with_mul_delay */
    case 84:  /* ashldi3_reg */
    case 83:  /* ashldi3_const */
    case 82:  /* ashldi3_long */
    case 81:  /* ashlsi3_bshift */
    case 80:  /* *ashlsi3_byone */
    case 50:  /* xorsi3 */
    case 49:  /* xordi3 */
    case 48:  /* xordi3imm16 */
    case 47:  /* iorsi3 */
    case 46:  /* iordi3 */
    case 45:  /* iordi3imm16 */
    case 44:  /* andsi3 */
    case 43:  /* anddi3 */
    case 42:  /* anddi3imm16 */
    case 34:  /* udivsi3 */
    case 33:  /* divsi3_internal */
    case 26:  /* mulsi3 */
    case 25:  /* subdi3_small */
    case 24:  /* subsidi3 */
    case 23:  /* subdi316imm */
    case 21:  /* subsi3 */
    case 20:  /* *adddi3_all */
    case 19:  /* *adddi3_long */
    case 18:  /* adddi3_int */
    case 17:  /* addsi3 */
    case 13:  /* divdf3 */
    case 12:  /* muldf3 */
    case 11:  /* subdf3 */
    case 10:  /* adddf3 */
    case 6:  /* divsf3 */
    case 5:  /* mulsf3 */
    case 4:  /* subsf3 */
    case 3:  /* addsf3 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
      ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
      break;

    case 143:  /* clzsi2 */
    case 75:  /* movsi4_rev */
    case 61:  /* extendsidi2 */
    case 60:  /* extendsidi2_long */
    case 59:  /* extendhidi2 */
    case 58:  /* extendhisi2 */
    case 57:  /* extendqisi2 */
    case 56:  /* zero_extendqidi2 */
    case 55:  /* zero_extendsidi2 */
    case 54:  /* zero_extendhidi2 */
    case 53:  /* zero_extendqisi2 */
    case 52:  /* zero_extendqihi2 */
    case 51:  /* zero_extendhisi2 */
    case 41:  /* *microblaze.md:1080 */
    case 40:  /* *microblaze.md:1071 */
    case 39:  /* one_cmplsi2 */
    case 38:  /* negdi2 */
    case 37:  /* negdi2_long */
    case 36:  /* negsi_long */
    case 35:  /* negsi2 */
    case 15:  /* floatdidf2 */
    case 14:  /* sqrtdf2 */
    case 9:  /* fix_truncsfsi2 */
    case 8:  /* floatsisf2 */
    case 7:  /* sqrtsf2 */
    case 2:  /* bswaphi2 */
    case 1:  /* bswapsi2 */
      ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
      ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
      break;

    }
}
