/* Generated automatically by the program `genopinit'
   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 "varasm.h"
#include "stor-layout.h"
#include "calls.h"
#include "memmodel.h"
#include "tm_p.h"
#include "flags.h"
#include "insn-config.h"
#include "expmed.h"
#include "dojump.h"
#include "explow.h"
#include "emit-rtl.h"
#include "stmt.h"
#include "expr.h"
#include "insn-codes.h"
#include "optabs.h"

struct optab_pat {
  unsigned scode;
  enum insn_code icode;
};

static const struct optab_pat pats[NUM_OPTAB_PATTERNS] = {
  { 0x010405, CODE_FOR_extendqihi2 },
  { 0x010406, CODE_FOR_extendqisi2 },
  { 0x010407, CODE_FOR_extendqidi2 },
  { 0x010505, CODE_FOR_extendhihi2 },
  { 0x010506, CODE_FOR_extendhisi2 },
  { 0x010507, CODE_FOR_extendhidi2 },
  { 0x010607, CODE_FOR_extendsidi2 },
  { 0x011b1c, CODE_FOR_extendhfsf2 },
  { 0x011b1d, CODE_FOR_extendhfdf2 },
  { 0x011c1d, CODE_FOR_extendsfdf2 },
  { 0x021c1b, CODE_FOR_truncsfhf2 },
  { 0x021d1b, CODE_FOR_truncdfhf2 },
  { 0x021d1c, CODE_FOR_truncdfsf2 },
  { 0x030405, CODE_FOR_zero_extendqihi2 },
  { 0x030406, CODE_FOR_zero_extendqisi2 },
  { 0x030407, CODE_FOR_zero_extendqidi2 },
  { 0x030506, CODE_FOR_zero_extendhisi2 },
  { 0x030507, CODE_FOR_zero_extendhidi2 },
  { 0x030607, CODE_FOR_zero_extendsidi2 },
  { 0x06061b, CODE_FOR_floatsihf2 },
  { 0x06061c, CODE_FOR_floatsisf2 },
  { 0x06061d, CODE_FOR_floatsidf2 },
  { 0x06071b, CODE_FOR_floatdihf2 },
  { 0x06071c, CODE_FOR_floatdisf2 },
  { 0x06071d, CODE_FOR_floatdidf2 },
  { 0x07061b, CODE_FOR_floatunssihf2 },
  { 0x07061c, CODE_FOR_floatunssisf2 },
  { 0x07061d, CODE_FOR_floatunssidf2 },
  { 0x07071b, CODE_FOR_floatunsdihf2 },
  { 0x07071c, CODE_FOR_floatunsdisf2 },
  { 0x07071d, CODE_FOR_floatunsdidf2 },
  { 0x081b06, CODE_FOR_lrinthfsi2 },
  { 0x081b07, CODE_FOR_lrinthfdi2 },
  { 0x081c06, CODE_FOR_lrintsfsi2 },
  { 0x081c07, CODE_FOR_lrintsfdi2 },
  { 0x081d06, CODE_FOR_lrintdfsi2 },
  { 0x081d07, CODE_FOR_lrintdfdi2 },
  { 0x091b06, CODE_FOR_lroundhfsi2 },
  { 0x091b07, CODE_FOR_lroundhfdi2 },
  { 0x091c06, CODE_FOR_lroundsfsi2 },
  { 0x091c07, CODE_FOR_lroundsfdi2 },
  { 0x091d06, CODE_FOR_lrounddfsi2 },
  { 0x091d07, CODE_FOR_lrounddfdi2 },
  { 0x101b06, CODE_FOR_fix_trunchfsi2 },
  { 0x101b07, CODE_FOR_fix_trunchfdi2 },
  { 0x101c06, CODE_FOR_fix_truncsfsi2 },
  { 0x101c07, CODE_FOR_fix_truncsfdi2 },
  { 0x101d06, CODE_FOR_fix_truncdfsi2 },
  { 0x101d07, CODE_FOR_fix_truncdfdi2 },
  { 0x111b06, CODE_FOR_fixuns_trunchfsi2 },
  { 0x111b07, CODE_FOR_fixuns_trunchfdi2 },
  { 0x111c06, CODE_FOR_fixuns_truncsfsi2 },
  { 0x111c07, CODE_FOR_fixuns_truncsfdi2 },
  { 0x111d06, CODE_FOR_fixuns_truncdfsi2 },
  { 0x111d07, CODE_FOR_fixuns_truncdfdi2 },
  { 0x120607, CODE_FOR_mulsidi3 },
  { 0x120708, CODE_FOR_mulditi3 },
  { 0x130607, CODE_FOR_umulsidi3 },
  { 0x130708, CODE_FOR_umulditi3 },
  { 0x140607, CODE_FOR_usmulsidi3 },
  { 0x140708, CODE_FOR_usmulditi3 },
  { 0x150506, CODE_FOR_maddhisi4 },
  { 0x190506, CODE_FOR_msubhisi4 },
  { 0x310006, CODE_FOR_addsi3 },
  { 0x310007, CODE_FOR_adddi3 },
  { 0x31001b, CODE_FOR_addhf3 },
  { 0x31001c, CODE_FOR_addsf3 },
  { 0x31001d, CODE_FOR_adddf3 },
  { 0x350006, CODE_FOR_subsi3 },
  { 0x350007, CODE_FOR_subdi3 },
  { 0x35001b, CODE_FOR_subhf3 },
  { 0x35001c, CODE_FOR_subsf3 },
  { 0x35001d, CODE_FOR_subdf3 },
  { 0x390006, CODE_FOR_mulsi3 },
  { 0x390007, CODE_FOR_muldi3 },
  { 0x39001b, CODE_FOR_mulhf3 },
  { 0x39001c, CODE_FOR_mulsf3 },
  { 0x39001d, CODE_FOR_muldf3 },
  { 0x3d0006, CODE_FOR_divsi3 },
  { 0x3d0007, CODE_FOR_divdi3 },
  { 0x3d001b, CODE_FOR_divhf3 },
  { 0x3d001c, CODE_FOR_divsf3 },
  { 0x3d001d, CODE_FOR_divdf3 },
  { 0x400006, CODE_FOR_udivsi3 },
  { 0x400007, CODE_FOR_udivdi3 },
  { 0x440006, CODE_FOR_modsi3 },
  { 0x440007, CODE_FOR_moddi3 },
  { 0x450006, CODE_FOR_umodsi3 },
  { 0x450007, CODE_FOR_umoddi3 },
  { 0x470006, CODE_FOR_andsi3 },
  { 0x470007, CODE_FOR_anddi3 },
  { 0x480006, CODE_FOR_iorsi3 },
  { 0x480007, CODE_FOR_iordi3 },
  { 0x490006, CODE_FOR_xorsi3 },
  { 0x490007, CODE_FOR_xordi3 },
  { 0x4a0006, CODE_FOR_ashlsi3 },
  { 0x4a0007, CODE_FOR_ashldi3 },
  { 0x4d0006, CODE_FOR_ashrsi3 },
  { 0x4d0007, CODE_FOR_ashrdi3 },
  { 0x4e0006, CODE_FOR_lshrsi3 },
  { 0x4e0007, CODE_FOR_lshrdi3 },
  { 0x4f0006, CODE_FOR_rotlsi3 },
  { 0x4f0007, CODE_FOR_rotldi3 },
  { 0x500006, CODE_FOR_rotrsi3 },
  { 0x500007, CODE_FOR_rotrdi3 },
  { 0x560006, CODE_FOR_sminsi3 },
  { 0x560007, CODE_FOR_smindi3 },
  { 0x56001b, CODE_FOR_sminhf3 },
  { 0x56001c, CODE_FOR_sminsf3 },
  { 0x56001d, CODE_FOR_smindf3 },
  { 0x570006, CODE_FOR_smaxsi3 },
  { 0x570007, CODE_FOR_smaxdi3 },
  { 0x57001b, CODE_FOR_smaxhf3 },
  { 0x57001c, CODE_FOR_smaxsf3 },
  { 0x57001d, CODE_FOR_smaxdf3 },
  { 0x580006, CODE_FOR_uminsi3 },
  { 0x580007, CODE_FOR_umindi3 },
  { 0x590006, CODE_FOR_umaxsi3 },
  { 0x590007, CODE_FOR_umaxdi3 },
  { 0x5a0006, CODE_FOR_negsi2 },
  { 0x5a0007, CODE_FOR_negdi2 },
  { 0x5a001b, CODE_FOR_neghf2 },
  { 0x5a001c, CODE_FOR_negsf2 },
  { 0x5a001d, CODE_FOR_negdf2 },
  { 0x5e001b, CODE_FOR_abshf2 },
  { 0x5e001c, CODE_FOR_abssf2 },
  { 0x5e001d, CODE_FOR_absdf2 },
  { 0x600006, CODE_FOR_one_cmplsi2 },
  { 0x600007, CODE_FOR_one_cmpldi2 },
  { 0x610005, CODE_FOR_bswaphi2 },
  { 0x610006, CODE_FOR_bswapsi2 },
  { 0x610007, CODE_FOR_bswapdi2 },
  { 0x630006, CODE_FOR_clzsi2 },
  { 0x630007, CODE_FOR_clzdi2 },
  { 0x640006, CODE_FOR_ctzsi2 },
  { 0x640007, CODE_FOR_ctzdi2 },
  { 0x660006, CODE_FOR_popcountsi2 },
  { 0x660007, CODE_FOR_popcountdi2 },
  { 0x72001b, CODE_FOR_sqrthf2 },
  { 0x72001c, CODE_FOR_sqrtsf2 },
  { 0x72001d, CODE_FOR_sqrtdf2 },
  { 0x810004, CODE_FOR_movqi },
  { 0x810005, CODE_FOR_movhi },
  { 0x810006, CODE_FOR_movsi },
  { 0x810007, CODE_FOR_movdi },
  { 0x81001b, CODE_FOR_movhf },
  { 0x81001c, CODE_FOR_movsf },
  { 0x81001d, CODE_FOR_movdf },
  { 0x81002b, CODE_FOR_movvnx1bi },
  { 0x81002c, CODE_FOR_movvnx2bi },
  { 0x81002d, CODE_FOR_movvnx4bi },
  { 0x81002e, CODE_FOR_movvnx8bi },
  { 0x81002f, CODE_FOR_movvnx16bi },
  { 0x810030, CODE_FOR_movvnx32bi },
  { 0x810031, CODE_FOR_movvnx64bi },
  { 0x810032, CODE_FOR_movvnx1qi },
  { 0x810033, CODE_FOR_movvnx2qi },
  { 0x810034, CODE_FOR_movvnx1hi },
  { 0x810035, CODE_FOR_movvnx4qi },
  { 0x810036, CODE_FOR_movvnx2hi },
  { 0x810037, CODE_FOR_movvnx1si },
  { 0x810038, CODE_FOR_movvnx8qi },
  { 0x810039, CODE_FOR_movvnx4hi },
  { 0x81003a, CODE_FOR_movvnx2si },
  { 0x81003b, CODE_FOR_movvnx1di },
  { 0x81003c, CODE_FOR_movvnx16qi },
  { 0x81003d, CODE_FOR_movvnx8hi },
  { 0x81003e, CODE_FOR_movvnx4si },
  { 0x81003f, CODE_FOR_movvnx2di },
  { 0x810040, CODE_FOR_movvnx32qi },
  { 0x810041, CODE_FOR_movvnx16hi },
  { 0x810042, CODE_FOR_movvnx8si },
  { 0x810043, CODE_FOR_movvnx4di },
  { 0x810045, CODE_FOR_movvnx64qi },
  { 0x810046, CODE_FOR_movvnx32hi },
  { 0x810047, CODE_FOR_movvnx16si },
  { 0x810048, CODE_FOR_movvnx8di },
  { 0x81004c, CODE_FOR_movvnx1sf },
  { 0x81004e, CODE_FOR_movvnx2sf },
  { 0x81004f, CODE_FOR_movvnx1df },
  { 0x810051, CODE_FOR_movvnx4sf },
  { 0x810052, CODE_FOR_movvnx2df },
  { 0x810054, CODE_FOR_movvnx8sf },
  { 0x810055, CODE_FOR_movvnx4df },
  { 0x810058, CODE_FOR_movvnx16sf },
  { 0x810059, CODE_FOR_movvnx8df },
  { 0x860006, CODE_FOR_extvsi },
  { 0x860007, CODE_FOR_extvdi },
  { 0x870006, CODE_FOR_extzvsi },
  { 0x870007, CODE_FOR_extzvdi },
  { 0x8e0004, CODE_FOR_cbranchqi4 },
  { 0x8e0006, CODE_FOR_cbranchsi4 },
  { 0x8e0007, CODE_FOR_cbranchdi4 },
  { 0x8e001b, CODE_FOR_cbranchhf4 },
  { 0x8e001c, CODE_FOR_cbranchsf4 },
  { 0x8e001d, CODE_FOR_cbranchdf4 },
  { 0x940006, CODE_FOR_movsicc },
  { 0x940007, CODE_FOR_movdicc },
  { 0xae0006, CODE_FOR_cstoresi4 },
  { 0xae0007, CODE_FOR_cstoredi4 },
  { 0xae001b, CODE_FOR_cstorehf4 },
  { 0xae001c, CODE_FOR_cstoresf4 },
  { 0xae001d, CODE_FOR_cstoredf4 },
  { 0xb00006, CODE_FOR_addvsi4 },
  { 0xb00007, CODE_FOR_addvdi4 },
  { 0xb10006, CODE_FOR_subvsi4 },
  { 0xb10007, CODE_FOR_subvdi4 },
  { 0xb20006, CODE_FOR_mulvsi4 },
  { 0xb20007, CODE_FOR_mulvdi4 },
  { 0xb30006, CODE_FOR_uaddvsi4 },
  { 0xb30007, CODE_FOR_uaddvdi4 },
  { 0xb40006, CODE_FOR_usubvsi4 },
  { 0xb40007, CODE_FOR_usubvdi4 },
  { 0xb50006, CODE_FOR_umulvsi4 },
  { 0xb50007, CODE_FOR_umulvdi4 },
  { 0xb90006, CODE_FOR_smulsi3_highpart },
  { 0xb90007, CODE_FOR_smuldi3_highpart },
  { 0xba0006, CODE_FOR_umulsi3_highpart },
  { 0xba0007, CODE_FOR_umuldi3_highpart },
  { 0xbe0006, CODE_FOR_cpymemsi },
  { 0xc3001b, CODE_FOR_fmahf4 },
  { 0xc3001c, CODE_FOR_fmasf4 },
  { 0xc3001d, CODE_FOR_fmadf4 },
  { 0xc4001b, CODE_FOR_fmshf4 },
  { 0xc4001c, CODE_FOR_fmssf4 },
  { 0xc4001d, CODE_FOR_fmsdf4 },
  { 0xc5001b, CODE_FOR_fnmahf4 },
  { 0xc5001c, CODE_FOR_fnmasf4 },
  { 0xc5001d, CODE_FOR_fnmadf4 },
  { 0xc6001b, CODE_FOR_fnmshf4 },
  { 0xc6001c, CODE_FOR_fnmssf4 },
  { 0xc6001d, CODE_FOR_fnmsdf4 },
  { 0xd5001b, CODE_FOR_copysignhf3 },
  { 0xd5001c, CODE_FOR_copysignsf3 },
  { 0xd5001d, CODE_FOR_copysigndf3 },
  { 0xfe001b, CODE_FOR_fmaxhf3 },
  { 0xfe001c, CODE_FOR_fmaxsf3 },
  { 0xfe001d, CODE_FOR_fmaxdf3 },
  { 0xff001b, CODE_FOR_fminhf3 },
  { 0xff001c, CODE_FOR_fminsf3 },
  { 0xff001d, CODE_FOR_fmindf3 },
  { 0x1580006, CODE_FOR_atomic_addsi },
  { 0x1580007, CODE_FOR_atomic_adddi },
  { 0x15a0006, CODE_FOR_atomic_andsi },
  { 0x15a0007, CODE_FOR_atomic_anddi },
  { 0x15e0004, CODE_FOR_atomic_compare_and_swapqi },
  { 0x15e0005, CODE_FOR_atomic_compare_and_swaphi },
  { 0x15e0006, CODE_FOR_atomic_compare_and_swapsi },
  { 0x15e0007, CODE_FOR_atomic_compare_and_swapdi },
  { 0x15f0004, CODE_FOR_atomic_exchangeqi },
  { 0x15f0005, CODE_FOR_atomic_exchangehi },
  { 0x15f0006, CODE_FOR_atomic_exchangesi },
  { 0x15f0007, CODE_FOR_atomic_exchangedi },
  { 0x1600004, CODE_FOR_atomic_fetch_addqi },
  { 0x1600005, CODE_FOR_atomic_fetch_addhi },
  { 0x1600006, CODE_FOR_atomic_fetch_addsi },
  { 0x1600007, CODE_FOR_atomic_fetch_adddi },
  { 0x1610004, CODE_FOR_atomic_fetch_andqi },
  { 0x1610005, CODE_FOR_atomic_fetch_andhi },
  { 0x1610006, CODE_FOR_atomic_fetch_andsi },
  { 0x1610007, CODE_FOR_atomic_fetch_anddi },
  { 0x1620004, CODE_FOR_atomic_fetch_nandqi },
  { 0x1620005, CODE_FOR_atomic_fetch_nandhi },
  { 0x1630004, CODE_FOR_atomic_fetch_orqi },
  { 0x1630005, CODE_FOR_atomic_fetch_orhi },
  { 0x1630006, CODE_FOR_atomic_fetch_orsi },
  { 0x1630007, CODE_FOR_atomic_fetch_ordi },
  { 0x1650004, CODE_FOR_atomic_fetch_xorqi },
  { 0x1650005, CODE_FOR_atomic_fetch_xorhi },
  { 0x1650006, CODE_FOR_atomic_fetch_xorsi },
  { 0x1650007, CODE_FOR_atomic_fetch_xordi },
  { 0x1660006, CODE_FOR_atomic_loadsi },
  { 0x1660007, CODE_FOR_atomic_loaddi },
  { 0x16a0006, CODE_FOR_atomic_orsi },
  { 0x16a0007, CODE_FOR_atomic_ordi },
  { 0x16b0006, CODE_FOR_atomic_storesi },
  { 0x16b0007, CODE_FOR_atomic_storedi },
  { 0x16f0006, CODE_FOR_atomic_xorsi },
  { 0x16f0007, CODE_FOR_atomic_xordi },
  { 0x1750006, CODE_FOR_get_thread_pointersi },
  { 0x1750007, CODE_FOR_get_thread_pointerdi },
  { 0x1790032, CODE_FOR_vec_duplicatevnx1qi },
  { 0x1790033, CODE_FOR_vec_duplicatevnx2qi },
  { 0x1790034, CODE_FOR_vec_duplicatevnx1hi },
  { 0x1790035, CODE_FOR_vec_duplicatevnx4qi },
  { 0x1790036, CODE_FOR_vec_duplicatevnx2hi },
  { 0x1790037, CODE_FOR_vec_duplicatevnx1si },
  { 0x1790038, CODE_FOR_vec_duplicatevnx8qi },
  { 0x1790039, CODE_FOR_vec_duplicatevnx4hi },
  { 0x179003a, CODE_FOR_vec_duplicatevnx2si },
  { 0x179003b, CODE_FOR_vec_duplicatevnx1di },
  { 0x179003c, CODE_FOR_vec_duplicatevnx16qi },
  { 0x179003d, CODE_FOR_vec_duplicatevnx8hi },
  { 0x179003e, CODE_FOR_vec_duplicatevnx4si },
  { 0x179003f, CODE_FOR_vec_duplicatevnx2di },
  { 0x1790040, CODE_FOR_vec_duplicatevnx32qi },
  { 0x1790041, CODE_FOR_vec_duplicatevnx16hi },
  { 0x1790042, CODE_FOR_vec_duplicatevnx8si },
  { 0x1790043, CODE_FOR_vec_duplicatevnx4di },
  { 0x1790045, CODE_FOR_vec_duplicatevnx64qi },
  { 0x1790046, CODE_FOR_vec_duplicatevnx32hi },
  { 0x1790047, CODE_FOR_vec_duplicatevnx16si },
  { 0x1790048, CODE_FOR_vec_duplicatevnx8di },
  { 0x179004c, CODE_FOR_vec_duplicatevnx1sf },
  { 0x179004e, CODE_FOR_vec_duplicatevnx2sf },
  { 0x179004f, CODE_FOR_vec_duplicatevnx1df },
  { 0x1790051, CODE_FOR_vec_duplicatevnx4sf },
  { 0x1790052, CODE_FOR_vec_duplicatevnx2df },
  { 0x1790054, CODE_FOR_vec_duplicatevnx8sf },
  { 0x1790055, CODE_FOR_vec_duplicatevnx4df },
  { 0x1790058, CODE_FOR_vec_duplicatevnx16sf },
  { 0x1790059, CODE_FOR_vec_duplicatevnx8df },
};

void
init_all_optabs (struct target_optabs *optabs)
{
  bool *ena = optabs->pat_enable;
  ena[0] = HAVE_extendqihi2;
  ena[1] = HAVE_extendqisi2;
  ena[2] = HAVE_extendqidi2;
  ena[3] = HAVE_extendhihi2;
  ena[4] = HAVE_extendhisi2;
  ena[5] = HAVE_extendhidi2;
  ena[6] = HAVE_extendsidi2;
  ena[7] = HAVE_extendhfsf2;
  ena[8] = HAVE_extendhfdf2;
  ena[9] = HAVE_extendsfdf2;
  ena[10] = HAVE_truncsfhf2;
  ena[11] = HAVE_truncdfhf2;
  ena[12] = HAVE_truncdfsf2;
  ena[13] = HAVE_zero_extendqihi2;
  ena[14] = HAVE_zero_extendqisi2;
  ena[15] = HAVE_zero_extendqidi2;
  ena[16] = HAVE_zero_extendhisi2;
  ena[17] = HAVE_zero_extendhidi2;
  ena[18] = HAVE_zero_extendsidi2;
  ena[19] = HAVE_floatsihf2;
  ena[20] = HAVE_floatsisf2;
  ena[21] = HAVE_floatsidf2;
  ena[22] = HAVE_floatdihf2;
  ena[23] = HAVE_floatdisf2;
  ena[24] = HAVE_floatdidf2;
  ena[25] = HAVE_floatunssihf2;
  ena[26] = HAVE_floatunssisf2;
  ena[27] = HAVE_floatunssidf2;
  ena[28] = HAVE_floatunsdihf2;
  ena[29] = HAVE_floatunsdisf2;
  ena[30] = HAVE_floatunsdidf2;
  ena[31] = HAVE_lrinthfsi2;
  ena[32] = HAVE_lrinthfdi2;
  ena[33] = HAVE_lrintsfsi2;
  ena[34] = HAVE_lrintsfdi2;
  ena[35] = HAVE_lrintdfsi2;
  ena[36] = HAVE_lrintdfdi2;
  ena[37] = HAVE_lroundhfsi2;
  ena[38] = HAVE_lroundhfdi2;
  ena[39] = HAVE_lroundsfsi2;
  ena[40] = HAVE_lroundsfdi2;
  ena[41] = HAVE_lrounddfsi2;
  ena[42] = HAVE_lrounddfdi2;
  ena[43] = HAVE_fix_trunchfsi2;
  ena[44] = HAVE_fix_trunchfdi2;
  ena[45] = HAVE_fix_truncsfsi2;
  ena[46] = HAVE_fix_truncsfdi2;
  ena[47] = HAVE_fix_truncdfsi2;
  ena[48] = HAVE_fix_truncdfdi2;
  ena[49] = HAVE_fixuns_trunchfsi2;
  ena[50] = HAVE_fixuns_trunchfdi2;
  ena[51] = HAVE_fixuns_truncsfsi2;
  ena[52] = HAVE_fixuns_truncsfdi2;
  ena[53] = HAVE_fixuns_truncdfsi2;
  ena[54] = HAVE_fixuns_truncdfdi2;
  ena[55] = HAVE_mulsidi3;
  ena[56] = HAVE_mulditi3;
  ena[57] = HAVE_umulsidi3;
  ena[58] = HAVE_umulditi3;
  ena[59] = HAVE_usmulsidi3;
  ena[60] = HAVE_usmulditi3;
  ena[61] = HAVE_maddhisi4;
  ena[62] = HAVE_msubhisi4;
  ena[63] = HAVE_addsi3;
  ena[64] = HAVE_adddi3;
  ena[65] = HAVE_addhf3;
  ena[66] = HAVE_addsf3;
  ena[67] = HAVE_adddf3;
  ena[68] = HAVE_subsi3;
  ena[69] = HAVE_subdi3;
  ena[70] = HAVE_subhf3;
  ena[71] = HAVE_subsf3;
  ena[72] = HAVE_subdf3;
  ena[73] = HAVE_mulsi3;
  ena[74] = HAVE_muldi3;
  ena[75] = HAVE_mulhf3;
  ena[76] = HAVE_mulsf3;
  ena[77] = HAVE_muldf3;
  ena[78] = HAVE_divsi3;
  ena[79] = HAVE_divdi3;
  ena[80] = HAVE_divhf3;
  ena[81] = HAVE_divsf3;
  ena[82] = HAVE_divdf3;
  ena[83] = HAVE_udivsi3;
  ena[84] = HAVE_udivdi3;
  ena[85] = HAVE_modsi3;
  ena[86] = HAVE_moddi3;
  ena[87] = HAVE_umodsi3;
  ena[88] = HAVE_umoddi3;
  ena[89] = HAVE_andsi3;
  ena[90] = HAVE_anddi3;
  ena[91] = HAVE_iorsi3;
  ena[92] = HAVE_iordi3;
  ena[93] = HAVE_xorsi3;
  ena[94] = HAVE_xordi3;
  ena[95] = HAVE_ashlsi3;
  ena[96] = HAVE_ashldi3;
  ena[97] = HAVE_ashrsi3;
  ena[98] = HAVE_ashrdi3;
  ena[99] = HAVE_lshrsi3;
  ena[100] = HAVE_lshrdi3;
  ena[101] = HAVE_rotlsi3;
  ena[102] = HAVE_rotldi3;
  ena[103] = HAVE_rotrsi3;
  ena[104] = HAVE_rotrdi3;
  ena[105] = HAVE_sminsi3;
  ena[106] = HAVE_smindi3;
  ena[107] = HAVE_sminhf3;
  ena[108] = HAVE_sminsf3;
  ena[109] = HAVE_smindf3;
  ena[110] = HAVE_smaxsi3;
  ena[111] = HAVE_smaxdi3;
  ena[112] = HAVE_smaxhf3;
  ena[113] = HAVE_smaxsf3;
  ena[114] = HAVE_smaxdf3;
  ena[115] = HAVE_uminsi3;
  ena[116] = HAVE_umindi3;
  ena[117] = HAVE_umaxsi3;
  ena[118] = HAVE_umaxdi3;
  ena[119] = HAVE_negsi2;
  ena[120] = HAVE_negdi2;
  ena[121] = HAVE_neghf2;
  ena[122] = HAVE_negsf2;
  ena[123] = HAVE_negdf2;
  ena[124] = HAVE_abshf2;
  ena[125] = HAVE_abssf2;
  ena[126] = HAVE_absdf2;
  ena[127] = HAVE_one_cmplsi2;
  ena[128] = HAVE_one_cmpldi2;
  ena[129] = HAVE_bswaphi2;
  ena[130] = HAVE_bswapsi2;
  ena[131] = HAVE_bswapdi2;
  ena[132] = HAVE_clzsi2;
  ena[133] = HAVE_clzdi2;
  ena[134] = HAVE_ctzsi2;
  ena[135] = HAVE_ctzdi2;
  ena[136] = HAVE_popcountsi2;
  ena[137] = HAVE_popcountdi2;
  ena[138] = HAVE_sqrthf2;
  ena[139] = HAVE_sqrtsf2;
  ena[140] = HAVE_sqrtdf2;
  ena[141] = HAVE_movqi;
  ena[142] = HAVE_movhi;
  ena[143] = HAVE_movsi;
  ena[144] = HAVE_movdi;
  ena[145] = HAVE_movhf;
  ena[146] = HAVE_movsf;
  ena[147] = HAVE_movdf;
  ena[148] = HAVE_movvnx1bi;
  ena[149] = HAVE_movvnx2bi;
  ena[150] = HAVE_movvnx4bi;
  ena[151] = HAVE_movvnx8bi;
  ena[152] = HAVE_movvnx16bi;
  ena[153] = HAVE_movvnx32bi;
  ena[154] = HAVE_movvnx64bi;
  ena[155] = HAVE_movvnx1qi;
  ena[156] = HAVE_movvnx2qi;
  ena[157] = HAVE_movvnx1hi;
  ena[158] = HAVE_movvnx4qi;
  ena[159] = HAVE_movvnx2hi;
  ena[160] = HAVE_movvnx1si;
  ena[161] = HAVE_movvnx8qi;
  ena[162] = HAVE_movvnx4hi;
  ena[163] = HAVE_movvnx2si;
  ena[164] = HAVE_movvnx1di;
  ena[165] = HAVE_movvnx16qi;
  ena[166] = HAVE_movvnx8hi;
  ena[167] = HAVE_movvnx4si;
  ena[168] = HAVE_movvnx2di;
  ena[169] = HAVE_movvnx32qi;
  ena[170] = HAVE_movvnx16hi;
  ena[171] = HAVE_movvnx8si;
  ena[172] = HAVE_movvnx4di;
  ena[173] = HAVE_movvnx64qi;
  ena[174] = HAVE_movvnx32hi;
  ena[175] = HAVE_movvnx16si;
  ena[176] = HAVE_movvnx8di;
  ena[177] = HAVE_movvnx1sf;
  ena[178] = HAVE_movvnx2sf;
  ena[179] = HAVE_movvnx1df;
  ena[180] = HAVE_movvnx4sf;
  ena[181] = HAVE_movvnx2df;
  ena[182] = HAVE_movvnx8sf;
  ena[183] = HAVE_movvnx4df;
  ena[184] = HAVE_movvnx16sf;
  ena[185] = HAVE_movvnx8df;
  ena[186] = HAVE_extvsi;
  ena[187] = HAVE_extvdi;
  ena[188] = HAVE_extzvsi;
  ena[189] = HAVE_extzvdi;
  ena[190] = HAVE_cbranchqi4;
  ena[191] = HAVE_cbranchsi4;
  ena[192] = HAVE_cbranchdi4;
  ena[193] = HAVE_cbranchhf4;
  ena[194] = HAVE_cbranchsf4;
  ena[195] = HAVE_cbranchdf4;
  ena[196] = HAVE_movsicc;
  ena[197] = HAVE_movdicc;
  ena[198] = HAVE_cstoresi4;
  ena[199] = HAVE_cstoredi4;
  ena[200] = HAVE_cstorehf4;
  ena[201] = HAVE_cstoresf4;
  ena[202] = HAVE_cstoredf4;
  ena[203] = HAVE_addvsi4;
  ena[204] = HAVE_addvdi4;
  ena[205] = HAVE_subvsi4;
  ena[206] = HAVE_subvdi4;
  ena[207] = HAVE_mulvsi4;
  ena[208] = HAVE_mulvdi4;
  ena[209] = HAVE_uaddvsi4;
  ena[210] = HAVE_uaddvdi4;
  ena[211] = HAVE_usubvsi4;
  ena[212] = HAVE_usubvdi4;
  ena[213] = HAVE_umulvsi4;
  ena[214] = HAVE_umulvdi4;
  ena[215] = HAVE_smulsi3_highpart;
  ena[216] = HAVE_smuldi3_highpart;
  ena[217] = HAVE_umulsi3_highpart;
  ena[218] = HAVE_umuldi3_highpart;
  ena[219] = HAVE_cpymemsi;
  ena[220] = HAVE_fmahf4;
  ena[221] = HAVE_fmasf4;
  ena[222] = HAVE_fmadf4;
  ena[223] = HAVE_fmshf4;
  ena[224] = HAVE_fmssf4;
  ena[225] = HAVE_fmsdf4;
  ena[226] = HAVE_fnmahf4;
  ena[227] = HAVE_fnmasf4;
  ena[228] = HAVE_fnmadf4;
  ena[229] = HAVE_fnmshf4;
  ena[230] = HAVE_fnmssf4;
  ena[231] = HAVE_fnmsdf4;
  ena[232] = HAVE_copysignhf3;
  ena[233] = HAVE_copysignsf3;
  ena[234] = HAVE_copysigndf3;
  ena[235] = HAVE_fmaxhf3;
  ena[236] = HAVE_fmaxsf3;
  ena[237] = HAVE_fmaxdf3;
  ena[238] = HAVE_fminhf3;
  ena[239] = HAVE_fminsf3;
  ena[240] = HAVE_fmindf3;
  ena[241] = HAVE_atomic_addsi;
  ena[242] = HAVE_atomic_adddi;
  ena[243] = HAVE_atomic_andsi;
  ena[244] = HAVE_atomic_anddi;
  ena[245] = HAVE_atomic_compare_and_swapqi;
  ena[246] = HAVE_atomic_compare_and_swaphi;
  ena[247] = HAVE_atomic_compare_and_swapsi;
  ena[248] = HAVE_atomic_compare_and_swapdi;
  ena[249] = HAVE_atomic_exchangeqi;
  ena[250] = HAVE_atomic_exchangehi;
  ena[251] = HAVE_atomic_exchangesi;
  ena[252] = HAVE_atomic_exchangedi;
  ena[253] = HAVE_atomic_fetch_addqi;
  ena[254] = HAVE_atomic_fetch_addhi;
  ena[255] = HAVE_atomic_fetch_addsi;
  ena[256] = HAVE_atomic_fetch_adddi;
  ena[257] = HAVE_atomic_fetch_andqi;
  ena[258] = HAVE_atomic_fetch_andhi;
  ena[259] = HAVE_atomic_fetch_andsi;
  ena[260] = HAVE_atomic_fetch_anddi;
  ena[261] = HAVE_atomic_fetch_nandqi;
  ena[262] = HAVE_atomic_fetch_nandhi;
  ena[263] = HAVE_atomic_fetch_orqi;
  ena[264] = HAVE_atomic_fetch_orhi;
  ena[265] = HAVE_atomic_fetch_orsi;
  ena[266] = HAVE_atomic_fetch_ordi;
  ena[267] = HAVE_atomic_fetch_xorqi;
  ena[268] = HAVE_atomic_fetch_xorhi;
  ena[269] = HAVE_atomic_fetch_xorsi;
  ena[270] = HAVE_atomic_fetch_xordi;
  ena[271] = HAVE_atomic_loadsi;
  ena[272] = HAVE_atomic_loaddi;
  ena[273] = HAVE_atomic_orsi;
  ena[274] = HAVE_atomic_ordi;
  ena[275] = HAVE_atomic_storesi;
  ena[276] = HAVE_atomic_storedi;
  ena[277] = HAVE_atomic_xorsi;
  ena[278] = HAVE_atomic_xordi;
  ena[279] = HAVE_get_thread_pointersi;
  ena[280] = HAVE_get_thread_pointerdi;
  ena[281] = HAVE_vec_duplicatevnx1qi;
  ena[282] = HAVE_vec_duplicatevnx2qi;
  ena[283] = HAVE_vec_duplicatevnx1hi;
  ena[284] = HAVE_vec_duplicatevnx4qi;
  ena[285] = HAVE_vec_duplicatevnx2hi;
  ena[286] = HAVE_vec_duplicatevnx1si;
  ena[287] = HAVE_vec_duplicatevnx8qi;
  ena[288] = HAVE_vec_duplicatevnx4hi;
  ena[289] = HAVE_vec_duplicatevnx2si;
  ena[290] = HAVE_vec_duplicatevnx1di;
  ena[291] = HAVE_vec_duplicatevnx16qi;
  ena[292] = HAVE_vec_duplicatevnx8hi;
  ena[293] = HAVE_vec_duplicatevnx4si;
  ena[294] = HAVE_vec_duplicatevnx2di;
  ena[295] = HAVE_vec_duplicatevnx32qi;
  ena[296] = HAVE_vec_duplicatevnx16hi;
  ena[297] = HAVE_vec_duplicatevnx8si;
  ena[298] = HAVE_vec_duplicatevnx4di;
  ena[299] = HAVE_vec_duplicatevnx64qi;
  ena[300] = HAVE_vec_duplicatevnx32hi;
  ena[301] = HAVE_vec_duplicatevnx16si;
  ena[302] = HAVE_vec_duplicatevnx8di;
  ena[303] = HAVE_vec_duplicatevnx1sf;
  ena[304] = HAVE_vec_duplicatevnx2sf;
  ena[305] = HAVE_vec_duplicatevnx1df;
  ena[306] = HAVE_vec_duplicatevnx4sf;
  ena[307] = HAVE_vec_duplicatevnx2df;
  ena[308] = HAVE_vec_duplicatevnx8sf;
  ena[309] = HAVE_vec_duplicatevnx4df;
  ena[310] = HAVE_vec_duplicatevnx16sf;
  ena[311] = HAVE_vec_duplicatevnx8df;
}

/* Returns TRUE if the target supports any of the partial vector
   optabs: while_ult_optab, len_load_optab or len_store_optab,
   for any mode.  */
