45 lines
1.3 KiB
Diff
45 lines
1.3 KiB
Diff
Subject: define bswap for e2k
|
|
Bug: 111656
|
|
Tags: e2k
|
|
|
|
diff -Naur 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
|
|
--- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h 2021-11-22 16:38:22.531971037 +0300
|
|
+++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/src/lib/primitives.h 2021-11-22 16:39:15.485304318 +0300
|
|
@@ -28,6 +28,9 @@
|
|
#include <stdint.h>
|
|
#include <assert.h>
|
|
#include <string>
|
|
+#ifdef __e2k__
|
|
+#include <e2kintrin.h>
|
|
+#endif
|
|
|
|
#ifdef __GNUC__
|
|
#define likely(x) __builtin_expect((x),1)
|
|
@@ -99,6 +102,8 @@
|
|
inline uint32_t bswap(uint32_t val) {
|
|
#ifdef __aarch64__
|
|
__asm__("rev %w[dst], %w[src]" : [dst]"=r"(val) : [src]"r"(val));
|
|
+#elif __e2k__
|
|
+ __builtin_bswap64(val);
|
|
#else
|
|
__asm__("bswap %0" : "=r" (val) : "0" (val));
|
|
#endif
|
|
@@ -112,6 +117,9 @@
|
|
#ifdef __X64
|
|
__asm__("bswapq %0" : "=r" (val) : "0" (val));
|
|
#else
|
|
+#ifdef __e2k__
|
|
+ __builtin_bswap64(val);
|
|
+#else
|
|
|
|
uint64_t lower = val & 0xffffffffU;
|
|
uint32_t higher = (val >> 32) & 0xffffffffU;
|
|
@@ -123,6 +131,7 @@
|
|
|
|
#endif
|
|
#endif
|
|
+#endif
|
|
return val;
|
|
}
|
|
|