[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