bool
partial_vectors_supported_p (void)
{
	return false;
}
static int
lookup_handler (unsigned scode)
{
  int l = 0, h = ARRAY_SIZE (pats), m;
  while (h > l)
    {
      m = (h + l) / 2;
      if (scode == pats[m].scode)
        return m;
      else if (scode < pats[m].scode)
        h = m;
      else
        l = m + 1;
    }
  return -1;
}

enum insn_code
raw_optab_handler (unsigned scode)
{
  int i = lookup_handler (scode);
  return (i >= 0 && this_fn_optabs->pat_enable[i]
          ? pats[i].icode : CODE_FOR_nothing);
}

bool
swap_optab_enable (optab op, machine_mode m, bool set)
{
  unsigned scode = (op << 16) | m;
  int i = lookup_handler (scode);
  if (i >= 0)
    {
      bool ret = this_fn_optabs->pat_enable[i];
      this_fn_optabs->pat_enable[i] = set;
      return ret;
    }
  else
    {
      gcc_assert (!set);
      return false;
    }
}

const struct convert_optab_libcall_d convlib_def[NUM_CONVLIB_OPTABS] = {
  { "extend", gen_extend_conv_libfunc },
  { "trunc", gen_trunc_conv_libfunc },
  { NULL, NULL },
  { "fix", gen_fp_to_int_conv_libfunc },
  { "fixuns", gen_fp_to_int_conv_libfunc },
  { "float", gen_int_to_fp_conv_libfunc },
  { NULL, gen_ufloat_conv_libfunc },
  { "lrint", gen_int_to_fp_nondecimal_conv_libfunc },
  { "lround", gen_int_to_fp_nondecimal_conv_libfunc },
  { "lfloor", gen_int_to_fp_nondecimal_conv_libfunc },
  { "lceil", gen_int_to_fp_nondecimal_conv_libfunc },
  { "fract", gen_fract_conv_libfunc },
  { "fractuns", gen_fractuns_conv_libfunc },
  { "satfract", gen_satfract_conv_libfunc },
  { "satfractuns", gen_satfractuns_conv_libfunc },
};

