Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/sentencepiece.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaku Kudo <taku@google.com>2020-10-13 19:39:14 +0300
committerTaku Kudo <taku@google.com>2020-10-13 19:39:14 +0300
commite59c835e45a2e52cc60eaa0d7649994630178674 (patch)
treeb13b6d84e3247d1e32ec9399c70bf5e646f31044
parent33a977f8fab881e6ea2adf7b9241035481651007 (diff)
changed macro big endian
-rw-r--r--src/normalizer.cc8
-rw-r--r--src/util.h6
2 files changed, 10 insertions, 4 deletions
diff --git a/src/normalizer.cc b/src/normalizer.cc
index 7fe90a2..3fe919b 100644
--- a/src/normalizer.cc
+++ b/src/normalizer.cc
@@ -51,7 +51,7 @@ void Normalizer::Init() {
LOG(INFO) << "precompiled_charsmap is empty. use identity normalization.";
} else {
absl::string_view trie_blob, normalized;
-#ifdef __BIG_ENDIAN__
+#ifdef IS_BIG_ENDIAN
status_ = DecodePrecompiledCharsMap(index, &trie_blob, &normalized,
&precompiled_charsmap_buffer_);
#else
@@ -264,7 +264,7 @@ std::string Normalizer::EncodePrecompiledCharsMap(
blob.append(trie_blob.data(), trie_blob.size());
blob.append(normalized.data(), normalized.size());
-#ifdef __BIG_ENDIAN__
+#ifdef IS_BIG_ENDIAN
uint32 *data = reinterpret_cast<uint32 *>(const_cast<char *>(blob.data()));
for (int i = 0; i <= trie_blob.size() / 4; ++i)
data[i] = util::Swap32(data[i]);
@@ -286,7 +286,7 @@ util::Status Normalizer::DecodePrecompiledCharsMap(
return util::InternalError("Blob for normalization rule is broken.");
}
-#ifdef __BIG_ENDIAN__
+#ifdef IS_BIG_ENDIAN
trie_blob_size = util::Swap32(trie_blob_size);
#endif
@@ -295,7 +295,7 @@ util::Status Normalizer::DecodePrecompiledCharsMap(
blob.remove_prefix(sizeof(trie_blob_size));
-#ifdef __BIG_ENDIAN__
+#ifdef IS_BIG_ENDIAN
buffer->assign(blob.data(), trie_blob_size);
uint32 *data = reinterpret_cast<uint32 *>(const_cast<char *>(buffer->data()));
for (int i = 0; i < trie_blob_size / 4; ++i) data[i] = util::Swap32(data[i]);
diff --git a/src/util.h b/src/util.h
index b390d4c..ebf92f9 100644
--- a/src/util.h
+++ b/src/util.h
@@ -36,6 +36,10 @@
#include <pthread.h>
#endif
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define IS_BIG_ENDIAN
+#endif
+
namespace sentencepiece {
template <typename T>
@@ -412,7 +416,9 @@ class StatusBuilder {
#define CHECK_GT_OR_RETURN(a, b) CHECK_OR_RETURN((a) > (b))
#define CHECK_LT_OR_RETURN(a, b) CHECK_OR_RETURN((a) < (b))
+#ifdef IS_BIG_ENDIAN
inline uint32 Swap32(uint32 x) { return __builtin_bswap32(x); }
+#endif
} // namespace util