re PR middle-end/33335 (FAIL: 26_numerics/complex/inserters_extractors/wchar_t/1.cc)

PR middle-end/33335
	* optabs.h (optab_table): Change type to struct optab from optab.
	(convert_optab_table): Similarly.
	Adjust all _optab macros to expand to addresses of optab_table
	resp. convert_optab_table elements rather than the values of the
	elements.
	* optabs.c (optab_table): Change typype to struct optab from optab.
	If compiled by recent GCC, initialize all the insn_code fields in
	the array using designated range initializers.
	(convert_optab_table): Similarly.
	(convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
	set_conv_libfunc): Into libfunc_entry's optab field store index within
	optab_table resp. convert_optab_table array instead of difference
	between two separately malloced addresses.
	(new_optab): Add op argument, don't return anything.  Initialize
	just the insn_code field in handlers array and only when needed.
	(init_optab, init_optabv): Add op argument, don't return anything.
	Adjust new_optab caller.
	(new_convert_optab): Removed.
	(init_convert_optab): Add op argument, don't return anything, don't
	call new_convert_optab.  If needed, initialize insn_code field in
	handlers array.
	(init_optabs): Adjust init_optab, init_optabv and init_convert_optab
	callers.
	(debug_optab_libfuncs): Adjust uses of optab_table and
	convert_optab_table arrays.

From-SVN: r130274
This commit is contained in:
Jakub Jelinek 2007-11-18 20:18:39 +01:00 committed by Jakub Jelinek
parent 3c27955364
commit 33727b5ecb
3 changed files with 423 additions and 383 deletions

View File

@ -1,3 +1,32 @@
2007-11-18 Jakub Jelinek <jakub@redhat.com>
PR middle-end/33335
* optabs.h (optab_table): Change type to struct optab from optab.
(convert_optab_table): Similarly.
Adjust all _optab macros to expand to addresses of optab_table
resp. convert_optab_table elements rather than the values of the
elements.
* optabs.c (optab_table): Change typype to struct optab from optab.
If compiled by recent GCC, initialize all the insn_code fields in
the array using designated range initializers.
(convert_optab_table): Similarly.
(convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
set_conv_libfunc): Into libfunc_entry's optab field store index within
optab_table resp. convert_optab_table array instead of difference
between two separately malloced addresses.
(new_optab): Add op argument, don't return anything. Initialize
just the insn_code field in handlers array and only when needed.
(init_optab, init_optabv): Add op argument, don't return anything.
Adjust new_optab caller.
(new_convert_optab): Removed.
(init_convert_optab): Add op argument, don't return anything, don't
call new_convert_optab. If needed, initialize insn_code field in
handlers array.
(init_optabs): Adjust init_optab, init_optabv and init_convert_optab
callers.
(debug_optab_libfuncs): Adjust uses of optab_table and
convert_optab_table arrays.
2007-11-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34127

View File