const struct optab_libcall_d normlib_def[NUM_NORMLIB_OPTABS] = {
  { '3', "add", gen_int_fp_fixed_libfunc },
  { '3', "add", gen_intv_fp_libfunc },
  { '3', "ssadd", gen_signed_fixed_libfunc },
  { '3', "usadd", gen_unsigned_fixed_libfunc },
  { '3', "sub", gen_int_fp_fixed_libfunc },
  { '3', "sub", gen_intv_fp_libfunc },
  { '3', "sssub", gen_signed_fixed_libfunc },
  { '3', "ussub", gen_unsigned_fixed_libfunc },
  { '3', "mul", gen_int_fp_fixed_libfunc },
  { '3', "mul", gen_intv_fp_libfunc },
  { '3', "ssmul", gen_signed_fixed_libfunc },
  { '3', "usmul", gen_unsigned_fixed_libfunc },
  { '3', "div", gen_int_fp_signed_fixed_libfunc },
  { '3', "divv", gen_int_libfunc },
  { '3', "ssdiv", gen_signed_fixed_libfunc },
  { '3', "udiv", gen_int_unsigned_fixed_libfunc },
  { '3', "usdiv", gen_unsigned_fixed_libfunc },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '3', "mod", gen_int_libfunc },
  { '3', "umod", gen_int_libfunc },
  { '2', "ftrunc", gen_fp_libfunc },
  { '3', "and", gen_int_libfunc },
  { '3', "ior", gen_int_libfunc },
  { '3', "xor", gen_int_libfunc },
  { '3', "ashl", gen_int_fixed_libfunc },
  { '3', "ssashl", gen_signed_fixed_libfunc },
  { '3', "usashl", gen_unsigned_fixed_libfunc },
  { '3', "ashr", gen_int_signed_fixed_libfunc },
  { '3', "lshr", gen_int_unsigned_fixed_libfunc },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '3', "min", gen_int_fp_libfunc },
  { '3', "max", gen_int_fp_libfunc },
  { '3', "umin", gen_int_libfunc },
  { '3', "umax", gen_int_libfunc },
  { '2', "neg", gen_int_fp_fixed_libfunc },
  { '2', "neg", gen_intv_fp_libfunc },
  { '2', "ssneg", gen_signed_fixed_libfunc },
  { '2', "usneg", gen_unsigned_fixed_libfunc },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '2', "one_cmpl", gen_int_libfunc },
  { '\0', NULL, NULL },
  { '2', "ffs", gen_int_libfunc },
  { '2', "clz", gen_int_libfunc },
  { '2', "ctz", gen_int_libfunc },
  { '2', "clrsb", gen_int_libfunc },
  { '2', "popcount", gen_int_libfunc },
  { '2', "parity", gen_int_libfunc },
  { '2', "cmp", gen_int_fp_fixed_libfunc },
  { '2', "ucmp", gen_int_libfunc },
  { '2', "eq", gen_fp_libfunc },
  { '2', "ne", gen_fp_libfunc },
  { '2', "gt", gen_fp_libfunc },
  { '2', "ge", gen_fp_libfunc },
  { '2', "lt", gen_fp_libfunc },
  { '2', "le", gen_fp_libfunc },
  { '2', "unord", gen_fp_libfunc },
  { '2', "powi", gen_fp_libfunc },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
  { '\0', NULL, NULL },
};

