diff options
Diffstat (limited to 'openmp/runtime/src')
-rw-r--r-- | openmp/runtime/src/dllexports | 1 | ||||
-rw-r--r-- | openmp/runtime/src/exports_so.txt | 1 | ||||
-rw-r--r-- | openmp/runtime/src/kmp.h | 8 | ||||
-rw-r--r-- | openmp/runtime/src/kmp_config.h.cmake | 4 | ||||
-rw-r--r-- | openmp/runtime/src/kmp_dispatch.cpp | 54 | ||||
-rw-r--r-- | openmp/runtime/src/kmp_gsupport.c | 3 | ||||
-rw-r--r-- | openmp/runtime/src/kmp_lock.cpp | 4 | ||||
-rw-r--r-- | openmp/runtime/src/kmp_os.h | 35 | ||||
-rw-r--r-- | openmp/runtime/src/kmp_platform.h | 3 |
9 files changed, 19 insertions, 94 deletions
diff --git a/openmp/runtime/src/dllexports b/openmp/runtime/src/dllexports index 12304a9d287..ca7d7363b79 100644 --- a/openmp/runtime/src/dllexports +++ b/openmp/runtime/src/dllexports @@ -160,7 +160,6 @@ # Regular entry points __kmp_wait_yield_4 - __kmp_wait_yield_8 __kmp_fork_call __kmp_invoke_microtask __kmp_launch_monitor diff --git a/openmp/runtime/src/exports_so.txt b/openmp/runtime/src/exports_so.txt index 27c20abcd76..98b6270742b 100644 --- a/openmp/runtime/src/exports_so.txt +++ b/openmp/runtime/src/exports_so.txt @@ -96,7 +96,6 @@ VERSION { __kmp_wait_64; __kmp_wait_oncore; __kmp_wait_yield_4; - __kmp_wait_yield_8; # ittnotify symbols to be used by debugger __kmp_itt_fini_ittlib; diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h index 4dffc84788e..d062ef99e40 100644 --- a/openmp/runtime/src/kmp.h +++ b/openmp/runtime/src/kmp.h @@ -2998,15 +2998,7 @@ extern kmp_uint32 __kmp_neq_4( kmp_uint32 value, kmp_uint32 checker ); extern kmp_uint32 __kmp_lt_4( kmp_uint32 value, kmp_uint32 checker ); extern kmp_uint32 __kmp_ge_4( kmp_uint32 value, kmp_uint32 checker ); extern kmp_uint32 __kmp_le_4( kmp_uint32 value, kmp_uint32 checker ); - -extern kmp_uint32 __kmp_eq_8( kmp_uint64 value, kmp_uint64 checker ); -extern kmp_uint32 __kmp_neq_8( kmp_uint64 value, kmp_uint64 checker ); -extern kmp_uint32 __kmp_lt_8( kmp_uint64 value, kmp_uint64 checker ); -extern kmp_uint32 __kmp_ge_8( kmp_uint64 value, kmp_uint64 checker ); -extern kmp_uint32 __kmp_le_8( kmp_uint64 value, kmp_uint64 checker ); - extern kmp_uint32 __kmp_wait_yield_4( kmp_uint32 volatile * spinner, kmp_uint32 checker, kmp_uint32 (*pred) (kmp_uint32, kmp_uint32), void * obj ); -extern kmp_uint64 __kmp_wait_yield_8( kmp_uint64 volatile * spinner, kmp_uint64 checker, kmp_uint32 (*pred) (kmp_uint64, kmp_uint64), void * obj ); class kmp_flag_32; class kmp_flag_64; diff --git a/openmp/runtime/src/kmp_config.h.cmake b/openmp/runtime/src/kmp_config.h.cmake index 9fe12b32edc..dc37da09a1b 100644 --- a/openmp/runtime/src/kmp_config.h.cmake +++ b/openmp/runtime/src/kmp_config.h.cmake @@ -76,6 +76,10 @@ # define CACHE_LINE 64 #endif +#if ! KMP_32_BIT_ARCH +# define BUILD_I8 1 +#endif + #define KMP_DYNAMIC_LIB 1 #define KMP_NESTED_HOT_TEAMS 1 #define KMP_ADJUST_BLOCKTIME 1 diff --git a/openmp/runtime/src/kmp_dispatch.cpp b/openmp/runtime/src/kmp_dispatch.cpp index 2c8bba6be4c..6bd38a3c38e 100644 --- a/openmp/runtime/src/kmp_dispatch.cpp +++ b/openmp/runtime/src/kmp_dispatch.cpp @@ -2515,25 +2515,6 @@ kmp_uint32 __kmp_ge_4( kmp_uint32 value, kmp_uint32 checker) { kmp_uint32 __kmp_le_4( kmp_uint32 value, kmp_uint32 checker) { return value <= checker; } -kmp_uint32 __kmp_eq_8( kmp_uint64 value, kmp_uint64 checker) { - return value == checker; -} - -kmp_uint32 __kmp_neq_8( kmp_uint64 value, kmp_uint64 checker) { - return value != checker; -} - -kmp_uint32 __kmp_lt_8( kmp_uint64 value, kmp_uint64 checker) { - return value < checker; -} - -kmp_uint32 __kmp_ge_8( kmp_uint64 value, kmp_uint64 checker) { - return value >= checker; -} - -kmp_uint32 __kmp_le_8( kmp_uint64 value, kmp_uint64 checker) { - return value <= checker; -} kmp_uint32 __kmp_wait_yield_4(volatile kmp_uint32 * spinner, @@ -2568,41 +2549,6 @@ __kmp_wait_yield_4(volatile kmp_uint32 * spinner, return r; } -kmp_uint64 -__kmp_wait_yield_8( volatile kmp_uint64 * spinner, - kmp_uint64 checker, - kmp_uint32 (* pred)( kmp_uint64, kmp_uint64 ) - , void * obj // Higher-level synchronization object, or NULL. - ) -{ - // note: we may not belong to a team at this point - register volatile kmp_uint64 * spin = spinner; - register kmp_uint64 check = checker; - register kmp_uint32 spins; - register kmp_uint32 (*f) ( kmp_uint64, kmp_uint64 ) = pred; - register kmp_uint64 r; - - KMP_FSYNC_SPIN_INIT( obj, (void*) spin ); - KMP_INIT_YIELD( spins ); - // main wait spin loop - while(!f(r = *spin, check)) - { - KMP_FSYNC_SPIN_PREPARE( obj ); - /* GEH - remove this since it was accidentally introduced when kmp_wait was split. - It causes problems with infinite recursion because of exit lock */ - /* if ( TCR_4(__kmp_global.g.g_done) && __kmp_global.g.g_abort) - __kmp_abort_thread(); */ - - // if we are oversubscribed, - // or have waited a bit (and KMP_LIBARRY=throughput, then yield - // pause is in the following code - KMP_YIELD( TCR_4(__kmp_nth) > __kmp_avail_proc ); - KMP_YIELD_SPIN( spins ); - } - KMP_FSYNC_SPIN_ACQUIRED( obj ); - return r; -} - } // extern "C" #ifdef KMP_GOMP_COMPAT diff --git a/openmp/runtime/src/kmp_gsupport.c b/openmp/runtime/src/kmp_gsupport.c index 2a89aa2f942..779ac408306 100644 --- a/openmp/runtime/src/kmp_gsupport.c +++ b/openmp/runtime/src/kmp_gsupport.c @@ -13,9 +13,6 @@ //===----------------------------------------------------------------------===// -#if defined(__x86_64) || defined (__powerpc64__) || defined(__aarch64__) -# define KMP_I8 -#endif #include "kmp.h" #include "kmp_atomic.h" diff --git a/openmp/runtime/src/kmp_lock.cpp b/openmp/runtime/src/kmp_lock.cpp index df96f059df9..6b8beef9c6a 100644 --- a/openmp/runtime/src/kmp_lock.cpp +++ b/openmp/runtime/src/kmp_lock.cpp @@ -729,7 +729,7 @@ __kmp_is_ticket_lock_nestable( kmp_ticket_lock_t *lck ) } static kmp_uint32 -__kmp_bakery_check(kmp_uint value, kmp_uint checker) +__kmp_bakery_check(kmp_uint32 value, kmp_uint32 checker) { register kmp_uint32 pause; @@ -1576,7 +1576,7 @@ __kmp_release_queuing_lock( kmp_queuing_lock_t *lck, kmp_int32 gtid ) KMP_MB(); /* make sure enqueuing thread has time to update next waiting thread field */ - *head_id_p = (kmp_int32) KMP_WAIT_YIELD((volatile kmp_uint*) waiting_id_p, 0, KMP_NEQ, NULL); + *head_id_p = KMP_WAIT_YIELD((volatile kmp_uint32*)waiting_id_p, 0, KMP_NEQ, NULL); #ifdef DEBUG_QUEUING_LOCKS TRACE_LOCK( gtid+1, "rel deq: (h,t)->(h',t)" ); #endif diff --git a/openmp/runtime/src/kmp_os.h b/openmp/runtime/src/kmp_os.h index 4f89c7379c4..017eae4c52a 100644 --- a/openmp/runtime/src/kmp_os.h +++ b/openmp/runtime/src/kmp_os.h @@ -173,21 +173,15 @@ typedef double kmp_real64; # define KMP_UINTPTR_SPEC "lu" #endif -#ifdef KMP_I8 +#ifdef BUILD_I8 typedef kmp_int64 kmp_int; typedef kmp_uint64 kmp_uint; -# define KMP_INT_SPEC KMP_INT64_SPEC -# define KMP_UINT_SPEC KMP_UINT64_SPEC -# define KMP_INT_MAX ((kmp_int64)0x7FFFFFFFFFFFFFFFLL) -# define KMP_INT_MIN ((kmp_int64)0x8000000000000000LL) #else typedef kmp_int32 kmp_int; typedef kmp_uint32 kmp_uint; -# define KMP_INT_SPEC KMP_INT32_SPEC -# define KMP_UINT_SPEC KMP_UINT32_SPEC -# define KMP_INT_MAX ((kmp_int32)0x7FFFFFFF) -# define KMP_INT_MIN ((kmp_int32)0x80000000) -#endif /* KMP_I8 */ +#endif /* BUILD_I8 */ +#define KMP_INT_MAX ((kmp_int32)0x7FFFFFFF) +#define KMP_INT_MIN ((kmp_int32)0x80000000) #ifdef __cplusplus //------------------------------------------------------------------------- @@ -651,21 +645,12 @@ typedef void (*microtask_t)( int *gtid, int *npr, ... ); # define VOLATILE_CAST(x) (x) #endif -#ifdef KMP_I8 -# define KMP_WAIT_YIELD __kmp_wait_yield_8 -# define KMP_EQ __kmp_eq_8 -# define KMP_NEQ __kmp_neq_8 -# define KMP_LT __kmp_lt_8 -# define KMP_GE __kmp_ge_8 -# define KMP_LE __kmp_le_8 -#else -# define KMP_WAIT_YIELD __kmp_wait_yield_4 -# define KMP_EQ __kmp_eq_4 -# define KMP_NEQ __kmp_neq_4 -# define KMP_LT __kmp_lt_4 -# define KMP_GE __kmp_ge_4 -# define KMP_LE __kmp_le_4 -#endif /* KMP_I8 */ +#define KMP_WAIT_YIELD __kmp_wait_yield_4 +#define KMP_EQ __kmp_eq_4 +#define KMP_NEQ __kmp_neq_4 +#define KMP_LT __kmp_lt_4 +#define KMP_GE __kmp_ge_4 +#define KMP_LE __kmp_le_4 /* Workaround for Intel(R) 64 code gen bug when taking address of static array (Intel(R) 64 Tracker #138) */ #if (KMP_ARCH_X86_64 || KMP_ARCH_PPC64) && KMP_OS_LINUX diff --git a/openmp/runtime/src/kmp_platform.h b/openmp/runtime/src/kmp_platform.h index 0707f2b40ae..b6a19dc06c3 100644 --- a/openmp/runtime/src/kmp_platform.h +++ b/openmp/runtime/src/kmp_platform.h @@ -160,6 +160,9 @@ # define KMP_MIC2 0 #endif +/* Specify 32 bit architectures here */ +#define KMP_32_BIT_ARCH (KMP_ARCH_X86 || KMP_ARCH_ARM) + // TODO: Fixme - This is clever, but really fugly #if (1 != KMP_ARCH_X86 + KMP_ARCH_X86_64 + KMP_ARCH_ARM + KMP_ARCH_PPC64 + KMP_ARCH_AARCH64) # error Unknown or unsupported architecture |