[Openmp-commits] [openmp] r245602 - Update z_Linux_asm.s to use platform macros

Jonathan Peyton via Openmp-commits openmp-commits at lists.llvm.org
Thu Aug 20 12:46:14 PDT 2015


Author: jlpeyton
Date: Thu Aug 20 14:46:14 2015
New Revision: 245602

URL: http://llvm.org/viewvc/llvm-project?rev=245602&view=rev
Log:
Update z_Linux_asm.s to use platform macros

z_Linux_asm.s can use the KMP_OS_* / KMP_MIC macros instead of the predefined
compiler macro checks.  The macro logic to determine KMP_MIC is moved from
kmp_os.h to kmp_platform.h.

Modified:
    openmp/trunk/runtime/src/kmp_os.h
    openmp/trunk/runtime/src/kmp_platform.h
    openmp/trunk/runtime/src/z_Linux_asm.s

Modified: openmp/trunk/runtime/src/kmp_os.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_os.h?rev=245602&r1=245601&r2=245602&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_os.h (original)
+++ openmp/trunk/runtime/src/kmp_os.h Thu Aug 20 14:46:14 2015
@@ -281,22 +281,6 @@ extern "C" {
 # define KMP_ALIGN(bytes)     __declspec( align(bytes) )
 #endif
 
-#if defined(__MIC__) || defined(__MIC2__)
-    #define KMP_MIC  1
-// Intel(R) Composer XE (13.0) defines both __MIC__ and __MIC2__ !
-# if __MIC2__ || __KNC__
-    #define KMP_MIC1 0
-    #define KMP_MIC2 1
-# else
-    #define KMP_MIC1 1
-    #define KMP_MIC2 0
-# endif
-#else
-    #define KMP_MIC  0
-    #define KMP_MIC1 0
-    #define KMP_MIC2 0
-#endif
-
 /* General purpose fence types for memory operations */
 enum kmp_mem_fence_type {
     kmp_no_fence,         /* No memory fence */

Modified: openmp/trunk/runtime/src/kmp_platform.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_platform.h?rev=245602&r1=245601&r2=245602&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_platform.h (original)
+++ openmp/trunk/runtime/src/kmp_platform.h Thu Aug 20 14:46:14 2015
@@ -139,6 +139,21 @@
 # define KMP_ARCH_ARM 1
 #endif
 
+#if defined(__MIC__) || defined(__MIC2__)
+# define KMP_MIC  1
+# if __MIC2__ || __KNC__
+#  define KMP_MIC1 0
+#  define KMP_MIC2 1
+# else
+#  define KMP_MIC1 1
+#  define KMP_MIC2 0
+# endif
+#else
+# define KMP_MIC  0
+# define KMP_MIC1 0
+# define KMP_MIC2 0
+#endif
+
 // 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

Modified: openmp/trunk/runtime/src/z_Linux_asm.s
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/z_Linux_asm.s?rev=245602&r1=245601&r2=245602&view=diff
==============================================================================
--- openmp/trunk/runtime/src/z_Linux_asm.s (original)
+++ openmp/trunk/runtime/src/z_Linux_asm.s Thu Aug 20 14:46:14 2015
@@ -20,7 +20,7 @@
 
 #if KMP_ARCH_X86 || KMP_ARCH_X86_64
 
-# if __MIC__ || __MIC2__
+# if KMP_MIC
 //
 // the 'delay r16/r32/r64' should be used instead of the 'pause'.
 // The delay operation has the effect of removing the current thread from
@@ -43,9 +43,9 @@
 //.endm
 # else
 #  define pause_op   .byte 0xf3,0x90
-# endif // __MIC__ || __MIC2__
+# endif // KMP_MIC
 
-# if defined __APPLE__ && defined __MACH__
+# if KMP_OS_DARWIN
 #  define KMP_PREFIX_UNDERSCORE(x) _##x  // extra underscore for OS X* symbols
 #  define KMP_LABEL(x) L_##x             // form the name of label
 .macro KMP_CFI_DEF_OFFSET
@@ -69,15 +69,15 @@
 	.globl KMP_PREFIX_UNDERSCORE($0)
 KMP_PREFIX_UNDERSCORE($0):
 .endmacro
-# else // defined __APPLE__ && defined __MACH__
+# else // KMP_OS_DARWIN
 #  define KMP_PREFIX_UNDERSCORE(x) x  // no extra underscore for Linux* OS symbols
 // Format labels so that they don't override function names in gdb's backtraces
 // MIC assembler doesn't accept .L syntax, the L works fine there (as well as on OS X*)
-# if __MIC__ || __MIC2__
+# if KMP_MIC
 #  define KMP_LABEL(x) L_##x          // local label
 # else
 #  define KMP_LABEL(x) .L_##x         // local label hidden from backtraces
-# endif // __MIC__ || __MIC2__
+# endif // KMP_MIC
 .macro ALIGN size
 	.align 1<<(\size)
 .endm
@@ -106,7 +106,7 @@ KMP_PREFIX_UNDERSCORE(\proc):
 .macro KMP_CFI_DEF reg, sz
 	.cfi_def_cfa	\reg,\sz
 .endm
-# endif // defined __APPLE__ && defined __MACH__
+# endif // KMP_OS_DARWIN
 #endif // KMP_ARCH_X86 || KMP_ARCH_x86_64
 
 
@@ -124,7 +124,7 @@ KMP_PREFIX_UNDERSCORE(\proc):
 //
 
 # if KMP_ARCH_X86
-#  if defined __APPLE__ && defined __MACH__
+#  if KMP_OS_DARWIN
         .data
         .comm .gomp_critical_user_,32
         .data
@@ -141,11 +141,11 @@ __kmp_unnamed_critical_addr:
         .4byte .gomp_critical_user_
         .type __kmp_unnamed_critical_addr, at object
         .size __kmp_unnamed_critical_addr,4
-#  endif /* defined __APPLE__ && defined __MACH__ */
+#  endif /* KMP_OS_DARWIN */
 # endif /* KMP_ARCH_X86 */
 
 # if KMP_ARCH_X86_64
-#  if defined __APPLE__ && defined __MACH__
+#  if KMP_OS_DARWIN
         .data
         .comm .gomp_critical_user_,32
         .data
@@ -162,7 +162,7 @@ __kmp_unnamed_critical_addr:
         .8byte .gomp_critical_user_
         .type __kmp_unnamed_critical_addr, at object
         .size __kmp_unnamed_critical_addr,8
-#  endif /* defined __APPLE__ && defined __MACH__ */
+#  endif /* KMP_OS_DARWIN */
 # endif /* KMP_ARCH_X86_64 */
 
 #endif /* KMP_GOMP_COMPAT */
@@ -1078,7 +1078,7 @@ KMP_LABEL(invoke_3):
 # endif /* !KMP_ASM_INTRINS */
 
 
-# if ! (__MIC__ || __MIC2__)
+# if !KMP_MIC
 
 # if !KMP_ASM_INTRINS
 
@@ -1137,7 +1137,7 @@ KMP_LABEL(invoke_3):
         DEBUG_INFO __kmp_xchg_real64
 
 
-# endif /* !(__MIC__ || __MIC2__) */
+# endif /* !KMP_MIC */
 
 # endif /* !KMP_ASM_INTRINS */
 
@@ -1194,7 +1194,7 @@ KMP_LABEL(invoke_3):
         .text
         PROC  __kmp_clear_x87_fpu_status_word
 
-#if __MIC__ || __MIC2__
+#if KMP_MIC
 // TODO: remove the workaround for problem with fnclex instruction (no CQ known)
         fstenv  -32(%rsp)              // store FP env
         andw    $~0x80ff, 4-32(%rsp)   // clear 0-7,15 bits of FP SW
@@ -1271,7 +1271,7 @@ __tid = -24
 	movq	%rcx, %rax	// Stack alignment calculation begins; argc -> %rax
 	movq	$0, %rbx	// constant for cmovs later
 	subq	$4, %rax	// subtract four args passed in registers to pkfn
-#if __MIC__ || __MIC2__
+#if KMP_MIC
 	js	KMP_LABEL(kmp_0)	// jump to movq
 	jmp	KMP_LABEL(kmp_0_exit)	// jump ahead
 KMP_LABEL(kmp_0):
@@ -1279,7 +1279,7 @@ KMP_LABEL(kmp_0):
 KMP_LABEL(kmp_0_exit):
 #else
 	cmovsq	%rbx, %rax	// zero negative value in %rax <- max(0, argc-4)
-#endif // __MIC__ || __MIC2__
+#endif // KMP_MIC
 
 	movq	%rax, %rsi	// save max(0, argc-4) -> %rsi for later
 	shlq 	$3, %rax	// Number of bytes used on stack: max(0, argc-4)*8
@@ -1328,7 +1328,7 @@ KMP_LABEL(kmp_invoke_pass_parms):	// put
 
 	movq	%r8, %r11	// p_argv -> %r11
 
-#if __MIC__ || __MIC2__
+#if KMP_MIC
 	cmpq	$4, %rax	// argc >= 4?
 	jns	KMP_LABEL(kmp_4)	// jump to movq
 	jmp	KMP_LABEL(kmp_4_exit)	// jump ahead
@@ -1368,7 +1368,7 @@ KMP_LABEL(kmp_1_exit):
 
 	cmpq	$1, %rax	// argc >= 1?
 	cmovnsq	(%r11), %rdx	// p_argv[0] -> %rdx (store 3rd parm to pkfn)
-#endif // __MIC__ || __MIC2__
+#endif // KMP_MIC
 
 	call	*%rbx		// call (*pkfn)();
 	movq	$1, %rax	// move 1 into return register;
@@ -1436,7 +1436,7 @@ __kmp_unnamed_critical_addr:
     .size __kmp_unnamed_critical_addr,8
 #endif /* KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 */
 
-#if defined(__linux__)
+#if KMP_OS_LINUX
 # if KMP_ARCH_ARM
 .section .note.GNU-stack,"",%progbits
 # else




More information about the Openmp-commits mailing list