enum rtx_code const optab_to_code_[NUM_OPTABS] = {
  UNKNOWN,
  SIGN_EXTEND,
  TRUNCATE,
  ZERO_EXTEND,
  FIX,
  UNSIGNED_FIX,
  FLOAT,
  UNSIGNED_FLOAT,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  FRACT_CONVERT,
  UNSIGNED_FRACT_CONVERT,
  SAT_FRACT,
  UNSIGNED_SAT_FRACT,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  PLUS,
  PLUS,
  SS_PLUS,
  US_PLUS,
  MINUS,
  MINUS,
  SS_MINUS,
  US_MINUS,
  MULT,
  MULT,
  SS_MULT,
  US_MULT,
  DIV,
  DIV,
  SS_DIV,
  UDIV,
  US_DIV,
  UNKNOWN,
  UNKNOWN,
  MOD,
  UMOD,
  UNKNOWN,
  AND,
  IOR,
  XOR,
  ASHIFT,
  SS_ASHIFT,
  US_ASHIFT,
  ASHIFTRT,
  LSHIFTRT,
  ROTATE,
  ROTATERT,
  ASHIFT,
  ASHIFTRT,
  LSHIFTRT,
  ROTATE,
  ROTATERT,
  SMIN,
  SMAX,
  UMIN,
  UMAX,
  NEG,
  NEG,
  SS_NEG,
  US_NEG,
  ABS,
  ABS,
  NOT,
  BSWAP,
  FFS,
  CLZ,
  CTZ,
  CLRSB,
  POPCOUNT,
  PARITY,
  UNKNOWN,
  UNKNOWN,
  EQ,
  NE,
  GT,
  GE,
  LT,
  LE,
  UNORDERED,
  UNKNOWN,
  SQRT,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  SET,
  STRICT_LOW_PART,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  COMPARE,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  FMA,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
  VEC_DUPLICATE,
  VEC_SERIES,
  UNKNOWN,
  UNKNOWN,
  UNKNOWN,
};

