/* Generate code to initialize optabs from machine description.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
"udivmod_optab->handlers[$A].insn_code = CODE_FOR_$(udivmod$a4$)",
"smod_optab->handlers[$A].insn_code = CODE_FOR_$(mod$a3$)",
"umod_optab->handlers[$A].insn_code = CODE_FOR_$(umod$a3$)",
+ "fmod_optab->handlers[$A].insn_code = CODE_FOR_$(fmod$a3$)",
+ "drem_optab->handlers[$A].insn_code = CODE_FOR_$(drem$a3$)",
"ftrunc_optab->handlers[$A].insn_code = CODE_FOR_$(ftrunc$F$a2$)",
"and_optab->handlers[$A].insn_code = CODE_FOR_$(and$a3$)",
"ior_optab->handlers[$A].insn_code = CODE_FOR_$(ior$a3$)",
"round_optab->handlers[$A].insn_code = CODE_FOR_$(round$a2$)",
"trunc_optab->handlers[$A].insn_code = CODE_FOR_$(trunc$a2$)",
"nearbyint_optab->handlers[$A].insn_code = CODE_FOR_$(nearbyint$a2$)",
+ "sincos_optab->handlers[$A].insn_code = CODE_FOR_$(sincos$a3$)",
"sin_optab->handlers[$A].insn_code = CODE_FOR_$(sin$a2$)",
+ "asin_optab->handlers[$A].insn_code = CODE_FOR_$(asin$a2$)",
"cos_optab->handlers[$A].insn_code = CODE_FOR_$(cos$a2$)",
+ "acos_optab->handlers[$A].insn_code = CODE_FOR_$(acos$a2$)",
"exp_optab->handlers[$A].insn_code = CODE_FOR_$(exp$a2$)",
+ "exp10_optab->handlers[$A].insn_code = CODE_FOR_$(exp10$a2$)",
+ "exp2_optab->handlers[$A].insn_code = CODE_FOR_$(exp2$a2$)",
+ "expm1_optab->handlers[$A].insn_code = CODE_FOR_$(expm1$a2$)",
+ "logb_optab->handlers[$A].insn_code = CODE_FOR_$(logb$a2$)",
+ "ilogb_optab->handlers[$A].insn_code = CODE_FOR_$(ilogb$a2$)",
"log_optab->handlers[$A].insn_code = CODE_FOR_$(log$a2$)",
+ "log10_optab->handlers[$A].insn_code = CODE_FOR_$(log10$a2$)",
+ "log2_optab->handlers[$A].insn_code = CODE_FOR_$(log2$a2$)",
+ "log1p_optab->handlers[$A].insn_code = CODE_FOR_$(log1p$a2$)",
"tan_optab->handlers[$A].insn_code = CODE_FOR_$(tan$a2$)",
"atan_optab->handlers[$A].insn_code = CODE_FOR_$(atan$a2$)",
"strlen_optab->handlers[$A].insn_code = CODE_FOR_$(strlen$a$)",
"reload_in_optab[$A] = CODE_FOR_$(reload_in$a$)",
"reload_out_optab[$A] = CODE_FOR_$(reload_out$a$)",
"movstr_optab[$A] = CODE_FOR_$(movstr$a$)",
- "clrstr_optab[$A] = CODE_FOR_$(clrstr$a$)" };
+ "clrstr_optab[$A] = CODE_FOR_$(clrstr$a$)",
+ "cmpstr_optab[$A] = CODE_FOR_$(cmpstr$a$)",
+ "cmpmem_optab[$A] = CODE_FOR_$(cmpmem$a$)",
+ "vec_set_optab->handlers[$A].insn_code = CODE_FOR_$(vec_set$a$)",
+ "vec_extract_optab->handlers[$A].insn_code = CODE_FOR_$(vec_extract$a$)",
+ "vec_init_optab->handlers[$A].insn_code = CODE_FOR_$(vec_init$a$)" };
static void gen_insn (rtx);
/* We have to be concerned about matching "gt" and
missing "gtu", e.g., so verify we have reached the
end of thing we are to match. */
- if (*p == 0 && *q == 0 && GET_RTX_CLASS(op) == '<')
+ if (*p == 0 && *q == 0
+ && (GET_RTX_CLASS (op) == RTX_COMPARE
+ || GET_RTX_CLASS (op) == RTX_COMM_COMPARE))
break;
}
case 'b':
/* This loop will stop at the first prefix match, so
look through the modes in reverse order, in case
- EXTRA_CC_MODES was used and CC is a prefix of the
+ there are extra CC modes and CC is a prefix of the
CC modes (as it should be). */
for (i = (MAX_MACHINE_MODE) - 1; i >= 0; i--)
{
printf ("void\ninit_all_optabs (void)\n{\n");
+ puts ("\
+#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC\n\
+ int i, j;\n\
+#endif\n");
+
/* Read the machine description. */
while (1)