Re: [Gc] [PATCH] Implement the basic atomic primitives for the tilegx/tilepro cpus.
Chris Metcalf <cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]> Wed, 11 May 2016 20:05:41 -0400
| Newsgroups | gmane.comp.programming.garbage-collection.boehmgc |
|---|---|
| Message-ID | <[email protected]> |
--===============1771494747== Content-Type: multipart/alternative; boundary="------------7B96DE75CAA4D511084F70CC" --------------7B96DE75CAA4D511084F70CC Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Looks good. Thanks! Chris On 5/11/2016 6:49 PM, Ivan Maidanski wrote: > Hello Chris, > > I've committed these 2 patches (with small modifications) to master: > * https://github.com/ivmai/bdwgc/commit/1240658b92c0827ace6f9ac52b3425070eed948f > * https://github.com/ivmai/libatomic_ops/commit/04a286421802a503b58d804d0d673dd5a28c9e9b > > Regards, > Ivan > > Tue, 3 May 2016, 1:48 +03:00 from Chris Metcalf <cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]>: > > I tested with gcc 4.4 and 4.8. My rationale for including the earlier compiler is that it is the shipped compiler with CentOS 6, which we currently support. > > On 5/2/2016 6:42 PM, Ivan Maidanski wrote: >> Hello, >> >> Which gcc/clang have you tested with? >> Can we remove everything except include generic.h from tile.h? >> >> Regards, >> Ivan >> >> >> Mon, 2 May 2016, 18:41 +03:00 from Chris Metcalf <cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]> <mailto:cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]>: >> >> * src/Makefile.am (nobase_private_HEADERS): Add tile.h. >> * src/atomic_ops.h: Include tile.h file. >> * src/atomic_ops/sysdeps/gcc/tile.h: New file. >> --- >> For libatomic_ops: >> >> This patch is an updated version of the CentOS 6 patch that we have >> been carrying as part of our own CentOS-like distribution since 2012. >> >> src/Makefile.am | 1 + >> src/atomic_ops.h | 3 ++ >> src/atomic_ops/sysdeps/gcc/tile.h | 52 +++++++++++++++++++++++++++++++++++++ >> 3 files changed, 56 insertions(+), 0 deletions(-) >> create mode 100644 src/atomic_ops/sysdeps/gcc/tile.h >> >> diff --git a/src/Makefile.am b/src/Makefile.am >> index d463427..8971370 100644 >> --- a/src/Makefile.am >> +++ b/src/Makefile.am >> @@ -84,6 +84,7 @@ nobase_private_HEADERS = atomic_ops/ao_version.h \ >> atomic_ops/sysdeps/gcc/s390.h \ >> atomic_ops/sysdeps/gcc/sh.h \ >> atomic_ops/sysdeps/gcc/sparc.h \ >> + atomic_ops/sysdeps/gcc/tile.h \ >> atomic_ops/sysdeps/gcc/x86.h \ >> \ >> atomic_ops/sysdeps/hpc/hppa.h \ >> diff --git a/src/atomic_ops.h b/src/atomic_ops.h >> index ec02ba4..59f04ef 100644 >> --- a/src/atomic_ops.h >> +++ b/src/atomic_ops.h >> @@ -294,6 +294,9 @@ >> # if defined(__hexagon__) >> # include "atomic_ops/sysdeps/gcc/hexagon.h" >> # endif >> +# if defined(__tile__) >> +# include "atomic_ops/sysdeps/gcc/tile.h" >> +# endif /* __tile__ */ >> #endif /* __GNUC__ && !AO_USE_PTHREAD_DEFS */ >> >> #if (defined(__IBMC__) || defined(__IBMCPP__)) && !defined(__GNUC__) \ >> diff --git a/src/atomic_ops/sysdeps/gcc/tile.h b/src/atomic_ops/sysdeps/gcc/tile.h >> new file mode 100644 >> index 0000000..28dc083 >> --- /dev/null >> +++ b/src/atomic_ops/sysdeps/gcc/tile.h >> @@ -0,0 +1,52 @@ >> +/* >> + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED >> + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. >> + * >> + * Permission is hereby granted to use or copy this program >> + * for any purpose, provided the above notices are retained on all copies. >> + * Permission to modify the code and to distribute modified code is granted, >> + * provided the above notices are retained, and a notice that the code was >> + * modified is included with the above copyright notice. >> + */ >> + >> +/* Minimal support for tile. */ >> + >> +#if (((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) \ >> + || __clang_major__ > 3 \ >> + || (__clang_major__ == 3 && __clang_minor__ >= 4)) \ >> + && !defined(AO_DISABLE_GCC_ATOMICS)) >> + >> +# include "generic.h" >> + >> +#else /* AO_DISABLE_GCC_ATOMICS */ >> + >> +#include "../all_atomic_load_store.h" >> + >> +#include "../test_and_set_t_is_ao_t.h" >> + >> + >> +AO_INLINE void >> +AO_nop_full() >> +{ >> + __sync_synchronize(); >> +} >> +#define AO_HAVE_nop_full >> + >> + >> +AO_INLINE AO_t >> +AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) >> +{ >> + return __sync_fetch_and_add(p, incr); >> +} >> +#define AO_HAVE_fetch_and_add_full >> + >> + >> +AO_INLINE int >> +AO_compare_and_swap_full(volatile AO_t *addr, >> + AO_t old, AO_t new_val) >> +{ >> + return __sync_val_compare_and_swap(addr, old, new_val) == old; >> +} >> +#define AO_HAVE_compare_and_swap_full >> + >> +#endif >> -- >> 1.7.1 >> _______________________________________________ >> bdwgc mailing list >> [email protected] <//e.mail.ru/compose/?mailto=mailto%[email protected]> >> https://lists.opendylan.org/mailman/listinfo/bdwgc >> >> > > -- > Chris Metcalf, Mellanox Technologies > http://www.mellanox.com > > _______________________________________________ > bdwgc mailing list > [email protected] <mailto:[email protected]> > https://lists.opendylan.org/mailman/listinfo/bdwgc > > -- Chris Metcalf, Mellanox Technologies http://www.mellanox.com --------------7B96DE75CAA4D511084F70CC Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Ty= pe"> </head> <body bgcolor=3D"#FFFFFF" text=3D"#000000"> Looks good. Thanks!<br> Chris<br> <br> <div class=3D"moz-cite-prefix">On 5/11/2016 6:49 PM, Ivan Maidanski wrote:<br> </div> <blockquote cite=3D"mid:[email protected]" type=3D"cite"> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Du= tf-8"> Hello Chris,<br> <br> I've committed these 2 patches (with small modifications) to master:<br> *=C2=A0<a moz-do-not-send=3D"true" href=3D"https://github.com/ivmai/bdwgc/commit/1240658b92c0827ace6f9ac52b3= 425070eed948f">https://github.com/ivmai/bdwgc/commit/1240658b92c0827ace6f= 9ac52b3425070eed948f</a>=C2=A0<br> *=C2=A0<a moz-do-not-send=3D"true" href=3D"https://github.com/ivmai/libatomic_ops/commit/04a286421802a503b58= d804d0d673dd5a28c9e9b">https://github.com/ivmai/libatomic_ops/commit/04a2= 86421802a503b58d804d0d673dd5a28c9e9b</a>=C2=A0<br> <br> Regards,<br> Ivan<br> <br> <blockquote style=3D"border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;"> Tue, 3 May 2016, 1:48 +03:00 from Chris Metcalf <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:cmetcal= [email protected]"><cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]></a>:<br> <br> <div id=3D""> <div class=3D"js-helper js-readmsg-msg"> <style type=3D"text/css"></style> <div> <base target=3D"_self" href=3D"https://e.mail.ru/"> <div id=3D"style_14622293410000000178_BODY"> <p>I tested with gcc 4.4 and 4.8.=C2=A0 My rationale for including the earlier compiler is that it is the shipped compiler with CentOS 6, which we currently support.<br> </p> On 5/2/2016 6:42 PM, Ivan Maidanski wrote:<br> <blockquote cite=3D"mid:[email protected]" type=3D"cite"> Hello,<br> <br> Which gcc/clang have you tested with?<br> Can we remove everything except include generic.h=C2=A0= from tile.h?<br> <br> Regards,<br> Ivan<br> <br> <br> <blockquote style=3D"border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px;"> Mon, 2 May 2016, 18:41 +03:00 from Chris Metcalf <a moz-do-not-send=3D"true" href=3D"mailto:cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]"><a class=3D"m= oz-txt-link-rfc2396E" href=3D"mailto:cmetcalf-VPRAkNaXOzVWk0Htik3J/[email protected]"><cmetcalf@= mellanox.com></a></a>:<br> <br> <div> <div> <div> <div>* src/Makefile.am (nobase_private_HEADERS): Add tile.h.<br> * src/atomic_ops.h: Include tile.h file.<br> * src/atomic_ops/sysdeps/gcc/tile.h: New file.<br> ---<br> For libatomic_ops:<br> <br> This patch is an updated version of the CentOS 6 patch that we have<br> been carrying as part of our own CentOS-like distribution since 2012.<br> <br> =C2=A0src/Makefile.am | 1 +<br> =C2=A0src/atomic_ops.h | 3 ++<br> =C2=A0src/atomic_ops/sysdeps/gcc/tile.h | 52 +++++++++++++++++++++++++++++++++++++<br> =C2=A03 files changed, 56 insertions(+), 0 deletions(-)<br> =C2=A0create mode 100644 src/atomic_ops/sysdeps/gcc/tile.h<br> <br> diff --git a/src/Makefile.am b/src/Makefile.am<br> index d463427..8971370 100644<br> --- a/src/Makefile.am<br> +++ b/src/Makefile.am<br> @@ -84,6 +84,7 @@ nobase_private_HEADERS =3D atomic_ops/ao_version.h \<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0atomic_ops/sysdeps/gcc/s390.h \<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0atomic_ops/sysdeps/gcc/sh.h \<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0atomic_ops/sysdeps/gcc/sparc.h \<br> + atomic_ops/sysdeps/gcc/tile.h \<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0atomic_ops/sysdeps/gcc/x86.h \<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0\<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0atomic_ops/sysdeps/hpc/hppa.h \<br> diff --git a/src/atomic_ops.h b/src/atomic_ops.h<br> index ec02ba4..59f04ef 100644<br> --- a/src/atomic_ops.h<br> +++ b/src/atomic_ops.h<br> @@ -294,6 +294,9 @@<br> =C2=A0# if defined(__hexagon__)<br> =C2=A0# include "atomic_ops/sysdeps/gcc/hexagon.h"<br> =C2=A0# endif<br> +# if defined(__tile__)<br> +# include "atomic_ops/sysdeps/gcc/tile.h"<br= > +# endif /* __tile__ */<br> =C2=A0#endif /* __GNUC__ && !AO_USE_PTHREAD_DEFS */<br> =C2=A0<br> =C2=A0#if (defined(__IBMC__) || defined(__IBMCPP__)) && !defined(__GNUC__) \<br> diff --git a/src/atomic_ops/sysdeps/gcc/tile.h b/src/atomic_ops/sysdeps/gcc/tile.h<br> new file mode 100644<br> index 0000000..28dc083<br> --- /dev/null<br> +++ b/src/atomic_ops/sysdeps/gcc/tile.h<br> @@ -0,0 +1,52 @@<br> +/*<br> + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED<br> + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.<= br> + *<br> + * Permission is hereby granted to use or copy this program<br> + * for any purpose, provided the above notices are retained on all copies.<br> + * Permission to modify the code and to distribute modified code is granted,<br> + * provided the above notices are retained, and a notice that the code was<br> + * modified is included with the above copyright notice.<br> + */<br> +<br> +/* Minimal support for tile. */<br> +<br> +#if (((__GNUC__ > 4 || (__GNUC__ =3D=3D 4 && __GNUC_MINOR__ >=3D 8)) \<br> + || __clang_major__ > 3 \<br> + || (__clang_major__ =3D=3D 3 && __clang_minor__ >=3D 4)) \<br> + && !defined(AO_DISABLE_GCC_ATOMICS))<br> +<br> +# include "generic.h"<br> +<br> +#else /* AO_DISABLE_GCC_ATOMICS */<br> +<br> +#include "../all_atomic_load_store.h"<br> +<br> +#include "../test_and_set_t_is_ao_t.h"<br> +<br> +<br> +AO_INLINE void<br> +AO_nop_full()<br> +{<br> + __sync_synchronize();<br> +}<br> +#define AO_HAVE_nop_full<br> +<br> +<br> +AO_INLINE AO_t<br> +AO_fetch_and_add_full (volatile AO_t *p, AO_t incr)<br> +{<br> + return __sync_fetch_and_add(p, incr);<br> +}<br> +#define AO_HAVE_fetch_and_add_full<br> +<br> +<br> +AO_INLINE int<br> +AO_compare_and_swap_full(volatile AO_t *addr,<br> + AO_t old, AO_t new_val) <br> +{<br> + return __sync_val_compare_and_swap(addr, old, new_val) =3D=3D old;<br> +}<br> +#define AO_HAVE_compare_and_swap_full<br> +<br> +#endif<br> -- <br> 1.7.1<br> _______________________________________________<br> bdwgc mailing list<br> <a moz-do-not-send=3D"true" href=3D"//e.mail.ru/compose/?mailto=3Dmailt= o%[email protected]" target=3D"_blank">[email protected]= </a><br> <a moz-do-not-send=3D"true" href=3D"https://lists.opendylan.org/mailman= /listinfo/bdwgc" target=3D"_blank">https://lists.opendylan.o= rg/mailman/listinfo/bdwgc</a><br> </div> </div> </div> </div> </blockquote> <br> </blockquote> <br> <pre cols=3D"1000000">--=20 Chris Metcalf, Mellanox Technologies <a moz-do-not-send=3D"true" href=3D"http://www.mellanox.com" target=3D"_b= lank">http://www.mellanox.com</a></pre> </div> <div>_______________________________________________<br> bdwgc mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:[email protected]">[email protected]= pendylan.org</a><br> <a moz-do-not-send=3D"true" href=3D"https://lists.opendylan.org/mailman/listinfo/bd= wgc" target=3D"_blank">https://lists.opendylan.org/mailman/l= istinfo/bdwgc</a></div> <base target=3D"_self" href=3D"https://e.mail.ru/"> </div> </div> </div> </blockquote> <br> </blockquote> <br> <pre class=3D"moz-signature" cols=3D"1000000">--=20 Chris Metcalf, Mellanox Technologies <a class=3D"moz-txt-link-freetext" href=3D"http://www.mellanox.com">http:= //www.mellanox.com</a></pre> </body> </html> --------------7B96DE75CAA4D511084F70CC-- --===============1771494747== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ bdwgc mailing list [email protected] https://lists.opendylan.org/mailman/listinfo/bdwgc --===============1771494747==--