const optab code_to_optab_[NUM_RTX_CODE] = {
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  mov_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  movstrict_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  cbranch_optab,
  add_optab,
  sub_optab,
  neg_optab,
  smul_optab,
  ssmul_optab,
  usmul_optab,
  unknown_optab,
  unknown_optab,
  sdiv_optab,
  ssdiv_optab,
  usdiv_optab,
  smod_optab,
  udiv_optab,
  umod_optab,
  and_optab,
  ior_optab,
  xor_optab,
  one_cmpl_optab,
  ashl_optab,
  rotl_optab,
  ashr_optab,
  lshr_optab,
  rotr_optab,
  smin_optab,
  smax_optab,
  umin_optab,
  umax_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  ne_optab,
  eq_optab,
  ge_optab,
  gt_optab,
  le_optab,
  lt_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unord_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  abs_optab,
  sqrt_optab,
  bswap_optab,
  ffs_optab,
  clrsb_optab,
  clz_optab,
  ctz_optab,
  popcount_optab,
  parity_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  vec_duplicate_optab,
  vec_series_optab,
  ssadd_optab,
  usadd_optab,
  sssub_optab,
  ssneg_optab,
  usneg_optab,
  unknown_optab,
  ssashl_optab,
  usashl_optab,
  ussub_optab,
  unknown_optab,
  unknown_optab,
  fma_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
  unknown_optab,
};

