aboutsummaryrefslogtreecommitdiff
path: root/libgupc/smp/upc_accessg.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgupc/smp/upc_accessg.c')
-rw-r--r--libgupc/smp/upc_accessg.c557
1 files changed, 557 insertions, 0 deletions
diff --git a/libgupc/smp/upc_accessg.c b/libgupc/smp/upc_accessg.c
new file mode 100644
index 00000000000..e22357e6c8b
--- /dev/null
+++ b/libgupc/smp/upc_accessg.c
@@ -0,0 +1,557 @@
+/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+ This file is part of the UPC runtime library.
+ Written by Gary Funck <gary@intrepid.com>
+ and Nenad Vukicevic <nenad@intrepid.com>
+
+This file is part of GCC.
+
+GCC 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 Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+
+#include "upc_config.h"
+#include "upc_sysdep.h"
+#include "upc_defs.h"
+#include "upc_access.h"
+#include "upc_lib.h"
+#include "gasp_upc.h"
+#include "upc_pupc.h"
+
+/* relaxed accesses (profiled) */
+
+u_intQI_t
+__getgqi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intQI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getqi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+u_intHI_t
+__getghi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intHI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __gethi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+u_intSI_t
+__getgsi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intSI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+u_intDI_t
+__getgdi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intDI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getdi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+#if GUPCR_TARGET64
+u_intTI_t
+__getgti3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intTI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getti2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+#endif
+
+float
+__getgsf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ float val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+double
+__getgdf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ double val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getdf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+long double
+__getgtf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ long double val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __gettf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+long double
+__getgxf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ long double val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getxf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+void
+__getgblk5 (void *dest, upc_shared_ptr_t src, size_t n, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, dest, &src, n);
+ __getblk3 (dest, src, n);
+ p_end (GASP_UPC_GET, 1, dest, &src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgqi4 (upc_shared_ptr_t p, u_intQI_t v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putqi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putghi4 (upc_shared_ptr_t p, u_intHI_t v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __puthi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgsi4 (upc_shared_ptr_t p, u_intSI_t v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgdi4 (upc_shared_ptr_t p, u_intDI_t v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putdi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+#if GUPCR_TARGET64
+void
+__putgti4 (upc_shared_ptr_t p, u_intTI_t v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putti2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+#endif
+
+void
+__putgsf4 (upc_shared_ptr_t p, float v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgdf4 (upc_shared_ptr_t p, double v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putdf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgtf4 (upc_shared_ptr_t p, long double v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __puttf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgxf4 (upc_shared_ptr_t p, long double v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putxf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putgblk5 (upc_shared_ptr_t dest, void *src, size_t n, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &dest, src, n);
+ __putblk3 (dest, src, n);
+ p_end (GASP_UPC_PUT, 1, &dest, src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__copygblk5 (upc_shared_ptr_t dest, upc_shared_ptr_t src, size_t n,
+ const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_MEMCPY, &dest, &src, n);
+ __copyblk3 (dest, src, n);
+ p_end (GASP_UPC_MEMCPY, &dest, &src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+/* strict accesses (profiled) */
+
+u_intQI_t
+__getsgqi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intQI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsqi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+u_intHI_t
+__getsghi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intHI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getshi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+u_intSI_t
+__getsgsi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intSI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getssi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+u_intDI_t
+__getsgdi3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intDI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsdi2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+#if GUPCR_TARGET64
+u_intTI_t
+__getsgti3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ u_intTI_t val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsti2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+#endif
+
+float
+__getsgsf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ float val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getssf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+double
+__getsgdf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ double val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsdf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+long double
+__getsgtf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ long double val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getstf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+long double
+__getsgxf3 (upc_shared_ptr_t p, const char *filename, int linenum)
+{
+ long double val;
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ val = __getsxf2 (p);
+ p_end (GASP_UPC_GET, 1, &val, &p, sizeof (val));
+ GUPCR_CLEAR_ERR_LOC();
+ return val;
+}
+
+void
+__getsgblk5 (void *dest, upc_shared_ptr_t src, size_t n, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_GET, 1, dest, &src, n);
+ __getblk3 (dest, src, n);
+ p_end (GASP_UPC_GET, 1, dest, &src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgqi4 (upc_shared_ptr_t p, u_intQI_t v, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsqi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsghi4 (upc_shared_ptr_t p, u_intHI_t v, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putshi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgsi4 (upc_shared_ptr_t p, u_intSI_t v, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putssi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgdi4 (upc_shared_ptr_t p, u_intDI_t v, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsdi2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+#if GUPCR_TARGET64
+void
+__putsgti4 (upc_shared_ptr_t p, u_intTI_t v, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsti2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+#endif
+
+void
+__putsgsf4 (upc_shared_ptr_t p, float v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putssf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgdf4 (upc_shared_ptr_t p, double v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsdf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgtf4 (upc_shared_ptr_t p, long double v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putstf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgxf4 (upc_shared_ptr_t p, long double v, const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ __putsxf2 (p, v);
+ p_end (GASP_UPC_PUT, 1, &p, &v, sizeof (v));
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__putsgblk5 (upc_shared_ptr_t dest, void *src, size_t n, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_PUT, 0, &dest, src, n);
+ __putsblk3 (dest, src, n);
+ p_end (GASP_UPC_PUT, 0, &dest, src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+__copysgblk5 (upc_shared_ptr_t dest, upc_shared_ptr_t src, size_t n,
+ const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_MEMCPY, &dest, &src, n);
+ __copysblk3 (dest, src, n);
+ p_end (GASP_UPC_MEMCPY, &dest, &src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+upc_memcpyg (upc_shared_ptr_t dest, upc_shared_ptr_t src, size_t n,
+ const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_MEMCPY, &dest, &src, n);
+ upc_memcpy (dest, src, n);
+ p_end (GASP_UPC_MEMCPY, &dest, &src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+upc_memgetg (void *dest, upc_shared_ptr_t src, size_t n, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_MEMGET, &dest, &src, n);
+ upc_memget (dest, src, n);
+ p_end (GASP_UPC_MEMGET, &dest, &src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+upc_memputg (upc_shared_ptr_t dest, const void *src, size_t n,
+ const char *filename, int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_MEMPUT, &dest, src, n);
+ upc_memput (dest, src, n);
+ p_end (GASP_UPC_MEMPUT, &dest, src, n);
+ GUPCR_CLEAR_ERR_LOC();
+}
+
+void
+upc_memsetg (upc_shared_ptr_t dest, int c, size_t n, const char *filename,
+ int linenum)
+{
+ GUPCR_SET_ERR_LOC();
+ p_start (GASP_UPC_MEMSET, &dest, c, n);
+ upc_memset (dest, c, n);
+ p_end (GASP_UPC_MEMSET, &dest, c, n);
+ GUPCR_CLEAR_ERR_LOC();
+}