You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ap...@apache.org on 2020/05/11 13:21:02 UTC

[arrow] branch master updated: ARROW-4018: [C++] Fix RLE tests' failures on big-endian platforms

This is an automated email from the ASF dual-hosted git repository.

apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 25299e5  ARROW-4018: [C++] Fix RLE tests' failures on big-endian platforms
25299e5 is described below

commit 25299e5424d15d6c15320025d982844b5dfc24f7
Author: Kazuaki Ishizaki <is...@jp.ibm.com>
AuthorDate: Mon May 11 15:20:38 2020 +0200

    ARROW-4018: [C++] Fix RLE tests' failures on big-endian platforms
    
    This PR adds big-endian support in RLE related classes. The data for RLE is stored using a little-endian format. The current code assumes a little-endian CPU in two places.
    1. `RleDecoder::NextCounts` (fix was proposed in ARROW-4018)
    1. packing and unpacking from https://github.com/lemire/FrameOfReference/blob/6ccaf9e97160f9a3b299e23a8ef739e711ef0c71/src/bpacking.cpp
    
    After applying #7136 & this PR, the following failures in arrow-utility-test's failures will be fixed.
    ```
    [  FAILED  ] Rle.SpecificSequences
    [  FAILED  ] Rle.TestValues
    [  FAILED  ] BitRle.Flush
    [  FAILED  ] BitRle.Random
    [  FAILED  ] BitRle.RepeatedPattern
    [  FAILED  ] BitRle.Overflow
    [  FAILED  ] RleDecoder.GetBatchSpaced
    ```
    
    Closes #7144 from kiszk/ARROW-4018
    
    Authored-by: Kazuaki Ishizaki <is...@jp.ibm.com>
    Signed-off-by: Antoine Pitrou <an...@python.org>
---
 cpp/src/arrow/util/bpacking_default.h | 528 ++++++++++++++++++++++++++++++++++
 cpp/src/arrow/util/rle_encoding.h     |   5 +-
 2 files changed, 531 insertions(+), 2 deletions(-)

diff --git a/cpp/src/arrow/util/bpacking_default.h b/cpp/src/arrow/util/bpacking_default.h
index 7490fee..62c87b9 100644
--- a/cpp/src/arrow/util/bpacking_default.h
+++ b/cpp/src/arrow/util/bpacking_default.h
@@ -31,6 +31,7 @@ namespace internal {
 
 inline const uint32_t* unpack1_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) & 1;
   out++;
   *out = (inl >> 1) & 1;
@@ -102,6 +103,7 @@ inline const uint32_t* unpack1_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack2_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 2);
   out++;
   *out = (inl >> 2) % (1U << 2);
@@ -135,6 +137,7 @@ inline const uint32_t* unpack2_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 2);
   out++;
@@ -175,6 +178,7 @@ inline const uint32_t* unpack2_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack3_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 3);
   out++;
   *out = (inl >> 3) % (1U << 3);
@@ -198,6 +202,7 @@ inline const uint32_t* unpack3_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (3 - 1);
   out++;
   *out = (inl >> 1) % (1U << 3);
@@ -223,6 +228,7 @@ inline const uint32_t* unpack3_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (3 - 2);
   out++;
   *out = (inl >> 2) % (1U << 3);
@@ -252,6 +258,7 @@ inline const uint32_t* unpack3_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack4_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 4);
   out++;
   *out = (inl >> 4) % (1U << 4);
@@ -269,6 +276,7 @@ inline const uint32_t* unpack4_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 4);
   out++;
@@ -287,6 +295,7 @@ inline const uint32_t* unpack4_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 4);
   out++;
@@ -305,6 +314,7 @@ inline const uint32_t* unpack4_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 4);
   out++;
@@ -329,6 +339,7 @@ inline const uint32_t* unpack4_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 5);
   out++;
   *out = (inl >> 5) % (1U << 5);
@@ -344,6 +355,7 @@ inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (5 - 3);
   out++;
   *out = (inl >> 3) % (1U << 5);
@@ -359,6 +371,7 @@ inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (5 - 1);
   out++;
   *out = (inl >> 1) % (1U << 5);
@@ -376,6 +389,7 @@ inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (5 - 4);
   out++;
   *out = (inl >> 4) % (1U << 5);
@@ -391,6 +405,7 @@ inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (5 - 2);
   out++;
   *out = (inl >> 2) % (1U << 5);
@@ -412,6 +427,7 @@ inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 6);
   out++;
   *out = (inl >> 6) % (1U << 6);
