# HG changeset patch # User glaubitz # Date 1511522185 -3600 # Node ID f2412517fa70cc4200b064ec4c45ebadaf1cdad3 # Parent 4e5124dacf91f15d18acce9b27cc1d0cf598462d 8186461: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe Reviewed-by: aph diff -r 4e5124dacf91 -r f2412517fa70 src/hotspot/os_cpu/linux_zero/os_linux_zero.hpp --- a/src/hotspot/os_cpu/linux_zero/os_linux_zero.hpp Tue Nov 21 13:48:28 2017 +0100 +++ b/src/hotspot/os_cpu/linux_zero/os_linux_zero.hpp Fri Nov 24 12:16:25 2017 +0100 @@ -36,12 +36,18 @@ // Atomically copy 64 bits of data static void atomic_copy64(const volatile void *src, volatile void *dst) { -#if defined(PPC32) +#if defined(PPC32) && !defined(__SPE__) double tmp; asm volatile ("lfd %0, %2\n" "stfd %0, %1\n" : "=&f"(tmp), "=Q"(*(volatile double*)dst) : "Q"(*(volatile double*)src)); +#elif defined(PPC32) && defined(__SPE__) + long tmp; + asm volatile ("evldd %0, %2\n" + "evstdd %0, %1\n" + : "=&r"(tmp), "=Q"(*(volatile long*)dst) + : "Q"(*(volatile long*)src)); #elif defined(S390) && !defined(_LP64) double tmp; asm volatile ("ld %0, 0(%1)\n"