[Openmp-commits] [PATCH] D18245: Fix non-x86 build (removing uses of kmp_cpuinfo_t)
Hal Finkel via Openmp-commits
openmp-commits at lists.llvm.org
Thu Mar 17 08:28:02 PDT 2016
hfinkel created this revision.
hfinkel added reviewers: jlpeyton, tlwilmar, AndreyChurbanov.
hfinkel added a subscriber: openmp-commits.
Herald added a subscriber: mcrosier.
The non-x86 build is currently broken. The problem is that the definition of kmp_cpuinfo_t contains:
char name [3*sizeof (kmp_cpuid_t)]; // CPUID(0x80000002,0x80000003,0x80000004)
and kmp_cpuid_t is only defined when compiling for x86. This patch removes uses of kmp_cpuinfo_t when not building on x86.
http://reviews.llvm.org/D18245
Files:
runtime/src/kmp.h
runtime/src/kmp_csupport.c
runtime/src/kmp_global.c
Index: runtime/src/kmp_global.c
===================================================================
--- runtime/src/kmp_global.c
+++ runtime/src/kmp_global.c
@@ -17,7 +17,9 @@
kmp_key_t __kmp_gtid_threadprivate_key;
+#if KMP_ARCH_X86 || KMP_ARCH_X86_64
kmp_cpuinfo_t __kmp_cpuinfo = { 0 }; // Not initialized
+#endif
#if KMP_STATS_ENABLED
#include "kmp_stats.h"
Index: runtime/src/kmp_csupport.c
===================================================================
--- runtime/src/kmp_csupport.c
+++ runtime/src/kmp_csupport.c
@@ -1170,13 +1170,20 @@
#else
# define KMP_TSX_LOCK(seq) __kmp_user_lock_seq
#endif
+
+#if KMP_ARCH_X86 || KMP_ARCH_X86_64
+# define KMP_CPUINFO_RTM (__kmp_cpuinfo.rtm)
+#else
+# define KMP_CPUINFO_RTM 0
+#endif
+
// Hints that do not require further logic
if (hint & kmp_lock_hint_hle)
return KMP_TSX_LOCK(hle);
if (hint & kmp_lock_hint_rtm)
- return (__kmp_cpuinfo.rtm)? KMP_TSX_LOCK(rtm): __kmp_user_lock_seq;
+ return KMP_CPUINFO_RTM ? KMP_TSX_LOCK(rtm): __kmp_user_lock_seq;
if (hint & kmp_lock_hint_adaptive)
- return (__kmp_cpuinfo.rtm)? KMP_TSX_LOCK(adaptive): __kmp_user_lock_seq;
+ return KMP_CPUINFO_RTM ? KMP_TSX_LOCK(adaptive): __kmp_user_lock_seq;
// Rule out conflicting hints first by returning the default lock
if ((hint & omp_lock_hint_contended) && (hint & omp_lock_hint_uncontended))
Index: runtime/src/kmp.h
===================================================================
--- runtime/src/kmp.h
+++ runtime/src/kmp.h
@@ -1246,6 +1246,7 @@
long nivcsw; /* the number of times a context switch was forced */
} kmp_sys_info_t;
+#if KMP_ARCH_X86 || KMP_ARCH_X86_64
typedef struct kmp_cpuinfo {
int initialized; // If 0, other fields are not initialized.
int signature; // CPUID(1).EAX
@@ -1261,7 +1262,7 @@
kmp_uint64 frequency; // Nominal CPU frequency in Hz.
char name [3*sizeof (kmp_cpuid_t)]; // CPUID(0x80000002,0x80000003,0x80000004)
} kmp_cpuinfo_t;
-
+#endif
#ifdef BUILD_TV
@@ -2684,7 +2685,9 @@
extern int __kmp_storage_map_verbose; /* True means storage map includes placement info */
extern int __kmp_storage_map_verbose_specified;
+#if KMP_ARCH_X86 || KMP_ARCH_X86_64
extern kmp_cpuinfo_t __kmp_cpuinfo;
+#endif
extern volatile int __kmp_init_serial;
extern volatile int __kmp_init_gtid;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18245.50936.patch
Type: text/x-patch
Size: 2434 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20160317/83b1b037/attachment.bin>
More information about the Openmp-commits
mailing list