@@ -425,6 +441,7 @@ inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (6 - 4);
   out++;
   *out = (inl >> 4) % (1U << 6);
@@ -438,6 +455,7 @@ inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (6 - 2);
   out++;
   *out = (inl >> 2) % (1U << 6);
@@ -451,6 +469,7 @@ inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 6);
   out++;
@@ -465,6 +484,7 @@ inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (6 - 4);
   out++;
   *out = (inl >> 4) % (1U << 6);
@@ -478,6 +498,7 @@ inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (6 - 2);
   out++;
   *out = (inl >> 2) % (1U << 6);
@@ -497,6 +518,7 @@ inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 7);
   out++;
   *out = (inl >> 7) % (1U << 7);
@@ -508,6 +530,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (7 - 3);
   out++;
   *out = (inl >> 3) % (1U << 7);
@@ -521,6 +544,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (7 - 6);
   out++;
   *out = (inl >> 6) % (1U << 7);
@@ -532,6 +556,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (7 - 2);
   out++;
   *out = (inl >> 2) % (1U << 7);
@@ -545,6 +570,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (7 - 5);
   out++;
   *out = (inl >> 5) % (1U << 7);
@@ -556,6 +582,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (7 - 1);
   out++;
   *out = (inl >> 1) % (1U << 7);
@@ -569,6 +596,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (7 - 4);
   out++;
   *out = (inl >> 4) % (1U << 7);
@@ -586,6 +614,7 @@ inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 8);
   out++;
   *out = (inl >> 8) % (1U << 8);
@@ -595,6 +624,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -605,6 +635,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -615,6 +646,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -625,6 +657,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -635,6 +668,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -645,6 +679,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -655,6 +690,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 8);
   out++;
@@ -671,6 +707,7 @@ inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 9);
   out++;
   *out = (inl >> 9) % (1U << 9);
@@ -680,6 +717,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (9 - 4);
   out++;
   *out = (inl >> 4) % (1U << 9);
@@ -691,6 +729,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (9 - 8);
   out++;
   *out = (inl >> 8) % (1U << 9);
@@ -700,6 +739,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (9 - 3);
   out++;
   *out = (inl >> 3) % (1U << 9);
@@ -711,6 +751,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (9 - 7);
   out++;
   *out = (inl >> 7) % (1U << 9);
@@ -720,6 +761,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (9 - 2);
   out++;
   *out = (inl >> 2) % (1U << 9);
@@ -731,6 +773,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (9 - 6);
   out++;
   *out = (inl >> 6) % (1U << 9);
@@ -740,6 +783,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (9 - 1);
   out++;
   *out = (inl >> 1) % (1U << 9);
@@ -751,6 +795,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (9 - 5);
   out++;
   *out = (inl >> 5) % (1U << 9);
@@ -766,6 +811,7 @@ inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 10);
   out++;
   *out = (inl >> 10) % (1U << 10);
@@ -775,6 +821,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (10 - 8);
   out++;
   *out = (inl >> 8) % (1U << 10);
@@ -784,6 +831,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (10 - 6);
   out++;
   *out = (inl >> 6) % (1U << 10);
@@ -793,6 +841,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (10 - 4);
   out++;
   *out = (inl >> 4) % (1U << 10);
@@ -802,6 +851,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (10 - 2);
   out++;
   *out = (inl >> 2) % (1U << 10);
@@ -811,6 +861,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 10);
   out++;
@@ -821,6 +872,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (10 - 8);
   out++;
   *out = (inl >> 8) % (1U << 10);
@@ -830,6 +882,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (10 - 6);
   out++;
   *out = (inl >> 6) % (1U << 10);
@@ -839,6 +892,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (10 - 4);
   out++;
   *out = (inl >> 4) % (1U << 10);
@@ -848,6 +902,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (10 - 2);
   out++;
   *out = (inl >> 2) % (1U << 10);
@@ -863,6 +918,7 @@ inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 11);
   out++;
   *out = (inl >> 11) % (1U << 11);
@@ -870,6 +926,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (11 - 1);
   out++;
   *out = (inl >> 1) % (1U << 11);
@@ -879,6 +936,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (11 - 2);
   out++;
   *out = (inl >> 2) % (1U << 11);
@@ -888,6 +946,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (11 - 3);
   out++;
   *out = (inl >> 3) % (1U << 11);
@@ -897,6 +956,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (11 - 4);
   out++;
   *out = (inl >> 4) % (1U << 11);
@@ -906,6 +966,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (11 - 5);
   out++;
   *out = (inl >> 5) % (1U << 11);
