]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/gcn/gcn-protos.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / gcn / gcn-protos.h
index dc9331c445d72c2a56f0afba133e7e0d81b70daa..654da7922749fd0a272830016051690636f526cf 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2024 Free Software Foundation, Inc.
 
    This file is free software; you can redistribute it and/or modify it under
    the terms of the GNU General Public License as published by the Free
@@ -24,7 +24,14 @@ extern bool gcn_constant64_p (rtx);
 extern bool gcn_constant_p (rtx);
 extern rtx gcn_convert_mask_mode (rtx reg);
 extern unsigned int gcn_dwarf_register_number (unsigned int regno);
+extern rtx get_exec (int64_t);
+extern rtx get_exec (machine_mode mode);
 extern char * gcn_expand_dpp_shr_insn (machine_mode, const char *, int, int);
+extern char * gcn_expand_dpp_swap_pairs_insn (machine_mode, const char *, int);
+extern char * gcn_expand_dpp_distribute_even_insn (machine_mode, const char *,
+                                                  int unspec);
+extern char * gcn_expand_dpp_distribute_odd_insn (machine_mode, const char *,
+                                                 int unspec);
 extern void gcn_expand_epilogue ();
 extern rtx gcn_expand_scaled_offsets (addr_space_t as, rtx base, rtx offsets,
                                      rtx scale, bool unsigned_p, rtx exec);
@@ -34,13 +41,13 @@ extern rtx gcn_expand_scalar_to_vector_address (machine_mode, rtx, rtx, rtx);
 extern void gcn_expand_vector_init (rtx, rtx);
 extern bool gcn_flat_address_p (rtx, machine_mode);
 extern bool gcn_fp_constant_p (rtx, bool);
-extern rtx gcn_full_exec ();
-extern rtx gcn_full_exec_reg ();
 extern rtx gcn_gen_undef (machine_mode);
 extern bool gcn_global_address_p (rtx);
-extern tree gcn_goacc_adjust_propagation_record (tree record_type, bool sender,
-                                                const char *name);
-extern void gcn_goacc_adjust_gangprivate_decl (tree var);
+extern tree gcn_goacc_adjust_private_decl (location_t, tree var, int level);
+extern tree gcn_goacc_create_worker_broadcast_record (tree record_type,
+                                                     bool sender,
+                                                     const char *name,
+                                                     unsigned HOST_WIDE_INT offset);
 extern void gcn_goacc_reduction (gcall *call);
 extern bool gcn_hard_regno_rename_ok (unsigned int from_reg,
                                      unsigned int to_reg);
@@ -52,6 +59,7 @@ extern int gcn_hard_regno_nregs (int regno, machine_mode mode);
 extern void gcn_hsa_declare_function_name (FILE *file, const char *name,
                                           tree decl);
 extern HOST_WIDE_INT gcn_initial_elimination_offset (int, int);
+extern REAL_VALUE_TYPE gcn_dconst1over2pi (void);
 extern bool gcn_inline_constant64_p (rtx, bool);
 extern bool gcn_inline_constant_p (rtx);
 extern int gcn_inline_fp_constant_p (rtx, bool);
@@ -64,16 +72,15 @@ extern rtx gcn_operand_part (machine_mode, rtx, int);
 extern bool gcn_regno_mode_code_ok_for_base_p (int, machine_mode,
                                               addr_space_t, int, int);
 extern reg_class gcn_regno_reg_class (int regno);
-extern rtx gcn_scalar_exec ();
-extern rtx gcn_scalar_exec_reg ();
 extern bool gcn_scalar_flat_address_p (rtx);
 extern bool gcn_scalar_flat_mem_p (rtx);
 extern bool gcn_sgpr_move_p (rtx, rtx);
+extern bool gcn_stepped_zero_int_parallel_p (rtx op, int step);
 extern bool gcn_valid_move_p (machine_mode, rtx, rtx);
 extern rtx gcn_vec_constant (machine_mode, int);
 extern rtx gcn_vec_constant (machine_mode, rtx);
 extern bool gcn_vgpr_move_p (rtx, rtx);
-extern void print_operand_address (FILE *file, register rtx addr);
+extern void print_operand_address (FILE *file, rtx addr);
 extern void print_operand (FILE *file, rtx x, int code);
 extern bool regno_ok_for_index_p (int);
 
@@ -102,9 +109,11 @@ extern gimple_opt_pass *make_pass_omp_gcn (gcc::context *ctxt);
 inline bool
 vgpr_1reg_mode_p (machine_mode mode)
 {
-  return (mode == SImode || mode == SFmode || mode == HImode || mode == QImode
-         || mode == V64QImode || mode == V64HImode || mode == V64SImode
-         || mode == V64HFmode || mode == V64SFmode || mode == BImode);
+  if (VECTOR_MODE_P (mode))
+    mode = GET_MODE_INNER (mode);
+
+  return (mode == SImode || mode == SFmode || mode == HImode || mode == HFmode
+         || mode == QImode || mode == BImode);
 }
 
 /* Return true if MODE is valid for 1 SGPR register.  */
@@ -121,8 +130,21 @@ sgpr_1reg_mode_p (machine_mode mode)
 inline bool
 vgpr_2reg_mode_p (machine_mode mode)
 {
-  return (mode == DImode || mode == DFmode
-         || mode == V64DImode || mode == V64DFmode);
+  if (VECTOR_MODE_P (mode))
+    mode = GET_MODE_INNER (mode);
+
+  return (mode == DImode || mode == DFmode);
+}
+
+/* Return true if MODE is valid for four VGPR registers.  */
+
+inline bool
+vgpr_4reg_mode_p (machine_mode mode)
+{
+  if (VECTOR_MODE_P (mode))
+    mode = GET_MODE_INNER (mode);
+
+  return (mode == TImode);
 }
 
 /* Return true if MODE can be handled directly by VGPR operations.  */
@@ -130,9 +152,7 @@ vgpr_2reg_mode_p (machine_mode mode)
 inline bool
 vgpr_vector_mode_p (machine_mode mode)
 {
-  return (mode == V64QImode || mode == V64HImode
-         || mode == V64SImode || mode == V64DImode
-         || mode == V64HFmode || mode == V64SFmode || mode == V64DFmode);
+  return VECTOR_MODE_P (mode);
 }