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