@@ -915,6 +976,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (11 - 6);
   out++;
   *out = (inl >> 6) % (1U << 11);
@@ -924,6 +986,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (11 - 7);
   out++;
   *out = (inl >> 7) % (1U << 11);
@@ -933,6 +996,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (11 - 8);
   out++;
   *out = (inl >> 8) % (1U << 11);
@@ -942,6 +1006,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (11 - 9);
   out++;
   *out = (inl >> 9) % (1U << 11);
@@ -951,6 +1016,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (11 - 10);
   out++;
   *out = (inl >> 10) % (1U << 11);
@@ -964,6 +1030,7 @@ inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 12);
   out++;
   *out = (inl >> 12) % (1U << 12);
@@ -971,6 +1038,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (12 - 4);
   out++;
   *out = (inl >> 4) % (1U << 12);
@@ -980,6 +1048,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (12 - 8);
   out++;
   *out = (inl >> 8) % (1U << 12);
@@ -987,6 +1056,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 12);
   out++;
@@ -995,6 +1065,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (12 - 4);
   out++;
   *out = (inl >> 4) % (1U << 12);
@@ -1004,6 +1075,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (12 - 8);
   out++;
   *out = (inl >> 8) % (1U << 12);
@@ -1011,6 +1083,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 12);
   out++;
@@ -1019,6 +1092,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (12 - 4);
   out++;
   *out = (inl >> 4) % (1U << 12);
@@ -1028,6 +1102,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (12 - 8);
   out++;
   *out = (inl >> 8) % (1U << 12);
@@ -1035,6 +1110,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 12);
   out++;
@@ -1043,6 +1119,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (12 - 4);
   out++;
   *out = (inl >> 4) % (1U << 12);
@@ -1052,6 +1129,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (12 - 8);
   out++;
   *out = (inl >> 8) % (1U << 12);
@@ -1065,6 +1143,7 @@ inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 13);
   out++;
   *out = (inl >> 13) % (1U << 13);
@@ -1072,6 +1151,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (13 - 7);
   out++;
   *out = (inl >> 7) % (1U << 13);
@@ -1079,6 +1159,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (13 - 1);
   out++;
   *out = (inl >> 1) % (1U << 13);
@@ -1088,6 +1169,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (13 - 8);
   out++;
   *out = (inl >> 8) % (1U << 13);
@@ -1095,6 +1177,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (13 - 2);
   out++;
   *out = (inl >> 2) % (1U << 13);
@@ -1104,6 +1187,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (13 - 9);
   out++;
   *out = (inl >> 9) % (1U << 13);
@@ -1111,6 +1195,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (13 - 3);
   out++;
   *out = (inl >> 3) % (1U << 13);
@@ -1120,6 +1205,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (13 - 10);
   out++;
   *out = (inl >> 10) % (1U << 13);
@@ -1127,6 +1213,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (13 - 4);
   out++;
   *out = (inl >> 4) % (1U << 13);
@@ -1136,6 +1223,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (13 - 11);
   out++;
   *out = (inl >> 11) % (1U << 13);
@@ -1143,6 +1231,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (13 - 5);
   out++;
   *out = (inl >> 5) % (1U << 13);
@@ -1152,6 +1241,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (13 - 12);
   out++;
   *out = (inl >> 12) % (1U << 13);
@@ -1159,6 +1249,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (13 - 6);
   out++;
   *out = (inl >> 6) % (1U << 13);
@@ -1172,6 +1263,7 @@ inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 14);
   out++;
   *out = (inl >> 14) % (1U << 14);
@@ -1179,6 +1271,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (14 - 10);
   out++;
   *out = (inl >> 10) % (1U << 14);
@@ -1186,6 +1279,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (14 - 6);
   out++;
   *out = (inl >> 6) % (1U << 14);
@@ -1193,6 +1287,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (14 - 2);
   out++;
   *out = (inl >> 2) % (1U << 14);
@@ -1202,6 +1297,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (14 - 12);
   out++;
   *out = (inl >> 12) % (1U << 14);
@@ -1209,6 +1305,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (14 - 8);
   out++;
   *out = (inl >> 8) % (1U << 14);
@@ -1216,6 +1313,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (14 - 4);
   out++;
   *out = (inl >> 4) % (1U << 14);
@@ -1223,6 +1321,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 14);
   out++;
@@ -1231,6 +1330,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (14 - 10);
   out++;
   *out = (inl >> 10) % (1U << 14);
@@ -1238,6 +1338,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (14 - 6);
   out++;
   *out = (inl >> 6) % (1U << 14);
