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

#ifndef GCC_INSN_CONSTANTS_H
#define GCC_INSN_CONSTANTS_H

#define CCDSP_OU_REGNUM 185
#define RETURN_ADDR_REGNUM 31
#define GOT_VERSION_REGNUM 79
#define MIPS16_T_REGNUM 24
#define CCDSP_EF_REGNUM 187
#define CCDSP_CC_REGNUM 186
#define CPRESTORE_SLOT_REGNUM 76
#define PIC_FUNCTION_ADDR_REGNUM 25
#define CCDSP_CA_REGNUM 184
#define CCDSP_PO_REGNUM 182
#define MAX_PIC_BRANCH_LENGTH 100
#define TLS_GET_TP_REGNUM 3
#define CCDSP_SC_REGNUM 183

enum unspec {
  UNSPEC_LOAD_LEFT = 0,
  UNSPEC_LOAD_RIGHT = 1,
  UNSPEC_STORE_LEFT = 2,
  UNSPEC_STORE_RIGHT = 3,
  UNSPEC_WSBH = 4,
  UNSPEC_DSBH = 5,
  UNSPEC_DSHD = 6,
  UNSPEC_LOAD_LOW = 7,
  UNSPEC_LOAD_HIGH = 8,
  UNSPEC_STORE_WORD = 9,
  UNSPEC_MFHC1 = 10,
  UNSPEC_MTHC1 = 11,
  UNSPEC_MFHI = 12,
  UNSPEC_MTHI = 13,
  UNSPEC_SET_HILO = 14,
  UNSPEC_LOADGP = 15,
  UNSPEC_COPYGP = 16,
  UNSPEC_MOVE_GP = 17,
  UNSPEC_POTENTIAL_CPRESTORE = 18,
  UNSPEC_CPRESTORE = 19,
  UNSPEC_RESTORE_GP = 20,
  UNSPEC_EH_RETURN = 21,
  UNSPEC_GP = 22,
  UNSPEC_SET_GOT_VERSION = 23,
  UNSPEC_UPDATE_GOT_VERSION = 24,
  UNSPEC_LOAD_CALL = 25,
  UNSPEC_LOAD_GOT = 26,
  UNSPEC_TLS_LDM = 27,
  UNSPEC_TLS_GET_TP = 28,
  UNSPEC_UNSHIFTED_HIGH = 29,
  UNSPEC_ALIGN = 30,
  UNSPEC_CONSTTABLE_INT = 31,
  UNSPEC_CONSTTABLE_FLOAT = 32,
  UNSPEC_BLOCKAGE = 33,
  UNSPEC_CLEAR_HAZARD = 34,
  UNSPEC_RDHWR = 35,
  UNSPEC_SYNCI = 36,
  UNSPEC_SYNC = 37,
  UNSPEC_MIPS_CACHE = 38,
  UNSPEC_R10K_CACHE_BARRIER = 39,
  UNSPEC_ERET = 40,
  UNSPEC_DERET = 41,
  UNSPEC_DI = 42,
  UNSPEC_EHB = 43,
  UNSPEC_RDPGPR = 44,
  UNSPEC_COP0 = 45,
  UNSPEC_CALL_ATTR = 46,
  UNSPEC_CASESI_DISPATCH = 47,
  UNSPEC_PROBE_STACK_RANGE = 48,
  UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN = 49,
  UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN = 50,
  UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN = 51,
  UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN = 52,
  UNSPEC_COMPARE_AND_SWAP = 53,
  UNSPEC_COMPARE_AND_SWAP_12 = 54,
  UNSPEC_SYNC_OLD_OP = 55,
  UNSPEC_SYNC_NEW_OP = 56,
  UNSPEC_SYNC_NEW_OP_12 = 57,
  UNSPEC_SYNC_OLD_OP_12 = 58,
  UNSPEC_SYNC_EXCHANGE = 59,
  UNSPEC_SYNC_EXCHANGE_12 = 60,
  UNSPEC_MEMORY_BARRIER = 61,
  UNSPEC_ATOMIC_COMPARE_AND_SWAP = 62,
  UNSPEC_ATOMIC_EXCHANGE = 63,
  UNSPEC_ATOMIC_FETCH_OP = 64,
  UNSPEC_MOVE_TF_PS = 65,
  UNSPEC_C = 66,
  UNSPEC_ALNV_PS = 67,
  UNSPEC_CABS = 68,
  UNSPEC_ADDR_PS = 69,
  UNSPEC_CVT_PW_PS = 70,
  UNSPEC_CVT_PS_PW = 71,
  UNSPEC_MULR_PS = 72,
  UNSPEC_ABS_PS = 73,
  UNSPEC_RSQRT1 = 74,
  UNSPEC_RSQRT2 = 75,
  UNSPEC_RECIP1 = 76,
  UNSPEC_RECIP2 = 77,
  UNSPEC_SINGLE_CC = 78,
  UNSPEC_SCC = 79,
  UNSPEC_ADDQ = 80,
  UNSPEC_ADDQ_S = 81,
  UNSPEC_SUBQ = 82,
  UNSPEC_SUBQ_S = 83,
  UNSPEC_ADDSC = 84,
  UNSPEC_ADDWC = 85,
  UNSPEC_MODSUB = 86,
  UNSPEC_RADDU_W_QB = 87,
  UNSPEC_ABSQ_S = 88,
  UNSPEC_PRECRQ_QB_PH = 89,
  UNSPEC_PRECRQ_PH_W = 90,
  UNSPEC_PRECRQ_RS_PH_W = 91,
  UNSPEC_PRECRQU_S_QB_PH = 92,
  UNSPEC_PRECEQ_W_PHL = 93,
  UNSPEC_PRECEQ_W_PHR = 94,
  UNSPEC_PRECEQU_PH_QBL = 95,
  UNSPEC_PRECEQU_PH_QBR = 96,
  UNSPEC_PRECEQU_PH_QBLA = 97,
  UNSPEC_PRECEQU_PH_QBRA = 98,
  UNSPEC_PRECEU_PH_QBL = 99,
  UNSPEC_PRECEU_PH_QBR = 100,
  UNSPEC_PRECEU_PH_QBLA = 101,
  UNSPEC_PRECEU_PH_QBRA = 102,
  UNSPEC_SHLL = 103,
  UNSPEC_SHLL_S = 104,
  UNSPEC_SHRL_QB = 105,
  UNSPEC_SHRA_PH = 106,
  UNSPEC_SHRA_R = 107,
  UNSPEC_MULEU_S_PH_QBL = 108,
  UNSPEC_MULEU_S_PH_QBR = 109,
  UNSPEC_MULQ_RS_PH = 110,
  UNSPEC_MULEQ_S_W_PHL = 111,
  UNSPEC_MULEQ_S_W_PHR = 112,
  UNSPEC_DPAU_H_QBL = 113,
  UNSPEC_DPAU_H_QBR = 114,
  UNSPEC_DPSU_H_QBL = 115,
  UNSPEC_DPSU_H_QBR = 116,
  UNSPEC_DPAQ_S_W_PH = 117,
  UNSPEC_DPSQ_S_W_PH = 118,
  UNSPEC_MULSAQ_S_W_PH = 119,
  UNSPEC_DPAQ_SA_L_W = 120,
  UNSPEC_DPSQ_SA_L_W = 121,
  UNSPEC_MAQ_S_W_PHL = 122,
  UNSPEC_MAQ_S_W_PHR = 123,
  UNSPEC_MAQ_SA_W_PHL = 124,
  UNSPEC_MAQ_SA_W_PHR = 125,
  UNSPEC_BITREV = 126,
  UNSPEC_INSV = 127,
  UNSPEC_REPL_QB = 128,
  UNSPEC_REPL_PH = 129,
  UNSPEC_CMP_EQ = 130,
  UNSPEC_CMP_LT = 131,
  UNSPEC_CMP_LE = 132,
  UNSPEC_CMPGU_EQ_QB = 133,
  UNSPEC_CMPGU_LT_QB = 134,
  UNSPEC_CMPGU_LE_QB = 135,
  UNSPEC_PICK = 136,
  UNSPEC_PACKRL_PH = 137,
  UNSPEC_EXTR_W = 138,
  UNSPEC_EXTR_R_W = 139,
  UNSPEC_EXTR_RS_W = 140,
  UNSPEC_EXTR_S_H = 141,
  UNSPEC_EXTP = 142,
  UNSPEC_EXTPDP = 143,
  UNSPEC_SHILO = 144,
  UNSPEC_MTHLIP = 145,
  UNSPEC_WRDSP = 146,
  UNSPEC_RDDSP = 147,
  UNSPEC_ABSQ_S_QB = 148,
  UNSPEC_ADDU_PH = 149,
  UNSPEC_ADDU_S_PH = 150,
  UNSPEC_ADDUH_QB = 151,
  UNSPEC_ADDUH_R_QB = 152,
  UNSPEC_APPEND = 153,
  UNSPEC_BALIGN = 154,
  UNSPEC_CMPGDU_EQ_QB = 155,
  UNSPEC_CMPGDU_LT_QB = 156,
  UNSPEC_CMPGDU_LE_QB = 157,
  UNSPEC_DPA_W_PH = 158,
  UNSPEC_DPS_W_PH = 159,
  UNSPEC_MADD = 160,
  UNSPEC_MADDU = 161,
  UNSPEC_MSUB = 162,
  UNSPEC_MSUBU = 163,
  UNSPEC_MUL_PH = 164,
  UNSPEC_MUL_S_PH = 165,
  UNSPEC_MULQ_RS_W = 166,
  UNSPEC_MULQ_S_PH = 167,
  UNSPEC_MULQ_S_W = 168,
  UNSPEC_MULSA_W_PH = 169,
  UNSPEC_MULT = 170,
  UNSPEC_MULTU = 171,
  UNSPEC_PRECR_QB_PH = 172,
  UNSPEC_PRECR_SRA_PH_W = 173,
  UNSPEC_PRECR_SRA_R_PH_W = 174,
  UNSPEC_PREPEND = 175,
  UNSPEC_SHRA_QB = 176,
  UNSPEC_SHRA_R_QB = 177,
  UNSPEC_SHRL_PH = 178,
  UNSPEC_SUBU_PH = 179,
  UNSPEC_SUBU_S_PH = 180,
  UNSPEC_SUBUH_QB = 181,
  UNSPEC_SUBUH_R_QB = 182,
  UNSPEC_ADDQH_PH = 183,
  UNSPEC_ADDQH_R_PH = 184,
  UNSPEC_ADDQH_W = 185,
  UNSPEC_ADDQH_R_W = 186,
  UNSPEC_SUBQH_PH = 187,
  UNSPEC_SUBQH_R_PH = 188,
  UNSPEC_SUBQH_W = 189,
  UNSPEC_SUBQH_R_W = 190,
  UNSPEC_DPAX_W_PH = 191,
  UNSPEC_DPSX_W_PH = 192,
  UNSPEC_DPAQX_S_W_PH = 193,
  UNSPEC_DPAQX_SA_W_PH = 194,
  UNSPEC_DPSQX_S_W_PH = 195,
  UNSPEC_DPSQX_SA_W_PH = 196,
  UNSPEC_LOONGSON_PAVG = 197,
  UNSPEC_LOONGSON_PCMPEQ = 198,
  UNSPEC_LOONGSON_PCMPGT = 199,
  UNSPEC_LOONGSON_PEXTR = 200,
  UNSPEC_LOONGSON_PINSRH = 201,
  UNSPEC_LOONGSON_VINIT = 202,
  UNSPEC_LOONGSON_PMADD = 203,
  UNSPEC_LOONGSON_PMOVMSK = 204,
  UNSPEC_LOONGSON_PMULHU = 205,
  UNSPEC_LOONGSON_PMULH = 206,
  UNSPEC_LOONGSON_PMULU = 207,
  UNSPEC_LOONGSON_PASUBUB = 208,
  UNSPEC_LOONGSON_BIADD = 209,
  UNSPEC_LOONGSON_PSADBH = 210,
  UNSPEC_LOONGSON_PSHUFH = 211,
  UNSPEC_LOONGSON_PUNPCKH = 212,
  UNSPEC_LOONGSON_PUNPCKL = 213,
  UNSPEC_LOONGSON_PADDD = 214,
  UNSPEC_LOONGSON_PSUBD = 215,
  UNSPEC_LOONGSON_DSLL = 216,
  UNSPEC_LOONGSON_DSRL = 217,
  UNSPEC_ADDRESS_FIRST = 218
};
#define NUM_UNSPEC_VALUES 219
extern const char *const unspec_strings[];

