Adding llvm::sys::swapByteOrder() for the common use-case of byte-swapping a value...
authorArtyom Skrobov <Artyom.Skrobov@arm.com>
Sat, 14 Jun 2014 12:52:55 +0000 (12:52 +0000)
committerArtyom Skrobov <Artyom.Skrobov@arm.com>
Sat, 14 Jun 2014 12:52:55 +0000 (12:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210976 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/SwapByteOrder.h
unittests/Support/SwapByteOrderTest.cpp

index 468a82357f2e28bbaa57971478bdfacd9aae059b..340954f4c893021c26bbec6bb2f6d31ad42c7663 100644 (file)
@@ -95,6 +95,11 @@ inline signed long long getSwappedBytes(signed long long C) {
   return SwapByteOrder_64(C);
 }
 
+template<typename T>
+inline void swapByteOrder(T &Value) {
+  Value = getSwappedBytes(Value);
+}
+
 } // end namespace sys
 } // end namespace llvm
 
index a07282ef095e18aa210e0514b9f2ebc98ee8a115..525cfc1aea82c5a44f16a679c7feb6a2241e6bac 100644 (file)
@@ -125,4 +125,52 @@ TEST(getSwappedBytes, int64_t) {
     sys::getSwappedBytes(int64_t(0x8877665544332211LL)));
 }
 
+TEST(swapByteOrder, uint8_t) {
+  uint8_t value = 0x11;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(uint8_t(0x11), value);
+}
+
+TEST(swapByteOrder, uint16_t) {
+  uint16_t value = 0x2211;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(uint16_t(0x1122), value);
+}
+
+TEST(swapByteOrder, uint32_t) {
+  uint32_t value = 0x44332211;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(uint32_t(0x11223344), value);
+}
+
+TEST(swapByteOrder, uint64_t) {
+  uint64_t value = 0x8877665544332211ULL;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(uint64_t(0x1122334455667788ULL), value);
+}
+
+TEST(swapByteOrder, int8_t) {
+  int8_t value = 0x11;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(int8_t(0x11), value);
+}
+
+TEST(swapByteOrder, int16_t) {
+  int16_t value = 0x2211;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(int16_t(0x1122), value);
+}
+
+TEST(swapByteOrder, int32_t) {
+  int32_t value = 0x44332211;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(int32_t(0x11223344), value);
+}
+
+TEST(swapByteOrder, int64_t) {
+  int64_t value = 0x8877665544332211LL;
+  sys::swapByteOrder(value);
+  EXPECT_EQ(int64_t(0x1122334455667788LL), value);
+}
+
 }