@@ -1245,6 +1346,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (14 - 2);
   out++;
   *out = (inl >> 2) % (1U << 14);
@@ -1254,6 +1356,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (14 - 12);
   out++;
   *out = (inl >> 12) % (1U << 14);
@@ -1261,6 +1364,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (14 - 8);
   out++;
   *out = (inl >> 8) % (1U << 14);
@@ -1268,6 +1372,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (14 - 4);
   out++;
   *out = (inl >> 4) % (1U << 14);
@@ -1281,6 +1386,7 @@ inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 15);
   out++;
   *out = (inl >> 15) % (1U << 15);
@@ -1288,6 +1394,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (15 - 13);
   out++;
   *out = (inl >> 13) % (1U << 15);
@@ -1295,6 +1402,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (15 - 11);
   out++;
   *out = (inl >> 11) % (1U << 15);
@@ -1302,6 +1410,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (15 - 9);
   out++;
   *out = (inl >> 9) % (1U << 15);
@@ -1309,6 +1418,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (15 - 7);
   out++;
   *out = (inl >> 7) % (1U << 15);
@@ -1316,6 +1426,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (15 - 5);
   out++;
   *out = (inl >> 5) % (1U << 15);
@@ -1323,6 +1434,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (15 - 3);
   out++;
   *out = (inl >> 3) % (1U << 15);
@@ -1330,6 +1442,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (15 - 1);
   out++;
   *out = (inl >> 1) % (1U << 15);
@@ -1339,6 +1452,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (15 - 14);
   out++;
   *out = (inl >> 14) % (1U << 15);
@@ -1346,6 +1460,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (15 - 12);
   out++;
   *out = (inl >> 12) % (1U << 15);
@@ -1353,6 +1468,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (15 - 10);
   out++;
   *out = (inl >> 10) % (1U << 15);
@@ -1360,6 +1476,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (15 - 8);
   out++;
   *out = (inl >> 8) % (1U << 15);
@@ -1367,6 +1484,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (15 - 6);
   out++;
   *out = (inl >> 6) % (1U << 15);
@@ -1374,6 +1492,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (15 - 4);
   out++;
   *out = (inl >> 4) % (1U << 15);
@@ -1381,6 +1500,7 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (15 - 2);
   out++;
   *out = (inl >> 2) % (1U << 15);
@@ -1394,95 +1514,111 @@ inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack16_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 16);
   out++;
@@ -1495,11 +1631,13 @@ inline const uint32_t* unpack16_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (17 - 2);
   out++;
   *out = (inl >> 2) % (1U << 17);
@@ -1507,6 +1645,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (17 - 4);
   out++;
   *out = (inl >> 4) % (1U << 17);
@@ -1514,6 +1653,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (17 - 6);
   out++;
   *out = (inl >> 6) % (1U << 17);
@@ -1521,6 +1661,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (17 - 8);
   out++;
   *out = (inl >> 8) % (1U << 17);
@@ -1528,6 +1669,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (17 - 10);
   out++;
   *out = (inl >> 10) % (1U << 17);
@@ -1535,6 +1677,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (17 - 12);
   out++;
   *out = (inl >> 12) % (1U << 17);
@@ -1542,6 +1685,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (17 - 14);
   out++;
   *out = (inl >> 14) % (1U << 17);