enum processor {
  PROCESSOR_R3000 = 0,
  PROCESSOR_4KC = 1,
  PROCESSOR_4KP = 2,
  PROCESSOR_5KC = 3,
  PROCESSOR_5KF = 4,
  PROCESSOR_20KC = 5,
  PROCESSOR_24KC = 6,
  PROCESSOR_24KF2_1 = 7,
  PROCESSOR_24KF1_1 = 8,
  PROCESSOR_74KC = 9,
  PROCESSOR_74KF2_1 = 10,
  PROCESSOR_74KF1_1 = 11,
  PROCESSOR_74KF3_2 = 12,
  PROCESSOR_LOONGSON_2E = 13,
  PROCESSOR_LOONGSON_2F = 14,
  PROCESSOR_LOONGSON_3A = 15,
  PROCESSOR_M4K = 16,
  PROCESSOR_OCTEON = 17,
  PROCESSOR_OCTEON2 = 18,
  PROCESSOR_R3900 = 19,
  PROCESSOR_R6000 = 20,
  PROCESSOR_R4000 = 21,
  PROCESSOR_R4100 = 22,
  PROCESSOR_R4111 = 23,
  PROCESSOR_R4120 = 24,
  PROCESSOR_R4130 = 25,
  PROCESSOR_R4300 = 26,
  PROCESSOR_R4600 = 27,
  PROCESSOR_R4650 = 28,
  PROCESSOR_R4700 = 29,
  PROCESSOR_R5000 = 30,
  PROCESSOR_R5400 = 31,
  PROCESSOR_R5500 = 32,
  PROCESSOR_R7000 = 33,
  PROCESSOR_R8000 = 34,
  PROCESSOR_R9000 = 35,
  PROCESSOR_R10000 = 36,
  PROCESSOR_SB1 = 37,
  PROCESSOR_SB1A = 38,
  PROCESSOR_SR71000 = 39,
  PROCESSOR_XLR = 40,
  PROCESSOR_XLP = 41
};
#define NUM_PROCESSOR_VALUES 42
extern const char *const processor_strings[];

#endif /* GCC_INSN_CONSTANTS_H */
