You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1094 lines
24 KiB
C++

/* 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_extendsfdf2 },
{ 0x021c1b, 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_floatsisf2 },
{ 0x06061c, CODE_FOR_floatsidf2 },
{ 0x06071b, CODE_FOR_floatdisf2 },
{ 0x06071c, CODE_FOR_floatdidf2 },
{ 0x07061b, CODE_FOR_floatunssisf2 },
{ 0x07061c, CODE_FOR_floatunssidf2 },
{ 0x07071b, CODE_FOR_floatunsdisf2 },
{ 0x07071c, CODE_FOR_floatunsdidf2 },
{ 0x081b06, CODE_FOR_lrintsfsi2 },
{ 0x081b07, CODE_FOR_lrintsfdi2 },
{ 0x081c06, CODE_FOR_lrintdfsi2 },
{ 0x081c07, CODE_FOR_lrintdfdi2 },
{ 0x091b06, CODE_FOR_lroundsfsi2 },
{ 0x091b07, CODE_FOR_lroundsfdi2 },
{ 0x091c06, CODE_FOR_lrounddfsi2 },
{ 0x091c07, CODE_FOR_lrounddfdi2 },
{ 0x101b06, CODE_FOR_fix_truncsfsi2 },
{ 0x101b07, CODE_FOR_fix_truncsfdi2 },
{ 0x101c06, CODE_FOR_fix_truncdfsi2 },
{ 0x101c07, CODE_FOR_fix_truncdfdi2 },
{ 0x111b06, CODE_FOR_fixuns_truncsfsi2 },
{ 0x111b07, CODE_FOR_fixuns_truncsfdi2 },
{ 0x111c06, CODE_FOR_fixuns_truncdfsi2 },
{ 0x111c07, 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 },
{ 0x310006, CODE_FOR_addsi3 },
{ 0x310007, CODE_FOR_adddi3 },
{ 0x31001b, CODE_FOR_addsf3 },
{ 0x31001c, CODE_FOR_adddf3 },
{ 0x350006, CODE_FOR_subsi3 },
{ 0x350007, CODE_FOR_subdi3 },
{ 0x35001b, CODE_FOR_subsf3 },
{ 0x35001c, CODE_FOR_subdf3 },
{ 0x390006, CODE_FOR_mulsi3 },
{ 0x390007, CODE_FOR_muldi3 },
{ 0x39001b, CODE_FOR_mulsf3 },
{ 0x39001c, CODE_FOR_muldf3 },
{ 0x3d0006, CODE_FOR_divsi3 },
{ 0x3d0007, CODE_FOR_divdi3 },
{ 0x3d001b, CODE_FOR_divsf3 },
{ 0x3d001c, 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_sminsf3 },
{ 0x56001c, CODE_FOR_smindf3 },
{ 0x570006, CODE_FOR_smaxsi3 },
{ 0x570007, CODE_FOR_smaxdi3 },
{ 0x57001b, CODE_FOR_smaxsf3 },
{ 0x57001c, 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_negsf2 },
{ 0x5a001c, CODE_FOR_negdf2 },
{ 0x5e001b, CODE_FOR_abssf2 },
{ 0x5e001c, CODE_FOR_absdf2 },
{ 0x600006, CODE_FOR_one_cmplsi2 },
{ 0x600007, CODE_FOR_one_cmpldi2 },
{ 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_sqrtsf2 },
{ 0x72001c, CODE_FOR_sqrtdf2 },
{ 0x810004, CODE_FOR_movqi },
{ 0x810005, CODE_FOR_movhi },
{ 0x810006, CODE_FOR_movsi },
{ 0x810007, CODE_FOR_movdi },
{ 0x81001b, CODE_FOR_movsf },
{ 0x81001c, CODE_FOR_movdf },
{ 0x8e0004, CODE_FOR_cbranchqi4 },
{ 0x8e0006, CODE_FOR_cbranchsi4 },
{ 0x8e0007, CODE_FOR_cbranchdi4 },
{ 0x8e001b, CODE_FOR_cbranchsf4 },
{ 0x8e001c, CODE_FOR_cbranchdf4 },
{ 0x920006, CODE_FOR_movsicc },
{ 0x920007, CODE_FOR_movdicc },
{ 0xac0006, CODE_FOR_cstoresi4 },
{ 0xac0007, CODE_FOR_cstoredi4 },
{ 0xac001b, CODE_FOR_cstoresf4 },
{ 0xac001c, CODE_FOR_cstoredf4 },
{ 0xae0006, CODE_FOR_addvsi4 },
{ 0xae0007, CODE_FOR_addvdi4 },
{ 0xaf0006, CODE_FOR_subvsi4 },
{ 0xaf0007, CODE_FOR_subvdi4 },
{ 0xb00006, CODE_FOR_mulvsi4 },
{ 0xb00007, CODE_FOR_mulvdi4 },
{ 0xb10006, CODE_FOR_uaddvsi4 },
{ 0xb10007, CODE_FOR_uaddvdi4 },
{ 0xb20006, CODE_FOR_usubvsi4 },
{ 0xb20007, CODE_FOR_usubvdi4 },
{ 0xb30006, CODE_FOR_umulvsi4 },
{ 0xb30007, CODE_FOR_umulvdi4 },
{ 0xb70006, CODE_FOR_smulsi3_highpart },
{ 0xb70007, CODE_FOR_smuldi3_highpart },
{ 0xb80006, CODE_FOR_umulsi3_highpart },
{ 0xb80007, CODE_FOR_umuldi3_highpart },
{ 0xbc0006, CODE_FOR_cpymemsi },
{ 0xc1001b, CODE_FOR_fmasf4 },
{ 0xc1001c, CODE_FOR_fmadf4 },
{ 0xc2001b, CODE_FOR_fmssf4 },
{ 0xc2001c, CODE_FOR_fmsdf4 },
{ 0xc3001b, CODE_FOR_fnmasf4 },
{ 0xc3001c, CODE_FOR_fnmadf4 },
{ 0xc4001b, CODE_FOR_fnmssf4 },
{ 0xc4001c, CODE_FOR_fnmsdf4 },
{ 0xd3001b, CODE_FOR_copysignsf3 },
{ 0xd3001c, CODE_FOR_copysigndf3 },
{ 0x1550006, CODE_FOR_atomic_addsi },
{ 0x1550007, CODE_FOR_atomic_adddi },
{ 0x1570006, CODE_FOR_atomic_andsi },
{ 0x1570007, CODE_FOR_atomic_anddi },
{ 0x15b0006, CODE_FOR_atomic_compare_and_swapsi },
{ 0x15b0007, CODE_FOR_atomic_compare_and_swapdi },
{ 0x15c0006, CODE_FOR_atomic_exchangesi },
{ 0x15c0007, CODE_FOR_atomic_exchangedi },
{ 0x15d0006, CODE_FOR_atomic_fetch_addsi },
{ 0x15d0007, CODE_FOR_atomic_fetch_adddi },
{ 0x15e0006, CODE_FOR_atomic_fetch_andsi },
{ 0x15e0007, CODE_FOR_atomic_fetch_anddi },
{ 0x1600006, CODE_FOR_atomic_fetch_orsi },
{ 0x1600007, CODE_FOR_atomic_fetch_ordi },
{ 0x1620006, CODE_FOR_atomic_fetch_xorsi },
{ 0x1620007, CODE_FOR_atomic_fetch_xordi },
{ 0x1670006, CODE_FOR_atomic_orsi },
{ 0x1670007, CODE_FOR_atomic_ordi },
{ 0x1680006, CODE_FOR_atomic_storesi },
{ 0x1680007, CODE_FOR_atomic_storedi },
{ 0x16c0006, CODE_FOR_atomic_xorsi },
{ 0x16c0007, CODE_FOR_atomic_xordi },
{ 0x1720006, CODE_FOR_get_thread_pointersi },
{ 0x1720007, CODE_FOR_get_thread_pointerdi },
};
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_extendsfdf2;
ena[8] = HAVE_truncdfsf2;
ena[9] = HAVE_zero_extendqihi2;
ena[10] = HAVE_zero_extendqisi2;
ena[11] = HAVE_zero_extendqidi2;
ena[12] = HAVE_zero_extendhisi2;
ena[13] = HAVE_zero_extendhidi2;
ena[14] = HAVE_zero_extendsidi2;
ena[15] = HAVE_floatsisf2;
ena[16] = HAVE_floatsidf2;
ena[17] = HAVE_floatdisf2;
ena[18] = HAVE_floatdidf2;
ena[19] = HAVE_floatunssisf2;
ena[20] = HAVE_floatunssidf2;
ena[21] = HAVE_floatunsdisf2;
ena[22] = HAVE_floatunsdidf2;
ena[23] = HAVE_lrintsfsi2;
ena[24] = HAVE_lrintsfdi2;
ena[25] = HAVE_lrintdfsi2;
ena[26] = HAVE_lrintdfdi2;
ena[27] = HAVE_lroundsfsi2;
ena[28] = HAVE_lroundsfdi2;
ena[29] = HAVE_lrounddfsi2;
ena[30] = HAVE_lrounddfdi2;
ena[31] = HAVE_fix_truncsfsi2;
ena[32] = HAVE_fix_truncsfdi2;
ena[33] = HAVE_fix_truncdfsi2;
ena[34] = HAVE_fix_truncdfdi2;
ena[35] = HAVE_fixuns_truncsfsi2;
ena[36] = HAVE_fixuns_truncsfdi2;
ena[37] = HAVE_fixuns_truncdfsi2;
ena[38] = HAVE_fixuns_truncdfdi2;
ena[39] = HAVE_mulsidi3;
ena[40] = HAVE_mulditi3;
ena[41] = HAVE_umulsidi3;
ena[42] = HAVE_umulditi3;
ena[43] = HAVE_usmulsidi3;
ena[44] = HAVE_usmulditi3;
ena[45] = HAVE_addsi3;
ena[46] = HAVE_adddi3;
ena[47] = HAVE_addsf3;
ena[48] = HAVE_adddf3;
ena[49] = HAVE_subsi3;
ena[50] = HAVE_subdi3;
ena[51] = HAVE_subsf3;
ena[52] = HAVE_subdf3;
ena[53] = HAVE_mulsi3;
ena[54] = HAVE_muldi3;
ena[55] = HAVE_mulsf3;
ena[56] = HAVE_muldf3;
ena[57] = HAVE_divsi3;
ena[58] = HAVE_divdi3;
ena[59] = HAVE_divsf3;
ena[60] = HAVE_divdf3;
ena[61] = HAVE_udivsi3;
ena[62] = HAVE_udivdi3;
ena[63] = HAVE_modsi3;
ena[64] = HAVE_moddi3;
ena[65] = HAVE_umodsi3;
ena[66] = HAVE_umoddi3;
ena[67] = HAVE_andsi3;
ena[68] = HAVE_anddi3;
ena[69] = HAVE_iorsi3;
ena[70] = HAVE_iordi3;
ena[71] = HAVE_xorsi3;
ena[72] = HAVE_xordi3;
ena[73] = HAVE_ashlsi3;
ena[74] = HAVE_ashldi3;
ena[75] = HAVE_ashrsi3;
ena[76] = HAVE_ashrdi3;
ena[77] = HAVE_lshrsi3;
ena[78] = HAVE_lshrdi3;
ena[79] = HAVE_rotlsi3;
ena[80] = HAVE_rotldi3;
ena[81] = HAVE_rotrsi3;
ena[82] = HAVE_rotrdi3;
ena[83] = HAVE_sminsi3;
ena[84] = HAVE_smindi3;
ena[85] = HAVE_sminsf3;
ena[86] = HAVE_smindf3;
ena[87] = HAVE_smaxsi3;
ena[88] = HAVE_smaxdi3;
ena[89] = HAVE_smaxsf3;
ena[90] = HAVE_smaxdf3;
ena[91] = HAVE_uminsi3;
ena[92] = HAVE_umindi3;
ena[93] = HAVE_umaxsi3;
ena[94] = HAVE_umaxdi3;
ena[95] = HAVE_negsi2;
ena[96] = HAVE_negdi2;
ena[97] = HAVE_negsf2;
ena[98] = HAVE_negdf2;
ena[99] = HAVE_abssf2;
ena[100] = HAVE_absdf2;
ena[101] = HAVE_one_cmplsi2;
ena[102] = HAVE_one_cmpldi2;
ena[103] = HAVE_bswapsi2;
ena[104] = HAVE_bswapdi2;
ena[105] = HAVE_clzsi2;
ena[106] = HAVE_clzdi2;
ena[107] = HAVE_ctzsi2;
ena[108] = HAVE_ctzdi2;
ena[109] = HAVE_popcountsi2;
ena[110] = HAVE_popcountdi2;
ena[111] = HAVE_sqrtsf2;
ena[112] = HAVE_sqrtdf2;
ena[113] = HAVE_movqi;
ena[114] = HAVE_movhi;
ena[115] = HAVE_movsi;
ena[116] = HAVE_movdi;
ena[117] = HAVE_movsf;
ena[118] = HAVE_movdf;
ena[119] = HAVE_cbranchqi4;
ena[120] = HAVE_cbranchsi4;
ena[121] = HAVE_cbranchdi4;
ena[122] = HAVE_cbranchsf4;
ena[123] = HAVE_cbranchdf4;
ena[124] = HAVE_movsicc;
ena[125] = HAVE_movdicc;
ena[126] = HAVE_cstoresi4;
ena[127] = HAVE_cstoredi4;
ena[128] = HAVE_cstoresf4;
ena[129] = HAVE_cstoredf4;
ena[130] = HAVE_addvsi4;
ena[131] = HAVE_addvdi4;
ena[132] = HAVE_subvsi4;
ena[133] = HAVE_subvdi4;
ena[134] = HAVE_mulvsi4;
ena[135] = HAVE_mulvdi4;
ena[136] = HAVE_uaddvsi4;
ena[137] = HAVE_uaddvdi4;
ena[138] = HAVE_usubvsi4;
ena[139] = HAVE_usubvdi4;
ena[140] = HAVE_umulvsi4;
ena[141] = HAVE_umulvdi4;
ena[142] = HAVE_smulsi3_highpart;
ena[143] = HAVE_smuldi3_highpart;
ena[144] = HAVE_umulsi3_highpart;
ena[145] = HAVE_umuldi3_highpart;
ena[146] = HAVE_cpymemsi;
ena[147] = HAVE_fmasf4;
ena[148] = HAVE_fmadf4;
ena[149] = HAVE_fmssf4;
ena[150] = HAVE_fmsdf4;
ena[151] = HAVE_fnmasf4;
ena[152] = HAVE_fnmadf4;
ena[153] = HAVE_fnmssf4;
ena[154] = HAVE_fnmsdf4;
ena[155] = HAVE_copysignsf3;
ena[156] = HAVE_copysigndf3;
ena[157] = HAVE_atomic_addsi;
ena[158] = HAVE_atomic_adddi;
ena[159] = HAVE_atomic_andsi;
ena[160] = HAVE_atomic_anddi;
ena[161] = HAVE_atomic_compare_and_swapsi;
ena[162] = HAVE_atomic_compare_and_swapdi;
ena[163] = HAVE_atomic_exchangesi;
ena[164] = HAVE_atomic_exchangedi;
ena[165] = HAVE_atomic_fetch_addsi;
ena[166] = HAVE_atomic_fetch_adddi;
ena[167] = HAVE_atomic_fetch_andsi;
ena[168] = HAVE_atomic_fetch_anddi;
ena[169] = HAVE_atomic_fetch_orsi;
ena[170] = HAVE_atomic_fetch_ordi;
ena[171] = HAVE_atomic_fetch_xorsi;
ena[172] = HAVE_atomic_fetch_xordi;
ena[173] = HAVE_atomic_orsi;
ena[174] = HAVE_atomic_ordi;
ena[175] = HAVE_atomic_storesi;
ena[176] = HAVE_atomic_storedi;
ena[177] = HAVE_atomic_xorsi;
ena[178] = HAVE_atomic_xordi;
ena[179] = HAVE_get_thread_pointersi;
ena[180] = HAVE_get_thread_pointerdi;
}
/* 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,
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,
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,
};