From 50c7fec545da7b31acabc6f41d08ed6c326e73e7 Mon Sep 17 00:00:00 2001 From: Masatake Iwasaki Date: Fri, 21 May 2021 01:36:26 +0000 Subject: [PATCH] HADOOP-14922. Build of Mapreduce Native Task module fails with unknown opcode "bswap". Contributed by Anup Halarnkar. (cherry picked from commit 0d59500e8cf89e38cd0f0e45553e4557e5358a8b) --- .../src/main/native/src/lib/primitives.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h index 3bf5f767ed2..000c4b91fd9 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h @@ -99,6 +99,8 @@ inline void simple_memcpy(void * dest, const void * src, size_t len) { inline uint32_t bswap(uint32_t val) { #ifdef __aarch64__ __asm__("rev %w[dst], %w[src]" : [dst]"=r"(val) : [src]"r"(val)); +#elif defined(__ppc64__)||(__PPC64__)||(__powerpc64__) + return __builtin_bswap32(val); #else __asm__("bswap %0" : "=r" (val) : "0" (val)); #endif @@ -108,6 +110,8 @@ inline uint32_t bswap(uint32_t val) { inline uint64_t bswap64(uint64_t val) { #ifdef __aarch64__ __asm__("rev %[dst], %[src]" : [dst]"=r"(val) : [src]"r"(val)); +#elif defined(__ppc64__)||(__PPC64__)||(__powerpc64__) + return __builtin_bswap64(val); #else #ifdef __X64 __asm__("bswapq %0" : "=r" (val) : "0" (val));