@ -54,12 +54,27 @@ along with GCC; see the file COPYING3. If not see
See expr.h for documentation of these optabs. */
optab optab_table[OTI_MAX];
#if GCC_VERSION >= 4000
__extension__ struct optab optab_table[OTI_MAX]
= { [0 ... OTI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1].insn_code
= CODE_FOR_nothing };
#else
/* new_optab will do runtime initialization otherwise. */
struct optab optab_table[OTI_MAX];
#endif
rtx libfunc_table[LTI_MAX];
/* Tables of patterns for converting one mode to another. */
convert_optab convert_optab_table[COI_MAX];
#if GCC_VERSION >= 4000
__extension__ struct convert_optab convert_optab_table[COI_MAX]
= { [0 ... COI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1]
[0 ... NUM_MACHINE_MODES - 1].insn_code
= CODE_FOR_nothing };
#else
/* init_convert_optab will do runtime initialization otherwise. */
struct convert_optab convert_optab_table[COI_MAX];
#endif
/* Contains the optab used for each rtx code. */
optab code_to_optab[NUM_RTX_CODE + 1];
@ -161,7 +176,7 @@ convert_optab_libfunc (convert_optab optab, enum machine_mode mode1,
struct libfunc_entry e;
struct libfunc_entry **slot;
e.optab = (size_t) (convert_optab_table[0] - optab);
e.optab = (size_t) (optab - &convert_optab_table[0]);
e.mode1 = mode1;
e.mode2 = mode2;
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
@ -190,7 +205,7 @@ optab_libfunc (optab optab, enum machine_mode mode)
struct libfunc_entry e;
struct libfunc_entry **slot;
e.optab = (size_t) (optab_table[0] - optab);
e.optab = (size_t) (optab - &optab_table[0]);
e.mode1 = mode;
e.mode2 = VOIDmode;
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
@ -5550,59 +5565,55 @@ have_insn_for (enum rtx_code code, enum machine_mode mode)
}
/* Create a blank optab. */
static optab
new_optab (void)
#if GCC_VERSION >= 4000
static inline void
new_optab (optab op ATTRIBUTE_UNUSED)
{
/* All insn_code fields are already initialized using
designated initializers. */
}
#else
static void
new_optab (optab op)
{
int i;
optab op = xcalloc (sizeof (struct optab), 1);
for (i = 0; i < NUM_MACHINE_MODES; i++)
optab_handler (op, i)->insn_code = CODE_FOR_nothing;
return op;
}
static convert_optab
new_convert_optab (void)
{
int i, j;
convert_optab op = xcalloc (sizeof (struct convert_optab), 1);
for (i = 0; i < NUM_MACHINE_MODES; i++)
for (j = 0; j < NUM_MACHINE_MODES; j++)
convert_optab_handler (op, i, j)->insn_code = CODE_FOR_nothing;
return op;
}
#endif
/* Same, but fill in its code as CODE, and write it into the
code_to_optab table. */
static inline optab
init_optab (enum rtx_code code)
static inline void
init_optab (optab op, enum rtx_code code)
{
optab op = new_optab ();
new_optab (op);
op->code = code;
code_to_optab[(int) code] = op;
return op;
}
/* Same, but fill in its code as CODE, and do _not_ write it into
the code_to_optab table. */
static inline optab
init_optabv (enum rtx_code code)
static inline void
init_optabv (optab op, enum rtx_code code)
{
optab op = new_optab ();
new_optab (op);
op->code = code;
return op;
}
/* Conversion optabs never go in the code_to_optab table. */
static inline convert_optab
init_convert_optab (enum rtx_code code)
static void
init_convert_optab (convert_optab op, enum rtx_code code)
{
convert_optab op = new_convert_optab ();
#if !(GCC_VERSION >= 4000)
int i, j;
for (i = 0; i < NUM_MACHINE_MODES; i++)
for (j = 0; j < NUM_MACHINE_MODES; j++)
convert_optab_handler (op, i, j)->insn_code = CODE_FOR_nothing;
#endif
op->code = code;
return op;
}
/* Initialize the libfunc fields of an entire group of entries in some
@ -6178,7 +6189,7 @@ set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
rtx val;
struct libfunc_entry e;
struct libfunc_entry **slot;
e.optab = (size_t) (optab_table[0] - optable);
e.optab = (size_t) (optable - &optab_table[0]);
e.mode1 = mode;
e.mode2 = VOIDmode;
@ -6189,7 +6200,7 @@ set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, INSERT);
if (*slot == NULL)
*slot = ggc_alloc (sizeof (struct libfunc_entry));
(*slot)->optab = (size_t) (optab_table[0] - optable);
(*slot)->optab = (size_t) (optable - &optab_table[0]);
(*slot)->mode1 = mode;
(*slot)->mode2 = VOIDmode;
(*slot)->libfunc = val;
@ -6205,7 +6216,7 @@ set_conv_libfunc (convert_optab optable, enum machine_mode tmode,
rtx val;
struct libfunc_entry e;
struct libfunc_entry **slot;
e.optab = (size_t) (convert_optab_table[0] - optable);
e.optab = (size_t) (optable - &convert_optab_table[0]);
e.mode1 = tmode;
e.mode2 = fmode;
@ -6216,7 +6227,7 @@ set_conv_libfunc (convert_optab optable, enum machine_mode tmode,
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, INSERT);
if (*slot == NULL)
*slot = ggc_alloc (sizeof (struct libfunc_entry));
(*slot)->optab = (size_t) (convert_optab_table[0] - optable);
(*slot)->optab = (size_t) (optable - &convert_optab_table[0]);
(*slot)->mode1 = tmode;
(*slot)->mode2 = fmode;
(*slot)->libfunc = val;
@ -6248,192 +6259,192 @@ init_optabs (void)
vcondu_gen_code[i] = CODE_FOR_nothing;
}
add_optab = init_optab (PLUS);
addv_optab = init_optabv (PLUS);
sub_optab = init_optab (MINUS);
subv_optab = init_optabv (MINUS);
ssadd_optab = init_optab (SS_PLUS);
usadd_optab = init_optab (US_PLUS);
sssub_optab = init_optab (SS_MINUS);
ussub_optab = init_optab (US_MINUS);
smul_optab = init_optab (MULT);
ssmul_optab = init_optab (SS_MULT);
usmul_optab = init_optab (US_MULT);
smulv_optab = init_optabv (MULT);
smul_highpart_optab = init_optab (UNKNOWN);
umul_highpart_optab = init_optab (UNKNOWN);
smul_widen_optab = init_optab (UNKNOWN);
umul_widen_optab = init_optab (UNKNOWN);
usmul_widen_optab = init_optab (UNKNOWN);
smadd_widen_optab = init_optab (UNKNOWN);
umadd_widen_optab = init_optab (UNKNOWN);
ssmadd_widen_optab = init_optab (UNKNOWN);
usmadd_widen_optab = init_optab (UNKNOWN);
smsub_widen_optab = init_optab (UNKNOWN);
umsub_widen_optab = init_optab (UNKNOWN);
ssmsub_widen_optab = init_optab (UNKNOWN);
usmsub_widen_optab = init_optab (UNKNOWN);
sdiv_optab = init_optab (DIV);
ssdiv_optab = init_optab (SS_DIV);
usdiv_optab = init_optab (US_DIV);
sdivv_optab = init_optabv (DIV);
sdivmod_optab = init_optab (UNKNOWN);
udiv_optab = init_optab (UDIV);
udivmod_optab = init_optab (UNKNOWN);
smod_optab = init_optab (MOD);
umod_optab = init_optab (UMOD);
fmod_optab = init_optab (UNKNOWN);
remainder_optab = init_optab (UNKNOWN);
ftrunc_optab = init_optab (UNKNOWN);
and_optab = init_optab (AND);
ior_optab = init_optab (IOR);
xor_optab = init_optab (XOR);
ashl_optab = init_optab (ASHIFT);
ssashl_optab = init_optab (SS_ASHIFT);
usashl_optab = init_optab (US_ASHIFT);
ashr_optab = init_optab (ASHIFTRT);
lshr_optab = init_optab (LSHIFTRT);
rotl_optab = init_optab (ROTATE);
rotr_optab = init_optab (ROTATERT);
smin_optab = init_optab (SMIN);
smax_optab = init_optab (SMAX);
umin_optab = init_optab (UMIN);
umax_optab = init_optab (UMAX);
pow_optab = init_optab (UNKNOWN);
atan2_optab = init_optab (UNKNOWN);
init_optab (add_optab, PLUS);
init_optabv (addv_optab, PLUS);
init_optab (sub_optab, MINUS);
init_optabv (subv_optab, MINUS);
init_optab (ssadd_optab, SS_PLUS);
init_optab (usadd_optab, US_PLUS);
init_optab (sssub_optab, SS_MINUS);
init_optab (ussub_optab, US_MINUS);
init_optab (smul_optab, MULT);
init_optab (ssmul_optab, SS_MULT);
init_optab (usmul_optab, US_MULT);
init_optabv (smulv_optab, MULT);
init_optab (smul_highpart_optab, UNKNOWN);
init_optab (umul_highpart_optab, UNKNOWN);
init_optab (smul_widen_optab, UNKNOWN);
init_optab (umul_widen_optab, UNKNOWN);
init_optab (usmul_widen_optab, UNKNOWN);
init_optab (smadd_widen_optab, UNKNOWN);
init_optab (umadd_widen_optab, UNKNOWN);
init_optab (ssmadd_widen_optab, UNKNOWN);
init_optab (usmadd_widen_optab, UNKNOWN);
init_optab (smsub_widen_optab, UNKNOWN);
init_optab (umsub_widen_optab, UNKNOWN);
init_optab (ssmsub_widen_optab, UNKNOWN);
init_optab (usmsub_widen_optab, UNKNOWN);
init_optab (sdiv_optab, DIV);
init_optab (ssdiv_optab, SS_DIV);
init_optab (usdiv_optab, US_DIV);
init_optabv (sdivv_optab, DIV);
init_optab (sdivmod_optab, UNKNOWN);
init_optab (udiv_optab, UDIV);
init_optab (udivmod_optab, UNKNOWN);
init_optab (smod_optab, MOD);
init_optab (umod_optab, UMOD);
init_optab (fmod_optab, UNKNOWN);
init_optab (remainder_optab, UNKNOWN);
init_optab (ftrunc_optab, UNKNOWN);
init_optab (and_optab, AND);
init_optab (ior_optab, IOR);
init_optab (xor_optab, XOR);
init_optab (ashl_optab, ASHIFT);
init_optab (ssashl_optab, SS_ASHIFT);
init_optab (usashl_optab, US_ASHIFT);
init_optab (ashr_optab, ASHIFTRT);
init_optab (lshr_optab, LSHIFTRT);
init_optab (rotl_optab, ROTATE);
init_optab (rotr_optab, ROTATERT);
init_optab (smin_optab, SMIN);
init_optab (smax_optab, SMAX);
init_optab (umin_optab, UMIN);
init_optab (umax_optab, UMAX);
init_optab (pow_optab, UNKNOWN);
init_optab (atan2_optab, UNKNOWN);
/* These three have codes assigned exclusively for the sake of
have_insn_for. */
mov_optab = init_optab (SET);
movstrict_optab = init_optab (STRICT_LOW_PART);
cmp_optab = init_optab (COMPARE);
init_optab (mov_optab, SET);
init_optab (movstrict_optab, STRICT_LOW_PART);
init_optab (cmp_optab, COMPARE);
storent_optab = init_optab (UNKNOWN);
init_optab (storent_optab, UNKNOWN);
ucmp_optab = init_optab (UNKNOWN);
tst_optab = init_optab (UNKNOWN);
init_optab (ucmp_optab, UNKNOWN);
init_optab (tst_optab, UNKNOWN);
eq_optab = init_optab (EQ);
ne_optab = init_optab (NE);
gt_optab = init_optab (GT);
ge_optab = init_optab (GE);
lt_optab = init_optab (LT);
le_optab = init_optab (LE);
unord_optab = init_optab (UNORDERED);
init_optab (eq_optab, EQ);
init_optab (ne_optab, NE);
init_optab (gt_optab, GT);
init_optab (ge_optab, GE);
init_optab (lt_optab, LT);
init_optab (le_optab, LE);
init_optab (unord_optab, UNORDERED);
neg_optab = init_optab (NEG);
ssneg_optab = init_optab (SS_NEG);
usneg_optab = init_optab (US_NEG);
negv_optab = init_optabv (NEG);
abs_optab = init_optab (ABS);
absv_optab = init_optabv (ABS);
addcc_optab = init_optab (UNKNOWN);
one_cmpl_optab = init_optab (NOT);
bswap_optab = init_optab (BSWAP);
ffs_optab = init_optab (FFS);
clz_optab = init_optab (CLZ);
ctz_optab = init_optab (CTZ);
popcount_optab = init_optab (POPCOUNT);
parity_optab = init_optab (PARITY);
sqrt_optab = init_optab (SQRT);
floor_optab = init_optab (UNKNOWN);
ceil_optab = init_optab (UNKNOWN);
round_optab = init_optab (UNKNOWN);
btrunc_optab = init_optab (UNKNOWN);
nearbyint_optab = init_optab (UNKNOWN);
rint_optab = init_optab (UNKNOWN);
sincos_optab = init_optab (UNKNOWN);
sin_optab = init_optab (UNKNOWN);
asin_optab = init_optab (UNKNOWN);
cos_optab = init_optab (UNKNOWN);
acos_optab = init_optab (UNKNOWN);
exp_optab = init_optab (UNKNOWN);
exp10_optab = init_optab (UNKNOWN);
exp2_optab = init_optab (UNKNOWN);
expm1_optab = init_optab (UNKNOWN);
ldexp_optab = init_optab (UNKNOWN);
scalb_optab = init_optab (UNKNOWN);
logb_optab = init_optab (UNKNOWN);
ilogb_optab = init_optab (UNKNOWN);
log_optab = init_optab (UNKNOWN);
log10_optab = init_optab (UNKNOWN);
log2_optab = init_optab (UNKNOWN);
log1p_optab = init_optab (UNKNOWN);
tan_optab = init_optab (UNKNOWN);
atan_optab = init_optab (UNKNOWN);
copysign_optab = init_optab (UNKNOWN);
signbit_optab = init_optab (UNKNOWN);
init_optab (neg_optab, NEG);
init_optab (ssneg_optab, SS_NEG);
init_optab (usneg_optab, US_NEG);
init_optabv (negv_optab, NEG);
init_optab (abs_optab, ABS);
init_optabv (absv_optab, ABS);
init_optab (addcc_optab, UNKNOWN);
init_optab (one_cmpl_optab, NOT);
init_optab (bswap_optab, BSWAP);
init_optab (ffs_optab, FFS);
init_optab (clz_optab, CLZ);
init_optab (ctz_optab, CTZ);
init_optab (popcount_optab, POPCOUNT);
init_optab (parity_optab, PARITY);
init_optab (sqrt_optab, SQRT);
init_optab (floor_optab, UNKNOWN);
init_optab (ceil_optab, UNKNOWN);
init_optab (round_optab, UNKNOWN);
init_optab (btrunc_optab, UNKNOWN);
init_optab (nearbyint_optab, UNKNOWN);
init_optab (rint_optab, UNKNOWN);
init_optab (sincos_optab, UNKNOWN);
init_optab (sin_optab, UNKNOWN);
init_optab (asin_optab, UNKNOWN);
init_optab (cos_optab, UNKNOWN);
init_optab (acos_optab, UNKNOWN);
init_optab (exp_optab, UNKNOWN);
init_optab (exp10_optab, UNKNOWN);
init_optab (exp2_optab, UNKNOWN);
init_optab (expm1_optab, UNKNOWN);
init_optab (ldexp_optab, UNKNOWN);
init_optab (scalb_optab, UNKNOWN);
init_optab (logb_optab, UNKNOWN);
init_optab (ilogb_optab, UNKNOWN);
init_optab (log_optab, UNKNOWN);
init_optab (log10_optab, UNKNOWN);
init_optab (log2_optab, UNKNOWN);
init_optab (log1p_optab, UNKNOWN);
init_optab (tan_optab, UNKNOWN);
init_optab (atan_optab, UNKNOWN);
init_optab (copysign_optab, UNKNOWN);
init_optab (signbit_optab, UNKNOWN);
isinf_optab = init_optab (UNKNOWN);
init_optab (isinf_optab, UNKNOWN);
strlen_optab = init_optab (UNKNOWN);
cbranch_optab = init_optab (UNKNOWN);
cmov_optab = init_optab (UNKNOWN);
cstore_optab = init_optab (UNKNOWN);
push_optab = init_optab (UNKNOWN);
init_optab (strlen_optab, UNKNOWN);
init_optab (cbranch_optab, UNKNOWN);
init_optab (cmov_optab, UNKNOWN);
init_optab (cstore_optab, UNKNOWN);
init_optab (push_optab, UNKNOWN);
reduc_smax_optab = init_optab (UNKNOWN);
reduc_umax_optab = init_optab (UNKNOWN);
reduc_smin_optab = init_optab (UNKNOWN);
reduc_umin_optab = init_optab (UNKNOWN);
reduc_splus_optab = init_optab (UNKNOWN);
reduc_uplus_optab = init_optab (UNKNOWN);
init_optab (reduc_smax_optab, UNKNOWN);
init_optab (reduc_umax_optab, UNKNOWN);
init_optab (reduc_smin_optab, UNKNOWN);
init_optab (reduc_umin_optab, UNKNOWN);
init_optab (reduc_splus_optab, UNKNOWN);
init_optab (reduc_uplus_optab, UNKNOWN);
ssum_widen_optab = init_optab (UNKNOWN);
usum_widen_optab = init_optab (UNKNOWN);
sdot_prod_optab = init_optab (UNKNOWN);
udot_prod_optab = init_optab (UNKNOWN);
init_optab (ssum_widen_optab, UNKNOWN);
init_optab (usum_widen_optab, UNKNOWN);
init_optab (sdot_prod_optab, UNKNOWN);
init_optab (udot_prod_optab, UNKNOWN);
vec_extract_optab = init_optab (UNKNOWN);
vec_extract_even_optab = init_optab (UNKNOWN);
vec_extract_odd_optab = init_optab (UNKNOWN);
vec_interleave_high_optab = init_optab (UNKNOWN);
vec_interleave_low_optab = init_optab (UNKNOWN);
vec_set_optab = init_optab (UNKNOWN);
vec_init_optab = init_optab (UNKNOWN);
vec_shl_optab = init_optab (UNKNOWN);
vec_shr_optab = init_optab (UNKNOWN);
vec_realign_load_optab = init_optab (UNKNOWN);
movmisalign_optab = init_optab (UNKNOWN);
vec_widen_umult_hi_optab = init_optab (UNKNOWN);
vec_widen_umult_lo_optab = init_optab (UNKNOWN);
vec_widen_smult_hi_optab = init_optab (UNKNOWN);
vec_widen_smult_lo_optab = init_optab (UNKNOWN);
vec_unpacks_hi_optab = init_optab (UNKNOWN);
vec_unpacks_lo_optab = init_optab (UNKNOWN);
vec_unpacku_hi_optab = init_optab (UNKNOWN);
vec_unpacku_lo_optab = init_optab (UNKNOWN);
vec_unpacks_float_hi_optab = init_optab (UNKNOWN);
vec_unpacks_float_lo_optab = init_optab (UNKNOWN);
vec_unpacku_float_hi_optab = init_optab (UNKNOWN);
vec_unpacku_float_lo_optab = init_optab (UNKNOWN);
vec_pack_trunc_optab = init_optab (UNKNOWN);
vec_pack_usat_optab = init_optab (UNKNOWN);
vec_pack_ssat_optab = init_optab (UNKNOWN);
vec_pack_ufix_trunc_optab = init_optab (UNKNOWN);
vec_pack_sfix_trunc_optab = init_optab (UNKNOWN);
init_optab (vec_extract_optab, UNKNOWN);
init_optab (vec_extract_even_optab, UNKNOWN);
init_optab (vec_extract_odd_optab, UNKNOWN);
init_optab (vec_interleave_high_optab, UNKNOWN);
init_optab (vec_interleave_low_optab, UNKNOWN);
init_optab (vec_set_optab, UNKNOWN);
init_optab (vec_init_optab, UNKNOWN);
init_optab (vec_shl_optab, UNKNOWN);
init_optab (vec_shr_optab, UNKNOWN);
init_optab (vec_realign_load_optab, UNKNOWN);
init_optab (movmisalign_optab, UNKNOWN);
init_optab (vec_widen_umult_hi_optab, UNKNOWN);
init_optab (vec_widen_umult_lo_optab, UNKNOWN);
init_optab (vec_widen_smult_hi_optab, UNKNOWN);
init_optab (vec_widen_smult_lo_optab, UNKNOWN);
init_optab (vec_unpacks_hi_optab, UNKNOWN);
init_optab (vec_unpacks_lo_optab, UNKNOWN);
init_optab (vec_unpacku_hi_optab, UNKNOWN);
init_optab (vec_unpacku_lo_optab, UNKNOWN);
init_optab (vec_unpacks_float_hi_optab, UNKNOWN);
init_optab (vec_unpacks_float_lo_optab, UNKNOWN);
init_optab (vec_unpacku_float_hi_optab, UNKNOWN);
init_optab (vec_unpacku_float_lo_optab, UNKNOWN);
init_optab (vec_pack_trunc_optab, UNKNOWN);
init_optab (vec_pack_usat_optab, UNKNOWN);
init_optab (vec_pack_ssat_optab, UNKNOWN);
init_optab (vec_pack_ufix_trunc_optab, UNKNOWN);
init_optab (vec_pack_sfix_trunc_optab, UNKNOWN);
powi_optab = init_optab (UNKNOWN);
init_optab (powi_optab, UNKNOWN);
/* Conversions. */
sext_optab = init_convert_optab (SIGN_EXTEND);
zext_optab = init_convert_optab (ZERO_EXTEND);
trunc_optab = init_convert_optab (TRUNCATE);
sfix_optab = init_convert_optab (FIX);
ufix_optab = init_convert_optab (UNSIGNED_FIX);
sfixtrunc_optab = init_convert_optab (UNKNOWN);
ufixtrunc_optab = init_convert_optab (UNKNOWN);
sfloat_optab = init_convert_optab (FLOAT);
ufloat_optab = init_convert_optab (UNSIGNED_FLOAT);
lrint_optab = init_convert_optab (UNKNOWN);
lround_optab = init_convert_optab (UNKNOWN);
lfloor_optab = init_convert_optab (UNKNOWN);
lceil_optab = init_convert_optab (UNKNOWN);
init_convert_optab (sext_optab, SIGN_EXTEND);
init_convert_optab (zext_optab, ZERO_EXTEND);
init_convert_optab (trunc_optab, TRUNCATE);
init_convert_optab (sfix_optab, FIX);
init_convert_optab (ufix_optab, UNSIGNED_FIX);
init_convert_optab (sfixtrunc_optab, UNKNOWN);
init_convert_optab (ufixtrunc_optab, UNKNOWN);
init_convert_optab (sfloat_optab, FLOAT);
init_convert_optab (ufloat_optab, UNSIGNED_FLOAT);
init_convert_optab (lrint_optab, UNKNOWN);
init_convert_optab (lround_optab, UNKNOWN);
init_convert_optab (lfloor_optab, UNKNOWN);
init_convert_optab (lceil_optab, UNKNOWN);
fract_optab = init_convert_optab (FRACT_CONVERT);
fractuns_optab = init_convert_optab (UNSIGNED_FRACT_CONVERT);
satfract_optab = init_convert_optab (SAT_FRACT);
satfractuns_optab = init_convert_optab (UNSIGNED_SAT_FRACT);
init_convert_optab (fract_optab, FRACT_CONVERT);
init_convert_optab (fractuns_optab, UNSIGNED_FRACT_CONVERT);
init_convert_optab (satfract_optab, SAT_FRACT);
init_convert_optab (satfractuns_optab, UNSIGNED_SAT_FRACT);
for (i = 0; i < NUM_MACHINE_MODES; i++)
{
@ -6744,8 +6755,8 @@ debug_optab_libfuncs (void)
optab o;
rtx l;
o = optab_table[i];
l = optab_libfunc (optab_table[i], j);
o = &optab_table[i];
l = optab_libfunc (o, j);
if (l)
{
gcc_assert (GET_CODE (l) == SYMBOL_REF);
@ -6764,7 +6775,7 @@ debug_optab_libfuncs (void)
convert_optab o;
rtx l;
o = convert_optab_table[i];
o = &convert_optab_table[i];
l = convert_optab_libfunc (o, j, k);
if (l)
{

View File

@ -360,172 +360,172 @@ enum optab_index
OTI_MAX
};
extern optab optab_table[OTI_MAX];
extern struct optab optab_table[OTI_MAX];
#define ssadd_optab (optab_table[OTI_ssadd])
#define usadd_optab (optab_table[OTI_usadd])
#define sssub_optab (optab_table[OTI_sssub])
#define ussub_optab (optab_table[OTI_ussub])
#define ssmul_optab (optab_table[OTI_ssmul])
#define usmul_optab (optab_table[OTI_usmul])
#define ssdiv_optab (optab_table[OTI_ssdiv])
#define usdiv_optab (optab_table[OTI_usdiv])
#define ssneg_optab (optab_table[OTI_ssneg])
#define usneg_optab (optab_table[OTI_usneg])
#define ssashl_optab (optab_table[OTI_ssashl])
#define usashl_optab (optab_table[OTI_usashl])
#define ssadd_optab (&optab_table[OTI_ssadd])
#define usadd_optab (&optab_table[OTI_usadd])
#define sssub_optab (&optab_table[OTI_sssub])
#define ussub_optab (&optab_table[OTI_ussub])
#define ssmul_optab (&optab_table[OTI_ssmul])
#define usmul_optab (&optab_table[OTI_usmul])
#define ssdiv_optab (&optab_table[OTI_ssdiv])
#define usdiv_optab (&optab_table[OTI_usdiv])
#define ssneg_optab (&optab_table[OTI_ssneg])
#define usneg_optab (&optab_table[OTI_usneg])
#define ssashl_optab (&optab_table[OTI_ssashl])
#define usashl_optab (&optab_table[OTI_usashl])
#define add_optab (optab_table[OTI_add])
#define sub_optab (optab_table[OTI_sub])
#define smul_optab (optab_table[OTI_smul])
#define addv_optab (optab_table[OTI_addv])
#define subv_optab (optab_table[OTI_subv])
#define smul_highpart_optab (optab_table[OTI_smul_highpart])
#define umul_highpart_optab (optab_table[OTI_umul_highpart])
#define smul_widen_optab (optab_table[OTI_smul_widen])
#define umul_widen_optab (optab_table[OTI_umul_widen])
#define usmul_widen_optab (optab_table[OTI_usmul_widen])
#define smadd_widen_optab (optab_table[OTI_smadd_widen])
#define umadd_widen_optab (optab_table[OTI_umadd_widen])
#define ssmadd_widen_optab (optab_table[OTI_ssmadd_widen])
#define usmadd_widen_optab (optab_table[OTI_usmadd_widen])
#define smsub_widen_optab (optab_table[OTI_smsub_widen])
#define umsub_widen_optab (optab_table[OTI_umsub_widen])
#define ssmsub_widen_optab (optab_table[OTI_ssmsub_widen])
#define usmsub_widen_optab (optab_table[OTI_usmsub_widen])
#define sdiv_optab (optab_table[OTI_sdiv])
#define smulv_optab (optab_table[OTI_smulv])
#define sdivv_optab (optab_table[OTI_sdivv])
#define sdivmod_optab (optab_table[OTI_sdivmod])
#define udiv_optab (optab_table[OTI_udiv])
#define udivmod_optab (optab_table[OTI_udivmod])
#define smod_optab (optab_table[OTI_smod])
#define umod_optab (optab_table[OTI_umod])
#define fmod_optab (optab_table[OTI_fmod])
#define remainder_optab (optab_table[OTI_remainder])
#define ftrunc_optab (optab_table[OTI_ftrunc])
#define and_optab (optab_table[OTI_and])
#define ior_optab (optab_table[OTI_ior])
#define xor_optab (optab_table[OTI_xor])
#define ashl_optab (optab_table[OTI_ashl])
#define lshr_optab (optab_table[OTI_lshr])
#define ashr_optab (optab_table[OTI_ashr])
#define rotl_optab (optab_table[OTI_rotl])
#define rotr_optab (optab_table[OTI_rotr])
#define smin_optab (optab_table[OTI_smin])
#define smax_optab (optab_table[OTI_smax])
#define umin_optab (optab_table[OTI_umin])
#define umax_optab (optab_table[OTI_umax])
#define pow_optab (optab_table[OTI_pow])
#define atan2_optab (optab_table[OTI_atan2])
#define add_optab (&optab_table[OTI_add])
#define sub_optab (&optab_table[OTI_sub])
#define smul_optab (&optab_table[OTI_smul])
#define addv_optab (&optab_table[OTI_addv])
#define subv_optab (&optab_table[OTI_subv])
#define smul_highpart_optab (&optab_table[OTI_smul_highpart])
#define umul_highpart_optab (&optab_table[OTI_umul_highpart])
#define smul_widen_optab (&optab_table[OTI_smul_widen])
#define umul_widen_optab (&optab_table[OTI_umul_widen])
#define usmul_widen_optab (&optab_table[OTI_usmul_widen])
#define smadd_widen_optab (&optab_table[OTI_smadd_widen])
#define umadd_widen_optab (&optab_table[OTI_umadd_widen])
#define ssmadd_widen_optab (&optab_table[OTI_ssmadd_widen])
#define usmadd_widen_optab (&optab_table[OTI_usmadd_widen])
#define smsub_widen_optab (&optab_table[OTI_smsub_widen])
#define umsub_widen_optab (&optab_table[OTI_umsub_widen])
#define ssmsub_widen_optab (&optab_table[OTI_ssmsub_widen])
#define usmsub_widen_optab (&optab_table[OTI_usmsub_widen])
#define sdiv_optab (&optab_table[OTI_sdiv])
#define smulv_optab (&optab_table[OTI_smulv])
#define sdivv_optab (&optab_table[OTI_sdivv])
#define sdivmod_optab (&optab_table[OTI_sdivmod])
#define udiv_optab (&optab_table[OTI_udiv])
#define udivmod_optab (&optab_table[OTI_udivmod])
#define smod_optab (&optab_table[OTI_smod])
#define umod_optab (&optab_table[OTI_umod])
#define fmod_optab (&optab_table[OTI_fmod])
#define remainder_optab (&optab_table[OTI_remainder])
#define ftrunc_optab (&optab_table[OTI_ftrunc])
#define and_optab (&optab_table[OTI_and])
#define ior_optab (&optab_table[OTI_ior])
#define xor_optab (&optab_table[OTI_xor])
#define ashl_optab (&optab_table[OTI_ashl])
#define lshr_optab (&optab_table[OTI_lshr])
#define ashr_optab (&optab_table[OTI_ashr])
#define rotl_optab (&optab_table[OTI_rotl])
#define rotr_optab (&optab_table[OTI_rotr])
#define smin_optab (&optab_table[OTI_smin])
#define smax_optab (&optab_table[OTI_smax])
#define umin_optab (&optab_table[OTI_umin])
#define umax_optab (&optab_table[OTI_umax])
#define pow_optab (&optab_table[OTI_pow])
#define atan2_optab (&optab_table[OTI_atan2])
#define mov_optab (optab_table[OTI_mov])
#define movstrict_optab (optab_table[OTI_movstrict])
#define movmisalign_optab (optab_table[OTI_movmisalign])
#define storent_optab (optab_table[OTI_storent])
#define mov_optab (&optab_table[OTI_mov])
#define movstrict_optab (&optab_table[OTI_movstrict])
#define movmisalign_optab (&optab_table[OTI_movmisalign])
#define storent_optab (&optab_table[OTI_storent])
#define neg_optab (optab_table[OTI_neg])
#define negv_optab (optab_table[OTI_negv])
#define abs_optab (optab_table[OTI_abs])
#define absv_optab (optab_table[OTI_absv])
#define one_cmpl_optab (optab_table[OTI_one_cmpl])
#define bswap_optab (optab_table[OTI_bswap])
#define ffs_optab (optab_table[OTI_ffs])
#define clz_optab (optab_table[OTI_clz])
#define ctz_optab (optab_table[OTI_ctz])
#define popcount_optab (optab_table[OTI_popcount])
#define parity_optab (optab_table[OTI_parity])
#define sqrt_optab (optab_table[OTI_sqrt])
#define sincos_optab (optab_table[OTI_sincos])
#define sin_optab (optab_table[OTI_sin])
#define asin_optab (optab_table[OTI_asin])
#define cos_optab (optab_table[OTI_cos])
#define acos_optab (optab_table[OTI_acos])
#define exp_optab (optab_table[OTI_exp])
#define exp10_optab (optab_table[OTI_exp10])
#define exp2_optab (optab_table[OTI_exp2])
#define expm1_optab (optab_table[OTI_expm1])
#define ldexp_optab (optab_table[OTI_ldexp])
#define scalb_optab (optab_table[OTI_scalb])
#define logb_optab (optab_table[OTI_logb])
#define ilogb_optab (optab_table[OTI_ilogb])
#define log_optab (optab_table[OTI_log])
#define log10_optab (optab_table[OTI_log10])
#define log2_optab (optab_table[OTI_log2])
#define log1p_optab (optab_table[OTI_log1p])
#define floor_optab (optab_table[OTI_floor])
#define ceil_optab (optab_table[OTI_ceil])
#define btrunc_optab (optab_table[OTI_btrunc])
#define round_optab (optab_table[OTI_round])
#define nearbyint_optab (optab_table[OTI_nearbyint])
#define rint_optab (optab_table[OTI_rint])
#define tan_optab (optab_table[OTI_tan])
#define atan_optab (optab_table[OTI_atan])
#define copysign_optab (optab_table[OTI_copysign])
#define signbit_optab (optab_table[OTI_signbit])
#define isinf_optab (optab_table[OTI_isinf])
#define neg_optab (&optab_table[OTI_neg])
#define negv_optab (&optab_table[OTI_negv])
#define abs_optab (&optab_table[OTI_abs])
#define absv_optab (&optab_table[OTI_absv])
#define one_cmpl_optab (&optab_table[OTI_one_cmpl])
#define bswap_optab (&optab_table[OTI_bswap])
#define ffs_optab (&optab_table[OTI_ffs])
#define clz_optab (&optab_table[OTI_clz])
#define ctz_optab (&optab_table[OTI_ctz])
#define popcount_optab (&optab_table[OTI_popcount])
#define parity_optab (&optab_table[OTI_parity])
#define sqrt_optab (&optab_table[OTI_sqrt])
#define sincos_optab (&optab_table[OTI_sincos])
#define sin_optab (&optab_table[OTI_sin])
#define asin_optab (&optab_table[OTI_asin])
#define cos_optab (&optab_table[OTI_cos])
#define acos_optab (&optab_table[OTI_acos])
#define exp_optab (&optab_table[OTI_exp])
#define exp10_optab (&optab_table[OTI_exp10])
#define exp2_optab (&optab_table[OTI_exp2])
#define expm1_optab (&optab_table[OTI_expm1])
#define ldexp_optab (&optab_table[OTI_ldexp])
#define scalb_optab (&optab_table[OTI_scalb])
#define logb_optab (&optab_table[OTI_logb])
#define ilogb_optab (&optab_table[OTI_ilogb])
#define log_optab (&optab_table[OTI_log])
#define log10_optab (&optab_table[OTI_log10])
#define log2_optab (&optab_table[OTI_log2])
#define log1p_optab (&optab_table[OTI_log1p])
#define floor_optab (&optab_table[OTI_floor])
#define ceil_optab (&optab_table[OTI_ceil])
#define btrunc_optab (&optab_table[OTI_btrunc])
#define round_optab (&optab_table[OTI_round])
#define nearbyint_optab (&optab_table[OTI_nearbyint])
#define rint_optab (&optab_table[OTI_rint])
#define tan_optab (&optab_table[OTI_tan])
#define atan_optab (&optab_table[OTI_atan])
#define copysign_optab (&optab_table[OTI_copysign])
#define signbit_optab (&optab_table[OTI_signbit])
#define isinf_optab (&optab_table[OTI_isinf])
#define cmp_optab (optab_table[OTI_cmp])
#define ucmp_optab (optab_table[OTI_ucmp])
#define tst_optab (optab_table[OTI_tst])
#define cmp_optab (&optab_table[OTI_cmp])
#define ucmp_optab (&optab_table[OTI_ucmp])
#define tst_optab (&optab_table[OTI_tst])
#define eq_optab (optab_table[OTI_eq])
#define ne_optab (optab_table[OTI_ne])
#define gt_optab (optab_table[OTI_gt])
#define ge_optab (optab_table[OTI_ge])
#define lt_optab (optab_table[OTI_lt])
#define le_optab (optab_table[OTI_le])
#define unord_optab (optab_table[OTI_unord])
#define eq_optab (&optab_table[OTI_eq])
#define ne_optab (&optab_table[OTI_ne])
#define gt_optab (&optab_table[OTI_gt])
#define ge_optab (&optab_table[OTI_ge])
#define lt_optab (&optab_table[OTI_lt])
#define le_optab (&optab_table[OTI_le])
#define unord_optab (&optab_table[OTI_unord])
#define strlen_optab (optab_table[OTI_strlen])
#define strlen_optab (&optab_table[OTI_strlen])
#define cbranch_optab (optab_table[OTI_cbranch])
#define cmov_optab (optab_table[OTI_cmov])
#define cstore_optab (optab_table[OTI_cstore])
#define push_optab (optab_table[OTI_push])
#define addcc_optab (optab_table[OTI_addcc])
#define cbranch_optab (&optab_table[OTI_cbranch])
#define cmov_optab (&optab_table[OTI_cmov])
#define cstore_optab (&optab_table[OTI_cstore])
#define push_optab (&optab_table[OTI_push])
#define addcc_optab (&optab_table[OTI_addcc])
#define reduc_smax_optab (optab_table[OTI_reduc_smax])
#define reduc_umax_optab (optab_table[OTI_reduc_umax])
#define reduc_smin_optab (optab_table[OTI_reduc_smin])
#define reduc_umin_optab (optab_table[OTI_reduc_umin])
#define reduc_splus_optab (optab_table[OTI_reduc_splus])
#define reduc_uplus_optab (optab_table[OTI_reduc_uplus])
#define reduc_smax_optab (&optab_table[OTI_reduc_smax])
#define reduc_umax_optab (&optab_table[OTI_reduc_umax])
#define reduc_smin_optab (&optab_table[OTI_reduc_smin])
#define reduc_umin_optab (&optab_table[OTI_reduc_umin])
#define reduc_splus_optab (&optab_table[OTI_reduc_splus])
#define reduc_uplus_optab (&optab_table[OTI_reduc_uplus])
#define ssum_widen_optab (optab_table[OTI_ssum_widen])
#define usum_widen_optab (optab_table[OTI_usum_widen])
#define sdot_prod_optab (optab_table[OTI_sdot_prod])
#define udot_prod_optab (optab_table[OTI_udot_prod])
#define ssum_widen_optab (&optab_table[OTI_ssum_widen])
#define usum_widen_optab (&optab_table[OTI_usum_widen])
#define sdot_prod_optab (&optab_table[OTI_sdot_prod])
#define udot_prod_optab (&optab_table[OTI_udot_prod])
#define vec_set_optab (optab_table[OTI_vec_set])
#define vec_extract_optab (optab_table[OTI_vec_extract])
#define vec_extract_even_optab (optab_table[OTI_vec_extract_even])
#define vec_extract_odd_optab (optab_table[OTI_vec_extract_odd])
#define vec_interleave_high_optab (optab_table[OTI_vec_interleave_high])
#define vec_interleave_low_optab (optab_table[OTI_vec_interleave_low])
#define vec_init_optab (optab_table[OTI_vec_init])
#define vec_shl_optab (optab_table[OTI_vec_shl])
#define vec_shr_optab (optab_table[OTI_vec_shr])
#define vec_realign_load_optab (optab_table[OTI_vec_realign_load])
#define vec_widen_umult_hi_optab (optab_table[OTI_vec_widen_umult_hi])
#define vec_widen_umult_lo_optab (optab_table[OTI_vec_widen_umult_lo])
#define vec_widen_smult_hi_optab (optab_table[OTI_vec_widen_smult_hi])
#define vec_widen_smult_lo_optab (optab_table[OTI_vec_widen_smult_lo])
#define vec_unpacks_hi_optab (optab_table[OTI_vec_unpacks_hi])
#define vec_unpacks_lo_optab (optab_table[OTI_vec_unpacks_lo])
#define vec_unpacku_hi_optab (optab_table[OTI_vec_unpacku_hi])
#define vec_unpacku_lo_optab (optab_table[OTI_vec_unpacku_lo])
#define vec_unpacks_float_hi_optab (optab_table[OTI_vec_unpacks_float_hi])
#define vec_unpacks_float_lo_optab (optab_table[OTI_vec_unpacks_float_lo])
#define vec_unpacku_float_hi_optab (optab_table[OTI_vec_unpacku_float_hi])
#define vec_unpacku_float_lo_optab (optab_table[OTI_vec_unpacku_float_lo])
#define vec_pack_trunc_optab (optab_table[OTI_vec_pack_trunc])
#define vec_pack_ssat_optab (optab_table[OTI_vec_pack_ssat])
#define vec_pack_usat_optab (optab_table[OTI_vec_pack_usat])
#define vec_pack_sfix_trunc_optab (optab_table[OTI_vec_pack_sfix_trunc])
#define vec_pack_ufix_trunc_optab (optab_table[OTI_vec_pack_ufix_trunc])
#define vec_set_optab (&optab_table[OTI_vec_set])
#define vec_extract_optab (&optab_table[OTI_vec_extract])
#define vec_extract_even_optab (&optab_table[OTI_vec_extract_even])
#define vec_extract_odd_optab (&optab_table[OTI_vec_extract_odd])
#define vec_interleave_high_optab (&optab_table[OTI_vec_interleave_high])
#define vec_interleave_low_optab (&optab_table[OTI_vec_interleave_low])
#define vec_init_optab (&optab_table[OTI_vec_init])
#define vec_shl_optab (&optab_table[OTI_vec_shl])
#define vec_shr_optab (&optab_table[OTI_vec_shr])
#define vec_realign_load_optab (&optab_table[OTI_vec_realign_load])
#define vec_widen_umult_hi_optab (&optab_table[OTI_vec_widen_umult_hi])
#define vec_widen_umult_lo_optab (&optab_table[OTI_vec_widen_umult_lo])
#define vec_widen_smult_hi_optab (&optab_table[OTI_vec_widen_smult_hi])
#define vec_widen_smult_lo_optab (&optab_table[OTI_vec_widen_smult_lo])
#define vec_unpacks_hi_optab (&optab_table[OTI_vec_unpacks_hi])
#define vec_unpacks_lo_optab (&optab_table[OTI_vec_unpacks_lo])
#define vec_unpacku_hi_optab (&optab_table[OTI_vec_unpacku_hi])
#define vec_unpacku_lo_optab (&optab_table[OTI_vec_unpacku_lo])
#define vec_unpacks_float_hi_optab (&optab_table[OTI_vec_unpacks_float_hi])
#define vec_unpacks_float_lo_optab (&optab_table[OTI_vec_unpacks_float_lo])
#define vec_unpacku_float_hi_optab (&optab_table[OTI_vec_unpacku_float_hi])
#define vec_unpacku_float_lo_optab (&optab_table[OTI_vec_unpacku_float_lo])
#define vec_pack_trunc_optab (&optab_table[OTI_vec_pack_trunc])
#define vec_pack_ssat_optab (&optab_table[OTI_vec_pack_ssat])
#define vec_pack_usat_optab (&optab_table[OTI_vec_pack_usat])
#define vec_pack_sfix_trunc_optab (&optab_table[OTI_vec_pack_sfix_trunc])
#define vec_pack_ufix_trunc_optab (&optab_table[OTI_vec_pack_ufix_trunc])
#define powi_optab (optab_table[OTI_powi])
#define powi_optab (&optab_table[OTI_powi])
/* Conversion optabs have their own table and indexes. */
enum convert_optab_index
@ -556,25 +556,25 @@ enum convert_optab_index
COI_MAX
};
extern convert_optab convert_optab_table[COI_MAX];
extern struct convert_optab convert_optab_table[COI_MAX];
#define sext_optab (convert_optab_table[COI_sext])
#define zext_optab (convert_optab_table[COI_zext])
#define trunc_optab (convert_optab_table[COI_trunc])
#define sfix_optab (convert_optab_table[COI_sfix])
#define ufix_optab (convert_optab_table[COI_ufix])
#define sfixtrunc_optab (convert_optab_table[COI_sfixtrunc])
#define ufixtrunc_optab (convert_optab_table[COI_ufixtrunc])
#define sfloat_optab (convert_optab_table[COI_sfloat])
#define ufloat_optab (convert_optab_table[COI_ufloat])
#define lrint_optab (convert_optab_table[COI_lrint])
#define lround_optab (convert_optab_table[COI_lround])
#define lfloor_optab (convert_optab_table[COI_lfloor])
#define lceil_optab (convert_optab_table[COI_lceil])
#define fract_optab (convert_optab_table[COI_fract])
#define fractuns_optab (convert_optab_table[COI_fractuns])
#define satfract_optab (convert_optab_table[COI_satfract])
#define satfractuns_optab (convert_optab_table[COI_satfractuns])
#define sext_optab (&convert_optab_table[COI_sext])
#define zext_optab (&convert_optab_table[COI_zext])
#define trunc_optab (&convert_optab_table[COI_trunc])
#define sfix_optab (&convert_optab_table[COI_sfix])
#define ufix_optab (&convert_optab_table[COI_ufix])
#define sfixtrunc_optab (&convert_optab_table[COI_sfixtrunc])
#define ufixtrunc_optab (&convert_optab_table[COI_ufixtrunc])
#define sfloat_optab (&convert_optab_table[COI_sfloat])
#define ufloat_optab (&convert_optab_table[COI_ufloat])
#define lrint_optab (&convert_optab_table[COI_lrint])
#define lround_optab (&convert_optab_table[COI_lround])
#define lfloor_optab (&convert_optab_table[COI_lfloor])
#define lceil_optab (&convert_optab_table[COI_lceil])
#define fract_optab (&convert_optab_table[COI_fract])
#define fractuns_optab (&convert_optab_table[COI_fractuns])
#define satfract_optab (&convert_optab_table[COI_satfract])
#define satfractuns_optab (&convert_optab_table[COI_satfractuns])
/* These arrays record the insn_code of insns that may be needed to
perform input and output reloads of special objects. They provide a