1 1.7 mrg /* Prototypes for exported functions defined in nvptx.cc. 2 1.7 mrg Copyright (C) 2014-2022 Free Software Foundation, Inc. 3 1.1 mrg Contributed by Bernd Schmidt <bernds (at) codesourcery.com> 4 1.1 mrg 5 1.1 mrg This file is part of GCC. 6 1.1 mrg 7 1.1 mrg GCC is free software; you can redistribute it and/or modify it 8 1.1 mrg under the terms of the GNU General Public License as published 9 1.1 mrg by the Free Software Foundation; either version 3, or (at your 10 1.1 mrg option) any later version. 11 1.1 mrg 12 1.1 mrg GCC is distributed in the hope that it will be useful, but WITHOUT 13 1.1 mrg ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 1.1 mrg or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15 1.1 mrg License for more details. 16 1.1 mrg 17 1.1 mrg You should have received a copy of the GNU General Public License 18 1.1 mrg along with GCC; see the file COPYING3. If not see 19 1.1 mrg <http://www.gnu.org/licenses/>. */ 20 1.1 mrg 21 1.1 mrg #ifndef GCC_NVPTX_PROTOS_H 22 1.1 mrg #define GCC_NVPTX_PROTOS_H 23 1.1 mrg 24 1.3 mrg /* The kind of shuffe instruction. */ 25 1.3 mrg enum nvptx_shuffle_kind 26 1.3 mrg { 27 1.3 mrg SHUFFLE_UP, 28 1.3 mrg SHUFFLE_DOWN, 29 1.3 mrg SHUFFLE_BFLY, 30 1.3 mrg SHUFFLE_IDX, 31 1.3 mrg SHUFFLE_MAX 32 1.3 mrg }; 33 1.3 mrg 34 1.1 mrg extern void nvptx_declare_function_name (FILE *, const char *, const_tree decl); 35 1.1 mrg extern void nvptx_declare_object_name (FILE *file, const char *name, 36 1.1 mrg const_tree decl); 37 1.3 mrg extern void nvptx_output_aligned_decl (FILE *file, const char *name, 38 1.3 mrg const_tree decl, 39 1.3 mrg HOST_WIDE_INT size, unsigned align); 40 1.1 mrg extern void nvptx_function_end (FILE *); 41 1.1 mrg extern void nvptx_output_skip (FILE *, unsigned HOST_WIDE_INT); 42 1.1 mrg extern void nvptx_output_ascii (FILE *, const char *, unsigned HOST_WIDE_INT); 43 1.7 mrg extern void nvptx_cpu_cpp_builtins (void); 44 1.1 mrg extern void nvptx_register_pragmas (void); 45 1.4 mrg extern unsigned int nvptx_data_alignment (const_tree, unsigned int); 46 1.7 mrg extern void nvptx_asm_output_def_from_decls (FILE *, tree, tree); 47 1.7 mrg extern unsigned int ptx_version_to_number (enum ptx_version, bool); 48 1.1 mrg 49 1.1 mrg #ifdef RTX_CODE 50 1.3 mrg extern void nvptx_expand_oacc_fork (unsigned); 51 1.3 mrg extern void nvptx_expand_oacc_join (unsigned); 52 1.1 mrg extern void nvptx_expand_call (rtx, rtx); 53 1.3 mrg extern rtx nvptx_gen_shuffle (rtx, rtx, rtx, nvptx_shuffle_kind); 54 1.1 mrg extern rtx nvptx_expand_compare (rtx); 55 1.1 mrg extern const char *nvptx_ptx_type_from_mode (machine_mode, bool); 56 1.3 mrg extern const char *nvptx_output_mov_insn (rtx, rtx); 57 1.1 mrg extern const char *nvptx_output_call_insn (rtx_insn *, rtx, rtx); 58 1.1 mrg extern const char *nvptx_output_return (void); 59 1.3 mrg extern const char *nvptx_output_set_softstack (unsigned); 60 1.3 mrg extern const char *nvptx_output_simt_enter (rtx, rtx, rtx); 61 1.3 mrg extern const char *nvptx_output_simt_exit (rtx); 62 1.5 mrg extern const char *nvptx_output_red_partition (rtx, rtx); 63 1.7 mrg extern const char *nvptx_output_atomic_insn (const char *, rtx *, int, int); 64 1.7 mrg extern bool nvptx_mem_local_p (rtx); 65 1.7 mrg extern bool nvptx_mem_maybe_shared_p (const_rtx); 66 1.1 mrg #endif 67 1.1 mrg #endif 68