1/* Mapping from optabs to underlying library functions
2 Copyright (C) 2001-2017 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 3, or (at your option)
9any later version.
10
11GCC is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
19
20#ifndef GCC_OPTABS_LIBFUNCS_H
21#define GCC_OPTABS_LIBFUNCS_H
22
23#include "insn-opinit.h"
24
25rtx convert_optab_libfunc (convert_optab, machine_mode, machine_mode);
26rtx optab_libfunc (optab, machine_mode);
27
28void gen_int_libfunc (optab, const char *, char, machine_mode);
29void gen_fp_libfunc (optab, const char *, char, machine_mode);
30void gen_fixed_libfunc (optab, const char *, char, machine_mode);
31void gen_signed_fixed_libfunc (optab, const char *, char, machine_mode);
32void gen_unsigned_fixed_libfunc (optab, const char *, char, machine_mode);
33void gen_int_fp_libfunc (optab, const char *, char, machine_mode);
34void gen_intv_fp_libfunc (optab, const char *, char, machine_mode);
35void gen_int_fp_fixed_libfunc (optab, const char *, char, machine_mode);
36void gen_int_fp_signed_fixed_libfunc (optab, const char *, char, machine_mode);
37void gen_int_fixed_libfunc (optab, const char *, char, machine_mode);
38void gen_int_signed_fixed_libfunc (optab, const char *, char, machine_mode);
39void gen_int_unsigned_fixed_libfunc (optab, const char *, char, machine_mode);
40
41void gen_interclass_conv_libfunc (convert_optab, const char *,
42 machine_mode, machine_mode);
43void gen_int_to_fp_conv_libfunc (convert_optab, const char *,
44 machine_mode, machine_mode);
45void gen_ufloat_conv_libfunc (convert_optab, const char *,
46 machine_mode, machine_mode);
47void gen_int_to_fp_nondecimal_conv_libfunc (convert_optab, const char *,
48 machine_mode, machine_mode);
49void gen_fp_to_int_conv_libfunc (convert_optab, const char *,
50 machine_mode, machine_mode);
51void gen_intraclass_conv_libfunc (convert_optab, const char *,
52 machine_mode, machine_mode);
53void gen_trunc_conv_libfunc (convert_optab, const char *,
54 machine_mode, machine_mode);
55void gen_extend_conv_libfunc (convert_optab, const char *,
56 machine_mode, machine_mode);
57void gen_fract_conv_libfunc (convert_optab, const char *,
58 machine_mode, machine_mode);
59void gen_fractuns_conv_libfunc (convert_optab, const char *,
60 machine_mode, machine_mode);
61void gen_satfract_conv_libfunc (convert_optab, const char *,
62 machine_mode, machine_mode);
63void gen_satfractuns_conv_libfunc (convert_optab, const char *,
64 machine_mode, machine_mode);
65
66tree build_libfunc_function (const char *);
67rtx init_one_libfunc (const char *);
68rtx set_user_assembler_libfunc (const char *, const char *);
69
70void set_optab_libfunc (optab, machine_mode, const char *);
71void set_conv_libfunc (convert_optab, machine_mode,
72 machine_mode, const char *);
73
74void init_optabs (void);
75void init_sync_libfuncs (int max);
76
77#endif
78