From 7e5e8684fb4d65953e388a77491438a5ecc4d2d3 Mon Sep 17 00:00:00 2001 From: Paul Osmialowski Date: Fri, 13 May 2016 08:26:42 +0000 Subject: Solve 'Too many args to microtask' problem This patch solves 'Too many args to microtask' problem which occurs while executing lulesh2.0.3 benchmark on AArch64. To solve this I had to wrtite AArch64 assembly version of __kmp_invoke_microtask() function, similar to x86 and x86_64 implementations. Differential Revision: http://reviews.llvm.org/D19879 llvm-svn: 269399 --- openmp/runtime/src/z_Linux_util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'openmp/runtime/src/z_Linux_util.c') diff --git a/openmp/runtime/src/z_Linux_util.c b/openmp/runtime/src/z_Linux_util.c index 5d61cd177fe..6258263459d 100644 --- a/openmp/runtime/src/z_Linux_util.c +++ b/openmp/runtime/src/z_Linux_util.c @@ -518,7 +518,7 @@ __kmp_test_then_and32( volatile kmp_int32 *p, kmp_int32 d ) return old_value; } -# if KMP_ARCH_X86 || KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 +# if KMP_ARCH_X86 || KMP_ARCH_PPC64 || (KMP_OS_LINUX && KMP_ARCH_AARCH64) kmp_int8 __kmp_test_then_add8( volatile kmp_int8 *p, kmp_int8 d ) { @@ -552,7 +552,7 @@ __kmp_test_then_add64( volatile kmp_int64 *p, kmp_int64 d ) } return old_value; } -# endif /* KMP_ARCH_X86 */ +# endif /* KMP_ARCH_X86 || KMP_ARCH_PPC64 || (KMP_OS_LINUX && KMP_ARCH_AARCH64) */ kmp_int64 __kmp_test_then_or64( volatile kmp_int64 *p, kmp_int64 d ) @@ -2574,7 +2574,7 @@ __kmp_get_load_balance( int max ) #endif // USE_LOAD_BALANCE -#if !(KMP_ARCH_X86 || KMP_ARCH_X86_64 || KMP_MIC) +#if !(KMP_ARCH_X86 || KMP_ARCH_X86_64 || KMP_MIC || (KMP_OS_LINUX && KMP_ARCH_AARCH64)) // we really only need the case with 1 argument, because CLANG always build // a struct of pointers to shared variables referenced in the outlined function -- cgit v1.2.3