@@ -1549,11 +1693,13 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (17 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (17 - 1);
   out++;
   *out = (inl >> 1) % (1U << 17);
@@ -1561,6 +1707,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (17 - 3);
   out++;
   *out = (inl >> 3) % (1U << 17);
@@ -1568,6 +1715,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (17 - 5);
   out++;
   *out = (inl >> 5) % (1U << 17);
@@ -1575,6 +1723,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (17 - 7);
   out++;
   *out = (inl >> 7) % (1U << 17);
@@ -1582,6 +1731,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (17 - 9);
   out++;
   *out = (inl >> 9) % (1U << 17);
@@ -1589,6 +1739,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (17 - 11);
   out++;
   *out = (inl >> 11) % (1U << 17);
@@ -1596,6 +1747,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (17 - 13);
   out++;
   *out = (inl >> 13) % (1U << 17);
@@ -1603,6 +1755,7 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (17 - 15);
   out++;
   *out = (inl >> 15);
@@ -1614,11 +1767,13 @@ inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (18 - 4);
   out++;
   *out = (inl >> 4) % (1U << 18);
@@ -1626,6 +1781,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (18 - 8);
   out++;
   *out = (inl >> 8) % (1U << 18);
@@ -1633,6 +1789,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (18 - 12);
   out++;
   *out = (inl >> 12) % (1U << 18);
@@ -1640,11 +1797,13 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (18 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (18 - 2);
   out++;
   *out = (inl >> 2) % (1U << 18);
@@ -1652,6 +1811,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (18 - 6);
   out++;
   *out = (inl >> 6) % (1U << 18);
@@ -1659,6 +1819,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (18 - 10);
   out++;
   *out = (inl >> 10) % (1U << 18);
@@ -1666,17 +1827,20 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (18 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (18 - 4);
   out++;
   *out = (inl >> 4) % (1U << 18);
@@ -1684,6 +1848,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (18 - 8);
   out++;
   *out = (inl >> 8) % (1U << 18);
@@ -1691,6 +1856,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (18 - 12);
   out++;
   *out = (inl >> 12) % (1U << 18);
@@ -1698,11 +1864,13 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (18 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (18 - 2);
   out++;
   *out = (inl >> 2) % (1U << 18);
@@ -1710,6 +1878,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (18 - 6);
   out++;
   *out = (inl >> 6) % (1U << 18);
@@ -1717,6 +1886,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (18 - 10);
   out++;
   *out = (inl >> 10) % (1U << 18);
@@ -1724,6 +1894,7 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (18 - 14);
   out++;
   *out = (inl >> 14);
@@ -1735,11 +1906,13 @@ inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (19 - 6);
   out++;
   *out = (inl >> 6) % (1U << 19);
@@ -1747,6 +1920,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (19 - 12);
   out++;
   *out = (inl >> 12) % (1U << 19);
@@ -1754,11 +1928,13 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (19 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (19 - 5);
   out++;
   *out = (inl >> 5) % (1U << 19);
@@ -1766,6 +1942,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (19 - 11);
   out++;
   *out = (inl >> 11) % (1U << 19);
@@ -1773,11 +1950,13 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (19 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (19 - 4);
   out++;
   *out = (inl >> 4) % (1U << 19);
@@ -1785,6 +1964,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (19 - 10);
   out++;
   *out = (inl >> 10) % (1U << 19);
@@ -1792,11 +1972,13 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (19 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (19 - 3);
   out++;
   *out = (inl >> 3) % (1U << 19);
@@ -1804,6 +1986,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (19 - 9);
   out++;
   *out = (inl >> 9) % (1U << 19);
@@ -1811,11 +1994,13 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (19 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (19 - 2);
   out++;
   *out = (inl >> 2) % (1U << 19);
@@ -1823,6 +2008,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (19 - 8);
   out++;
   *out = (inl >> 8) % (1U << 19);
@@ -1830,11 +2016,13 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (19 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (19 - 1);
   out++;
   *out = (inl >> 1) % (1U << 19);
@@ -1842,6 +2030,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (19 - 7);
   out++;
   *out = (inl >> 7) % (1U << 19);
@@ -1849,6 +2038,7 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (19 - 13);
   out++;
   *out = (inl >> 13);
@@ -1860,11 +2050,13 @@ inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (20 - 8);
   out++;
   *out = (inl >> 8) % (1U << 20);
@@ -1872,11 +2064,13 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (20 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (20 - 4);
   out++;
   *out = (inl >> 4) % (1U << 20);
@@ -1884,17 +2078,20 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (20 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (20 - 8);
   out++;
   *out = (inl >> 8) % (1U << 20);
@@ -1902,11 +2099,13 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (20 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (20 - 4);
   out++;
   *out = (inl >> 4) % (1U << 20);
@@ -1914,17 +2113,20 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (20 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (20 - 8);
   out++;
   *out = (inl >> 8) % (1U << 20);
@@ -1932,11 +2134,13 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (20 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (20 - 4);
   out++;
   *out = (inl >> 4) % (1U << 20);
@@ -1944,17 +2148,20 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (20 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (20 - 8);
   out++;
   *out = (inl >> 8) % (1U << 20);
@@ -1962,11 +2169,13 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (20 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (20 - 4);
   out++;
   *out = (inl >> 4) % (1U << 20);
@@ -1974,6 +2183,7 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (20 - 12);
   out++;
   *out = (inl >> 12);
@@ -1985,11 +2195,13 @@ inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 21);
   out++;
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (21 - 10);
   out++;
   *out = (inl >> 10) % (1U << 21);
@@ -1997,11 +2209,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (21 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (21 - 9);
   out++;
   *out = (inl >> 9) % (1U << 21);
@@ -2009,11 +2223,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 19)) << (21 - 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (21 - 8);
   out++;
   *out = (inl >> 8) % (1U << 21);
@@ -2021,11 +2237,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (21 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (21 - 7);
   out++;
   *out = (inl >> 7) % (1U << 21);
@@ -2033,11 +2251,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (21 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (21 - 6);
   out++;
   *out = (inl >> 6) % (1U << 21);
@@ -2045,11 +2265,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (21 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (21 - 5);
   out++;
   *out = (inl >> 5) % (1U << 21);
@@ -2057,11 +2279,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (21 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (21 - 4);
   out++;
   *out = (inl >> 4) % (1U << 21);
@@ -2069,11 +2293,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (21 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (21 - 3);
   out++;
   *out = (inl >> 3) % (1U << 21);
@@ -2081,11 +2307,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (21 - 13);
   out++;
   *out = (inl >> 13);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (21 - 2);
   out++;
   *out = (inl >> 2) % (1U << 21);
@@ -2093,11 +2321,13 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (21 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (21 - 1);
   out++;
   *out = (inl >> 1) % (1U << 21);
@@ -2105,6 +2335,7 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (21 - 11);
   out++;
   *out = (inl >> 11);
@@ -2116,16 +2347,19 @@ inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (22 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (22 - 2);
   out++;
   *out = (inl >> 2) % (1U << 22);
@@ -2133,11 +2367,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (22 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (22 - 4);
   out++;
   *out = (inl >> 4) % (1U << 22);
@@ -2145,11 +2381,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (22 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (22 - 6);
   out++;
   *out = (inl >> 6) % (1U << 22);
@@ -2157,11 +2395,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (22 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (22 - 8);
   out++;
   *out = (inl >> 8) % (1U << 22);
@@ -2169,27 +2409,32 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (22 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (22 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (22 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (22 - 2);
   out++;
   *out = (inl >> 2) % (1U << 22);
@@ -2197,11 +2442,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (22 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (22 - 4);
   out++;
   *out = (inl >> 4) % (1U << 22);
@@ -2209,11 +2456,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (22 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (22 - 6);
   out++;
   *out = (inl >> 6) % (1U << 22);
@@ -2221,11 +2470,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (22 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (22 - 8);
   out++;
   *out = (inl >> 8) % (1U << 22);
@@ -2233,11 +2484,13 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (22 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (22 - 10);
   out++;
   *out = (inl >> 10);
@@ -2249,16 +2502,19 @@ inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 23);
   out++;
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (23 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (23 - 5);
   out++;
   *out = (inl >> 5) % (1U << 23);
@@ -2266,16 +2522,19 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 19)) << (23 - 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (23 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (23 - 1);
   out++;
   *out = (inl >> 1) % (1U << 23);
@@ -2283,11 +2542,13 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (23 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (23 - 6);
   out++;
   *out = (inl >> 6) % (1U << 23);
@@ -2295,16 +2556,19 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (23 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (23 - 11);
   out++;
   *out = (inl >> 11);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (23 - 2);
   out++;
   *out = (inl >> 2) % (1U << 23);
@@ -2312,11 +2576,13 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (23 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (23 - 7);
   out++;
   *out = (inl >> 7) % (1U << 23);
@@ -2324,16 +2590,19 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 21)) << (23 - 21);
   out++;
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (23 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (23 - 3);
   out++;
   *out = (inl >> 3) % (1U << 23);
@@ -2341,11 +2610,13 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (23 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (23 - 8);
   out++;
   *out = (inl >> 8) % (1U << 23);
@@ -2353,16 +2624,19 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (23 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (23 - 13);
   out++;
   *out = (inl >> 13);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (23 - 4);
   out++;
   *out = (inl >> 4) % (1U << 23);
@@ -2370,11 +2644,13 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (23 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (23 - 9);
   out++;
   *out = (inl >> 9);
@@ -2386,128 +2662,152 @@ inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack24_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (24 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (24 - 8);
   out++;
   *out = (inl >> 8);
@@ -2519,21 +2819,25 @@ inline const uint32_t* unpack24_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 25);
   out++;
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (25 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (25 - 11);
   out++;
   *out = (inl >> 11);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (25 - 4);
   out++;
   *out = (inl >> 4) % (1U << 25);
@@ -2541,21 +2845,25 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (25 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (25 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (25 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (25 - 1);
   out++;
   *out = (inl >> 1) % (1U << 25);
@@ -2563,16 +2871,19 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 19)) << (25 - 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (25 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (25 - 5);
   out++;
   *out = (inl >> 5) % (1U << 25);
@@ -2580,21 +2891,25 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 23)) << (25 - 23);
   out++;
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (25 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (25 - 9);
   out++;
   *out = (inl >> 9);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (25 - 2);
   out++;
   *out = (inl >> 2) % (1U << 25);
@@ -2602,16 +2917,19 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (25 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (25 - 13);
   out++;
   *out = (inl >> 13);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (25 - 6);
   out++;
   *out = (inl >> 6) % (1U << 25);
@@ -2619,21 +2937,25 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (25 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (25 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (25 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (25 - 3);
   out++;
   *out = (inl >> 3) % (1U << 25);
@@ -2641,16 +2963,19 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 21)) << (25 - 21);
   out++;
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (25 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (25 - 7);
   out++;
   *out = (inl >> 7);
@@ -2662,26 +2987,31 @@ inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (26 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (26 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (26 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (26 - 2);
   out++;
   *out = (inl >> 2) % (1U << 26);
@@ -2689,21 +3019,25 @@ inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (26 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (26 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (26 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (26 - 4);
   out++;
   *out = (inl >> 4) % (1U << 26);
@@ -2711,47 +3045,56 @@ inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (26 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (26 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (26 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (26 - 6);
   out++;
   *out = (inl >> 6);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (26 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (26 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (26 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (26 - 2);
   out++;
   *out = (inl >> 2) % (1U << 26);
@@ -2759,21 +3102,25 @@ inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (26 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (26 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (26 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (26 - 4);
   out++;
   *out = (inl >> 4) % (1U << 26);
@@ -2781,21 +3128,25 @@ inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (26 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (26 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (26 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (26 - 6);
   out++;
   *out = (inl >> 6);
@@ -2807,31 +3158,37 @@ inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 27);
   out++;
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (27 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (27 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (27 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (27 - 7);
   out++;
   *out = (inl >> 7);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (27 - 2);
   out++;
   *out = (inl >> 2) % (1U << 27);
@@ -2839,26 +3196,31 @@ inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (27 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 19)) << (27 - 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (27 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (27 - 9);
   out++;
   *out = (inl >> 9);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (27 - 4);
   out++;
   *out = (inl >> 4) % (1U << 27);
@@ -2866,31 +3228,37 @@ inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 26)) << (27 - 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 21)) << (27 - 21);
   out++;
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (27 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (27 - 11);
   out++;
   *out = (inl >> 11);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (27 - 6);
   out++;
   *out = (inl >> 6);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (27 - 1);
   out++;
   *out = (inl >> 1) % (1U << 27);
@@ -2898,26 +3266,31 @@ inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 23)) << (27 - 23);
   out++;
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (27 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (27 - 13);
   out++;
   *out = (inl >> 13);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (27 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (27 - 3);
   out++;
   *out = (inl >> 3) % (1U << 27);
@@ -2925,26 +3298,31 @@ inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 25)) << (27 - 25);
   out++;
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (27 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (27 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (27 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (27 - 5);
   out++;
   *out = (inl >> 5);
@@ -2956,144 +3334,172 @@ inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack28_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (28 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (28 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (28 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (28 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (28 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (28 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (28 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (28 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (28 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (28 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (28 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (28 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (28 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (28 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (28 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (28 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (28 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (28 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (28 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (28 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (28 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (28 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (28 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (28 - 4);
   out++;
   *out = (inl >> 4);
@@ -3105,51 +3511,61 @@ inline const uint32_t* unpack28_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack29_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 29);
   out++;
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 26)) << (29 - 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 23)) << (29 - 23);
   out++;
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (29 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (29 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (29 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (29 - 11);
   out++;
   *out = (inl >> 11);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (29 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (29 - 5);
   out++;
   *out = (inl >> 5);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (29 - 2);
   out++;
   *out = (inl >> 2) % (1U << 29);
@@ -3157,51 +3573,61 @@ inline const uint32_t* unpack29_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 28)) << (29 - 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 25)) << (29 - 25);
   out++;
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (29 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 19)) << (29 - 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (29 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (29 - 13);
   out++;
   *out = (inl >> 13);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (29 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (29 - 7);
   out++;
   *out = (inl >> 7);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (29 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (29 - 1);
   out++;
   *out = (inl >> 1) % (1U << 29);
@@ -3209,46 +3635,55 @@ inline const uint32_t* unpack29_32(const uint32_t* in, uint32_t* out) {
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 27)) << (29 - 27);
   out++;
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (29 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 21)) << (29 - 21);
   out++;
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (29 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (29 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (29 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (29 - 9);
   out++;
   *out = (inl >> 9);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (29 - 6);
   out++;
   *out = (inl >> 6);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (29 - 3);
   out++;
   *out = (inl >> 3);
@@ -3260,152 +3695,182 @@ inline const uint32_t* unpack29_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack30_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 30);
   out++;
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 28)) << (30 - 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 26)) << (30 - 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (30 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (30 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (30 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (30 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (30 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (30 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (30 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (30 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (30 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (30 - 6);
   out++;
   *out = (inl >> 6);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (30 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (30 - 2);
   out++;
   *out = (inl >> 2);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0) % (1U << 30);
   out++;
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 28)) << (30 - 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 26)) << (30 - 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (30 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (30 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (30 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (30 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (30 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (30 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (30 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (30 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (30 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (30 - 6);
   out++;
   *out = (inl >> 6);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (30 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (30 - 2);
   out++;
   *out = (inl >> 2);
@@ -3417,156 +3882,187 @@ inline const uint32_t* unpack30_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack31_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0) % (1U << 31);
   out++;
   *out = (inl >> 31);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 30)) << (31 - 30);
   out++;
   *out = (inl >> 30);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 29)) << (31 - 29);
   out++;
   *out = (inl >> 29);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 28)) << (31 - 28);
   out++;
   *out = (inl >> 28);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 27)) << (31 - 27);
   out++;
   *out = (inl >> 27);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 26)) << (31 - 26);
   out++;
   *out = (inl >> 26);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 25)) << (31 - 25);
   out++;
   *out = (inl >> 25);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 24)) << (31 - 24);
   out++;
   *out = (inl >> 24);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 23)) << (31 - 23);
   out++;
   *out = (inl >> 23);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 22)) << (31 - 22);
   out++;
   *out = (inl >> 22);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 21)) << (31 - 21);
   out++;
   *out = (inl >> 21);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 20)) << (31 - 20);
   out++;
   *out = (inl >> 20);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 19)) << (31 - 19);
   out++;
   *out = (inl >> 19);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 18)) << (31 - 18);
   out++;
   *out = (inl >> 18);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 17)) << (31 - 17);
   out++;
   *out = (inl >> 17);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 16)) << (31 - 16);
   out++;
   *out = (inl >> 16);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 15)) << (31 - 15);
   out++;
   *out = (inl >> 15);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 14)) << (31 - 14);
   out++;
   *out = (inl >> 14);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 13)) << (31 - 13);
   out++;
   *out = (inl >> 13);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 12)) << (31 - 12);
   out++;
   *out = (inl >> 12);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 11)) << (31 - 11);
   out++;
   *out = (inl >> 11);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 10)) << (31 - 10);
   out++;
   *out = (inl >> 10);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 9)) << (31 - 9);
   out++;
   *out = (inl >> 9);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 8)) << (31 - 8);
   out++;
   *out = (inl >> 8);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 7)) << (31 - 7);
   out++;
   *out = (inl >> 7);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 6)) << (31 - 6);
   out++;
   *out = (inl >> 6);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 5)) << (31 - 5);
   out++;
   *out = (inl >> 5);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 4)) << (31 - 4);
   out++;
   *out = (inl >> 4);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 3)) << (31 - 3);
   out++;
   *out = (inl >> 3);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 2)) << (31 - 2);
   out++;
   *out = (inl >> 2);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out |= (inl % (1U << 1)) << (31 - 1);
   out++;
   *out = (inl >> 1);
@@ -3578,129 +4074,161 @@ inline const uint32_t* unpack31_32(const uint32_t* in, uint32_t* out) {
 
 inline const uint32_t* unpack32_32(const uint32_t* in, uint32_t* out) {
   uint32_t inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
   inl = util::SafeLoad(in);
+  inl = arrow::BitUtil::FromLittleEndian(inl);
   out++;
   *out = (inl >> 0);
   ++in;
diff --git a/cpp/src/arrow/util/rle_encoding.h b/cpp/src/arrow/util/rle_encoding.h
index 71f2066..2fe2376 100644
--- a/cpp/src/arrow/util/rle_encoding.h
+++ b/cpp/src/arrow/util/rle_encoding.h
@@ -592,11 +592,12 @@ bool RleDecoder::NextCounts() {
       return false;
     }
     repeat_count_ = count;
-    // XXX (ARROW-4018) this is not big-endian compatible
+    T value = 0;
     if (!bit_reader_.GetAligned<T>(static_cast<int>(BitUtil::CeilDiv(bit_width_, 8)),
-                                   reinterpret_cast<T*>(&current_value_))) {
+                                   &value)) {
       return false;
     }
+    current_value_ = static_cast<uint64_t>(value);
   }
   return true;
 }