svn commit: r345283 - in head: contrib/openmp/runtime/src lib

Dimitry Andric dim at FreeBSD.org
Mon Mar 18 21:04:30 UTC 2019


Author: dim
Date: Mon Mar 18 21:04:28 2019
New Revision: 345283
URL: https://svnweb.freebsd.org/changeset/base/345283

Log:
  Enable building libomp.so for 32-bit x86.  This is done by selectively
  enabling the functions that save and restore MXCSR, since access to this
  register requires SSE support.
  
  Note that you may run into other issues with OpenMP on i386, since this
  *not* yet supported upstream, and certainly not extensively tested.
  
  PR:		236062, 236582
  MFC after:	1 month
  X-MFC-With:	r344779

Modified:
  head/contrib/openmp/runtime/src/kmp.h
  head/contrib/openmp/runtime/src/kmp_runtime.cpp
  head/lib/Makefile

Modified: head/contrib/openmp/runtime/src/kmp.h
==============================================================================
--- head/contrib/openmp/runtime/src/kmp.h	Mon Mar 18 19:56:00 2019	(r345282)
+++ head/contrib/openmp/runtime/src/kmp.h	Mon Mar 18 21:04:28 2019	(r345283)
@@ -3666,8 +3666,13 @@ extern int __kmp_read_from_file(char const *path, char
 
 extern void __kmp_query_cpuid(kmp_cpuinfo_t *p);
 
-#define __kmp_load_mxcsr(p) _mm_setcsr(*(p))
+#if __SSE__
+static inline void __kmp_load_mxcsr(const kmp_uint32 *p) { _mm_setcsr(*(p)); }
 static inline void __kmp_store_mxcsr(kmp_uint32 *p) { *p = _mm_getcsr(); }
+#else
+static inline void __kmp_load_mxcsr(const kmp_uint32 *) {}
+static inline void __kmp_store_mxcsr(kmp_uint32 *) {}
+#endif
 
 extern void __kmp_load_x87_fpu_control_word(kmp_int16 *p);
 extern void __kmp_store_x87_fpu_control_word(kmp_int16 *p);

Modified: head/contrib/openmp/runtime/src/kmp_runtime.cpp
==============================================================================
--- head/contrib/openmp/runtime/src/kmp_runtime.cpp	Mon Mar 18 19:56:00 2019	(r345282)
+++ head/contrib/openmp/runtime/src/kmp_runtime.cpp	Mon Mar 18 21:04:28 2019	(r345283)
@@ -8104,7 +8104,7 @@ __kmp_determine_reduction_method(
 
 #elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS
 
-#if KMP_OS_LINUX || KMP_OS_WINDOWS || KMP_OS_HURD
+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_WINDOWS || KMP_OS_HURD
 
     // basic tuning
 

Modified: head/lib/Makefile
==============================================================================
--- head/lib/Makefile	Mon Mar 18 19:56:00 2019	(r345282)
+++ head/lib/Makefile	Mon Mar 18 21:04:28 2019	(r345283)
@@ -196,9 +196,7 @@ _libproc=	libproc
 _librtld_db=	librtld_db
 .endif
 
-.if !defined(COMPAT_32BIT)
 SUBDIR.${MK_OPENMP}+=	libomp
-.endif
 SUBDIR.${MK_OPENSSL}+=	libmp
 SUBDIR.${MK_PMC}+=	libpmc libpmcstat
 SUBDIR.${MK_RADIUS_SUPPORT}+=	libradius


More information about the svn-src-all mailing list