Merge "linker: add support for odm partition"
diff --git a/android-changes-for-ndk-developers.md b/android-changes-for-ndk-developers.md
index 0620d9e..48800ca 100644
--- a/android-changes-for-ndk-developers.md
+++ b/android-changes-for-ndk-developers.md
@@ -360,23 +360,30 @@
 
 ## Enable logging of dlopen/dlsym and library loading errors for apps (Available in Android O)
 
-Starting with Android O it is possible to enable logging of all dlsym/dlopen calls
-for debuggable apps. Here is short instruction on how to do that:
+Starting with Android O it is possible to enable logging of dynamic
+linker activity for debuggable apps by setting a property corresponding
+to the fully-qualified name of the specific app:
 ```
-adb shell setprop debug.ld.app.com.example.myapp dlsym,dlopen,dlerror
+adb shell setprop debug.ld.app.com.example.myapp dlerror,dlopen,dlsym
 adb logcat
 ```
 
-Any subset of (dlsym,dlopen,dlerror) can be used.
+Any combination of `dlerror`, `dlopen`, and `dlsym` can be used. There's
+no separate `dlclose` option: `dlopen` covers both loading and unloading
+of libraries. Note also that `dlerror` doesn't correspond to actual
+calls of dlerror(3) but to any time the dynamic linker writes to its
+internal error buffer, so you'll see any errors the dynamic linker would
+have reported, even if the code you're debugging doesn't actually call
+dlerror(3) itself.
 
-On userdebug and eng builds it is possible to enable tracing for the whole system
-by using debug.ld.all system property instead of app-specific one:
+On userdebug and eng builds it is possible to enable tracing for the
+whole system by using the `debug.ld.all` system property instead of
+app-specific one. For example, to enable logging of all dlopen(3)
+(and thus dclose(3)) calls, and all failures, but not dlsym(3) calls:
 ```
 adb shell setprop debug.ld.all dlerror,dlopen
 ```
 
-enables logging of all errors and dlopen calls
-
 ## dlclose interacts badly with thread local variables with non-trivial destructors
 
 Android allows `dlclose` to unload a library even if there are still
diff --git a/benchmarks/bionic_benchmarks.cpp b/benchmarks/bionic_benchmarks.cpp
index 27829a6..d82c739 100644
--- a/benchmarks/bionic_benchmarks.cpp
+++ b/benchmarks/bionic_benchmarks.cpp
@@ -27,11 +27,50 @@
 #include <vector>
 
 #include <android-base/file.h>
+#include <android-base/stringprintf.h>
 #include <android-base/strings.h>
 #include <benchmark/benchmark.h>
 #include <tinyxml2.h>
 #include "util.h"
 
+static const std::vector<int> kCommonSizes{
+  8,
+  64,
+  512,
+  1 * KB,
+  8 * KB,
+  16 * KB,
+  32 * KB,
+  64 * KB,
+  128 * KB,
+};
+
+static const std::vector<int> kSmallSizes{
+  // Increment by 1
+  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+  // Increment by 8
+  24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144,
+  // Increment by 16
+  160, 176, 192, 208, 224, 240, 256,
+};
+
+static const std::vector<int> kMediumSizes{
+  512,
+  1 * KB,
+  8 * KB,
+  16 * KB,
+  32 * KB,
+  64 * KB,
+  128 * KB,
+};
+
+static const std::vector<int> kLargeSizes{
+  256 * KB,
+  512 * KB,
+  1024 * KB,
+  2048 * KB,
+};
+
 std::map<std::string, std::pair<benchmark_func_t, std::string>> g_str_to_func;
 
 std::mutex g_map_lock;
@@ -172,13 +211,85 @@
   reinterpret_cast<void(*) (benchmark::State&)>(func_to_bench)(state);
 }
 
+static constexpr char kOnebufManualStr[] = "AT_ONEBUF_MANUAL_ALIGN_";
+static constexpr char kTwobufManualStr[] = "AT_TWOBUF_MANUAL_ALIGN1_";
+
+static bool ParseOnebufManualStr(std::string& arg, std::vector<int>* values) {
+  // The format of this is:
+  //   AT_ONEBUF_MANUAL_ALIGN_XX_SIZE_YY
+  // Where:
+  //   XX is the alignment
+  //   YY is the size
+  int align;
+  int size;
+  if (sscanf(arg.c_str(), "AT_ONEBUF_MANUAL_ALIGN_%d_SIZE_%d" , &align, &size) != 2) {
+    return false;
+  }
+
+  if (align != 0 && (align & (align - 1)) != 0) {
+    return false;
+  }
+
+  values->push_back(static_cast<int>(size));
+  values->push_back(static_cast<int>(align));
+  return true;
+}
+
+static bool ParseTwobufManualStr(std::string& arg, std::vector<int>* values) {
+  // The format of this is:
+  //   AT_TWOBUF_MANUAL_ALIGN1_XX_ALIGN2_YY_SIZE_ZZ
+  // Where:
+  //   XX is the alignment of the first argument
+  //   YY is the alignment of the second argument
+  //   ZZ is the size
+  int align1;
+  int align2;
+  int size;
+  if (sscanf(arg.c_str(), "AT_TWOBUF_MANUAL_ALIGN1_%d_ALIGN2_%d_SIZE_%d" ,
+             &align1, &align2, &size) != 3) {
+    return false;
+  }
+
+  // Verify the alignments are powers of 2.
+  if ((align1 != 0 && (align1 & (align1 - 1)) != 0)
+      || (align2 != 0 && (align2 & (align2 - 1)) != 0)) {
+    return false;
+  }
+
+  values->push_back(static_cast<int>(size));
+  values->push_back(static_cast<int>(align1));
+  values->push_back(static_cast<int>(align2));
+  return true;
+}
+
 args_vector_t* ResolveArgs(args_vector_t* to_populate, std::string args,
                            std::map<std::string, args_vector_t>& args_shorthand) {
-  // args is either a space-separated list of ints or a macro name.
+  // args is either a space-separated list of ints, a macro name, or
+  // special free form macro.
   // To ease formatting in XML files, args is left and right trimmed.
   if (args_shorthand.count(args)) {
     return &args_shorthand[args];
   }
+  // Check for free form macro.
+  if (android::base::StartsWith(args, kOnebufManualStr)) {
+    std::vector<int> values;
+    if (!ParseOnebufManualStr(args, &values)) {
+      errx(1, "ERROR: Bad format of macro %s, should be AT_ONEBUF_MANUAL_ALIGN_XX_SIZE_YY",
+           args.c_str());
+    }
+    to_populate->push_back(std::move(values));
+    return to_populate;
+  } else if (android::base::StartsWith(args, kTwobufManualStr)) {
+    std::vector<int> values;
+    if (!ParseTwobufManualStr(args, &values)) {
+      errx(1,
+           "ERROR: Bad format of macro %s, should be AT_TWOBUF_MANUAL_ALIGN1_XX_ALIGNE2_YY_SIZE_ZZ",
+           args.c_str());
+    }
+    to_populate->push_back(std::move(values));
+    return to_populate;
+  }
+
   to_populate->push_back(std::vector<int>());
   std::stringstream sstream(args);
   std::string argstr;
@@ -306,27 +417,66 @@
   return 0;
 }
 
-std::map<std::string, args_vector_t> GetShorthand() {
-  std::map<std::string, args_vector_t> args_shorthand {
-    {"AT_ALIGNED_TWOBUF", args_vector_t{ {8, 0, 0},
-                                         {64, 0, 0},
-                                         {512, 0, 0},
-                                         {1 * KB, 0, 0},
-                                         {8 * KB, 0, 0},
-                                         {16 * KB, 0, 0},
-                                         {32 * KB, 0, 0},
-                                         {64 * KB, 0, 0} }},
-    {"AT_ALIGNED_ONEBUF", args_vector_t{ {(8), 0},
-                                         {(64), 0},
-                                         {(512), 0},
-                                         {(1*KB), 0},
-                                         {(8*KB), 0},
-                                         {(16*KB), 0},
-                                         {(32*KB), 0},
-                                         {(64*KB), 0}}},
+static void SetArgs(const std::vector<int>& sizes, args_vector_t* args) {
+  for (int size : sizes) {
+    args->push_back({size});
+  }
+}
 
-    {"AT_COMMON_SIZES", args_vector_t{ {8}, {64}, {512}, {1*KB}, {8*KB}, {16*KB},
-                                                       {32*KB}, {64*KB}}},
+static void SetArgs(const std::vector<int>& sizes, int align, args_vector_t* args) {
+  for (int size : sizes) {
+    args->push_back({size, align});
+  }
+}
+
+
+static void SetArgs(const std::vector<int>& sizes, int align1, int align2, args_vector_t* args) {
+  for (int size : sizes) {
+    args->push_back({size, align1, align2});
+  }
+}
+
+static args_vector_t GetArgs(const std::vector<int>& sizes) {
+  args_vector_t args;
+  SetArgs(sizes, &args);
+  return args;
+}
+
+static args_vector_t GetArgs(const std::vector<int>& sizes, int align) {
+  args_vector_t args;
+  SetArgs(sizes, align, &args);
+  return args;
+}
+
+static args_vector_t GetArgs(const std::vector<int>& sizes, int align1, int align2) {
+  args_vector_t args;
+  SetArgs(sizes, align1, align2, &args);
+  return args;
+}
+
+std::map<std::string, args_vector_t> GetShorthand() {
+  std::vector<int> all_sizes(kSmallSizes);
+  all_sizes.insert(all_sizes.end(), kMediumSizes.begin(), kMediumSizes.end());
+  all_sizes.insert(all_sizes.end(), kLargeSizes.begin(), kLargeSizes.end());
+
+  std::map<std::string, args_vector_t> args_shorthand {
+    {"AT_COMMON_SIZES", GetArgs(kCommonSizes)},
+    {"AT_SMALL_SIZES", GetArgs(kSmallSizes)},
+    {"AT_MEDIUM_SIZES", GetArgs(kMediumSizes)},
+    {"AT_LARGE_SIZES", GetArgs(kLargeSizes)},
+    {"AT_ALL_SIZES", GetArgs(all_sizes)},
+
+    {"AT_ALIGNED_ONEBUF", GetArgs(kCommonSizes, 0)},
+    {"AT_ALIGNED_ONEBUF_SMALL", GetArgs(kSmallSizes, 0)},
+    {"AT_ALIGNED_ONEBUF_MEDIUM", GetArgs(kMediumSizes, 0)},
+    {"AT_ALIGNED_ONEBUF_LARGE", GetArgs(kLargeSizes, 0)},
+    {"AT_ALIGNED_ONEBUF_ALL", GetArgs(all_sizes, 0)},
+
+    {"AT_ALIGNED_TWOBUF", GetArgs(kCommonSizes, 0, 0)},
+    {"AT_ALIGNED_TWOBUF_SMALL", GetArgs(kSmallSizes, 0, 0)},
+    {"AT_ALIGNED_TWOBUF_MEDIUM", GetArgs(kMediumSizes, 0, 0)},
+    {"AT_ALIGNED_TWOBUF_LARGE", GetArgs(kLargeSizes, 0, 0)},
+    {"AT_ALIGNED_TWOBUF_ALL", GetArgs(all_sizes, 0, 0)},
 
     // Do not exceed 512. that is about the largest number of properties
     // that can be created with the current property area size.
@@ -334,32 +484,26 @@
 
     {"MATH_COMMON", args_vector_t{ {0}, {1}, {2}, {3} }}
   };
-  for (int i = 1; i < 15; i++) {
-    int align = pow(2, i);
-    std::stringstream sstream;
-    sstream << "AT_" << align << "_ALIGN_TWOBUF";
-    args_shorthand.emplace(sstream.str(),
-                           args_vector_t{ {8, align, align},
-                                          {64, align, align},
-                                          {512, align, align},
-                                          {1 * KB, align, align},
-                                          {8 * KB, align, align},
-                                          {16 * KB, align, align},
-                                          {32 * KB, align, align},
-                                          {64 * KB, align, align} });
-    sstream.str("");
-    sstream << "AT_" << align << "_ALIGN_ONEBUF";
-    args_shorthand.emplace(sstream.str(),
-                            args_vector_t{ {(8), align},
-                                           {(64), align},
-                                           {(512), align},
-                                           {(1*KB), align},
-                                           {(8*KB), align},
-                                           {(16*KB), align},
-                                           {(32*KB), align},
-                                           {(64*KB), align} });
-    sstream.str("");
+
+  args_vector_t args_onebuf;
+  args_vector_t args_twobuf;
+  for (int size : all_sizes) {
+    args_onebuf.push_back({size, 0});
+    args_twobuf.push_back({size, 0, 0});
+    // Skip alignments on zero sizes.
+    if (size == 0) {
+      continue;
+    }
+    for (int align1 = 1; align1 <= 32; align1 <<= 1) {
+      args_onebuf.push_back({size, align1});
+      for (int align2 = 1; align2 <= 32; align2 <<= 1) {
+        args_twobuf.push_back({size, align1, align2});
+      }
+    }
   }
+  args_shorthand.emplace("AT_MANY_ALIGNED_ONEBUF", args_onebuf);
+  args_shorthand.emplace("AT_MANY_ALIGNED_TWOBUF", args_twobuf);
+
   return args_shorthand;
 }
 
diff --git a/benchmarks/string_benchmark.cpp b/benchmarks/string_benchmark.cpp
index 9635929..38122f2 100644
--- a/benchmarks/string_benchmark.cpp
+++ b/benchmarks/string_benchmark.cpp
@@ -187,6 +187,11 @@
   const size_t src_alignment = state.range(1);
   const size_t dst_alignment = state.range(2);
 
+  // Skip sizes that don't make sense.
+  if ((nbytes / 2) == 0) {
+    return;
+  }
+
   std::vector<char> src;
   std::vector<char> dst;
   char* src_aligned = GetAlignedPtrFilled(&src, src_alignment, nbytes / 2, 'x');
diff --git a/benchmarks/suites/string.xml b/benchmarks/suites/string.xml
new file mode 100644
index 0000000..58278c8
--- /dev/null
+++ b/benchmarks/suites/string.xml
@@ -0,0 +1,52 @@
+<fn>
+  <name>BM_string_memcmp</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memcpy</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memmove_non_overlapping</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memmove_overlap_dst_before_src</name>
+  <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memmove_overlap_src_before_dst</name>
+  <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memset</name>
+  <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strcat_copy_only</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strcat_half_copy_half_seek</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strcat_seek_only</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strchr</name>
+  <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strcmp</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strcpy</name>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_strlen</name>
+  <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment.xml b/benchmarks/test_suites/test_alignment.xml
deleted file mode 100644
index 20df320..0000000
--- a/benchmarks/test_suites/test_alignment.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<fn>
-  <name>BM_string_memcmp</name>
-  <iterations>1</iterations>
-  <args>AT_2_ALIGN_TWOBUF</args>
-</fn>
-<fn>
-  <name>BM_string_memcmp</name>
-  <iterations>1</iterations>
-  <args>AT_4_ALIGN_TWOBUF</args>
-</fn>
-<fn>
-  <name>BM_string_memcmp</name>
-  <iterations>1</iterations>
-  <args>AT_16_ALIGN_TWOBUF</args>
-</fn>
-<fn>
-  <name>BM_string_memcmp</name>
-  <iterations>1</iterations>
-  <args>AT_512_ALIGN_TWOBUF</args>
-</fn>
-<fn>
-  <name>BM_string_memcmp</name>
-  <iterations>1</iterations>
-  <args>AT_2048_ALIGN_TWOBUF</args>
-</fn>
-<fn>
-  <name>BM_string_strlen</name>
-  <iterations>1</iterations>
-  <args>AT_2_ALIGN_ONEBUF</args>
-</fn>
-<fn>
-  <name>BM_string_strlen</name>
-  <iterations>1</iterations>
-  <args>AT_4_ALIGN_ONEBUF</args>
-</fn>
-<fn>
-  <name>BM_string_strlen</name>
-  <iterations>1</iterations>
-  <args>AT_16_ALIGN_ONEBUF</args>
-</fn>
-<fn>
-  <name>BM_string_strlen</name>
-  <iterations>1</iterations>
-  <args>AT_512_ALIGN_ONEBUF</args>
-</fn>
-<fn>
-  <name>BM_string_strlen</name>
-  <iterations>1</iterations>
-  <args>AT_2048_ALIGN_ONEBUF</args>
-</fn>
diff --git a/benchmarks/test_suites/test_alignment_onebuf.xml b/benchmarks/test_suites/test_alignment_onebuf.xml
new file mode 100644
index 0000000..4d7f14f
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_onebuf.xml
@@ -0,0 +1,30 @@
+<fn>
+  <name>BM_string_strlen</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memset</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_ONEBUF_SMALL</args>
+</fn>
+<fn>
+  <name>BM_string_strlen</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_ONEBUF_MEDIUM</args>
+</fn>
+<fn>
+  <name>BM_string_memset</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_ONEBUF_LARGE</args>
+</fn>
+<fn>
+  <name>BM_string_strlen</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_ONEBUF_ALL</args>
+</fn>
+<fn>
+  <name>BM_string_memset</name>
+  <iterations>1</iterations>
+  <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment_onebuf_manual.xml b/benchmarks/test_suites/test_alignment_onebuf_manual.xml
new file mode 100644
index 0000000..97ed5dd
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_onebuf_manual.xml
@@ -0,0 +1,20 @@
+<fn>
+  <name>BM_string_strlen</name>
+  <iterations>1</iterations>
+  <args>AT_ONEBUF_MANUAL_ALIGN_0_SIZE_115</args>
+</fn>
+<fn>
+  <name>BM_string_memset</name>
+  <iterations>1</iterations>
+  <args>AT_ONEBUF_MANUAL_ALIGN_1_SIZE_1024</args>
+</fn>
+<fn>
+  <name>BM_string_strlen</name>
+  <iterations>1</iterations>
+  <args>AT_ONEBUF_MANUAL_ALIGN_4_SIZE_2048</args>
+</fn>
+<fn>
+  <name>BM_string_memset</name>
+  <iterations>1</iterations>
+  <args>AT_ONEBUF_MANUAL_ALIGN_32_SIZE_4000</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment_twobuf.xml b/benchmarks/test_suites/test_alignment_twobuf.xml
new file mode 100644
index 0000000..e29401f
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_twobuf.xml
@@ -0,0 +1,30 @@
+<fn>
+  <name>BM_string_strcpy</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+  <name>BM_string_memcpy</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_TWOBUF_SMALL</args>
+</fn>
+<fn>
+  <name>BM_string_strcpy</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_TWOBUF_MEDIUM</args>
+</fn>
+<fn>
+  <name>BM_string_memcpy</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_TWOBUF_LARGE</args>
+</fn>
+<fn>
+  <name>BM_string_strcpy</name>
+  <iterations>1</iterations>
+  <args>AT_ALIGNED_TWOBUF_ALL</args>
+</fn>
+<fn>
+  <name>BM_string_memcpy</name>
+  <iterations>1</iterations>
+  <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment_twobuf_manual.xml b/benchmarks/test_suites/test_alignment_twobuf_manual.xml
new file mode 100644
index 0000000..1d49015
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_twobuf_manual.xml
@@ -0,0 +1,20 @@
+<fn>
+  <name>BM_string_strcpy</name>
+  <iterations>1</iterations>
+  <args>AT_TWOBUF_MANUAL_ALIGN1_0_ALIGN2_0_SIZE_12345</args>
+</fn>
+<fn>
+  <name>BM_string_memcpy</name>
+  <iterations>1</iterations>
+  <args>AT_TWOBUF_MANUAL_ALIGN1_2_ALIGN2_1_SIZE_10248</args>
+</fn>
+<fn>
+  <name>BM_string_strcpy</name>
+  <iterations>1</iterations>
+  <args>AT_TWOBUF_MANUAL_ALIGN1_4_ALIGN2_8_SIZE_17820</args>
+</fn>
+<fn>
+  <name>BM_string_memcpy</name>
+  <iterations>1</iterations>
+  <args>AT_TWOBUF_MANUAL_ALIGN1_16_ALIGN2_32_SIZE_20000</args>
+</fn>
diff --git a/benchmarks/test_suites/test_size.xml b/benchmarks/test_suites/test_size.xml
new file mode 100644
index 0000000..4ff3b51
--- /dev/null
+++ b/benchmarks/test_suites/test_size.xml
@@ -0,0 +1,25 @@
+<fn>
+  <name>BM_stdio_fwrite</name>
+  <iterations>1</iterations>
+  <args>AT_COMMON_SIZES</args>
+</fn>
+<fn>
+  <name>BM_stdio_fread</name>
+  <iterations>1</iterations>
+  <args>AT_SMALL_SIZES</args>
+</fn>
+<fn>
+  <name>BM_stdio_fwrite</name>
+  <iterations>1</iterations>
+  <args>AT_MEDIUM_SIZES</args>
+</fn>
+<fn>
+  <name>BM_stdio_fread</name>
+  <iterations>1</iterations>
+  <args>AT_LARGE_SIZES</args>
+</fn>
+<fn>
+  <name>BM_stdio_fwrite</name>
+  <iterations>1</iterations>
+  <args>AT_ALL_SIZES</args>
+</fn>
diff --git a/benchmarks/tests/interface_test.cpp b/benchmarks/tests/interface_test.cpp
index 3e87afe..33e506e 100644
--- a/benchmarks/tests/interface_test.cpp
+++ b/benchmarks/tests/interface_test.cpp
@@ -266,6 +266,7 @@
     "BM_stdio_fread/16384/iterations:1\n"
     "BM_stdio_fread/32768/iterations:1\n"
     "BM_stdio_fread/65536/iterations:1\n"
+    "BM_stdio_fread/131072/iterations:1\n"
     "BM_stdio_fread_unbuffered/8/iterations:1\n"
     "BM_stdio_fread_unbuffered/64/iterations:1\n"
     "BM_stdio_fread_unbuffered/512/iterations:1\n"
@@ -274,6 +275,7 @@
     "BM_stdio_fread_unbuffered/16384/iterations:1\n"
     "BM_stdio_fread_unbuffered/32768/iterations:1\n"
     "BM_stdio_fread_unbuffered/65536/iterations:1\n"
+    "BM_stdio_fread_unbuffered/131072/iterations:1\n"
     "BM_stdio_fwrite/8/iterations:1\n"
     "BM_stdio_fwrite/64/iterations:1\n"
     "BM_stdio_fwrite/512/iterations:1\n"
@@ -282,6 +284,7 @@
     "BM_stdio_fwrite/16384/iterations:1\n"
     "BM_stdio_fwrite/32768/iterations:1\n"
     "BM_stdio_fwrite/65536/iterations:1\n"
+    "BM_stdio_fwrite/131072/iterations:1\n"
     "BM_stdio_fwrite_unbuffered/8/iterations:1\n"
     "BM_stdio_fwrite_unbuffered/64/iterations:1\n"
     "BM_stdio_fwrite_unbuffered/512/iterations:1\n"
@@ -290,6 +293,7 @@
     "BM_stdio_fwrite_unbuffered/16384/iterations:1\n"
     "BM_stdio_fwrite_unbuffered/32768/iterations:1\n"
     "BM_stdio_fwrite_unbuffered/65536/iterations:1\n"
+    "BM_stdio_fwrite_unbuffered/131072/iterations:1\n"
     "BM_stdio_printf_1$s/iterations:1\n"
     "BM_stdio_printf_d/iterations:1\n"
     "BM_stdio_printf_literal/iterations:1\n"
@@ -302,6 +306,7 @@
     "BM_stdlib_malloc_free/16384/iterations:1\n"
     "BM_stdlib_malloc_free/32768/iterations:1\n"
     "BM_stdlib_malloc_free/65536/iterations:1\n"
+    "BM_stdlib_malloc_free/131072/iterations:1\n"
     "BM_stdlib_mbrtowc/0/iterations:1\n"
     "BM_stdlib_mbstowcs/0/0/iterations:1\n"
     "BM_string_memcmp/8/0/0/iterations:1\n"
@@ -312,6 +317,7 @@
     "BM_string_memcmp/16384/0/0/iterations:1\n"
     "BM_string_memcmp/32768/0/0/iterations:1\n"
     "BM_string_memcmp/65536/0/0/iterations:1\n"
+    "BM_string_memcmp/131072/0/0/iterations:1\n"
     "BM_string_memcpy/8/0/0/iterations:1\n"
     "BM_string_memcpy/64/0/0/iterations:1\n"
     "BM_string_memcpy/512/0/0/iterations:1\n"
@@ -320,6 +326,7 @@
     "BM_string_memcpy/16384/0/0/iterations:1\n"
     "BM_string_memcpy/32768/0/0/iterations:1\n"
     "BM_string_memcpy/65536/0/0/iterations:1\n"
+    "BM_string_memcpy/131072/0/0/iterations:1\n"
     "BM_string_memmove_non_overlapping/8/0/0/iterations:1\n"
     "BM_string_memmove_non_overlapping/64/0/0/iterations:1\n"
     "BM_string_memmove_non_overlapping/512/0/0/iterations:1\n"
@@ -328,6 +335,7 @@
     "BM_string_memmove_non_overlapping/16384/0/0/iterations:1\n"
     "BM_string_memmove_non_overlapping/32768/0/0/iterations:1\n"
     "BM_string_memmove_non_overlapping/65536/0/0/iterations:1\n"
+    "BM_string_memmove_non_overlapping/131072/0/0/iterations:1\n"
     "BM_string_memmove_overlap_dst_before_src/8/0/iterations:1\n"
     "BM_string_memmove_overlap_dst_before_src/64/0/iterations:1\n"
     "BM_string_memmove_overlap_dst_before_src/512/0/iterations:1\n"
@@ -336,6 +344,7 @@
     "BM_string_memmove_overlap_dst_before_src/16384/0/iterations:1\n"
     "BM_string_memmove_overlap_dst_before_src/32768/0/iterations:1\n"
     "BM_string_memmove_overlap_dst_before_src/65536/0/iterations:1\n"
+    "BM_string_memmove_overlap_dst_before_src/131072/0/iterations:1\n"
     "BM_string_memmove_overlap_src_before_dst/8/0/iterations:1\n"
     "BM_string_memmove_overlap_src_before_dst/64/0/iterations:1\n"
     "BM_string_memmove_overlap_src_before_dst/512/0/iterations:1\n"
@@ -344,6 +353,7 @@
     "BM_string_memmove_overlap_src_before_dst/16384/0/iterations:1\n"
     "BM_string_memmove_overlap_src_before_dst/32768/0/iterations:1\n"
     "BM_string_memmove_overlap_src_before_dst/65536/0/iterations:1\n"
+    "BM_string_memmove_overlap_src_before_dst/131072/0/iterations:1\n"
     "BM_string_memset/8/0/iterations:1\n"
     "BM_string_memset/64/0/iterations:1\n"
     "BM_string_memset/512/0/iterations:1\n"
@@ -352,6 +362,7 @@
     "BM_string_memset/16384/0/iterations:1\n"
     "BM_string_memset/32768/0/iterations:1\n"
     "BM_string_memset/65536/0/iterations:1\n"
+    "BM_string_memset/131072/0/iterations:1\n"
     "BM_string_strcat_copy_only/8/0/0/iterations:1\n"
     "BM_string_strcat_copy_only/64/0/0/iterations:1\n"
     "BM_string_strcat_copy_only/512/0/0/iterations:1\n"
@@ -360,6 +371,7 @@
     "BM_string_strcat_copy_only/16384/0/0/iterations:1\n"
     "BM_string_strcat_copy_only/32768/0/0/iterations:1\n"
     "BM_string_strcat_copy_only/65536/0/0/iterations:1\n"
+    "BM_string_strcat_copy_only/131072/0/0/iterations:1\n"
     "BM_string_strcat_half_copy_half_seek/8/0/0/iterations:1\n"
     "BM_string_strcat_half_copy_half_seek/64/0/0/iterations:1\n"
     "BM_string_strcat_half_copy_half_seek/512/0/0/iterations:1\n"
@@ -368,6 +380,7 @@
     "BM_string_strcat_half_copy_half_seek/16384/0/0/iterations:1\n"
     "BM_string_strcat_half_copy_half_seek/32768/0/0/iterations:1\n"
     "BM_string_strcat_half_copy_half_seek/65536/0/0/iterations:1\n"
+    "BM_string_strcat_half_copy_half_seek/131072/0/0/iterations:1\n"
     "BM_string_strcat_seek_only/8/0/0/iterations:1\n"
     "BM_string_strcat_seek_only/64/0/0/iterations:1\n"
     "BM_string_strcat_seek_only/512/0/0/iterations:1\n"
@@ -376,6 +389,7 @@
     "BM_string_strcat_seek_only/16384/0/0/iterations:1\n"
     "BM_string_strcat_seek_only/32768/0/0/iterations:1\n"
     "BM_string_strcat_seek_only/65536/0/0/iterations:1\n"
+    "BM_string_strcat_seek_only/131072/0/0/iterations:1\n"
     "BM_string_strchr/8/0/iterations:1\n"
     "BM_string_strchr/64/0/iterations:1\n"
     "BM_string_strchr/512/0/iterations:1\n"
@@ -384,6 +398,7 @@
     "BM_string_strchr/16384/0/iterations:1\n"
     "BM_string_strchr/32768/0/iterations:1\n"
     "BM_string_strchr/65536/0/iterations:1\n"
+    "BM_string_strchr/131072/0/iterations:1\n"
     "BM_string_strcmp/8/0/0/iterations:1\n"
     "BM_string_strcmp/64/0/0/iterations:1\n"
     "BM_string_strcmp/512/0/0/iterations:1\n"
@@ -392,6 +407,7 @@
     "BM_string_strcmp/16384/0/0/iterations:1\n"
     "BM_string_strcmp/32768/0/0/iterations:1\n"
     "BM_string_strcmp/65536/0/0/iterations:1\n"
+    "BM_string_strcmp/131072/0/0/iterations:1\n"
     "BM_string_strcpy/8/0/0/iterations:1\n"
     "BM_string_strcpy/64/0/0/iterations:1\n"
     "BM_string_strcpy/512/0/0/iterations:1\n"
@@ -400,6 +416,7 @@
     "BM_string_strcpy/16384/0/0/iterations:1\n"
     "BM_string_strcpy/32768/0/0/iterations:1\n"
     "BM_string_strcpy/65536/0/0/iterations:1\n"
+    "BM_string_strcpy/131072/0/0/iterations:1\n"
     "BM_string_strlen/8/0/iterations:1\n"
     "BM_string_strlen/64/0/iterations:1\n"
     "BM_string_strlen/512/0/iterations:1\n"
@@ -408,6 +425,7 @@
     "BM_string_strlen/16384/0/iterations:1\n"
     "BM_string_strlen/32768/0/iterations:1\n"
     "BM_string_strlen/65536/0/iterations:1\n"
+    "BM_string_strlen/131072/0/iterations:1\n"
     "BM_string_strstr/8/0/0/iterations:1\n"
     "BM_string_strstr/64/0/0/iterations:1\n"
     "BM_string_strstr/512/0/0/iterations:1\n"
@@ -416,6 +434,7 @@
     "BM_string_strstr/16384/0/0/iterations:1\n"
     "BM_string_strstr/32768/0/0/iterations:1\n"
     "BM_string_strstr/65536/0/0/iterations:1\n"
+    "BM_string_strstr/131072/0/0/iterations:1\n"
     "BM_time_clock_gettime/iterations:1\n"
     "BM_time_clock_gettime_syscall/iterations:1\n"
     "BM_time_gettimeofday/iterations:1\n"
@@ -456,9 +475,6 @@
     "BM_property_serial/256/iterations:1\n"
     "BM_property_serial/512/iterations:1\n";
   Verify(expected, 0, std::vector<const char*>{"--bionic_iterations=1"});
-
-  // Make sure that the test suite can be found in the suites directory.
-  Verify(expected, 0, std::vector<const char*>{"--bionic_iterations=1"});
 }
 
 TEST_F(SystemTests, small) {
@@ -480,6 +496,7 @@
     "BM_string_memcmp/16384/0/0/iterations:1\n"
     "BM_string_memcmp/32768/0/0/iterations:1\n"
     "BM_string_memcmp/65536/0/0/iterations:1\n"
+    "BM_string_memcmp/131072/0/0/iterations:1\n"
     "BM_math_sqrt/iterations:1\n"
     "BM_string_memcpy/512/4/4/iterations:25\n"
     "BM_property_get/1/iterations:1\n";
@@ -529,6 +546,7 @@
     "BM_string_memcmp/16384/0/0/iterations:1\n"
     "BM_string_memcmp/32768/0/0/iterations:1\n"
     "BM_string_memcmp/65536/0/0/iterations:1\n"
+    "BM_string_memcmp/131072/0/0/iterations:1\n"
     "BM_math_sqrt/iterations:1\n"
     "BM_string_memcpy/512/4/4/iterations:25\n"
     "BM_property_get/1/iterations:1\n"
@@ -540,6 +558,7 @@
     "BM_string_memcpy/16384/0/0/iterations:1\n"
     "BM_string_memcpy/32768/0/0/iterations:1\n"
     "BM_string_memcpy/65536/0/0/iterations:1\n"
+    "BM_string_memcpy/131072/0/0/iterations:1\n"
     "BM_math_log10/iterations:1\n";
   Verify(expected, 0, std::vector<const char*>{"--bionic_extra=BM_string_memcpy AT_ALIGNED_TWOBUF",
                                                "--bionic_extra=BM_math_log10",
@@ -548,88 +567,2571 @@
                                                "--bionic_iterations=1"});
 }
 
-TEST_F(SystemTests, alignment) {
+TEST_F(SystemTests, sizes) {
   std::string expected =
-    "BM_string_memcmp/8/2/2/iterations:1\n"
-    "BM_string_memcmp/64/2/2/iterations:1\n"
-    "BM_string_memcmp/512/2/2/iterations:1\n"
-    "BM_string_memcmp/1024/2/2/iterations:1\n"
-    "BM_string_memcmp/8192/2/2/iterations:1\n"
-    "BM_string_memcmp/16384/2/2/iterations:1\n"
-    "BM_string_memcmp/32768/2/2/iterations:1\n"
-    "BM_string_memcmp/65536/2/2/iterations:1\n"
-    "BM_string_memcmp/8/4/4/iterations:1\n"
-    "BM_string_memcmp/64/4/4/iterations:1\n"
-    "BM_string_memcmp/512/4/4/iterations:1\n"
-    "BM_string_memcmp/1024/4/4/iterations:1\n"
-    "BM_string_memcmp/8192/4/4/iterations:1\n"
-    "BM_string_memcmp/16384/4/4/iterations:1\n"
-    "BM_string_memcmp/32768/4/4/iterations:1\n"
-    "BM_string_memcmp/65536/4/4/iterations:1\n"
-    "BM_string_memcmp/8/16/16/iterations:1\n"
-    "BM_string_memcmp/64/16/16/iterations:1\n"
-    "BM_string_memcmp/512/16/16/iterations:1\n"
-    "BM_string_memcmp/1024/16/16/iterations:1\n"
-    "BM_string_memcmp/8192/16/16/iterations:1\n"
-    "BM_string_memcmp/16384/16/16/iterations:1\n"
-    "BM_string_memcmp/32768/16/16/iterations:1\n"
-    "BM_string_memcmp/65536/16/16/iterations:1\n"
-    "BM_string_memcmp/8/512/512/iterations:1\n"
-    "BM_string_memcmp/64/512/512/iterations:1\n"
-    "BM_string_memcmp/512/512/512/iterations:1\n"
-    "BM_string_memcmp/1024/512/512/iterations:1\n"
-    "BM_string_memcmp/8192/512/512/iterations:1\n"
-    "BM_string_memcmp/16384/512/512/iterations:1\n"
-    "BM_string_memcmp/32768/512/512/iterations:1\n"
-    "BM_string_memcmp/65536/512/512/iterations:1\n"
-    "BM_string_memcmp/8/2048/2048/iterations:1\n"
-    "BM_string_memcmp/64/2048/2048/iterations:1\n"
-    "BM_string_memcmp/512/2048/2048/iterations:1\n"
-    "BM_string_memcmp/1024/2048/2048/iterations:1\n"
-    "BM_string_memcmp/8192/2048/2048/iterations:1\n"
-    "BM_string_memcmp/16384/2048/2048/iterations:1\n"
-    "BM_string_memcmp/32768/2048/2048/iterations:1\n"
-    "BM_string_memcmp/65536/2048/2048/iterations:1\n"
-    "BM_string_strlen/8/2/iterations:1\n"
-    "BM_string_strlen/64/2/iterations:1\n"
-    "BM_string_strlen/512/2/iterations:1\n"
-    "BM_string_strlen/1024/2/iterations:1\n"
-    "BM_string_strlen/8192/2/iterations:1\n"
-    "BM_string_strlen/16384/2/iterations:1\n"
-    "BM_string_strlen/32768/2/iterations:1\n"
-    "BM_string_strlen/65536/2/iterations:1\n"
-    "BM_string_strlen/8/4/iterations:1\n"
-    "BM_string_strlen/64/4/iterations:1\n"
-    "BM_string_strlen/512/4/iterations:1\n"
-    "BM_string_strlen/1024/4/iterations:1\n"
-    "BM_string_strlen/8192/4/iterations:1\n"
-    "BM_string_strlen/16384/4/iterations:1\n"
-    "BM_string_strlen/32768/4/iterations:1\n"
-    "BM_string_strlen/65536/4/iterations:1\n"
-    "BM_string_strlen/8/16/iterations:1\n"
-    "BM_string_strlen/64/16/iterations:1\n"
-    "BM_string_strlen/512/16/iterations:1\n"
-    "BM_string_strlen/1024/16/iterations:1\n"
-    "BM_string_strlen/8192/16/iterations:1\n"
-    "BM_string_strlen/16384/16/iterations:1\n"
-    "BM_string_strlen/32768/16/iterations:1\n"
-    "BM_string_strlen/65536/16/iterations:1\n"
-    "BM_string_strlen/8/512/iterations:1\n"
-    "BM_string_strlen/64/512/iterations:1\n"
-    "BM_string_strlen/512/512/iterations:1\n"
-    "BM_string_strlen/1024/512/iterations:1\n"
-    "BM_string_strlen/8192/512/iterations:1\n"
-    "BM_string_strlen/16384/512/iterations:1\n"
-    "BM_string_strlen/32768/512/iterations:1\n"
-    "BM_string_strlen/65536/512/iterations:1\n"
-    "BM_string_strlen/8/2048/iterations:1\n"
-    "BM_string_strlen/64/2048/iterations:1\n"
-    "BM_string_strlen/512/2048/iterations:1\n"
-    "BM_string_strlen/1024/2048/iterations:1\n"
-    "BM_string_strlen/8192/2048/iterations:1\n"
-    "BM_string_strlen/16384/2048/iterations:1\n"
-    "BM_string_strlen/32768/2048/iterations:1\n"
-    "BM_string_strlen/65536/2048/iterations:1\n";
-  Verify(expected, 0, std::vector<const char*>{GetBionicXmlArg("test_alignment.xml").c_str(),
-                                               "--bionic_iterations=1"});
+    "BM_stdio_fwrite/8/iterations:1\n"
+    "BM_stdio_fwrite/64/iterations:1\n"
+    "BM_stdio_fwrite/512/iterations:1\n"
+    "BM_stdio_fwrite/1024/iterations:1\n"
+    "BM_stdio_fwrite/8192/iterations:1\n"
+    "BM_stdio_fwrite/16384/iterations:1\n"
+    "BM_stdio_fwrite/32768/iterations:1\n"
+    "BM_stdio_fwrite/65536/iterations:1\n"
+    "BM_stdio_fwrite/131072/iterations:1\n"
+    "BM_stdio_fread/1/iterations:1\n"
+    "BM_stdio_fread/2/iterations:1\n"
+    "BM_stdio_fread/3/iterations:1\n"
+    "BM_stdio_fread/4/iterations:1\n"
+    "BM_stdio_fread/5/iterations:1\n"
+    "BM_stdio_fread/6/iterations:1\n"
+    "BM_stdio_fread/7/iterations:1\n"
+    "BM_stdio_fread/8/iterations:1\n"
+    "BM_stdio_fread/9/iterations:1\n"
+    "BM_stdio_fread/10/iterations:1\n"
+    "BM_stdio_fread/11/iterations:1\n"
+    "BM_stdio_fread/12/iterations:1\n"
+    "BM_stdio_fread/13/iterations:1\n"
+    "BM_stdio_fread/14/iterations:1\n"
+    "BM_stdio_fread/15/iterations:1\n"
+    "BM_stdio_fread/16/iterations:1\n"
+    "BM_stdio_fread/24/iterations:1\n"
+    "BM_stdio_fread/32/iterations:1\n"
+    "BM_stdio_fread/40/iterations:1\n"
+    "BM_stdio_fread/48/iterations:1\n"
+    "BM_stdio_fread/56/iterations:1\n"
+    "BM_stdio_fread/64/iterations:1\n"
+    "BM_stdio_fread/72/iterations:1\n"
+    "BM_stdio_fread/80/iterations:1\n"
+    "BM_stdio_fread/88/iterations:1\n"
+    "BM_stdio_fread/96/iterations:1\n"
+    "BM_stdio_fread/104/iterations:1\n"
+    "BM_stdio_fread/112/iterations:1\n"
+    "BM_stdio_fread/120/iterations:1\n"
+    "BM_stdio_fread/128/iterations:1\n"
+    "BM_stdio_fread/136/iterations:1\n"
+    "BM_stdio_fread/144/iterations:1\n"
+    "BM_stdio_fread/160/iterations:1\n"
+    "BM_stdio_fread/176/iterations:1\n"
+    "BM_stdio_fread/192/iterations:1\n"
+    "BM_stdio_fread/208/iterations:1\n"
+    "BM_stdio_fread/224/iterations:1\n"
+    "BM_stdio_fread/240/iterations:1\n"
+    "BM_stdio_fread/256/iterations:1\n"
+    "BM_stdio_fwrite/512/iterations:1\n"
+    "BM_stdio_fwrite/1024/iterations:1\n"
+    "BM_stdio_fwrite/8192/iterations:1\n"
+    "BM_stdio_fwrite/16384/iterations:1\n"
+    "BM_stdio_fwrite/32768/iterations:1\n"
+    "BM_stdio_fwrite/65536/iterations:1\n"
+    "BM_stdio_fwrite/131072/iterations:1\n"
+    "BM_stdio_fread/262144/iterations:1\n"
+    "BM_stdio_fread/524288/iterations:1\n"
+    "BM_stdio_fread/1048576/iterations:1\n"
+    "BM_stdio_fread/2097152/iterations:1\n"
+    "BM_stdio_fwrite/1/iterations:1\n"
+    "BM_stdio_fwrite/2/iterations:1\n"
+    "BM_stdio_fwrite/3/iterations:1\n"
+    "BM_stdio_fwrite/4/iterations:1\n"
+    "BM_stdio_fwrite/5/iterations:1\n"
+    "BM_stdio_fwrite/6/iterations:1\n"
+    "BM_stdio_fwrite/7/iterations:1\n"
+    "BM_stdio_fwrite/8/iterations:1\n"
+    "BM_stdio_fwrite/9/iterations:1\n"
+    "BM_stdio_fwrite/10/iterations:1\n"
+    "BM_stdio_fwrite/11/iterations:1\n"
+    "BM_stdio_fwrite/12/iterations:1\n"
+    "BM_stdio_fwrite/13/iterations:1\n"
+    "BM_stdio_fwrite/14/iterations:1\n"
+    "BM_stdio_fwrite/15/iterations:1\n"
+    "BM_stdio_fwrite/16/iterations:1\n"
+    "BM_stdio_fwrite/24/iterations:1\n"
+    "BM_stdio_fwrite/32/iterations:1\n"
+    "BM_stdio_fwrite/40/iterations:1\n"
+    "BM_stdio_fwrite/48/iterations:1\n"
+    "BM_stdio_fwrite/56/iterations:1\n"
+    "BM_stdio_fwrite/64/iterations:1\n"
+    "BM_stdio_fwrite/72/iterations:1\n"
+    "BM_stdio_fwrite/80/iterations:1\n"
+    "BM_stdio_fwrite/88/iterations:1\n"
+    "BM_stdio_fwrite/96/iterations:1\n"
+    "BM_stdio_fwrite/104/iterations:1\n"
+    "BM_stdio_fwrite/112/iterations:1\n"
+    "BM_stdio_fwrite/120/iterations:1\n"
+    "BM_stdio_fwrite/128/iterations:1\n"
+    "BM_stdio_fwrite/136/iterations:1\n"
+    "BM_stdio_fwrite/144/iterations:1\n"
+    "BM_stdio_fwrite/160/iterations:1\n"
+    "BM_stdio_fwrite/176/iterations:1\n"
+    "BM_stdio_fwrite/192/iterations:1\n"
+    "BM_stdio_fwrite/208/iterations:1\n"
+    "BM_stdio_fwrite/224/iterations:1\n"
+    "BM_stdio_fwrite/240/iterations:1\n"
+    "BM_stdio_fwrite/256/iterations:1\n"
+    "BM_stdio_fwrite/512/iterations:1\n"
+    "BM_stdio_fwrite/1024/iterations:1\n"
+    "BM_stdio_fwrite/8192/iterations:1\n"
+    "BM_stdio_fwrite/16384/iterations:1\n"
+    "BM_stdio_fwrite/32768/iterations:1\n"
+    "BM_stdio_fwrite/65536/iterations:1\n"
+    "BM_stdio_fwrite/131072/iterations:1\n"
+    "BM_stdio_fwrite/262144/iterations:1\n"
+    "BM_stdio_fwrite/524288/iterations:1\n"
+    "BM_stdio_fwrite/1048576/iterations:1\n"
+    "BM_stdio_fwrite/2097152/iterations:1\n";
+
+  Verify(expected, 0, std::vector<const char*>{GetBionicXmlArg("test_size.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_onebuf) {
+  std::string expected =
+    "BM_string_strlen/8/0/iterations:1\n"
+    "BM_string_strlen/64/0/iterations:1\n"
+    "BM_string_strlen/512/0/iterations:1\n"
+    "BM_string_strlen/1024/0/iterations:1\n"
+    "BM_string_strlen/8192/0/iterations:1\n"
+    "BM_string_strlen/16384/0/iterations:1\n"
+    "BM_string_strlen/32768/0/iterations:1\n"
+    "BM_string_strlen/65536/0/iterations:1\n"
+    "BM_string_strlen/131072/0/iterations:1\n"
+    "BM_string_memset/1/0/iterations:1\n"
+    "BM_string_memset/2/0/iterations:1\n"
+    "BM_string_memset/3/0/iterations:1\n"
+    "BM_string_memset/4/0/iterations:1\n"
+    "BM_string_memset/5/0/iterations:1\n"
+    "BM_string_memset/6/0/iterations:1\n"
+    "BM_string_memset/7/0/iterations:1\n"
+    "BM_string_memset/8/0/iterations:1\n"
+    "BM_string_memset/9/0/iterations:1\n"
+    "BM_string_memset/10/0/iterations:1\n"
+    "BM_string_memset/11/0/iterations:1\n"
+    "BM_string_memset/12/0/iterations:1\n"
+    "BM_string_memset/13/0/iterations:1\n"
+    "BM_string_memset/14/0/iterations:1\n"
+    "BM_string_memset/15/0/iterations:1\n"
+    "BM_string_memset/16/0/iterations:1\n"
+    "BM_string_memset/24/0/iterations:1\n"
+    "BM_string_memset/32/0/iterations:1\n"
+    "BM_string_memset/40/0/iterations:1\n"
+    "BM_string_memset/48/0/iterations:1\n"
+    "BM_string_memset/56/0/iterations:1\n"
+    "BM_string_memset/64/0/iterations:1\n"
+    "BM_string_memset/72/0/iterations:1\n"
+    "BM_string_memset/80/0/iterations:1\n"
+    "BM_string_memset/88/0/iterations:1\n"
+    "BM_string_memset/96/0/iterations:1\n"
+    "BM_string_memset/104/0/iterations:1\n"
+    "BM_string_memset/112/0/iterations:1\n"
+    "BM_string_memset/120/0/iterations:1\n"
+    "BM_string_memset/128/0/iterations:1\n"
+    "BM_string_memset/136/0/iterations:1\n"
+    "BM_string_memset/144/0/iterations:1\n"
+    "BM_string_memset/160/0/iterations:1\n"
+    "BM_string_memset/176/0/iterations:1\n"
+    "BM_string_memset/192/0/iterations:1\n"
+    "BM_string_memset/208/0/iterations:1\n"
+    "BM_string_memset/224/0/iterations:1\n"
+    "BM_string_memset/240/0/iterations:1\n"
+    "BM_string_memset/256/0/iterations:1\n"
+    "BM_string_strlen/512/0/iterations:1\n"
+    "BM_string_strlen/1024/0/iterations:1\n"
+    "BM_string_strlen/8192/0/iterations:1\n"
+    "BM_string_strlen/16384/0/iterations:1\n"
+    "BM_string_strlen/32768/0/iterations:1\n"
+    "BM_string_strlen/65536/0/iterations:1\n"
+    "BM_string_strlen/131072/0/iterations:1\n"
+    "BM_string_memset/262144/0/iterations:1\n"
+    "BM_string_memset/524288/0/iterations:1\n"
+    "BM_string_memset/1048576/0/iterations:1\n"
+    "BM_string_memset/2097152/0/iterations:1\n"
+    "BM_string_strlen/1/0/iterations:1\n"
+    "BM_string_strlen/2/0/iterations:1\n"
+    "BM_string_strlen/3/0/iterations:1\n"
+    "BM_string_strlen/4/0/iterations:1\n"
+    "BM_string_strlen/5/0/iterations:1\n"
+    "BM_string_strlen/6/0/iterations:1\n"
+    "BM_string_strlen/7/0/iterations:1\n"
+    "BM_string_strlen/8/0/iterations:1\n"
+    "BM_string_strlen/9/0/iterations:1\n"
+    "BM_string_strlen/10/0/iterations:1\n"
+    "BM_string_strlen/11/0/iterations:1\n"
+    "BM_string_strlen/12/0/iterations:1\n"
+    "BM_string_strlen/13/0/iterations:1\n"
+    "BM_string_strlen/14/0/iterations:1\n"
+    "BM_string_strlen/15/0/iterations:1\n"
+    "BM_string_strlen/16/0/iterations:1\n"
+    "BM_string_strlen/24/0/iterations:1\n"
+    "BM_string_strlen/32/0/iterations:1\n"
+    "BM_string_strlen/40/0/iterations:1\n"
+    "BM_string_strlen/48/0/iterations:1\n"
+    "BM_string_strlen/56/0/iterations:1\n"
+    "BM_string_strlen/64/0/iterations:1\n"
+    "BM_string_strlen/72/0/iterations:1\n"
+    "BM_string_strlen/80/0/iterations:1\n"
+    "BM_string_strlen/88/0/iterations:1\n"
+    "BM_string_strlen/96/0/iterations:1\n"
+    "BM_string_strlen/104/0/iterations:1\n"
+    "BM_string_strlen/112/0/iterations:1\n"
+    "BM_string_strlen/120/0/iterations:1\n"
+    "BM_string_strlen/128/0/iterations:1\n"
+    "BM_string_strlen/136/0/iterations:1\n"
+    "BM_string_strlen/144/0/iterations:1\n"
+    "BM_string_strlen/160/0/iterations:1\n"
+    "BM_string_strlen/176/0/iterations:1\n"
+    "BM_string_strlen/192/0/iterations:1\n"
+    "BM_string_strlen/208/0/iterations:1\n"
+    "BM_string_strlen/224/0/iterations:1\n"
+    "BM_string_strlen/240/0/iterations:1\n"
+    "BM_string_strlen/256/0/iterations:1\n"
+    "BM_string_strlen/512/0/iterations:1\n"
+    "BM_string_strlen/1024/0/iterations:1\n"
+    "BM_string_strlen/8192/0/iterations:1\n"
+    "BM_string_strlen/16384/0/iterations:1\n"
+    "BM_string_strlen/32768/0/iterations:1\n"
+    "BM_string_strlen/65536/0/iterations:1\n"
+    "BM_string_strlen/131072/0/iterations:1\n"
+    "BM_string_strlen/262144/0/iterations:1\n"
+    "BM_string_strlen/524288/0/iterations:1\n"
+    "BM_string_strlen/1048576/0/iterations:1\n"
+    "BM_string_strlen/2097152/0/iterations:1\n"
+    "BM_string_memset/1/0/iterations:1\n"
+    "BM_string_memset/1/1/iterations:1\n"
+    "BM_string_memset/1/2/iterations:1\n"
+    "BM_string_memset/1/4/iterations:1\n"
+    "BM_string_memset/1/8/iterations:1\n"
+    "BM_string_memset/1/16/iterations:1\n"
+    "BM_string_memset/1/32/iterations:1\n"
+    "BM_string_memset/2/0/iterations:1\n"
+    "BM_string_memset/2/1/iterations:1\n"
+    "BM_string_memset/2/2/iterations:1\n"
+    "BM_string_memset/2/4/iterations:1\n"
+    "BM_string_memset/2/8/iterations:1\n"
+    "BM_string_memset/2/16/iterations:1\n"
+    "BM_string_memset/2/32/iterations:1\n"
+    "BM_string_memset/3/0/iterations:1\n"
+    "BM_string_memset/3/1/iterations:1\n"
+    "BM_string_memset/3/2/iterations:1\n"
+    "BM_string_memset/3/4/iterations:1\n"
+    "BM_string_memset/3/8/iterations:1\n"
+    "BM_string_memset/3/16/iterations:1\n"
+    "BM_string_memset/3/32/iterations:1\n"
+    "BM_string_memset/4/0/iterations:1\n"
+    "BM_string_memset/4/1/iterations:1\n"
+    "BM_string_memset/4/2/iterations:1\n"
+    "BM_string_memset/4/4/iterations:1\n"
+    "BM_string_memset/4/8/iterations:1\n"
+    "BM_string_memset/4/16/iterations:1\n"
+    "BM_string_memset/4/32/iterations:1\n"
+    "BM_string_memset/5/0/iterations:1\n"
+    "BM_string_memset/5/1/iterations:1\n"
+    "BM_string_memset/5/2/iterations:1\n"
+    "BM_string_memset/5/4/iterations:1\n"
+    "BM_string_memset/5/8/iterations:1\n"
+    "BM_string_memset/5/16/iterations:1\n"
+    "BM_string_memset/5/32/iterations:1\n"
+    "BM_string_memset/6/0/iterations:1\n"
+    "BM_string_memset/6/1/iterations:1\n"
+    "BM_string_memset/6/2/iterations:1\n"
+    "BM_string_memset/6/4/iterations:1\n"
+    "BM_string_memset/6/8/iterations:1\n"
+    "BM_string_memset/6/16/iterations:1\n"
+    "BM_string_memset/6/32/iterations:1\n"
+    "BM_string_memset/7/0/iterations:1\n"
+    "BM_string_memset/7/1/iterations:1\n"
+    "BM_string_memset/7/2/iterations:1\n"
+    "BM_string_memset/7/4/iterations:1\n"
+    "BM_string_memset/7/8/iterations:1\n"
+    "BM_string_memset/7/16/iterations:1\n"
+    "BM_string_memset/7/32/iterations:1\n"
+    "BM_string_memset/8/0/iterations:1\n"
+    "BM_string_memset/8/1/iterations:1\n"
+    "BM_string_memset/8/2/iterations:1\n"
+    "BM_string_memset/8/4/iterations:1\n"
+    "BM_string_memset/8/8/iterations:1\n"
+    "BM_string_memset/8/16/iterations:1\n"
+    "BM_string_memset/8/32/iterations:1\n"
+    "BM_string_memset/9/0/iterations:1\n"
+    "BM_string_memset/9/1/iterations:1\n"
+    "BM_string_memset/9/2/iterations:1\n"
+    "BM_string_memset/9/4/iterations:1\n"
+    "BM_string_memset/9/8/iterations:1\n"
+    "BM_string_memset/9/16/iterations:1\n"
+    "BM_string_memset/9/32/iterations:1\n"
+    "BM_string_memset/10/0/iterations:1\n"
+    "BM_string_memset/10/1/iterations:1\n"
+    "BM_string_memset/10/2/iterations:1\n"
+    "BM_string_memset/10/4/iterations:1\n"
+    "BM_string_memset/10/8/iterations:1\n"
+    "BM_string_memset/10/16/iterations:1\n"
+    "BM_string_memset/10/32/iterations:1\n"
+    "BM_string_memset/11/0/iterations:1\n"
+    "BM_string_memset/11/1/iterations:1\n"
+    "BM_string_memset/11/2/iterations:1\n"
+    "BM_string_memset/11/4/iterations:1\n"
+    "BM_string_memset/11/8/iterations:1\n"
+    "BM_string_memset/11/16/iterations:1\n"
+    "BM_string_memset/11/32/iterations:1\n"
+    "BM_string_memset/12/0/iterations:1\n"
+    "BM_string_memset/12/1/iterations:1\n"
+    "BM_string_memset/12/2/iterations:1\n"
+    "BM_string_memset/12/4/iterations:1\n"
+    "BM_string_memset/12/8/iterations:1\n"
+    "BM_string_memset/12/16/iterations:1\n"
+    "BM_string_memset/12/32/iterations:1\n"
+    "BM_string_memset/13/0/iterations:1\n"
+    "BM_string_memset/13/1/iterations:1\n"
+    "BM_string_memset/13/2/iterations:1\n"
+    "BM_string_memset/13/4/iterations:1\n"
+    "BM_string_memset/13/8/iterations:1\n"
+    "BM_string_memset/13/16/iterations:1\n"
+    "BM_string_memset/13/32/iterations:1\n"
+    "BM_string_memset/14/0/iterations:1\n"
+    "BM_string_memset/14/1/iterations:1\n"
+    "BM_string_memset/14/2/iterations:1\n"
+    "BM_string_memset/14/4/iterations:1\n"
+    "BM_string_memset/14/8/iterations:1\n"
+    "BM_string_memset/14/16/iterations:1\n"
+    "BM_string_memset/14/32/iterations:1\n"
+    "BM_string_memset/15/0/iterations:1\n"
+    "BM_string_memset/15/1/iterations:1\n"
+    "BM_string_memset/15/2/iterations:1\n"
+    "BM_string_memset/15/4/iterations:1\n"
+    "BM_string_memset/15/8/iterations:1\n"
+    "BM_string_memset/15/16/iterations:1\n"
+    "BM_string_memset/15/32/iterations:1\n"
+    "BM_string_memset/16/0/iterations:1\n"
+    "BM_string_memset/16/1/iterations:1\n"
+    "BM_string_memset/16/2/iterations:1\n"
+    "BM_string_memset/16/4/iterations:1\n"
+    "BM_string_memset/16/8/iterations:1\n"
+    "BM_string_memset/16/16/iterations:1\n"
+    "BM_string_memset/16/32/iterations:1\n"
+    "BM_string_memset/24/0/iterations:1\n"
+    "BM_string_memset/24/1/iterations:1\n"
+    "BM_string_memset/24/2/iterations:1\n"
+    "BM_string_memset/24/4/iterations:1\n"
+    "BM_string_memset/24/8/iterations:1\n"
+    "BM_string_memset/24/16/iterations:1\n"
+    "BM_string_memset/24/32/iterations:1\n"
+    "BM_string_memset/32/0/iterations:1\n"
+    "BM_string_memset/32/1/iterations:1\n"
+    "BM_string_memset/32/2/iterations:1\n"
+    "BM_string_memset/32/4/iterations:1\n"
+    "BM_string_memset/32/8/iterations:1\n"
+    "BM_string_memset/32/16/iterations:1\n"
+    "BM_string_memset/32/32/iterations:1\n"
+    "BM_string_memset/40/0/iterations:1\n"
+    "BM_string_memset/40/1/iterations:1\n"
+    "BM_string_memset/40/2/iterations:1\n"
+    "BM_string_memset/40/4/iterations:1\n"
+    "BM_string_memset/40/8/iterations:1\n"
+    "BM_string_memset/40/16/iterations:1\n"
+    "BM_string_memset/40/32/iterations:1\n"
+    "BM_string_memset/48/0/iterations:1\n"
+    "BM_string_memset/48/1/iterations:1\n"
+    "BM_string_memset/48/2/iterations:1\n"
+    "BM_string_memset/48/4/iterations:1\n"
+    "BM_string_memset/48/8/iterations:1\n"
+    "BM_string_memset/48/16/iterations:1\n"
+    "BM_string_memset/48/32/iterations:1\n"
+    "BM_string_memset/56/0/iterations:1\n"
+    "BM_string_memset/56/1/iterations:1\n"
+    "BM_string_memset/56/2/iterations:1\n"
+    "BM_string_memset/56/4/iterations:1\n"
+    "BM_string_memset/56/8/iterations:1\n"
+    "BM_string_memset/56/16/iterations:1\n"
+    "BM_string_memset/56/32/iterations:1\n"
+    "BM_string_memset/64/0/iterations:1\n"
+    "BM_string_memset/64/1/iterations:1\n"
+    "BM_string_memset/64/2/iterations:1\n"
+    "BM_string_memset/64/4/iterations:1\n"
+    "BM_string_memset/64/8/iterations:1\n"
+    "BM_string_memset/64/16/iterations:1\n"
+    "BM_string_memset/64/32/iterations:1\n"
+    "BM_string_memset/72/0/iterations:1\n"
+    "BM_string_memset/72/1/iterations:1\n"
+    "BM_string_memset/72/2/iterations:1\n"
+    "BM_string_memset/72/4/iterations:1\n"
+    "BM_string_memset/72/8/iterations:1\n"
+    "BM_string_memset/72/16/iterations:1\n"
+    "BM_string_memset/72/32/iterations:1\n"
+    "BM_string_memset/80/0/iterations:1\n"
+    "BM_string_memset/80/1/iterations:1\n"
+    "BM_string_memset/80/2/iterations:1\n"
+    "BM_string_memset/80/4/iterations:1\n"
+    "BM_string_memset/80/8/iterations:1\n"
+    "BM_string_memset/80/16/iterations:1\n"
+    "BM_string_memset/80/32/iterations:1\n"
+    "BM_string_memset/88/0/iterations:1\n"
+    "BM_string_memset/88/1/iterations:1\n"
+    "BM_string_memset/88/2/iterations:1\n"
+    "BM_string_memset/88/4/iterations:1\n"
+    "BM_string_memset/88/8/iterations:1\n"
+    "BM_string_memset/88/16/iterations:1\n"
+    "BM_string_memset/88/32/iterations:1\n"
+    "BM_string_memset/96/0/iterations:1\n"
+    "BM_string_memset/96/1/iterations:1\n"
+    "BM_string_memset/96/2/iterations:1\n"
+    "BM_string_memset/96/4/iterations:1\n"
+    "BM_string_memset/96/8/iterations:1\n"
+    "BM_string_memset/96/16/iterations:1\n"
+    "BM_string_memset/96/32/iterations:1\n"
+    "BM_string_memset/104/0/iterations:1\n"
+    "BM_string_memset/104/1/iterations:1\n"
+    "BM_string_memset/104/2/iterations:1\n"
+    "BM_string_memset/104/4/iterations:1\n"
+    "BM_string_memset/104/8/iterations:1\n"
+    "BM_string_memset/104/16/iterations:1\n"
+    "BM_string_memset/104/32/iterations:1\n"
+    "BM_string_memset/112/0/iterations:1\n"
+    "BM_string_memset/112/1/iterations:1\n"
+    "BM_string_memset/112/2/iterations:1\n"
+    "BM_string_memset/112/4/iterations:1\n"
+    "BM_string_memset/112/8/iterations:1\n"
+    "BM_string_memset/112/16/iterations:1\n"
+    "BM_string_memset/112/32/iterations:1\n"
+    "BM_string_memset/120/0/iterations:1\n"
+    "BM_string_memset/120/1/iterations:1\n"
+    "BM_string_memset/120/2/iterations:1\n"
+    "BM_string_memset/120/4/iterations:1\n"
+    "BM_string_memset/120/8/iterations:1\n"
+    "BM_string_memset/120/16/iterations:1\n"
+    "BM_string_memset/120/32/iterations:1\n"
+    "BM_string_memset/128/0/iterations:1\n"
+    "BM_string_memset/128/1/iterations:1\n"
+    "BM_string_memset/128/2/iterations:1\n"
+    "BM_string_memset/128/4/iterations:1\n"
+    "BM_string_memset/128/8/iterations:1\n"
+    "BM_string_memset/128/16/iterations:1\n"
+    "BM_string_memset/128/32/iterations:1\n"
+    "BM_string_memset/136/0/iterations:1\n"
+    "BM_string_memset/136/1/iterations:1\n"
+    "BM_string_memset/136/2/iterations:1\n"
+    "BM_string_memset/136/4/iterations:1\n"
+    "BM_string_memset/136/8/iterations:1\n"
+    "BM_string_memset/136/16/iterations:1\n"
+    "BM_string_memset/136/32/iterations:1\n"
+    "BM_string_memset/144/0/iterations:1\n"
+    "BM_string_memset/144/1/iterations:1\n"
+    "BM_string_memset/144/2/iterations:1\n"
+    "BM_string_memset/144/4/iterations:1\n"
+    "BM_string_memset/144/8/iterations:1\n"
+    "BM_string_memset/144/16/iterations:1\n"
+    "BM_string_memset/144/32/iterations:1\n"
+    "BM_string_memset/160/0/iterations:1\n"
+    "BM_string_memset/160/1/iterations:1\n"
+    "BM_string_memset/160/2/iterations:1\n"
+    "BM_string_memset/160/4/iterations:1\n"
+    "BM_string_memset/160/8/iterations:1\n"
+    "BM_string_memset/160/16/iterations:1\n"
+    "BM_string_memset/160/32/iterations:1\n"
+    "BM_string_memset/176/0/iterations:1\n"
+    "BM_string_memset/176/1/iterations:1\n"
+    "BM_string_memset/176/2/iterations:1\n"
+    "BM_string_memset/176/4/iterations:1\n"
+    "BM_string_memset/176/8/iterations:1\n"
+    "BM_string_memset/176/16/iterations:1\n"
+    "BM_string_memset/176/32/iterations:1\n"
+    "BM_string_memset/192/0/iterations:1\n"
+    "BM_string_memset/192/1/iterations:1\n"
+    "BM_string_memset/192/2/iterations:1\n"
+    "BM_string_memset/192/4/iterations:1\n"
+    "BM_string_memset/192/8/iterations:1\n"
+    "BM_string_memset/192/16/iterations:1\n"
+    "BM_string_memset/192/32/iterations:1\n"
+    "BM_string_memset/208/0/iterations:1\n"
+    "BM_string_memset/208/1/iterations:1\n"
+    "BM_string_memset/208/2/iterations:1\n"
+    "BM_string_memset/208/4/iterations:1\n"
+    "BM_string_memset/208/8/iterations:1\n"
+    "BM_string_memset/208/16/iterations:1\n"
+    "BM_string_memset/208/32/iterations:1\n"
+    "BM_string_memset/224/0/iterations:1\n"
+    "BM_string_memset/224/1/iterations:1\n"
+    "BM_string_memset/224/2/iterations:1\n"
+    "BM_string_memset/224/4/iterations:1\n"
+    "BM_string_memset/224/8/iterations:1\n"
+    "BM_string_memset/224/16/iterations:1\n"
+    "BM_string_memset/224/32/iterations:1\n"
+    "BM_string_memset/240/0/iterations:1\n"
+    "BM_string_memset/240/1/iterations:1\n"
+    "BM_string_memset/240/2/iterations:1\n"
+    "BM_string_memset/240/4/iterations:1\n"
+    "BM_string_memset/240/8/iterations:1\n"
+    "BM_string_memset/240/16/iterations:1\n"
+    "BM_string_memset/240/32/iterations:1\n"
+    "BM_string_memset/256/0/iterations:1\n"
+    "BM_string_memset/256/1/iterations:1\n"
+    "BM_string_memset/256/2/iterations:1\n"
+    "BM_string_memset/256/4/iterations:1\n"
+    "BM_string_memset/256/8/iterations:1\n"
+    "BM_string_memset/256/16/iterations:1\n"
+    "BM_string_memset/256/32/iterations:1\n"
+    "BM_string_memset/512/0/iterations:1\n"
+    "BM_string_memset/512/1/iterations:1\n"
+    "BM_string_memset/512/2/iterations:1\n"
+    "BM_string_memset/512/4/iterations:1\n"
+    "BM_string_memset/512/8/iterations:1\n"
+    "BM_string_memset/512/16/iterations:1\n"
+    "BM_string_memset/512/32/iterations:1\n"
+    "BM_string_memset/1024/0/iterations:1\n"
+    "BM_string_memset/1024/1/iterations:1\n"
+    "BM_string_memset/1024/2/iterations:1\n"
+    "BM_string_memset/1024/4/iterations:1\n"
+    "BM_string_memset/1024/8/iterations:1\n"
+    "BM_string_memset/1024/16/iterations:1\n"
+    "BM_string_memset/1024/32/iterations:1\n"
+    "BM_string_memset/8192/0/iterations:1\n"
+    "BM_string_memset/8192/1/iterations:1\n"
+    "BM_string_memset/8192/2/iterations:1\n"
+    "BM_string_memset/8192/4/iterations:1\n"
+    "BM_string_memset/8192/8/iterations:1\n"
+    "BM_string_memset/8192/16/iterations:1\n"
+    "BM_string_memset/8192/32/iterations:1\n"
+    "BM_string_memset/16384/0/iterations:1\n"
+    "BM_string_memset/16384/1/iterations:1\n"
+    "BM_string_memset/16384/2/iterations:1\n"
+    "BM_string_memset/16384/4/iterations:1\n"
+    "BM_string_memset/16384/8/iterations:1\n"
+    "BM_string_memset/16384/16/iterations:1\n"
+    "BM_string_memset/16384/32/iterations:1\n"
+    "BM_string_memset/32768/0/iterations:1\n"
+    "BM_string_memset/32768/1/iterations:1\n"
+    "BM_string_memset/32768/2/iterations:1\n"
+    "BM_string_memset/32768/4/iterations:1\n"
+    "BM_string_memset/32768/8/iterations:1\n"
+    "BM_string_memset/32768/16/iterations:1\n"
+    "BM_string_memset/32768/32/iterations:1\n"
+    "BM_string_memset/65536/0/iterations:1\n"
+    "BM_string_memset/65536/1/iterations:1\n"
+    "BM_string_memset/65536/2/iterations:1\n"
+    "BM_string_memset/65536/4/iterations:1\n"
+    "BM_string_memset/65536/8/iterations:1\n"
+    "BM_string_memset/65536/16/iterations:1\n"
+    "BM_string_memset/65536/32/iterations:1\n"
+    "BM_string_memset/131072/0/iterations:1\n"
+    "BM_string_memset/131072/1/iterations:1\n"
+    "BM_string_memset/131072/2/iterations:1\n"
+    "BM_string_memset/131072/4/iterations:1\n"
+    "BM_string_memset/131072/8/iterations:1\n"
+    "BM_string_memset/131072/16/iterations:1\n"
+    "BM_string_memset/131072/32/iterations:1\n"
+    "BM_string_memset/262144/0/iterations:1\n"
+    "BM_string_memset/262144/1/iterations:1\n"
+    "BM_string_memset/262144/2/iterations:1\n"
+    "BM_string_memset/262144/4/iterations:1\n"
+    "BM_string_memset/262144/8/iterations:1\n"
+    "BM_string_memset/262144/16/iterations:1\n"
+    "BM_string_memset/262144/32/iterations:1\n"
+    "BM_string_memset/524288/0/iterations:1\n"
+    "BM_string_memset/524288/1/iterations:1\n"
+    "BM_string_memset/524288/2/iterations:1\n"
+    "BM_string_memset/524288/4/iterations:1\n"
+    "BM_string_memset/524288/8/iterations:1\n"
+    "BM_string_memset/524288/16/iterations:1\n"
+    "BM_string_memset/524288/32/iterations:1\n"
+    "BM_string_memset/1048576/0/iterations:1\n"
+    "BM_string_memset/1048576/1/iterations:1\n"
+    "BM_string_memset/1048576/2/iterations:1\n"
+    "BM_string_memset/1048576/4/iterations:1\n"
+    "BM_string_memset/1048576/8/iterations:1\n"
+    "BM_string_memset/1048576/16/iterations:1\n"
+    "BM_string_memset/1048576/32/iterations:1\n"
+    "BM_string_memset/2097152/0/iterations:1\n"
+    "BM_string_memset/2097152/1/iterations:1\n"
+    "BM_string_memset/2097152/2/iterations:1\n"
+    "BM_string_memset/2097152/4/iterations:1\n"
+    "BM_string_memset/2097152/8/iterations:1\n"
+    "BM_string_memset/2097152/16/iterations:1\n"
+    "BM_string_memset/2097152/32/iterations:1\n";
+
+  Verify(expected, 0,
+         std::vector<const char*>{GetBionicXmlArg("test_alignment_onebuf.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_onebuf_manual) {
+  std::string expected =
+    "BM_string_strlen/115/0/iterations:1\n"
+    "BM_string_memset/1024/1/iterations:1\n"
+    "BM_string_strlen/2048/4/iterations:1\n"
+    "BM_string_memset/4000/32/iterations:1\n";
+
+  Verify(expected, 0,
+         std::vector<const char*>{GetBionicXmlArg("test_alignment_onebuf_manual.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_twobuf) {
+  std::string expected =
+    "BM_string_strcpy/8/0/0/iterations:1\n"
+    "BM_string_strcpy/64/0/0/iterations:1\n"
+    "BM_string_strcpy/512/0/0/iterations:1\n"
+    "BM_string_strcpy/1024/0/0/iterations:1\n"
+    "BM_string_strcpy/8192/0/0/iterations:1\n"
+    "BM_string_strcpy/16384/0/0/iterations:1\n"
+    "BM_string_strcpy/32768/0/0/iterations:1\n"
+    "BM_string_strcpy/65536/0/0/iterations:1\n"
+    "BM_string_strcpy/131072/0/0/iterations:1\n"
+    "BM_string_memcpy/1/0/0/iterations:1\n"
+    "BM_string_memcpy/2/0/0/iterations:1\n"
+    "BM_string_memcpy/3/0/0/iterations:1\n"
+    "BM_string_memcpy/4/0/0/iterations:1\n"
+    "BM_string_memcpy/5/0/0/iterations:1\n"
+    "BM_string_memcpy/6/0/0/iterations:1\n"
+    "BM_string_memcpy/7/0/0/iterations:1\n"
+    "BM_string_memcpy/8/0/0/iterations:1\n"
+    "BM_string_memcpy/9/0/0/iterations:1\n"
+    "BM_string_memcpy/10/0/0/iterations:1\n"
+    "BM_string_memcpy/11/0/0/iterations:1\n"
+    "BM_string_memcpy/12/0/0/iterations:1\n"
+    "BM_string_memcpy/13/0/0/iterations:1\n"
+    "BM_string_memcpy/14/0/0/iterations:1\n"
+    "BM_string_memcpy/15/0/0/iterations:1\n"
+    "BM_string_memcpy/16/0/0/iterations:1\n"
+    "BM_string_memcpy/24/0/0/iterations:1\n"
+    "BM_string_memcpy/32/0/0/iterations:1\n"
+    "BM_string_memcpy/40/0/0/iterations:1\n"
+    "BM_string_memcpy/48/0/0/iterations:1\n"
+    "BM_string_memcpy/56/0/0/iterations:1\n"
+    "BM_string_memcpy/64/0/0/iterations:1\n"
+    "BM_string_memcpy/72/0/0/iterations:1\n"
+    "BM_string_memcpy/80/0/0/iterations:1\n"
+    "BM_string_memcpy/88/0/0/iterations:1\n"
+    "BM_string_memcpy/96/0/0/iterations:1\n"
+    "BM_string_memcpy/104/0/0/iterations:1\n"
+    "BM_string_memcpy/112/0/0/iterations:1\n"
+    "BM_string_memcpy/120/0/0/iterations:1\n"
+    "BM_string_memcpy/128/0/0/iterations:1\n"
+    "BM_string_memcpy/136/0/0/iterations:1\n"
+    "BM_string_memcpy/144/0/0/iterations:1\n"
+    "BM_string_memcpy/160/0/0/iterations:1\n"
+    "BM_string_memcpy/176/0/0/iterations:1\n"
+    "BM_string_memcpy/192/0/0/iterations:1\n"
+    "BM_string_memcpy/208/0/0/iterations:1\n"
+    "BM_string_memcpy/224/0/0/iterations:1\n"
+    "BM_string_memcpy/240/0/0/iterations:1\n"
+    "BM_string_memcpy/256/0/0/iterations:1\n"
+    "BM_string_strcpy/512/0/0/iterations:1\n"
+    "BM_string_strcpy/1024/0/0/iterations:1\n"
+    "BM_string_strcpy/8192/0/0/iterations:1\n"
+    "BM_string_strcpy/16384/0/0/iterations:1\n"
+    "BM_string_strcpy/32768/0/0/iterations:1\n"
+    "BM_string_strcpy/65536/0/0/iterations:1\n"
+    "BM_string_strcpy/131072/0/0/iterations:1\n"
+    "BM_string_memcpy/262144/0/0/iterations:1\n"
+    "BM_string_memcpy/524288/0/0/iterations:1\n"
+    "BM_string_memcpy/1048576/0/0/iterations:1\n"
+    "BM_string_memcpy/2097152/0/0/iterations:1\n"
+    "BM_string_strcpy/1/0/0/iterations:1\n"
+    "BM_string_strcpy/2/0/0/iterations:1\n"
+    "BM_string_strcpy/3/0/0/iterations:1\n"
+    "BM_string_strcpy/4/0/0/iterations:1\n"
+    "BM_string_strcpy/5/0/0/iterations:1\n"
+    "BM_string_strcpy/6/0/0/iterations:1\n"
+    "BM_string_strcpy/7/0/0/iterations:1\n"
+    "BM_string_strcpy/8/0/0/iterations:1\n"
+    "BM_string_strcpy/9/0/0/iterations:1\n"
+    "BM_string_strcpy/10/0/0/iterations:1\n"
+    "BM_string_strcpy/11/0/0/iterations:1\n"
+    "BM_string_strcpy/12/0/0/iterations:1\n"
+    "BM_string_strcpy/13/0/0/iterations:1\n"
+    "BM_string_strcpy/14/0/0/iterations:1\n"
+    "BM_string_strcpy/15/0/0/iterations:1\n"
+    "BM_string_strcpy/16/0/0/iterations:1\n"
+    "BM_string_strcpy/24/0/0/iterations:1\n"
+    "BM_string_strcpy/32/0/0/iterations:1\n"
+    "BM_string_strcpy/40/0/0/iterations:1\n"
+    "BM_string_strcpy/48/0/0/iterations:1\n"
+    "BM_string_strcpy/56/0/0/iterations:1\n"
+    "BM_string_strcpy/64/0/0/iterations:1\n"
+    "BM_string_strcpy/72/0/0/iterations:1\n"
+    "BM_string_strcpy/80/0/0/iterations:1\n"
+    "BM_string_strcpy/88/0/0/iterations:1\n"
+    "BM_string_strcpy/96/0/0/iterations:1\n"
+    "BM_string_strcpy/104/0/0/iterations:1\n"
+    "BM_string_strcpy/112/0/0/iterations:1\n"
+    "BM_string_strcpy/120/0/0/iterations:1\n"
+    "BM_string_strcpy/128/0/0/iterations:1\n"
+    "BM_string_strcpy/136/0/0/iterations:1\n"
+    "BM_string_strcpy/144/0/0/iterations:1\n"
+    "BM_string_strcpy/160/0/0/iterations:1\n"
+    "BM_string_strcpy/176/0/0/iterations:1\n"
+    "BM_string_strcpy/192/0/0/iterations:1\n"
+    "BM_string_strcpy/208/0/0/iterations:1\n"
+    "BM_string_strcpy/224/0/0/iterations:1\n"
+    "BM_string_strcpy/240/0/0/iterations:1\n"
+    "BM_string_strcpy/256/0/0/iterations:1\n"
+    "BM_string_strcpy/512/0/0/iterations:1\n"
+    "BM_string_strcpy/1024/0/0/iterations:1\n"
+    "BM_string_strcpy/8192/0/0/iterations:1\n"
+    "BM_string_strcpy/16384/0/0/iterations:1\n"
+    "BM_string_strcpy/32768/0/0/iterations:1\n"
+    "BM_string_strcpy/65536/0/0/iterations:1\n"
+    "BM_string_strcpy/131072/0/0/iterations:1\n"
+    "BM_string_strcpy/262144/0/0/iterations:1\n"
+    "BM_string_strcpy/524288/0/0/iterations:1\n"
+    "BM_string_strcpy/1048576/0/0/iterations:1\n"
+    "BM_string_strcpy/2097152/0/0/iterations:1\n"
+    "BM_string_memcpy/1/0/0/iterations:1\n"
+    "BM_string_memcpy/1/1/1/iterations:1\n"
+    "BM_string_memcpy/1/1/2/iterations:1\n"
+    "BM_string_memcpy/1/1/4/iterations:1\n"
+    "BM_string_memcpy/1/1/8/iterations:1\n"
+    "BM_string_memcpy/1/1/16/iterations:1\n"
+    "BM_string_memcpy/1/1/32/iterations:1\n"
+    "BM_string_memcpy/1/2/1/iterations:1\n"
+    "BM_string_memcpy/1/2/2/iterations:1\n"
+    "BM_string_memcpy/1/2/4/iterations:1\n"
+    "BM_string_memcpy/1/2/8/iterations:1\n"
+    "BM_string_memcpy/1/2/16/iterations:1\n"
+    "BM_string_memcpy/1/2/32/iterations:1\n"
+    "BM_string_memcpy/1/4/1/iterations:1\n"
+    "BM_string_memcpy/1/4/2/iterations:1\n"
+    "BM_string_memcpy/1/4/4/iterations:1\n"
+    "BM_string_memcpy/1/4/8/iterations:1\n"
+    "BM_string_memcpy/1/4/16/iterations:1\n"
+    "BM_string_memcpy/1/4/32/iterations:1\n"
+    "BM_string_memcpy/1/8/1/iterations:1\n"
+    "BM_string_memcpy/1/8/2/iterations:1\n"
+    "BM_string_memcpy/1/8/4/iterations:1\n"
+    "BM_string_memcpy/1/8/8/iterations:1\n"
+    "BM_string_memcpy/1/8/16/iterations:1\n"
+    "BM_string_memcpy/1/8/32/iterations:1\n"
+    "BM_string_memcpy/1/16/1/iterations:1\n"
+    "BM_string_memcpy/1/16/2/iterations:1\n"
+    "BM_string_memcpy/1/16/4/iterations:1\n"
+    "BM_string_memcpy/1/16/8/iterations:1\n"
+    "BM_string_memcpy/1/16/16/iterations:1\n"
+    "BM_string_memcpy/1/16/32/iterations:1\n"
+    "BM_string_memcpy/1/32/1/iterations:1\n"
+    "BM_string_memcpy/1/32/2/iterations:1\n"
+    "BM_string_memcpy/1/32/4/iterations:1\n"
+    "BM_string_memcpy/1/32/8/iterations:1\n"
+    "BM_string_memcpy/1/32/16/iterations:1\n"
+    "BM_string_memcpy/1/32/32/iterations:1\n"
+    "BM_string_memcpy/2/0/0/iterations:1\n"
+    "BM_string_memcpy/2/1/1/iterations:1\n"
+    "BM_string_memcpy/2/1/2/iterations:1\n"
+    "BM_string_memcpy/2/1/4/iterations:1\n"
+    "BM_string_memcpy/2/1/8/iterations:1\n"
+    "BM_string_memcpy/2/1/16/iterations:1\n"
+    "BM_string_memcpy/2/1/32/iterations:1\n"
+    "BM_string_memcpy/2/2/1/iterations:1\n"
+    "BM_string_memcpy/2/2/2/iterations:1\n"
+    "BM_string_memcpy/2/2/4/iterations:1\n"
+    "BM_string_memcpy/2/2/8/iterations:1\n"
+    "BM_string_memcpy/2/2/16/iterations:1\n"
+    "BM_string_memcpy/2/2/32/iterations:1\n"
+    "BM_string_memcpy/2/4/1/iterations:1\n"
+    "BM_string_memcpy/2/4/2/iterations:1\n"
+    "BM_string_memcpy/2/4/4/iterations:1\n"
+    "BM_string_memcpy/2/4/8/iterations:1\n"
+    "BM_string_memcpy/2/4/16/iterations:1\n"
+    "BM_string_memcpy/2/4/32/iterations:1\n"
+    "BM_string_memcpy/2/8/1/iterations:1\n"
+    "BM_string_memcpy/2/8/2/iterations:1\n"
+    "BM_string_memcpy/2/8/4/iterations:1\n"
+    "BM_string_memcpy/2/8/8/iterations:1\n"
+    "BM_string_memcpy/2/8/16/iterations:1\n"
+    "BM_string_memcpy/2/8/32/iterations:1\n"
+    "BM_string_memcpy/2/16/1/iterations:1\n"
+    "BM_string_memcpy/2/16/2/iterations:1\n"
+    "BM_string_memcpy/2/16/4/iterations:1\n"
+    "BM_string_memcpy/2/16/8/iterations:1\n"
+    "BM_string_memcpy/2/16/16/iterations:1\n"
+    "BM_string_memcpy/2/16/32/iterations:1\n"
+    "BM_string_memcpy/2/32/1/iterations:1\n"
+    "BM_string_memcpy/2/32/2/iterations:1\n"
+    "BM_string_memcpy/2/32/4/iterations:1\n"
+    "BM_string_memcpy/2/32/8/iterations:1\n"
+    "BM_string_memcpy/2/32/16/iterations:1\n"
+    "BM_string_memcpy/2/32/32/iterations:1\n"
+    "BM_string_memcpy/3/0/0/iterations:1\n"
+    "BM_string_memcpy/3/1/1/iterations:1\n"
+    "BM_string_memcpy/3/1/2/iterations:1\n"
+    "BM_string_memcpy/3/1/4/iterations:1\n"
+    "BM_string_memcpy/3/1/8/iterations:1\n"
+    "BM_string_memcpy/3/1/16/iterations:1\n"
+    "BM_string_memcpy/3/1/32/iterations:1\n"
+    "BM_string_memcpy/3/2/1/iterations:1\n"
+    "BM_string_memcpy/3/2/2/iterations:1\n"
+    "BM_string_memcpy/3/2/4/iterations:1\n"
+    "BM_string_memcpy/3/2/8/iterations:1\n"
+    "BM_string_memcpy/3/2/16/iterations:1\n"
+    "BM_string_memcpy/3/2/32/iterations:1\n"
+    "BM_string_memcpy/3/4/1/iterations:1\n"
+    "BM_string_memcpy/3/4/2/iterations:1\n"
+    "BM_string_memcpy/3/4/4/iterations:1\n"
+    "BM_string_memcpy/3/4/8/iterations:1\n"
+    "BM_string_memcpy/3/4/16/iterations:1\n"
+    "BM_string_memcpy/3/4/32/iterations:1\n"
+    "BM_string_memcpy/3/8/1/iterations:1\n"
+    "BM_string_memcpy/3/8/2/iterations:1\n"
+    "BM_string_memcpy/3/8/4/iterations:1\n"
+    "BM_string_memcpy/3/8/8/iterations:1\n"
+    "BM_string_memcpy/3/8/16/iterations:1\n"
+    "BM_string_memcpy/3/8/32/iterations:1\n"
+    "BM_string_memcpy/3/16/1/iterations:1\n"
+    "BM_string_memcpy/3/16/2/iterations:1\n"
+    "BM_string_memcpy/3/16/4/iterations:1\n"
+    "BM_string_memcpy/3/16/8/iterations:1\n"
+    "BM_string_memcpy/3/16/16/iterations:1\n"
+    "BM_string_memcpy/3/16/32/iterations:1\n"
+    "BM_string_memcpy/3/32/1/iterations:1\n"
+    "BM_string_memcpy/3/32/2/iterations:1\n"
+    "BM_string_memcpy/3/32/4/iterations:1\n"
+    "BM_string_memcpy/3/32/8/iterations:1\n"
+    "BM_string_memcpy/3/32/16/iterations:1\n"
+    "BM_string_memcpy/3/32/32/iterations:1\n"
+    "BM_string_memcpy/4/0/0/iterations:1\n"
+    "BM_string_memcpy/4/1/1/iterations:1\n"
+    "BM_string_memcpy/4/1/2/iterations:1\n"
+    "BM_string_memcpy/4/1/4/iterations:1\n"
+    "BM_string_memcpy/4/1/8/iterations:1\n"
+    "BM_string_memcpy/4/1/16/iterations:1\n"
+    "BM_string_memcpy/4/1/32/iterations:1\n"
+    "BM_string_memcpy/4/2/1/iterations:1\n"
+    "BM_string_memcpy/4/2/2/iterations:1\n"
+    "BM_string_memcpy/4/2/4/iterations:1\n"
+    "BM_string_memcpy/4/2/8/iterations:1\n"
+    "BM_string_memcpy/4/2/16/iterations:1\n"
+    "BM_string_memcpy/4/2/32/iterations:1\n"
+    "BM_string_memcpy/4/4/1/iterations:1\n"
+    "BM_string_memcpy/4/4/2/iterations:1\n"
+    "BM_string_memcpy/4/4/4/iterations:1\n"
+    "BM_string_memcpy/4/4/8/iterations:1\n"
+    "BM_string_memcpy/4/4/16/iterations:1\n"
+    "BM_string_memcpy/4/4/32/iterations:1\n"
+    "BM_string_memcpy/4/8/1/iterations:1\n"
+    "BM_string_memcpy/4/8/2/iterations:1\n"
+    "BM_string_memcpy/4/8/4/iterations:1\n"
+    "BM_string_memcpy/4/8/8/iterations:1\n"
+    "BM_string_memcpy/4/8/16/iterations:1\n"
+    "BM_string_memcpy/4/8/32/iterations:1\n"
+    "BM_string_memcpy/4/16/1/iterations:1\n"
+    "BM_string_memcpy/4/16/2/iterations:1\n"
+    "BM_string_memcpy/4/16/4/iterations:1\n"
+    "BM_string_memcpy/4/16/8/iterations:1\n"
+    "BM_string_memcpy/4/16/16/iterations:1\n"
+    "BM_string_memcpy/4/16/32/iterations:1\n"
+    "BM_string_memcpy/4/32/1/iterations:1\n"
+    "BM_string_memcpy/4/32/2/iterations:1\n"
+    "BM_string_memcpy/4/32/4/iterations:1\n"
+    "BM_string_memcpy/4/32/8/iterations:1\n"
+    "BM_string_memcpy/4/32/16/iterations:1\n"
+    "BM_string_memcpy/4/32/32/iterations:1\n"
+    "BM_string_memcpy/5/0/0/iterations:1\n"
+    "BM_string_memcpy/5/1/1/iterations:1\n"
+    "BM_string_memcpy/5/1/2/iterations:1\n"
+    "BM_string_memcpy/5/1/4/iterations:1\n"
+    "BM_string_memcpy/5/1/8/iterations:1\n"
+    "BM_string_memcpy/5/1/16/iterations:1\n"
+    "BM_string_memcpy/5/1/32/iterations:1\n"
+    "BM_string_memcpy/5/2/1/iterations:1\n"
+    "BM_string_memcpy/5/2/2/iterations:1\n"
+    "BM_string_memcpy/5/2/4/iterations:1\n"
+    "BM_string_memcpy/5/2/8/iterations:1\n"
+    "BM_string_memcpy/5/2/16/iterations:1\n"
+    "BM_string_memcpy/5/2/32/iterations:1\n"
+    "BM_string_memcpy/5/4/1/iterations:1\n"
+    "BM_string_memcpy/5/4/2/iterations:1\n"
+    "BM_string_memcpy/5/4/4/iterations:1\n"
+    "BM_string_memcpy/5/4/8/iterations:1\n"
+    "BM_string_memcpy/5/4/16/iterations:1\n"
+    "BM_string_memcpy/5/4/32/iterations:1\n"
+    "BM_string_memcpy/5/8/1/iterations:1\n"
+    "BM_string_memcpy/5/8/2/iterations:1\n"
+    "BM_string_memcpy/5/8/4/iterations:1\n"
+    "BM_string_memcpy/5/8/8/iterations:1\n"
+    "BM_string_memcpy/5/8/16/iterations:1\n"
+    "BM_string_memcpy/5/8/32/iterations:1\n"
+    "BM_string_memcpy/5/16/1/iterations:1\n"
+    "BM_string_memcpy/5/16/2/iterations:1\n"
+    "BM_string_memcpy/5/16/4/iterations:1\n"
+    "BM_string_memcpy/5/16/8/iterations:1\n"
+    "BM_string_memcpy/5/16/16/iterations:1\n"
+    "BM_string_memcpy/5/16/32/iterations:1\n"
+    "BM_string_memcpy/5/32/1/iterations:1\n"
+    "BM_string_memcpy/5/32/2/iterations:1\n"
+    "BM_string_memcpy/5/32/4/iterations:1\n"
+    "BM_string_memcpy/5/32/8/iterations:1\n"
+    "BM_string_memcpy/5/32/16/iterations:1\n"
+    "BM_string_memcpy/5/32/32/iterations:1\n"
+    "BM_string_memcpy/6/0/0/iterations:1\n"
+    "BM_string_memcpy/6/1/1/iterations:1\n"
+    "BM_string_memcpy/6/1/2/iterations:1\n"
+    "BM_string_memcpy/6/1/4/iterations:1\n"
+    "BM_string_memcpy/6/1/8/iterations:1\n"
+    "BM_string_memcpy/6/1/16/iterations:1\n"
+    "BM_string_memcpy/6/1/32/iterations:1\n"
+    "BM_string_memcpy/6/2/1/iterations:1\n"
+    "BM_string_memcpy/6/2/2/iterations:1\n"
+    "BM_string_memcpy/6/2/4/iterations:1\n"
+    "BM_string_memcpy/6/2/8/iterations:1\n"
+    "BM_string_memcpy/6/2/16/iterations:1\n"
+    "BM_string_memcpy/6/2/32/iterations:1\n"
+    "BM_string_memcpy/6/4/1/iterations:1\n"
+    "BM_string_memcpy/6/4/2/iterations:1\n"
+    "BM_string_memcpy/6/4/4/iterations:1\n"
+    "BM_string_memcpy/6/4/8/iterations:1\n"
+    "BM_string_memcpy/6/4/16/iterations:1\n"
+    "BM_string_memcpy/6/4/32/iterations:1\n"
+    "BM_string_memcpy/6/8/1/iterations:1\n"
+    "BM_string_memcpy/6/8/2/iterations:1\n"
+    "BM_string_memcpy/6/8/4/iterations:1\n"
+    "BM_string_memcpy/6/8/8/iterations:1\n"
+    "BM_string_memcpy/6/8/16/iterations:1\n"
+    "BM_string_memcpy/6/8/32/iterations:1\n"
+    "BM_string_memcpy/6/16/1/iterations:1\n"
+    "BM_string_memcpy/6/16/2/iterations:1\n"
+    "BM_string_memcpy/6/16/4/iterations:1\n"
+    "BM_string_memcpy/6/16/8/iterations:1\n"
+    "BM_string_memcpy/6/16/16/iterations:1\n"
+    "BM_string_memcpy/6/16/32/iterations:1\n"
+    "BM_string_memcpy/6/32/1/iterations:1\n"
+    "BM_string_memcpy/6/32/2/iterations:1\n"
+    "BM_string_memcpy/6/32/4/iterations:1\n"
+    "BM_string_memcpy/6/32/8/iterations:1\n"
+    "BM_string_memcpy/6/32/16/iterations:1\n"
+    "BM_string_memcpy/6/32/32/iterations:1\n"
+    "BM_string_memcpy/7/0/0/iterations:1\n"
+    "BM_string_memcpy/7/1/1/iterations:1\n"
+    "BM_string_memcpy/7/1/2/iterations:1\n"
+    "BM_string_memcpy/7/1/4/iterations:1\n"
+    "BM_string_memcpy/7/1/8/iterations:1\n"
+    "BM_string_memcpy/7/1/16/iterations:1\n"
+    "BM_string_memcpy/7/1/32/iterations:1\n"
+    "BM_string_memcpy/7/2/1/iterations:1\n"
+    "BM_string_memcpy/7/2/2/iterations:1\n"
+    "BM_string_memcpy/7/2/4/iterations:1\n"
+    "BM_string_memcpy/7/2/8/iterations:1\n"
+    "BM_string_memcpy/7/2/16/iterations:1\n"
+    "BM_string_memcpy/7/2/32/iterations:1\n"
+    "BM_string_memcpy/7/4/1/iterations:1\n"
+    "BM_string_memcpy/7/4/2/iterations:1\n"
+    "BM_string_memcpy/7/4/4/iterations:1\n"
+    "BM_string_memcpy/7/4/8/iterations:1\n"
+    "BM_string_memcpy/7/4/16/iterations:1\n"
+    "BM_string_memcpy/7/4/32/iterations:1\n"
+    "BM_string_memcpy/7/8/1/iterations:1\n"
+    "BM_string_memcpy/7/8/2/iterations:1\n"
+    "BM_string_memcpy/7/8/4/iterations:1\n"
+    "BM_string_memcpy/7/8/8/iterations:1\n"
+    "BM_string_memcpy/7/8/16/iterations:1\n"
+    "BM_string_memcpy/7/8/32/iterations:1\n"
+    "BM_string_memcpy/7/16/1/iterations:1\n"
+    "BM_string_memcpy/7/16/2/iterations:1\n"
+    "BM_string_memcpy/7/16/4/iterations:1\n"
+    "BM_string_memcpy/7/16/8/iterations:1\n"
+    "BM_string_memcpy/7/16/16/iterations:1\n"
+    "BM_string_memcpy/7/16/32/iterations:1\n"
+    "BM_string_memcpy/7/32/1/iterations:1\n"
+    "BM_string_memcpy/7/32/2/iterations:1\n"
+    "BM_string_memcpy/7/32/4/iterations:1\n"
+    "BM_string_memcpy/7/32/8/iterations:1\n"
+    "BM_string_memcpy/7/32/16/iterations:1\n"
+    "BM_string_memcpy/7/32/32/iterations:1\n"
+    "BM_string_memcpy/8/0/0/iterations:1\n"
+    "BM_string_memcpy/8/1/1/iterations:1\n"
+    "BM_string_memcpy/8/1/2/iterations:1\n"
+    "BM_string_memcpy/8/1/4/iterations:1\n"
+    "BM_string_memcpy/8/1/8/iterations:1\n"
+    "BM_string_memcpy/8/1/16/iterations:1\n"
+    "BM_string_memcpy/8/1/32/iterations:1\n"
+    "BM_string_memcpy/8/2/1/iterations:1\n"
+    "BM_string_memcpy/8/2/2/iterations:1\n"
+    "BM_string_memcpy/8/2/4/iterations:1\n"
+    "BM_string_memcpy/8/2/8/iterations:1\n"
+    "BM_string_memcpy/8/2/16/iterations:1\n"
+    "BM_string_memcpy/8/2/32/iterations:1\n"
+    "BM_string_memcpy/8/4/1/iterations:1\n"
+    "BM_string_memcpy/8/4/2/iterations:1\n"
+    "BM_string_memcpy/8/4/4/iterations:1\n"
+    "BM_string_memcpy/8/4/8/iterations:1\n"
+    "BM_string_memcpy/8/4/16/iterations:1\n"
+    "BM_string_memcpy/8/4/32/iterations:1\n"
+    "BM_string_memcpy/8/8/1/iterations:1\n"
+    "BM_string_memcpy/8/8/2/iterations:1\n"
+    "BM_string_memcpy/8/8/4/iterations:1\n"
+    "BM_string_memcpy/8/8/8/iterations:1\n"
+    "BM_string_memcpy/8/8/16/iterations:1\n"
+    "BM_string_memcpy/8/8/32/iterations:1\n"
+    "BM_string_memcpy/8/16/1/iterations:1\n"
+    "BM_string_memcpy/8/16/2/iterations:1\n"
+    "BM_string_memcpy/8/16/4/iterations:1\n"
+    "BM_string_memcpy/8/16/8/iterations:1\n"
+    "BM_string_memcpy/8/16/16/iterations:1\n"
+    "BM_string_memcpy/8/16/32/iterations:1\n"
+    "BM_string_memcpy/8/32/1/iterations:1\n"
+    "BM_string_memcpy/8/32/2/iterations:1\n"
+    "BM_string_memcpy/8/32/4/iterations:1\n"
+    "BM_string_memcpy/8/32/8/iterations:1\n"
+    "BM_string_memcpy/8/32/16/iterations:1\n"
+    "BM_string_memcpy/8/32/32/iterations:1\n"
+    "BM_string_memcpy/9/0/0/iterations:1\n"
+    "BM_string_memcpy/9/1/1/iterations:1\n"
+    "BM_string_memcpy/9/1/2/iterations:1\n"
+    "BM_string_memcpy/9/1/4/iterations:1\n"
+    "BM_string_memcpy/9/1/8/iterations:1\n"
+    "BM_string_memcpy/9/1/16/iterations:1\n"
+    "BM_string_memcpy/9/1/32/iterations:1\n"
+    "BM_string_memcpy/9/2/1/iterations:1\n"
+    "BM_string_memcpy/9/2/2/iterations:1\n"
+    "BM_string_memcpy/9/2/4/iterations:1\n"
+    "BM_string_memcpy/9/2/8/iterations:1\n"
+    "BM_string_memcpy/9/2/16/iterations:1\n"
+    "BM_string_memcpy/9/2/32/iterations:1\n"
+    "BM_string_memcpy/9/4/1/iterations:1\n"
+    "BM_string_memcpy/9/4/2/iterations:1\n"
+    "BM_string_memcpy/9/4/4/iterations:1\n"
+    "BM_string_memcpy/9/4/8/iterations:1\n"
+    "BM_string_memcpy/9/4/16/iterations:1\n"
+    "BM_string_memcpy/9/4/32/iterations:1\n"
+    "BM_string_memcpy/9/8/1/iterations:1\n"
+    "BM_string_memcpy/9/8/2/iterations:1\n"
+    "BM_string_memcpy/9/8/4/iterations:1\n"
+    "BM_string_memcpy/9/8/8/iterations:1\n"
+    "BM_string_memcpy/9/8/16/iterations:1\n"
+    "BM_string_memcpy/9/8/32/iterations:1\n"
+    "BM_string_memcpy/9/16/1/iterations:1\n"
+    "BM_string_memcpy/9/16/2/iterations:1\n"
+    "BM_string_memcpy/9/16/4/iterations:1\n"
+    "BM_string_memcpy/9/16/8/iterations:1\n"
+    "BM_string_memcpy/9/16/16/iterations:1\n"
+    "BM_string_memcpy/9/16/32/iterations:1\n"
+    "BM_string_memcpy/9/32/1/iterations:1\n"
+    "BM_string_memcpy/9/32/2/iterations:1\n"
+    "BM_string_memcpy/9/32/4/iterations:1\n"
+    "BM_string_memcpy/9/32/8/iterations:1\n"
+    "BM_string_memcpy/9/32/16/iterations:1\n"
+    "BM_string_memcpy/9/32/32/iterations:1\n"
+    "BM_string_memcpy/10/0/0/iterations:1\n"
+    "BM_string_memcpy/10/1/1/iterations:1\n"
+    "BM_string_memcpy/10/1/2/iterations:1\n"
+    "BM_string_memcpy/10/1/4/iterations:1\n"
+    "BM_string_memcpy/10/1/8/iterations:1\n"
+    "BM_string_memcpy/10/1/16/iterations:1\n"
+    "BM_string_memcpy/10/1/32/iterations:1\n"
+    "BM_string_memcpy/10/2/1/iterations:1\n"
+    "BM_string_memcpy/10/2/2/iterations:1\n"
+    "BM_string_memcpy/10/2/4/iterations:1\n"
+    "BM_string_memcpy/10/2/8/iterations:1\n"
+    "BM_string_memcpy/10/2/16/iterations:1\n"
+    "BM_string_memcpy/10/2/32/iterations:1\n"
+    "BM_string_memcpy/10/4/1/iterations:1\n"
+    "BM_string_memcpy/10/4/2/iterations:1\n"
+    "BM_string_memcpy/10/4/4/iterations:1\n"
+    "BM_string_memcpy/10/4/8/iterations:1\n"
+    "BM_string_memcpy/10/4/16/iterations:1\n"
+    "BM_string_memcpy/10/4/32/iterations:1\n"
+    "BM_string_memcpy/10/8/1/iterations:1\n"
+    "BM_string_memcpy/10/8/2/iterations:1\n"
+    "BM_string_memcpy/10/8/4/iterations:1\n"
+    "BM_string_memcpy/10/8/8/iterations:1\n"
+    "BM_string_memcpy/10/8/16/iterations:1\n"
+    "BM_string_memcpy/10/8/32/iterations:1\n"
+    "BM_string_memcpy/10/16/1/iterations:1\n"
+    "BM_string_memcpy/10/16/2/iterations:1\n"
+    "BM_string_memcpy/10/16/4/iterations:1\n"
+    "BM_string_memcpy/10/16/8/iterations:1\n"
+    "BM_string_memcpy/10/16/16/iterations:1\n"
+    "BM_string_memcpy/10/16/32/iterations:1\n"
+    "BM_string_memcpy/10/32/1/iterations:1\n"
+    "BM_string_memcpy/10/32/2/iterations:1\n"
+    "BM_string_memcpy/10/32/4/iterations:1\n"
+    "BM_string_memcpy/10/32/8/iterations:1\n"
+    "BM_string_memcpy/10/32/16/iterations:1\n"
+    "BM_string_memcpy/10/32/32/iterations:1\n"
+    "BM_string_memcpy/11/0/0/iterations:1\n"
+    "BM_string_memcpy/11/1/1/iterations:1\n"
+    "BM_string_memcpy/11/1/2/iterations:1\n"
+    "BM_string_memcpy/11/1/4/iterations:1\n"
+    "BM_string_memcpy/11/1/8/iterations:1\n"
+    "BM_string_memcpy/11/1/16/iterations:1\n"
+    "BM_string_memcpy/11/1/32/iterations:1\n"
+    "BM_string_memcpy/11/2/1/iterations:1\n"
+    "BM_string_memcpy/11/2/2/iterations:1\n"
+    "BM_string_memcpy/11/2/4/iterations:1\n"
+    "BM_string_memcpy/11/2/8/iterations:1\n"
+    "BM_string_memcpy/11/2/16/iterations:1\n"
+    "BM_string_memcpy/11/2/32/iterations:1\n"
+    "BM_string_memcpy/11/4/1/iterations:1\n"
+    "BM_string_memcpy/11/4/2/iterations:1\n"
+    "BM_string_memcpy/11/4/4/iterations:1\n"
+    "BM_string_memcpy/11/4/8/iterations:1\n"
+    "BM_string_memcpy/11/4/16/iterations:1\n"
+    "BM_string_memcpy/11/4/32/iterations:1\n"
+    "BM_string_memcpy/11/8/1/iterations:1\n"
+    "BM_string_memcpy/11/8/2/iterations:1\n"
+    "BM_string_memcpy/11/8/4/iterations:1\n"
+    "BM_string_memcpy/11/8/8/iterations:1\n"
+    "BM_string_memcpy/11/8/16/iterations:1\n"
+    "BM_string_memcpy/11/8/32/iterations:1\n"
+    "BM_string_memcpy/11/16/1/iterations:1\n"
+    "BM_string_memcpy/11/16/2/iterations:1\n"
+    "BM_string_memcpy/11/16/4/iterations:1\n"
+    "BM_string_memcpy/11/16/8/iterations:1\n"
+    "BM_string_memcpy/11/16/16/iterations:1\n"
+    "BM_string_memcpy/11/16/32/iterations:1\n"
+    "BM_string_memcpy/11/32/1/iterations:1\n"
+    "BM_string_memcpy/11/32/2/iterations:1\n"
+    "BM_string_memcpy/11/32/4/iterations:1\n"
+    "BM_string_memcpy/11/32/8/iterations:1\n"
+    "BM_string_memcpy/11/32/16/iterations:1\n"
+    "BM_string_memcpy/11/32/32/iterations:1\n"
+    "BM_string_memcpy/12/0/0/iterations:1\n"
+    "BM_string_memcpy/12/1/1/iterations:1\n"
+    "BM_string_memcpy/12/1/2/iterations:1\n"
+    "BM_string_memcpy/12/1/4/iterations:1\n"
+    "BM_string_memcpy/12/1/8/iterations:1\n"
+    "BM_string_memcpy/12/1/16/iterations:1\n"
+    "BM_string_memcpy/12/1/32/iterations:1\n"
+    "BM_string_memcpy/12/2/1/iterations:1\n"
+    "BM_string_memcpy/12/2/2/iterations:1\n"
+    "BM_string_memcpy/12/2/4/iterations:1\n"
+    "BM_string_memcpy/12/2/8/iterations:1\n"
+    "BM_string_memcpy/12/2/16/iterations:1\n"
+    "BM_string_memcpy/12/2/32/iterations:1\n"
+    "BM_string_memcpy/12/4/1/iterations:1\n"
+    "BM_string_memcpy/12/4/2/iterations:1\n"
+    "BM_string_memcpy/12/4/4/iterations:1\n"
+    "BM_string_memcpy/12/4/8/iterations:1\n"
+    "BM_string_memcpy/12/4/16/iterations:1\n"
+    "BM_string_memcpy/12/4/32/iterations:1\n"
+    "BM_string_memcpy/12/8/1/iterations:1\n"
+    "BM_string_memcpy/12/8/2/iterations:1\n"
+    "BM_string_memcpy/12/8/4/iterations:1\n"
+    "BM_string_memcpy/12/8/8/iterations:1\n"
+    "BM_string_memcpy/12/8/16/iterations:1\n"
+    "BM_string_memcpy/12/8/32/iterations:1\n"
+    "BM_string_memcpy/12/16/1/iterations:1\n"
+    "BM_string_memcpy/12/16/2/iterations:1\n"
+    "BM_string_memcpy/12/16/4/iterations:1\n"
+    "BM_string_memcpy/12/16/8/iterations:1\n"
+    "BM_string_memcpy/12/16/16/iterations:1\n"
+    "BM_string_memcpy/12/16/32/iterations:1\n"
+    "BM_string_memcpy/12/32/1/iterations:1\n"
+    "BM_string_memcpy/12/32/2/iterations:1\n"
+    "BM_string_memcpy/12/32/4/iterations:1\n"
+    "BM_string_memcpy/12/32/8/iterations:1\n"
+    "BM_string_memcpy/12/32/16/iterations:1\n"
+    "BM_string_memcpy/12/32/32/iterations:1\n"
+    "BM_string_memcpy/13/0/0/iterations:1\n"
+    "BM_string_memcpy/13/1/1/iterations:1\n"
+    "BM_string_memcpy/13/1/2/iterations:1\n"
+    "BM_string_memcpy/13/1/4/iterations:1\n"
+    "BM_string_memcpy/13/1/8/iterations:1\n"
+    "BM_string_memcpy/13/1/16/iterations:1\n"
+    "BM_string_memcpy/13/1/32/iterations:1\n"
+    "BM_string_memcpy/13/2/1/iterations:1\n"
+    "BM_string_memcpy/13/2/2/iterations:1\n"
+    "BM_string_memcpy/13/2/4/iterations:1\n"
+    "BM_string_memcpy/13/2/8/iterations:1\n"
+    "BM_string_memcpy/13/2/16/iterations:1\n"
+    "BM_string_memcpy/13/2/32/iterations:1\n"
+    "BM_string_memcpy/13/4/1/iterations:1\n"
+    "BM_string_memcpy/13/4/2/iterations:1\n"
+    "BM_string_memcpy/13/4/4/iterations:1\n"
+    "BM_string_memcpy/13/4/8/iterations:1\n"
+    "BM_string_memcpy/13/4/16/iterations:1\n"
+    "BM_string_memcpy/13/4/32/iterations:1\n"
+    "BM_string_memcpy/13/8/1/iterations:1\n"
+    "BM_string_memcpy/13/8/2/iterations:1\n"
+    "BM_string_memcpy/13/8/4/iterations:1\n"
+    "BM_string_memcpy/13/8/8/iterations:1\n"
+    "BM_string_memcpy/13/8/16/iterations:1\n"
+    "BM_string_memcpy/13/8/32/iterations:1\n"
+    "BM_string_memcpy/13/16/1/iterations:1\n"
+    "BM_string_memcpy/13/16/2/iterations:1\n"
+    "BM_string_memcpy/13/16/4/iterations:1\n"
+    "BM_string_memcpy/13/16/8/iterations:1\n"
+    "BM_string_memcpy/13/16/16/iterations:1\n"
+    "BM_string_memcpy/13/16/32/iterations:1\n"
+    "BM_string_memcpy/13/32/1/iterations:1\n"
+    "BM_string_memcpy/13/32/2/iterations:1\n"
+    "BM_string_memcpy/13/32/4/iterations:1\n"
+    "BM_string_memcpy/13/32/8/iterations:1\n"
+    "BM_string_memcpy/13/32/16/iterations:1\n"
+    "BM_string_memcpy/13/32/32/iterations:1\n"
+    "BM_string_memcpy/14/0/0/iterations:1\n"
+    "BM_string_memcpy/14/1/1/iterations:1\n"
+    "BM_string_memcpy/14/1/2/iterations:1\n"
+    "BM_string_memcpy/14/1/4/iterations:1\n"
+    "BM_string_memcpy/14/1/8/iterations:1\n"
+    "BM_string_memcpy/14/1/16/iterations:1\n"
+    "BM_string_memcpy/14/1/32/iterations:1\n"
+    "BM_string_memcpy/14/2/1/iterations:1\n"
+    "BM_string_memcpy/14/2/2/iterations:1\n"
+    "BM_string_memcpy/14/2/4/iterations:1\n"
+    "BM_string_memcpy/14/2/8/iterations:1\n"
+    "BM_string_memcpy/14/2/16/iterations:1\n"
+    "BM_string_memcpy/14/2/32/iterations:1\n"
+    "BM_string_memcpy/14/4/1/iterations:1\n"
+    "BM_string_memcpy/14/4/2/iterations:1\n"
+    "BM_string_memcpy/14/4/4/iterations:1\n"
+    "BM_string_memcpy/14/4/8/iterations:1\n"
+    "BM_string_memcpy/14/4/16/iterations:1\n"
+    "BM_string_memcpy/14/4/32/iterations:1\n"
+    "BM_string_memcpy/14/8/1/iterations:1\n"
+    "BM_string_memcpy/14/8/2/iterations:1\n"
+    "BM_string_memcpy/14/8/4/iterations:1\n"
+    "BM_string_memcpy/14/8/8/iterations:1\n"
+    "BM_string_memcpy/14/8/16/iterations:1\n"
+    "BM_string_memcpy/14/8/32/iterations:1\n"
+    "BM_string_memcpy/14/16/1/iterations:1\n"
+    "BM_string_memcpy/14/16/2/iterations:1\n"
+    "BM_string_memcpy/14/16/4/iterations:1\n"
+    "BM_string_memcpy/14/16/8/iterations:1\n"
+    "BM_string_memcpy/14/16/16/iterations:1\n"
+    "BM_string_memcpy/14/16/32/iterations:1\n"
+    "BM_string_memcpy/14/32/1/iterations:1\n"
+    "BM_string_memcpy/14/32/2/iterations:1\n"
+    "BM_string_memcpy/14/32/4/iterations:1\n"
+    "BM_string_memcpy/14/32/8/iterations:1\n"
+    "BM_string_memcpy/14/32/16/iterations:1\n"
+    "BM_string_memcpy/14/32/32/iterations:1\n"
+    "BM_string_memcpy/15/0/0/iterations:1\n"
+    "BM_string_memcpy/15/1/1/iterations:1\n"
+    "BM_string_memcpy/15/1/2/iterations:1\n"
+    "BM_string_memcpy/15/1/4/iterations:1\n"
+    "BM_string_memcpy/15/1/8/iterations:1\n"
+    "BM_string_memcpy/15/1/16/iterations:1\n"
+    "BM_string_memcpy/15/1/32/iterations:1\n"
+    "BM_string_memcpy/15/2/1/iterations:1\n"
+    "BM_string_memcpy/15/2/2/iterations:1\n"
+    "BM_string_memcpy/15/2/4/iterations:1\n"
+    "BM_string_memcpy/15/2/8/iterations:1\n"
+    "BM_string_memcpy/15/2/16/iterations:1\n"
+    "BM_string_memcpy/15/2/32/iterations:1\n"
+    "BM_string_memcpy/15/4/1/iterations:1\n"
+    "BM_string_memcpy/15/4/2/iterations:1\n"
+    "BM_string_memcpy/15/4/4/iterations:1\n"
+    "BM_string_memcpy/15/4/8/iterations:1\n"
+    "BM_string_memcpy/15/4/16/iterations:1\n"
+    "BM_string_memcpy/15/4/32/iterations:1\n"
+    "BM_string_memcpy/15/8/1/iterations:1\n"
+    "BM_string_memcpy/15/8/2/iterations:1\n"
+    "BM_string_memcpy/15/8/4/iterations:1\n"
+    "BM_string_memcpy/15/8/8/iterations:1\n"
+    "BM_string_memcpy/15/8/16/iterations:1\n"
+    "BM_string_memcpy/15/8/32/iterations:1\n"
+    "BM_string_memcpy/15/16/1/iterations:1\n"
+    "BM_string_memcpy/15/16/2/iterations:1\n"
+    "BM_string_memcpy/15/16/4/iterations:1\n"
+    "BM_string_memcpy/15/16/8/iterations:1\n"
+    "BM_string_memcpy/15/16/16/iterations:1\n"
+    "BM_string_memcpy/15/16/32/iterations:1\n"
+    "BM_string_memcpy/15/32/1/iterations:1\n"
+    "BM_string_memcpy/15/32/2/iterations:1\n"
+    "BM_string_memcpy/15/32/4/iterations:1\n"
+    "BM_string_memcpy/15/32/8/iterations:1\n"
+    "BM_string_memcpy/15/32/16/iterations:1\n"
+    "BM_string_memcpy/15/32/32/iterations:1\n"
+    "BM_string_memcpy/16/0/0/iterations:1\n"
+    "BM_string_memcpy/16/1/1/iterations:1\n"
+    "BM_string_memcpy/16/1/2/iterations:1\n"
+    "BM_string_memcpy/16/1/4/iterations:1\n"
+    "BM_string_memcpy/16/1/8/iterations:1\n"
+    "BM_string_memcpy/16/1/16/iterations:1\n"
+    "BM_string_memcpy/16/1/32/iterations:1\n"
+    "BM_string_memcpy/16/2/1/iterations:1\n"
+    "BM_string_memcpy/16/2/2/iterations:1\n"
+    "BM_string_memcpy/16/2/4/iterations:1\n"
+    "BM_string_memcpy/16/2/8/iterations:1\n"
+    "BM_string_memcpy/16/2/16/iterations:1\n"
+    "BM_string_memcpy/16/2/32/iterations:1\n"
+    "BM_string_memcpy/16/4/1/iterations:1\n"
+    "BM_string_memcpy/16/4/2/iterations:1\n"
+    "BM_string_memcpy/16/4/4/iterations:1\n"
+    "BM_string_memcpy/16/4/8/iterations:1\n"
+    "BM_string_memcpy/16/4/16/iterations:1\n"
+    "BM_string_memcpy/16/4/32/iterations:1\n"
+    "BM_string_memcpy/16/8/1/iterations:1\n"
+    "BM_string_memcpy/16/8/2/iterations:1\n"
+    "BM_string_memcpy/16/8/4/iterations:1\n"
+    "BM_string_memcpy/16/8/8/iterations:1\n"
+    "BM_string_memcpy/16/8/16/iterations:1\n"
+    "BM_string_memcpy/16/8/32/iterations:1\n"
+    "BM_string_memcpy/16/16/1/iterations:1\n"
+    "BM_string_memcpy/16/16/2/iterations:1\n"
+    "BM_string_memcpy/16/16/4/iterations:1\n"
+    "BM_string_memcpy/16/16/8/iterations:1\n"
+    "BM_string_memcpy/16/16/16/iterations:1\n"
+    "BM_string_memcpy/16/16/32/iterations:1\n"
+    "BM_string_memcpy/16/32/1/iterations:1\n"
+    "BM_string_memcpy/16/32/2/iterations:1\n"
+    "BM_string_memcpy/16/32/4/iterations:1\n"
+    "BM_string_memcpy/16/32/8/iterations:1\n"
+    "BM_string_memcpy/16/32/16/iterations:1\n"
+    "BM_string_memcpy/16/32/32/iterations:1\n"
+    "BM_string_memcpy/24/0/0/iterations:1\n"
+    "BM_string_memcpy/24/1/1/iterations:1\n"
+    "BM_string_memcpy/24/1/2/iterations:1\n"
+    "BM_string_memcpy/24/1/4/iterations:1\n"
+    "BM_string_memcpy/24/1/8/iterations:1\n"
+    "BM_string_memcpy/24/1/16/iterations:1\n"
+    "BM_string_memcpy/24/1/32/iterations:1\n"
+    "BM_string_memcpy/24/2/1/iterations:1\n"
+    "BM_string_memcpy/24/2/2/iterations:1\n"
+    "BM_string_memcpy/24/2/4/iterations:1\n"
+    "BM_string_memcpy/24/2/8/iterations:1\n"
+    "BM_string_memcpy/24/2/16/iterations:1\n"
+    "BM_string_memcpy/24/2/32/iterations:1\n"
+    "BM_string_memcpy/24/4/1/iterations:1\n"
+    "BM_string_memcpy/24/4/2/iterations:1\n"
+    "BM_string_memcpy/24/4/4/iterations:1\n"
+    "BM_string_memcpy/24/4/8/iterations:1\n"
+    "BM_string_memcpy/24/4/16/iterations:1\n"
+    "BM_string_memcpy/24/4/32/iterations:1\n"
+    "BM_string_memcpy/24/8/1/iterations:1\n"
+    "BM_string_memcpy/24/8/2/iterations:1\n"
+    "BM_string_memcpy/24/8/4/iterations:1\n"
+    "BM_string_memcpy/24/8/8/iterations:1\n"
+    "BM_string_memcpy/24/8/16/iterations:1\n"
+    "BM_string_memcpy/24/8/32/iterations:1\n"
+    "BM_string_memcpy/24/16/1/iterations:1\n"
+    "BM_string_memcpy/24/16/2/iterations:1\n"
+    "BM_string_memcpy/24/16/4/iterations:1\n"
+    "BM_string_memcpy/24/16/8/iterations:1\n"
+    "BM_string_memcpy/24/16/16/iterations:1\n"
+    "BM_string_memcpy/24/16/32/iterations:1\n"
+    "BM_string_memcpy/24/32/1/iterations:1\n"
+    "BM_string_memcpy/24/32/2/iterations:1\n"
+    "BM_string_memcpy/24/32/4/iterations:1\n"
+    "BM_string_memcpy/24/32/8/iterations:1\n"
+    "BM_string_memcpy/24/32/16/iterations:1\n"
+    "BM_string_memcpy/24/32/32/iterations:1\n"
+    "BM_string_memcpy/32/0/0/iterations:1\n"
+    "BM_string_memcpy/32/1/1/iterations:1\n"
+    "BM_string_memcpy/32/1/2/iterations:1\n"
+    "BM_string_memcpy/32/1/4/iterations:1\n"
+    "BM_string_memcpy/32/1/8/iterations:1\n"
+    "BM_string_memcpy/32/1/16/iterations:1\n"
+    "BM_string_memcpy/32/1/32/iterations:1\n"
+    "BM_string_memcpy/32/2/1/iterations:1\n"
+    "BM_string_memcpy/32/2/2/iterations:1\n"
+    "BM_string_memcpy/32/2/4/iterations:1\n"
+    "BM_string_memcpy/32/2/8/iterations:1\n"
+    "BM_string_memcpy/32/2/16/iterations:1\n"
+    "BM_string_memcpy/32/2/32/iterations:1\n"
+    "BM_string_memcpy/32/4/1/iterations:1\n"
+    "BM_string_memcpy/32/4/2/iterations:1\n"
+    "BM_string_memcpy/32/4/4/iterations:1\n"
+    "BM_string_memcpy/32/4/8/iterations:1\n"
+    "BM_string_memcpy/32/4/16/iterations:1\n"
+    "BM_string_memcpy/32/4/32/iterations:1\n"
+    "BM_string_memcpy/32/8/1/iterations:1\n"
+    "BM_string_memcpy/32/8/2/iterations:1\n"
+    "BM_string_memcpy/32/8/4/iterations:1\n"
+    "BM_string_memcpy/32/8/8/iterations:1\n"
+    "BM_string_memcpy/32/8/16/iterations:1\n"
+    "BM_string_memcpy/32/8/32/iterations:1\n"
+    "BM_string_memcpy/32/16/1/iterations:1\n"
+    "BM_string_memcpy/32/16/2/iterations:1\n"
+    "BM_string_memcpy/32/16/4/iterations:1\n"
+    "BM_string_memcpy/32/16/8/iterations:1\n"
+    "BM_string_memcpy/32/16/16/iterations:1\n"
+    "BM_string_memcpy/32/16/32/iterations:1\n"
+    "BM_string_memcpy/32/32/1/iterations:1\n"
+    "BM_string_memcpy/32/32/2/iterations:1\n"
+    "BM_string_memcpy/32/32/4/iterations:1\n"
+    "BM_string_memcpy/32/32/8/iterations:1\n"
+    "BM_string_memcpy/32/32/16/iterations:1\n"
+    "BM_string_memcpy/32/32/32/iterations:1\n"
+    "BM_string_memcpy/40/0/0/iterations:1\n"
+    "BM_string_memcpy/40/1/1/iterations:1\n"
+    "BM_string_memcpy/40/1/2/iterations:1\n"
+    "BM_string_memcpy/40/1/4/iterations:1\n"
+    "BM_string_memcpy/40/1/8/iterations:1\n"
+    "BM_string_memcpy/40/1/16/iterations:1\n"
+    "BM_string_memcpy/40/1/32/iterations:1\n"
+    "BM_string_memcpy/40/2/1/iterations:1\n"
+    "BM_string_memcpy/40/2/2/iterations:1\n"
+    "BM_string_memcpy/40/2/4/iterations:1\n"
+    "BM_string_memcpy/40/2/8/iterations:1\n"
+    "BM_string_memcpy/40/2/16/iterations:1\n"
+    "BM_string_memcpy/40/2/32/iterations:1\n"
+    "BM_string_memcpy/40/4/1/iterations:1\n"
+    "BM_string_memcpy/40/4/2/iterations:1\n"
+    "BM_string_memcpy/40/4/4/iterations:1\n"
+    "BM_string_memcpy/40/4/8/iterations:1\n"
+    "BM_string_memcpy/40/4/16/iterations:1\n"
+    "BM_string_memcpy/40/4/32/iterations:1\n"
+    "BM_string_memcpy/40/8/1/iterations:1\n"
+    "BM_string_memcpy/40/8/2/iterations:1\n"
+    "BM_string_memcpy/40/8/4/iterations:1\n"
+    "BM_string_memcpy/40/8/8/iterations:1\n"
+    "BM_string_memcpy/40/8/16/iterations:1\n"
+    "BM_string_memcpy/40/8/32/iterations:1\n"
+    "BM_string_memcpy/40/16/1/iterations:1\n"
+    "BM_string_memcpy/40/16/2/iterations:1\n"
+    "BM_string_memcpy/40/16/4/iterations:1\n"
+    "BM_string_memcpy/40/16/8/iterations:1\n"
+    "BM_string_memcpy/40/16/16/iterations:1\n"
+    "BM_string_memcpy/40/16/32/iterations:1\n"
+    "BM_string_memcpy/40/32/1/iterations:1\n"
+    "BM_string_memcpy/40/32/2/iterations:1\n"
+    "BM_string_memcpy/40/32/4/iterations:1\n"
+    "BM_string_memcpy/40/32/8/iterations:1\n"
+    "BM_string_memcpy/40/32/16/iterations:1\n"
+    "BM_string_memcpy/40/32/32/iterations:1\n"
+    "BM_string_memcpy/48/0/0/iterations:1\n"
+    "BM_string_memcpy/48/1/1/iterations:1\n"
+    "BM_string_memcpy/48/1/2/iterations:1\n"
+    "BM_string_memcpy/48/1/4/iterations:1\n"
+    "BM_string_memcpy/48/1/8/iterations:1\n"
+    "BM_string_memcpy/48/1/16/iterations:1\n"
+    "BM_string_memcpy/48/1/32/iterations:1\n"
+    "BM_string_memcpy/48/2/1/iterations:1\n"
+    "BM_string_memcpy/48/2/2/iterations:1\n"
+    "BM_string_memcpy/48/2/4/iterations:1\n"
+    "BM_string_memcpy/48/2/8/iterations:1\n"
+    "BM_string_memcpy/48/2/16/iterations:1\n"
+    "BM_string_memcpy/48/2/32/iterations:1\n"
+    "BM_string_memcpy/48/4/1/iterations:1\n"
+    "BM_string_memcpy/48/4/2/iterations:1\n"
+    "BM_string_memcpy/48/4/4/iterations:1\n"
+    "BM_string_memcpy/48/4/8/iterations:1\n"
+    "BM_string_memcpy/48/4/16/iterations:1\n"
+    "BM_string_memcpy/48/4/32/iterations:1\n"
+    "BM_string_memcpy/48/8/1/iterations:1\n"
+    "BM_string_memcpy/48/8/2/iterations:1\n"
+    "BM_string_memcpy/48/8/4/iterations:1\n"
+    "BM_string_memcpy/48/8/8/iterations:1\n"
+    "BM_string_memcpy/48/8/16/iterations:1\n"
+    "BM_string_memcpy/48/8/32/iterations:1\n"
+    "BM_string_memcpy/48/16/1/iterations:1\n"
+    "BM_string_memcpy/48/16/2/iterations:1\n"
+    "BM_string_memcpy/48/16/4/iterations:1\n"
+    "BM_string_memcpy/48/16/8/iterations:1\n"
+    "BM_string_memcpy/48/16/16/iterations:1\n"
+    "BM_string_memcpy/48/16/32/iterations:1\n"
+    "BM_string_memcpy/48/32/1/iterations:1\n"
+    "BM_string_memcpy/48/32/2/iterations:1\n"
+    "BM_string_memcpy/48/32/4/iterations:1\n"
+    "BM_string_memcpy/48/32/8/iterations:1\n"
+    "BM_string_memcpy/48/32/16/iterations:1\n"
+    "BM_string_memcpy/48/32/32/iterations:1\n"
+    "BM_string_memcpy/56/0/0/iterations:1\n"
+    "BM_string_memcpy/56/1/1/iterations:1\n"
+    "BM_string_memcpy/56/1/2/iterations:1\n"
+    "BM_string_memcpy/56/1/4/iterations:1\n"
+    "BM_string_memcpy/56/1/8/iterations:1\n"
+    "BM_string_memcpy/56/1/16/iterations:1\n"
+    "BM_string_memcpy/56/1/32/iterations:1\n"
+    "BM_string_memcpy/56/2/1/iterations:1\n"
+    "BM_string_memcpy/56/2/2/iterations:1\n"
+    "BM_string_memcpy/56/2/4/iterations:1\n"
+    "BM_string_memcpy/56/2/8/iterations:1\n"
+    "BM_string_memcpy/56/2/16/iterations:1\n"
+    "BM_string_memcpy/56/2/32/iterations:1\n"
+    "BM_string_memcpy/56/4/1/iterations:1\n"
+    "BM_string_memcpy/56/4/2/iterations:1\n"
+    "BM_string_memcpy/56/4/4/iterations:1\n"
+    "BM_string_memcpy/56/4/8/iterations:1\n"
+    "BM_string_memcpy/56/4/16/iterations:1\n"
+    "BM_string_memcpy/56/4/32/iterations:1\n"
+    "BM_string_memcpy/56/8/1/iterations:1\n"
+    "BM_string_memcpy/56/8/2/iterations:1\n"
+    "BM_string_memcpy/56/8/4/iterations:1\n"
+    "BM_string_memcpy/56/8/8/iterations:1\n"
+    "BM_string_memcpy/56/8/16/iterations:1\n"
+    "BM_string_memcpy/56/8/32/iterations:1\n"
+    "BM_string_memcpy/56/16/1/iterations:1\n"
+    "BM_string_memcpy/56/16/2/iterations:1\n"
+    "BM_string_memcpy/56/16/4/iterations:1\n"
+    "BM_string_memcpy/56/16/8/iterations:1\n"
+    "BM_string_memcpy/56/16/16/iterations:1\n"
+    "BM_string_memcpy/56/16/32/iterations:1\n"
+    "BM_string_memcpy/56/32/1/iterations:1\n"
+    "BM_string_memcpy/56/32/2/iterations:1\n"
+    "BM_string_memcpy/56/32/4/iterations:1\n"
+    "BM_string_memcpy/56/32/8/iterations:1\n"
+    "BM_string_memcpy/56/32/16/iterations:1\n"
+    "BM_string_memcpy/56/32/32/iterations:1\n"
+    "BM_string_memcpy/64/0/0/iterations:1\n"
+    "BM_string_memcpy/64/1/1/iterations:1\n"
+    "BM_string_memcpy/64/1/2/iterations:1\n"
+    "BM_string_memcpy/64/1/4/iterations:1\n"
+    "BM_string_memcpy/64/1/8/iterations:1\n"
+    "BM_string_memcpy/64/1/16/iterations:1\n"
+    "BM_string_memcpy/64/1/32/iterations:1\n"
+    "BM_string_memcpy/64/2/1/iterations:1\n"
+    "BM_string_memcpy/64/2/2/iterations:1\n"
+    "BM_string_memcpy/64/2/4/iterations:1\n"
+    "BM_string_memcpy/64/2/8/iterations:1\n"
+    "BM_string_memcpy/64/2/16/iterations:1\n"
+    "BM_string_memcpy/64/2/32/iterations:1\n"
+    "BM_string_memcpy/64/4/1/iterations:1\n"
+    "BM_string_memcpy/64/4/2/iterations:1\n"
+    "BM_string_memcpy/64/4/4/iterations:1\n"
+    "BM_string_memcpy/64/4/8/iterations:1\n"
+    "BM_string_memcpy/64/4/16/iterations:1\n"
+    "BM_string_memcpy/64/4/32/iterations:1\n"
+    "BM_string_memcpy/64/8/1/iterations:1\n"
+    "BM_string_memcpy/64/8/2/iterations:1\n"
+    "BM_string_memcpy/64/8/4/iterations:1\n"
+    "BM_string_memcpy/64/8/8/iterations:1\n"
+    "BM_string_memcpy/64/8/16/iterations:1\n"
+    "BM_string_memcpy/64/8/32/iterations:1\n"
+    "BM_string_memcpy/64/16/1/iterations:1\n"
+    "BM_string_memcpy/64/16/2/iterations:1\n"
+    "BM_string_memcpy/64/16/4/iterations:1\n"
+    "BM_string_memcpy/64/16/8/iterations:1\n"
+    "BM_string_memcpy/64/16/16/iterations:1\n"
+    "BM_string_memcpy/64/16/32/iterations:1\n"
+    "BM_string_memcpy/64/32/1/iterations:1\n"
+    "BM_string_memcpy/64/32/2/iterations:1\n"
+    "BM_string_memcpy/64/32/4/iterations:1\n"
+    "BM_string_memcpy/64/32/8/iterations:1\n"
+    "BM_string_memcpy/64/32/16/iterations:1\n"
+    "BM_string_memcpy/64/32/32/iterations:1\n"
+    "BM_string_memcpy/72/0/0/iterations:1\n"
+    "BM_string_memcpy/72/1/1/iterations:1\n"
+    "BM_string_memcpy/72/1/2/iterations:1\n"
+    "BM_string_memcpy/72/1/4/iterations:1\n"
+    "BM_string_memcpy/72/1/8/iterations:1\n"
+    "BM_string_memcpy/72/1/16/iterations:1\n"
+    "BM_string_memcpy/72/1/32/iterations:1\n"
+    "BM_string_memcpy/72/2/1/iterations:1\n"
+    "BM_string_memcpy/72/2/2/iterations:1\n"
+    "BM_string_memcpy/72/2/4/iterations:1\n"
+    "BM_string_memcpy/72/2/8/iterations:1\n"
+    "BM_string_memcpy/72/2/16/iterations:1\n"
+    "BM_string_memcpy/72/2/32/iterations:1\n"
+    "BM_string_memcpy/72/4/1/iterations:1\n"
+    "BM_string_memcpy/72/4/2/iterations:1\n"
+    "BM_string_memcpy/72/4/4/iterations:1\n"
+    "BM_string_memcpy/72/4/8/iterations:1\n"
+    "BM_string_memcpy/72/4/16/iterations:1\n"
+    "BM_string_memcpy/72/4/32/iterations:1\n"
+    "BM_string_memcpy/72/8/1/iterations:1\n"
+    "BM_string_memcpy/72/8/2/iterations:1\n"
+    "BM_string_memcpy/72/8/4/iterations:1\n"
+    "BM_string_memcpy/72/8/8/iterations:1\n"
+    "BM_string_memcpy/72/8/16/iterations:1\n"
+    "BM_string_memcpy/72/8/32/iterations:1\n"
+    "BM_string_memcpy/72/16/1/iterations:1\n"
+    "BM_string_memcpy/72/16/2/iterations:1\n"
+    "BM_string_memcpy/72/16/4/iterations:1\n"
+    "BM_string_memcpy/72/16/8/iterations:1\n"
+    "BM_string_memcpy/72/16/16/iterations:1\n"
+    "BM_string_memcpy/72/16/32/iterations:1\n"
+    "BM_string_memcpy/72/32/1/iterations:1\n"
+    "BM_string_memcpy/72/32/2/iterations:1\n"
+    "BM_string_memcpy/72/32/4/iterations:1\n"
+    "BM_string_memcpy/72/32/8/iterations:1\n"
+    "BM_string_memcpy/72/32/16/iterations:1\n"
+    "BM_string_memcpy/72/32/32/iterations:1\n"
+    "BM_string_memcpy/80/0/0/iterations:1\n"
+    "BM_string_memcpy/80/1/1/iterations:1\n"
+    "BM_string_memcpy/80/1/2/iterations:1\n"
+    "BM_string_memcpy/80/1/4/iterations:1\n"
+    "BM_string_memcpy/80/1/8/iterations:1\n"
+    "BM_string_memcpy/80/1/16/iterations:1\n"
+    "BM_string_memcpy/80/1/32/iterations:1\n"
+    "BM_string_memcpy/80/2/1/iterations:1\n"
+    "BM_string_memcpy/80/2/2/iterations:1\n"
+    "BM_string_memcpy/80/2/4/iterations:1\n"
+    "BM_string_memcpy/80/2/8/iterations:1\n"
+    "BM_string_memcpy/80/2/16/iterations:1\n"
+    "BM_string_memcpy/80/2/32/iterations:1\n"
+    "BM_string_memcpy/80/4/1/iterations:1\n"
+    "BM_string_memcpy/80/4/2/iterations:1\n"
+    "BM_string_memcpy/80/4/4/iterations:1\n"
+    "BM_string_memcpy/80/4/8/iterations:1\n"
+    "BM_string_memcpy/80/4/16/iterations:1\n"
+    "BM_string_memcpy/80/4/32/iterations:1\n"
+    "BM_string_memcpy/80/8/1/iterations:1\n"
+    "BM_string_memcpy/80/8/2/iterations:1\n"
+    "BM_string_memcpy/80/8/4/iterations:1\n"
+    "BM_string_memcpy/80/8/8/iterations:1\n"
+    "BM_string_memcpy/80/8/16/iterations:1\n"
+    "BM_string_memcpy/80/8/32/iterations:1\n"
+    "BM_string_memcpy/80/16/1/iterations:1\n"
+    "BM_string_memcpy/80/16/2/iterations:1\n"
+    "BM_string_memcpy/80/16/4/iterations:1\n"
+    "BM_string_memcpy/80/16/8/iterations:1\n"
+    "BM_string_memcpy/80/16/16/iterations:1\n"
+    "BM_string_memcpy/80/16/32/iterations:1\n"
+    "BM_string_memcpy/80/32/1/iterations:1\n"
+    "BM_string_memcpy/80/32/2/iterations:1\n"
+    "BM_string_memcpy/80/32/4/iterations:1\n"
+    "BM_string_memcpy/80/32/8/iterations:1\n"
+    "BM_string_memcpy/80/32/16/iterations:1\n"
+    "BM_string_memcpy/80/32/32/iterations:1\n"
+    "BM_string_memcpy/88/0/0/iterations:1\n"
+    "BM_string_memcpy/88/1/1/iterations:1\n"
+    "BM_string_memcpy/88/1/2/iterations:1\n"
+    "BM_string_memcpy/88/1/4/iterations:1\n"
+    "BM_string_memcpy/88/1/8/iterations:1\n"
+    "BM_string_memcpy/88/1/16/iterations:1\n"
+    "BM_string_memcpy/88/1/32/iterations:1\n"
+    "BM_string_memcpy/88/2/1/iterations:1\n"
+    "BM_string_memcpy/88/2/2/iterations:1\n"
+    "BM_string_memcpy/88/2/4/iterations:1\n"
+    "BM_string_memcpy/88/2/8/iterations:1\n"
+    "BM_string_memcpy/88/2/16/iterations:1\n"
+    "BM_string_memcpy/88/2/32/iterations:1\n"
+    "BM_string_memcpy/88/4/1/iterations:1\n"
+    "BM_string_memcpy/88/4/2/iterations:1\n"
+    "BM_string_memcpy/88/4/4/iterations:1\n"
+    "BM_string_memcpy/88/4/8/iterations:1\n"
+    "BM_string_memcpy/88/4/16/iterations:1\n"
+    "BM_string_memcpy/88/4/32/iterations:1\n"
+    "BM_string_memcpy/88/8/1/iterations:1\n"
+    "BM_string_memcpy/88/8/2/iterations:1\n"
+    "BM_string_memcpy/88/8/4/iterations:1\n"
+    "BM_string_memcpy/88/8/8/iterations:1\n"
+    "BM_string_memcpy/88/8/16/iterations:1\n"
+    "BM_string_memcpy/88/8/32/iterations:1\n"
+    "BM_string_memcpy/88/16/1/iterations:1\n"
+    "BM_string_memcpy/88/16/2/iterations:1\n"
+    "BM_string_memcpy/88/16/4/iterations:1\n"
+    "BM_string_memcpy/88/16/8/iterations:1\n"
+    "BM_string_memcpy/88/16/16/iterations:1\n"
+    "BM_string_memcpy/88/16/32/iterations:1\n"
+    "BM_string_memcpy/88/32/1/iterations:1\n"
+    "BM_string_memcpy/88/32/2/iterations:1\n"
+    "BM_string_memcpy/88/32/4/iterations:1\n"
+    "BM_string_memcpy/88/32/8/iterations:1\n"
+    "BM_string_memcpy/88/32/16/iterations:1\n"
+    "BM_string_memcpy/88/32/32/iterations:1\n"
+    "BM_string_memcpy/96/0/0/iterations:1\n"
+    "BM_string_memcpy/96/1/1/iterations:1\n"
+    "BM_string_memcpy/96/1/2/iterations:1\n"
+    "BM_string_memcpy/96/1/4/iterations:1\n"
+    "BM_string_memcpy/96/1/8/iterations:1\n"
+    "BM_string_memcpy/96/1/16/iterations:1\n"
+    "BM_string_memcpy/96/1/32/iterations:1\n"
+    "BM_string_memcpy/96/2/1/iterations:1\n"
+    "BM_string_memcpy/96/2/2/iterations:1\n"
+    "BM_string_memcpy/96/2/4/iterations:1\n"
+    "BM_string_memcpy/96/2/8/iterations:1\n"
+    "BM_string_memcpy/96/2/16/iterations:1\n"
+    "BM_string_memcpy/96/2/32/iterations:1\n"
+    "BM_string_memcpy/96/4/1/iterations:1\n"
+    "BM_string_memcpy/96/4/2/iterations:1\n"
+    "BM_string_memcpy/96/4/4/iterations:1\n"
+    "BM_string_memcpy/96/4/8/iterations:1\n"
+    "BM_string_memcpy/96/4/16/iterations:1\n"
+    "BM_string_memcpy/96/4/32/iterations:1\n"
+    "BM_string_memcpy/96/8/1/iterations:1\n"
+    "BM_string_memcpy/96/8/2/iterations:1\n"
+    "BM_string_memcpy/96/8/4/iterations:1\n"
+    "BM_string_memcpy/96/8/8/iterations:1\n"
+    "BM_string_memcpy/96/8/16/iterations:1\n"
+    "BM_string_memcpy/96/8/32/iterations:1\n"
+    "BM_string_memcpy/96/16/1/iterations:1\n"
+    "BM_string_memcpy/96/16/2/iterations:1\n"
+    "BM_string_memcpy/96/16/4/iterations:1\n"
+    "BM_string_memcpy/96/16/8/iterations:1\n"
+    "BM_string_memcpy/96/16/16/iterations:1\n"
+    "BM_string_memcpy/96/16/32/iterations:1\n"
+    "BM_string_memcpy/96/32/1/iterations:1\n"
+    "BM_string_memcpy/96/32/2/iterations:1\n"
+    "BM_string_memcpy/96/32/4/iterations:1\n"
+    "BM_string_memcpy/96/32/8/iterations:1\n"
+    "BM_string_memcpy/96/32/16/iterations:1\n"
+    "BM_string_memcpy/96/32/32/iterations:1\n"
+    "BM_string_memcpy/104/0/0/iterations:1\n"
+    "BM_string_memcpy/104/1/1/iterations:1\n"
+    "BM_string_memcpy/104/1/2/iterations:1\n"
+    "BM_string_memcpy/104/1/4/iterations:1\n"
+    "BM_string_memcpy/104/1/8/iterations:1\n"
+    "BM_string_memcpy/104/1/16/iterations:1\n"
+    "BM_string_memcpy/104/1/32/iterations:1\n"
+    "BM_string_memcpy/104/2/1/iterations:1\n"
+    "BM_string_memcpy/104/2/2/iterations:1\n"
+    "BM_string_memcpy/104/2/4/iterations:1\n"
+    "BM_string_memcpy/104/2/8/iterations:1\n"
+    "BM_string_memcpy/104/2/16/iterations:1\n"
+    "BM_string_memcpy/104/2/32/iterations:1\n"
+    "BM_string_memcpy/104/4/1/iterations:1\n"
+    "BM_string_memcpy/104/4/2/iterations:1\n"
+    "BM_string_memcpy/104/4/4/iterations:1\n"
+    "BM_string_memcpy/104/4/8/iterations:1\n"
+    "BM_string_memcpy/104/4/16/iterations:1\n"
+    "BM_string_memcpy/104/4/32/iterations:1\n"
+    "BM_string_memcpy/104/8/1/iterations:1\n"
+    "BM_string_memcpy/104/8/2/iterations:1\n"
+    "BM_string_memcpy/104/8/4/iterations:1\n"
+    "BM_string_memcpy/104/8/8/iterations:1\n"
+    "BM_string_memcpy/104/8/16/iterations:1\n"
+    "BM_string_memcpy/104/8/32/iterations:1\n"
+    "BM_string_memcpy/104/16/1/iterations:1\n"
+    "BM_string_memcpy/104/16/2/iterations:1\n"
+    "BM_string_memcpy/104/16/4/iterations:1\n"
+    "BM_string_memcpy/104/16/8/iterations:1\n"
+    "BM_string_memcpy/104/16/16/iterations:1\n"
+    "BM_string_memcpy/104/16/32/iterations:1\n"
+    "BM_string_memcpy/104/32/1/iterations:1\n"
+    "BM_string_memcpy/104/32/2/iterations:1\n"
+    "BM_string_memcpy/104/32/4/iterations:1\n"
+    "BM_string_memcpy/104/32/8/iterations:1\n"
+    "BM_string_memcpy/104/32/16/iterations:1\n"
+    "BM_string_memcpy/104/32/32/iterations:1\n"
+    "BM_string_memcpy/112/0/0/iterations:1\n"
+    "BM_string_memcpy/112/1/1/iterations:1\n"
+    "BM_string_memcpy/112/1/2/iterations:1\n"
+    "BM_string_memcpy/112/1/4/iterations:1\n"
+    "BM_string_memcpy/112/1/8/iterations:1\n"
+    "BM_string_memcpy/112/1/16/iterations:1\n"
+    "BM_string_memcpy/112/1/32/iterations:1\n"
+    "BM_string_memcpy/112/2/1/iterations:1\n"
+    "BM_string_memcpy/112/2/2/iterations:1\n"
+    "BM_string_memcpy/112/2/4/iterations:1\n"
+    "BM_string_memcpy/112/2/8/iterations:1\n"
+    "BM_string_memcpy/112/2/16/iterations:1\n"
+    "BM_string_memcpy/112/2/32/iterations:1\n"
+    "BM_string_memcpy/112/4/1/iterations:1\n"
+    "BM_string_memcpy/112/4/2/iterations:1\n"
+    "BM_string_memcpy/112/4/4/iterations:1\n"
+    "BM_string_memcpy/112/4/8/iterations:1\n"
+    "BM_string_memcpy/112/4/16/iterations:1\n"
+    "BM_string_memcpy/112/4/32/iterations:1\n"
+    "BM_string_memcpy/112/8/1/iterations:1\n"
+    "BM_string_memcpy/112/8/2/iterations:1\n"
+    "BM_string_memcpy/112/8/4/iterations:1\n"
+    "BM_string_memcpy/112/8/8/iterations:1\n"
+    "BM_string_memcpy/112/8/16/iterations:1\n"
+    "BM_string_memcpy/112/8/32/iterations:1\n"
+    "BM_string_memcpy/112/16/1/iterations:1\n"
+    "BM_string_memcpy/112/16/2/iterations:1\n"
+    "BM_string_memcpy/112/16/4/iterations:1\n"
+    "BM_string_memcpy/112/16/8/iterations:1\n"
+    "BM_string_memcpy/112/16/16/iterations:1\n"
+    "BM_string_memcpy/112/16/32/iterations:1\n"
+    "BM_string_memcpy/112/32/1/iterations:1\n"
+    "BM_string_memcpy/112/32/2/iterations:1\n"
+    "BM_string_memcpy/112/32/4/iterations:1\n"
+    "BM_string_memcpy/112/32/8/iterations:1\n"
+    "BM_string_memcpy/112/32/16/iterations:1\n"
+    "BM_string_memcpy/112/32/32/iterations:1\n"
+    "BM_string_memcpy/120/0/0/iterations:1\n"
+    "BM_string_memcpy/120/1/1/iterations:1\n"
+    "BM_string_memcpy/120/1/2/iterations:1\n"
+    "BM_string_memcpy/120/1/4/iterations:1\n"
+    "BM_string_memcpy/120/1/8/iterations:1\n"
+    "BM_string_memcpy/120/1/16/iterations:1\n"
+    "BM_string_memcpy/120/1/32/iterations:1\n"
+    "BM_string_memcpy/120/2/1/iterations:1\n"
+    "BM_string_memcpy/120/2/2/iterations:1\n"
+    "BM_string_memcpy/120/2/4/iterations:1\n"
+    "BM_string_memcpy/120/2/8/iterations:1\n"
+    "BM_string_memcpy/120/2/16/iterations:1\n"
+    "BM_string_memcpy/120/2/32/iterations:1\n"
+    "BM_string_memcpy/120/4/1/iterations:1\n"
+    "BM_string_memcpy/120/4/2/iterations:1\n"
+    "BM_string_memcpy/120/4/4/iterations:1\n"
+    "BM_string_memcpy/120/4/8/iterations:1\n"
+    "BM_string_memcpy/120/4/16/iterations:1\n"
+    "BM_string_memcpy/120/4/32/iterations:1\n"
+    "BM_string_memcpy/120/8/1/iterations:1\n"
+    "BM_string_memcpy/120/8/2/iterations:1\n"
+    "BM_string_memcpy/120/8/4/iterations:1\n"
+    "BM_string_memcpy/120/8/8/iterations:1\n"
+    "BM_string_memcpy/120/8/16/iterations:1\n"
+    "BM_string_memcpy/120/8/32/iterations:1\n"
+    "BM_string_memcpy/120/16/1/iterations:1\n"
+    "BM_string_memcpy/120/16/2/iterations:1\n"
+    "BM_string_memcpy/120/16/4/iterations:1\n"
+    "BM_string_memcpy/120/16/8/iterations:1\n"
+    "BM_string_memcpy/120/16/16/iterations:1\n"
+    "BM_string_memcpy/120/16/32/iterations:1\n"
+    "BM_string_memcpy/120/32/1/iterations:1\n"
+    "BM_string_memcpy/120/32/2/iterations:1\n"
+    "BM_string_memcpy/120/32/4/iterations:1\n"
+    "BM_string_memcpy/120/32/8/iterations:1\n"
+    "BM_string_memcpy/120/32/16/iterations:1\n"
+    "BM_string_memcpy/120/32/32/iterations:1\n"
+    "BM_string_memcpy/128/0/0/iterations:1\n"
+    "BM_string_memcpy/128/1/1/iterations:1\n"
+    "BM_string_memcpy/128/1/2/iterations:1\n"
+    "BM_string_memcpy/128/1/4/iterations:1\n"
+    "BM_string_memcpy/128/1/8/iterations:1\n"
+    "BM_string_memcpy/128/1/16/iterations:1\n"
+    "BM_string_memcpy/128/1/32/iterations:1\n"
+    "BM_string_memcpy/128/2/1/iterations:1\n"
+    "BM_string_memcpy/128/2/2/iterations:1\n"
+    "BM_string_memcpy/128/2/4/iterations:1\n"
+    "BM_string_memcpy/128/2/8/iterations:1\n"
+    "BM_string_memcpy/128/2/16/iterations:1\n"
+    "BM_string_memcpy/128/2/32/iterations:1\n"
+    "BM_string_memcpy/128/4/1/iterations:1\n"
+    "BM_string_memcpy/128/4/2/iterations:1\n"
+    "BM_string_memcpy/128/4/4/iterations:1\n"
+    "BM_string_memcpy/128/4/8/iterations:1\n"
+    "BM_string_memcpy/128/4/16/iterations:1\n"
+    "BM_string_memcpy/128/4/32/iterations:1\n"
+    "BM_string_memcpy/128/8/1/iterations:1\n"
+    "BM_string_memcpy/128/8/2/iterations:1\n"
+    "BM_string_memcpy/128/8/4/iterations:1\n"
+    "BM_string_memcpy/128/8/8/iterations:1\n"
+    "BM_string_memcpy/128/8/16/iterations:1\n"
+    "BM_string_memcpy/128/8/32/iterations:1\n"
+    "BM_string_memcpy/128/16/1/iterations:1\n"
+    "BM_string_memcpy/128/16/2/iterations:1\n"
+    "BM_string_memcpy/128/16/4/iterations:1\n"
+    "BM_string_memcpy/128/16/8/iterations:1\n"
+    "BM_string_memcpy/128/16/16/iterations:1\n"
+    "BM_string_memcpy/128/16/32/iterations:1\n"
+    "BM_string_memcpy/128/32/1/iterations:1\n"
+    "BM_string_memcpy/128/32/2/iterations:1\n"
+    "BM_string_memcpy/128/32/4/iterations:1\n"
+    "BM_string_memcpy/128/32/8/iterations:1\n"
+    "BM_string_memcpy/128/32/16/iterations:1\n"
+    "BM_string_memcpy/128/32/32/iterations:1\n"
+    "BM_string_memcpy/136/0/0/iterations:1\n"
+    "BM_string_memcpy/136/1/1/iterations:1\n"
+    "BM_string_memcpy/136/1/2/iterations:1\n"
+    "BM_string_memcpy/136/1/4/iterations:1\n"
+    "BM_string_memcpy/136/1/8/iterations:1\n"
+    "BM_string_memcpy/136/1/16/iterations:1\n"
+    "BM_string_memcpy/136/1/32/iterations:1\n"
+    "BM_string_memcpy/136/2/1/iterations:1\n"
+    "BM_string_memcpy/136/2/2/iterations:1\n"
+    "BM_string_memcpy/136/2/4/iterations:1\n"
+    "BM_string_memcpy/136/2/8/iterations:1\n"
+    "BM_string_memcpy/136/2/16/iterations:1\n"
+    "BM_string_memcpy/136/2/32/iterations:1\n"
+    "BM_string_memcpy/136/4/1/iterations:1\n"
+    "BM_string_memcpy/136/4/2/iterations:1\n"
+    "BM_string_memcpy/136/4/4/iterations:1\n"
+    "BM_string_memcpy/136/4/8/iterations:1\n"
+    "BM_string_memcpy/136/4/16/iterations:1\n"
+    "BM_string_memcpy/136/4/32/iterations:1\n"
+    "BM_string_memcpy/136/8/1/iterations:1\n"
+    "BM_string_memcpy/136/8/2/iterations:1\n"
+    "BM_string_memcpy/136/8/4/iterations:1\n"
+    "BM_string_memcpy/136/8/8/iterations:1\n"
+    "BM_string_memcpy/136/8/16/iterations:1\n"
+    "BM_string_memcpy/136/8/32/iterations:1\n"
+    "BM_string_memcpy/136/16/1/iterations:1\n"
+    "BM_string_memcpy/136/16/2/iterations:1\n"
+    "BM_string_memcpy/136/16/4/iterations:1\n"
+    "BM_string_memcpy/136/16/8/iterations:1\n"
+    "BM_string_memcpy/136/16/16/iterations:1\n"
+    "BM_string_memcpy/136/16/32/iterations:1\n"
+    "BM_string_memcpy/136/32/1/iterations:1\n"
+    "BM_string_memcpy/136/32/2/iterations:1\n"
+    "BM_string_memcpy/136/32/4/iterations:1\n"
+    "BM_string_memcpy/136/32/8/iterations:1\n"
+    "BM_string_memcpy/136/32/16/iterations:1\n"
+    "BM_string_memcpy/136/32/32/iterations:1\n"
+    "BM_string_memcpy/144/0/0/iterations:1\n"
+    "BM_string_memcpy/144/1/1/iterations:1\n"
+    "BM_string_memcpy/144/1/2/iterations:1\n"
+    "BM_string_memcpy/144/1/4/iterations:1\n"
+    "BM_string_memcpy/144/1/8/iterations:1\n"
+    "BM_string_memcpy/144/1/16/iterations:1\n"
+    "BM_string_memcpy/144/1/32/iterations:1\n"
+    "BM_string_memcpy/144/2/1/iterations:1\n"
+    "BM_string_memcpy/144/2/2/iterations:1\n"
+    "BM_string_memcpy/144/2/4/iterations:1\n"
+    "BM_string_memcpy/144/2/8/iterations:1\n"
+    "BM_string_memcpy/144/2/16/iterations:1\n"
+    "BM_string_memcpy/144/2/32/iterations:1\n"
+    "BM_string_memcpy/144/4/1/iterations:1\n"
+    "BM_string_memcpy/144/4/2/iterations:1\n"
+    "BM_string_memcpy/144/4/4/iterations:1\n"
+    "BM_string_memcpy/144/4/8/iterations:1\n"
+    "BM_string_memcpy/144/4/16/iterations:1\n"
+    "BM_string_memcpy/144/4/32/iterations:1\n"
+    "BM_string_memcpy/144/8/1/iterations:1\n"
+    "BM_string_memcpy/144/8/2/iterations:1\n"
+    "BM_string_memcpy/144/8/4/iterations:1\n"
+    "BM_string_memcpy/144/8/8/iterations:1\n"
+    "BM_string_memcpy/144/8/16/iterations:1\n"
+    "BM_string_memcpy/144/8/32/iterations:1\n"
+    "BM_string_memcpy/144/16/1/iterations:1\n"
+    "BM_string_memcpy/144/16/2/iterations:1\n"
+    "BM_string_memcpy/144/16/4/iterations:1\n"
+    "BM_string_memcpy/144/16/8/iterations:1\n"
+    "BM_string_memcpy/144/16/16/iterations:1\n"
+    "BM_string_memcpy/144/16/32/iterations:1\n"
+    "BM_string_memcpy/144/32/1/iterations:1\n"
+    "BM_string_memcpy/144/32/2/iterations:1\n"
+    "BM_string_memcpy/144/32/4/iterations:1\n"
+    "BM_string_memcpy/144/32/8/iterations:1\n"
+    "BM_string_memcpy/144/32/16/iterations:1\n"
+    "BM_string_memcpy/144/32/32/iterations:1\n"
+    "BM_string_memcpy/160/0/0/iterations:1\n"
+    "BM_string_memcpy/160/1/1/iterations:1\n"
+    "BM_string_memcpy/160/1/2/iterations:1\n"
+    "BM_string_memcpy/160/1/4/iterations:1\n"
+    "BM_string_memcpy/160/1/8/iterations:1\n"
+    "BM_string_memcpy/160/1/16/iterations:1\n"
+    "BM_string_memcpy/160/1/32/iterations:1\n"
+    "BM_string_memcpy/160/2/1/iterations:1\n"
+    "BM_string_memcpy/160/2/2/iterations:1\n"
+    "BM_string_memcpy/160/2/4/iterations:1\n"
+    "BM_string_memcpy/160/2/8/iterations:1\n"
+    "BM_string_memcpy/160/2/16/iterations:1\n"
+    "BM_string_memcpy/160/2/32/iterations:1\n"
+    "BM_string_memcpy/160/4/1/iterations:1\n"
+    "BM_string_memcpy/160/4/2/iterations:1\n"
+    "BM_string_memcpy/160/4/4/iterations:1\n"
+    "BM_string_memcpy/160/4/8/iterations:1\n"
+    "BM_string_memcpy/160/4/16/iterations:1\n"
+    "BM_string_memcpy/160/4/32/iterations:1\n"
+    "BM_string_memcpy/160/8/1/iterations:1\n"
+    "BM_string_memcpy/160/8/2/iterations:1\n"
+    "BM_string_memcpy/160/8/4/iterations:1\n"
+    "BM_string_memcpy/160/8/8/iterations:1\n"
+    "BM_string_memcpy/160/8/16/iterations:1\n"
+    "BM_string_memcpy/160/8/32/iterations:1\n"
+    "BM_string_memcpy/160/16/1/iterations:1\n"
+    "BM_string_memcpy/160/16/2/iterations:1\n"
+    "BM_string_memcpy/160/16/4/iterations:1\n"
+    "BM_string_memcpy/160/16/8/iterations:1\n"
+    "BM_string_memcpy/160/16/16/iterations:1\n"
+    "BM_string_memcpy/160/16/32/iterations:1\n"
+    "BM_string_memcpy/160/32/1/iterations:1\n"
+    "BM_string_memcpy/160/32/2/iterations:1\n"
+    "BM_string_memcpy/160/32/4/iterations:1\n"
+    "BM_string_memcpy/160/32/8/iterations:1\n"
+    "BM_string_memcpy/160/32/16/iterations:1\n"
+    "BM_string_memcpy/160/32/32/iterations:1\n"
+    "BM_string_memcpy/176/0/0/iterations:1\n"
+    "BM_string_memcpy/176/1/1/iterations:1\n"
+    "BM_string_memcpy/176/1/2/iterations:1\n"
+    "BM_string_memcpy/176/1/4/iterations:1\n"
+    "BM_string_memcpy/176/1/8/iterations:1\n"
+    "BM_string_memcpy/176/1/16/iterations:1\n"
+    "BM_string_memcpy/176/1/32/iterations:1\n"
+    "BM_string_memcpy/176/2/1/iterations:1\n"
+    "BM_string_memcpy/176/2/2/iterations:1\n"
+    "BM_string_memcpy/176/2/4/iterations:1\n"
+    "BM_string_memcpy/176/2/8/iterations:1\n"
+    "BM_string_memcpy/176/2/16/iterations:1\n"
+    "BM_string_memcpy/176/2/32/iterations:1\n"
+    "BM_string_memcpy/176/4/1/iterations:1\n"
+    "BM_string_memcpy/176/4/2/iterations:1\n"
+    "BM_string_memcpy/176/4/4/iterations:1\n"
+    "BM_string_memcpy/176/4/8/iterations:1\n"
+    "BM_string_memcpy/176/4/16/iterations:1\n"
+    "BM_string_memcpy/176/4/32/iterations:1\n"
+    "BM_string_memcpy/176/8/1/iterations:1\n"
+    "BM_string_memcpy/176/8/2/iterations:1\n"
+    "BM_string_memcpy/176/8/4/iterations:1\n"
+    "BM_string_memcpy/176/8/8/iterations:1\n"
+    "BM_string_memcpy/176/8/16/iterations:1\n"
+    "BM_string_memcpy/176/8/32/iterations:1\n"
+    "BM_string_memcpy/176/16/1/iterations:1\n"
+    "BM_string_memcpy/176/16/2/iterations:1\n"
+    "BM_string_memcpy/176/16/4/iterations:1\n"
+    "BM_string_memcpy/176/16/8/iterations:1\n"
+    "BM_string_memcpy/176/16/16/iterations:1\n"
+    "BM_string_memcpy/176/16/32/iterations:1\n"
+    "BM_string_memcpy/176/32/1/iterations:1\n"
+    "BM_string_memcpy/176/32/2/iterations:1\n"
+    "BM_string_memcpy/176/32/4/iterations:1\n"
+    "BM_string_memcpy/176/32/8/iterations:1\n"
+    "BM_string_memcpy/176/32/16/iterations:1\n"
+    "BM_string_memcpy/176/32/32/iterations:1\n"
+    "BM_string_memcpy/192/0/0/iterations:1\n"
+    "BM_string_memcpy/192/1/1/iterations:1\n"
+    "BM_string_memcpy/192/1/2/iterations:1\n"
+    "BM_string_memcpy/192/1/4/iterations:1\n"
+    "BM_string_memcpy/192/1/8/iterations:1\n"
+    "BM_string_memcpy/192/1/16/iterations:1\n"
+    "BM_string_memcpy/192/1/32/iterations:1\n"
+    "BM_string_memcpy/192/2/1/iterations:1\n"
+    "BM_string_memcpy/192/2/2/iterations:1\n"
+    "BM_string_memcpy/192/2/4/iterations:1\n"
+    "BM_string_memcpy/192/2/8/iterations:1\n"
+    "BM_string_memcpy/192/2/16/iterations:1\n"
+    "BM_string_memcpy/192/2/32/iterations:1\n"
+    "BM_string_memcpy/192/4/1/iterations:1\n"
+    "BM_string_memcpy/192/4/2/iterations:1\n"
+    "BM_string_memcpy/192/4/4/iterations:1\n"
+    "BM_string_memcpy/192/4/8/iterations:1\n"
+    "BM_string_memcpy/192/4/16/iterations:1\n"
+    "BM_string_memcpy/192/4/32/iterations:1\n"
+    "BM_string_memcpy/192/8/1/iterations:1\n"
+    "BM_string_memcpy/192/8/2/iterations:1\n"
+    "BM_string_memcpy/192/8/4/iterations:1\n"
+    "BM_string_memcpy/192/8/8/iterations:1\n"
+    "BM_string_memcpy/192/8/16/iterations:1\n"
+    "BM_string_memcpy/192/8/32/iterations:1\n"
+    "BM_string_memcpy/192/16/1/iterations:1\n"
+    "BM_string_memcpy/192/16/2/iterations:1\n"
+    "BM_string_memcpy/192/16/4/iterations:1\n"
+    "BM_string_memcpy/192/16/8/iterations:1\n"
+    "BM_string_memcpy/192/16/16/iterations:1\n"
+    "BM_string_memcpy/192/16/32/iterations:1\n"
+    "BM_string_memcpy/192/32/1/iterations:1\n"
+    "BM_string_memcpy/192/32/2/iterations:1\n"
+    "BM_string_memcpy/192/32/4/iterations:1\n"
+    "BM_string_memcpy/192/32/8/iterations:1\n"
+    "BM_string_memcpy/192/32/16/iterations:1\n"
+    "BM_string_memcpy/192/32/32/iterations:1\n"
+    "BM_string_memcpy/208/0/0/iterations:1\n"
+    "BM_string_memcpy/208/1/1/iterations:1\n"
+    "BM_string_memcpy/208/1/2/iterations:1\n"
+    "BM_string_memcpy/208/1/4/iterations:1\n"
+    "BM_string_memcpy/208/1/8/iterations:1\n"
+    "BM_string_memcpy/208/1/16/iterations:1\n"
+    "BM_string_memcpy/208/1/32/iterations:1\n"
+    "BM_string_memcpy/208/2/1/iterations:1\n"
+    "BM_string_memcpy/208/2/2/iterations:1\n"
+    "BM_string_memcpy/208/2/4/iterations:1\n"
+    "BM_string_memcpy/208/2/8/iterations:1\n"
+    "BM_string_memcpy/208/2/16/iterations:1\n"
+    "BM_string_memcpy/208/2/32/iterations:1\n"
+    "BM_string_memcpy/208/4/1/iterations:1\n"
+    "BM_string_memcpy/208/4/2/iterations:1\n"
+    "BM_string_memcpy/208/4/4/iterations:1\n"
+    "BM_string_memcpy/208/4/8/iterations:1\n"
+    "BM_string_memcpy/208/4/16/iterations:1\n"
+    "BM_string_memcpy/208/4/32/iterations:1\n"
+    "BM_string_memcpy/208/8/1/iterations:1\n"
+    "BM_string_memcpy/208/8/2/iterations:1\n"
+    "BM_string_memcpy/208/8/4/iterations:1\n"
+    "BM_string_memcpy/208/8/8/iterations:1\n"
+    "BM_string_memcpy/208/8/16/iterations:1\n"
+    "BM_string_memcpy/208/8/32/iterations:1\n"
+    "BM_string_memcpy/208/16/1/iterations:1\n"
+    "BM_string_memcpy/208/16/2/iterations:1\n"
+    "BM_string_memcpy/208/16/4/iterations:1\n"
+    "BM_string_memcpy/208/16/8/iterations:1\n"
+    "BM_string_memcpy/208/16/16/iterations:1\n"
+    "BM_string_memcpy/208/16/32/iterations:1\n"
+    "BM_string_memcpy/208/32/1/iterations:1\n"
+    "BM_string_memcpy/208/32/2/iterations:1\n"
+    "BM_string_memcpy/208/32/4/iterations:1\n"
+    "BM_string_memcpy/208/32/8/iterations:1\n"
+    "BM_string_memcpy/208/32/16/iterations:1\n"
+    "BM_string_memcpy/208/32/32/iterations:1\n"
+    "BM_string_memcpy/224/0/0/iterations:1\n"
+    "BM_string_memcpy/224/1/1/iterations:1\n"
+    "BM_string_memcpy/224/1/2/iterations:1\n"
+    "BM_string_memcpy/224/1/4/iterations:1\n"
+    "BM_string_memcpy/224/1/8/iterations:1\n"
+    "BM_string_memcpy/224/1/16/iterations:1\n"
+    "BM_string_memcpy/224/1/32/iterations:1\n"
+    "BM_string_memcpy/224/2/1/iterations:1\n"
+    "BM_string_memcpy/224/2/2/iterations:1\n"
+    "BM_string_memcpy/224/2/4/iterations:1\n"
+    "BM_string_memcpy/224/2/8/iterations:1\n"
+    "BM_string_memcpy/224/2/16/iterations:1\n"
+    "BM_string_memcpy/224/2/32/iterations:1\n"
+    "BM_string_memcpy/224/4/1/iterations:1\n"
+    "BM_string_memcpy/224/4/2/iterations:1\n"
+    "BM_string_memcpy/224/4/4/iterations:1\n"
+    "BM_string_memcpy/224/4/8/iterations:1\n"
+    "BM_string_memcpy/224/4/16/iterations:1\n"
+    "BM_string_memcpy/224/4/32/iterations:1\n"
+    "BM_string_memcpy/224/8/1/iterations:1\n"
+    "BM_string_memcpy/224/8/2/iterations:1\n"
+    "BM_string_memcpy/224/8/4/iterations:1\n"
+    "BM_string_memcpy/224/8/8/iterations:1\n"
+    "BM_string_memcpy/224/8/16/iterations:1\n"
+    "BM_string_memcpy/224/8/32/iterations:1\n"
+    "BM_string_memcpy/224/16/1/iterations:1\n"
+    "BM_string_memcpy/224/16/2/iterations:1\n"
+    "BM_string_memcpy/224/16/4/iterations:1\n"
+    "BM_string_memcpy/224/16/8/iterations:1\n"
+    "BM_string_memcpy/224/16/16/iterations:1\n"
+    "BM_string_memcpy/224/16/32/iterations:1\n"
+    "BM_string_memcpy/224/32/1/iterations:1\n"
+    "BM_string_memcpy/224/32/2/iterations:1\n"
+    "BM_string_memcpy/224/32/4/iterations:1\n"
+    "BM_string_memcpy/224/32/8/iterations:1\n"
+    "BM_string_memcpy/224/32/16/iterations:1\n"
+    "BM_string_memcpy/224/32/32/iterations:1\n"
+    "BM_string_memcpy/240/0/0/iterations:1\n"
+    "BM_string_memcpy/240/1/1/iterations:1\n"
+    "BM_string_memcpy/240/1/2/iterations:1\n"
+    "BM_string_memcpy/240/1/4/iterations:1\n"
+    "BM_string_memcpy/240/1/8/iterations:1\n"
+    "BM_string_memcpy/240/1/16/iterations:1\n"
+    "BM_string_memcpy/240/1/32/iterations:1\n"
+    "BM_string_memcpy/240/2/1/iterations:1\n"
+    "BM_string_memcpy/240/2/2/iterations:1\n"
+    "BM_string_memcpy/240/2/4/iterations:1\n"
+    "BM_string_memcpy/240/2/8/iterations:1\n"
+    "BM_string_memcpy/240/2/16/iterations:1\n"
+    "BM_string_memcpy/240/2/32/iterations:1\n"
+    "BM_string_memcpy/240/4/1/iterations:1\n"
+    "BM_string_memcpy/240/4/2/iterations:1\n"
+    "BM_string_memcpy/240/4/4/iterations:1\n"
+    "BM_string_memcpy/240/4/8/iterations:1\n"
+    "BM_string_memcpy/240/4/16/iterations:1\n"
+    "BM_string_memcpy/240/4/32/iterations:1\n"
+    "BM_string_memcpy/240/8/1/iterations:1\n"
+    "BM_string_memcpy/240/8/2/iterations:1\n"
+    "BM_string_memcpy/240/8/4/iterations:1\n"
+    "BM_string_memcpy/240/8/8/iterations:1\n"
+    "BM_string_memcpy/240/8/16/iterations:1\n"
+    "BM_string_memcpy/240/8/32/iterations:1\n"
+    "BM_string_memcpy/240/16/1/iterations:1\n"
+    "BM_string_memcpy/240/16/2/iterations:1\n"
+    "BM_string_memcpy/240/16/4/iterations:1\n"
+    "BM_string_memcpy/240/16/8/iterations:1\n"
+    "BM_string_memcpy/240/16/16/iterations:1\n"
+    "BM_string_memcpy/240/16/32/iterations:1\n"
+    "BM_string_memcpy/240/32/1/iterations:1\n"
+    "BM_string_memcpy/240/32/2/iterations:1\n"
+    "BM_string_memcpy/240/32/4/iterations:1\n"
+    "BM_string_memcpy/240/32/8/iterations:1\n"
+    "BM_string_memcpy/240/32/16/iterations:1\n"
+    "BM_string_memcpy/240/32/32/iterations:1\n"
+    "BM_string_memcpy/256/0/0/iterations:1\n"
+    "BM_string_memcpy/256/1/1/iterations:1\n"
+    "BM_string_memcpy/256/1/2/iterations:1\n"
+    "BM_string_memcpy/256/1/4/iterations:1\n"
+    "BM_string_memcpy/256/1/8/iterations:1\n"
+    "BM_string_memcpy/256/1/16/iterations:1\n"
+    "BM_string_memcpy/256/1/32/iterations:1\n"
+    "BM_string_memcpy/256/2/1/iterations:1\n"
+    "BM_string_memcpy/256/2/2/iterations:1\n"
+    "BM_string_memcpy/256/2/4/iterations:1\n"
+    "BM_string_memcpy/256/2/8/iterations:1\n"
+    "BM_string_memcpy/256/2/16/iterations:1\n"
+    "BM_string_memcpy/256/2/32/iterations:1\n"
+    "BM_string_memcpy/256/4/1/iterations:1\n"
+    "BM_string_memcpy/256/4/2/iterations:1\n"
+    "BM_string_memcpy/256/4/4/iterations:1\n"
+    "BM_string_memcpy/256/4/8/iterations:1\n"
+    "BM_string_memcpy/256/4/16/iterations:1\n"
+    "BM_string_memcpy/256/4/32/iterations:1\n"
+    "BM_string_memcpy/256/8/1/iterations:1\n"
+    "BM_string_memcpy/256/8/2/iterations:1\n"
+    "BM_string_memcpy/256/8/4/iterations:1\n"
+    "BM_string_memcpy/256/8/8/iterations:1\n"
+    "BM_string_memcpy/256/8/16/iterations:1\n"
+    "BM_string_memcpy/256/8/32/iterations:1\n"
+    "BM_string_memcpy/256/16/1/iterations:1\n"
+    "BM_string_memcpy/256/16/2/iterations:1\n"
+    "BM_string_memcpy/256/16/4/iterations:1\n"
+    "BM_string_memcpy/256/16/8/iterations:1\n"
+    "BM_string_memcpy/256/16/16/iterations:1\n"
+    "BM_string_memcpy/256/16/32/iterations:1\n"
+    "BM_string_memcpy/256/32/1/iterations:1\n"
+    "BM_string_memcpy/256/32/2/iterations:1\n"
+    "BM_string_memcpy/256/32/4/iterations:1\n"
+    "BM_string_memcpy/256/32/8/iterations:1\n"
+    "BM_string_memcpy/256/32/16/iterations:1\n"
+    "BM_string_memcpy/256/32/32/iterations:1\n"
+    "BM_string_memcpy/512/0/0/iterations:1\n"
+    "BM_string_memcpy/512/1/1/iterations:1\n"
+    "BM_string_memcpy/512/1/2/iterations:1\n"
+    "BM_string_memcpy/512/1/4/iterations:1\n"
+    "BM_string_memcpy/512/1/8/iterations:1\n"
+    "BM_string_memcpy/512/1/16/iterations:1\n"
+    "BM_string_memcpy/512/1/32/iterations:1\n"
+    "BM_string_memcpy/512/2/1/iterations:1\n"
+    "BM_string_memcpy/512/2/2/iterations:1\n"
+    "BM_string_memcpy/512/2/4/iterations:1\n"
+    "BM_string_memcpy/512/2/8/iterations:1\n"
+    "BM_string_memcpy/512/2/16/iterations:1\n"
+    "BM_string_memcpy/512/2/32/iterations:1\n"
+    "BM_string_memcpy/512/4/1/iterations:1\n"
+    "BM_string_memcpy/512/4/2/iterations:1\n"
+    "BM_string_memcpy/512/4/4/iterations:1\n"
+    "BM_string_memcpy/512/4/8/iterations:1\n"
+    "BM_string_memcpy/512/4/16/iterations:1\n"
+    "BM_string_memcpy/512/4/32/iterations:1\n"
+    "BM_string_memcpy/512/8/1/iterations:1\n"
+    "BM_string_memcpy/512/8/2/iterations:1\n"
+    "BM_string_memcpy/512/8/4/iterations:1\n"
+    "BM_string_memcpy/512/8/8/iterations:1\n"
+    "BM_string_memcpy/512/8/16/iterations:1\n"
+    "BM_string_memcpy/512/8/32/iterations:1\n"
+    "BM_string_memcpy/512/16/1/iterations:1\n"
+    "BM_string_memcpy/512/16/2/iterations:1\n"
+    "BM_string_memcpy/512/16/4/iterations:1\n"
+    "BM_string_memcpy/512/16/8/iterations:1\n"
+    "BM_string_memcpy/512/16/16/iterations:1\n"
+    "BM_string_memcpy/512/16/32/iterations:1\n"
+    "BM_string_memcpy/512/32/1/iterations:1\n"
+    "BM_string_memcpy/512/32/2/iterations:1\n"
+    "BM_string_memcpy/512/32/4/iterations:1\n"
+    "BM_string_memcpy/512/32/8/iterations:1\n"
+    "BM_string_memcpy/512/32/16/iterations:1\n"
+    "BM_string_memcpy/512/32/32/iterations:1\n"
+    "BM_string_memcpy/1024/0/0/iterations:1\n"
+    "BM_string_memcpy/1024/1/1/iterations:1\n"
+    "BM_string_memcpy/1024/1/2/iterations:1\n"
+    "BM_string_memcpy/1024/1/4/iterations:1\n"
+    "BM_string_memcpy/1024/1/8/iterations:1\n"
+    "BM_string_memcpy/1024/1/16/iterations:1\n"
+    "BM_string_memcpy/1024/1/32/iterations:1\n"
+    "BM_string_memcpy/1024/2/1/iterations:1\n"
+    "BM_string_memcpy/1024/2/2/iterations:1\n"
+    "BM_string_memcpy/1024/2/4/iterations:1\n"
+    "BM_string_memcpy/1024/2/8/iterations:1\n"
+    "BM_string_memcpy/1024/2/16/iterations:1\n"
+    "BM_string_memcpy/1024/2/32/iterations:1\n"
+    "BM_string_memcpy/1024/4/1/iterations:1\n"
+    "BM_string_memcpy/1024/4/2/iterations:1\n"
+    "BM_string_memcpy/1024/4/4/iterations:1\n"
+    "BM_string_memcpy/1024/4/8/iterations:1\n"
+    "BM_string_memcpy/1024/4/16/iterations:1\n"
+    "BM_string_memcpy/1024/4/32/iterations:1\n"
+    "BM_string_memcpy/1024/8/1/iterations:1\n"
+    "BM_string_memcpy/1024/8/2/iterations:1\n"
+    "BM_string_memcpy/1024/8/4/iterations:1\n"
+    "BM_string_memcpy/1024/8/8/iterations:1\n"
+    "BM_string_memcpy/1024/8/16/iterations:1\n"
+    "BM_string_memcpy/1024/8/32/iterations:1\n"
+    "BM_string_memcpy/1024/16/1/iterations:1\n"
+    "BM_string_memcpy/1024/16/2/iterations:1\n"
+    "BM_string_memcpy/1024/16/4/iterations:1\n"
+    "BM_string_memcpy/1024/16/8/iterations:1\n"
+    "BM_string_memcpy/1024/16/16/iterations:1\n"
+    "BM_string_memcpy/1024/16/32/iterations:1\n"
+    "BM_string_memcpy/1024/32/1/iterations:1\n"
+    "BM_string_memcpy/1024/32/2/iterations:1\n"
+    "BM_string_memcpy/1024/32/4/iterations:1\n"
+    "BM_string_memcpy/1024/32/8/iterations:1\n"
+    "BM_string_memcpy/1024/32/16/iterations:1\n"
+    "BM_string_memcpy/1024/32/32/iterations:1\n"
+    "BM_string_memcpy/8192/0/0/iterations:1\n"
+    "BM_string_memcpy/8192/1/1/iterations:1\n"
+    "BM_string_memcpy/8192/1/2/iterations:1\n"
+    "BM_string_memcpy/8192/1/4/iterations:1\n"
+    "BM_string_memcpy/8192/1/8/iterations:1\n"
+    "BM_string_memcpy/8192/1/16/iterations:1\n"
+    "BM_string_memcpy/8192/1/32/iterations:1\n"
+    "BM_string_memcpy/8192/2/1/iterations:1\n"
+    "BM_string_memcpy/8192/2/2/iterations:1\n"
+    "BM_string_memcpy/8192/2/4/iterations:1\n"
+    "BM_string_memcpy/8192/2/8/iterations:1\n"
+    "BM_string_memcpy/8192/2/16/iterations:1\n"
+    "BM_string_memcpy/8192/2/32/iterations:1\n"
+    "BM_string_memcpy/8192/4/1/iterations:1\n"
+    "BM_string_memcpy/8192/4/2/iterations:1\n"
+    "BM_string_memcpy/8192/4/4/iterations:1\n"
+    "BM_string_memcpy/8192/4/8/iterations:1\n"
+    "BM_string_memcpy/8192/4/16/iterations:1\n"
+    "BM_string_memcpy/8192/4/32/iterations:1\n"
+    "BM_string_memcpy/8192/8/1/iterations:1\n"
+    "BM_string_memcpy/8192/8/2/iterations:1\n"
+    "BM_string_memcpy/8192/8/4/iterations:1\n"
+    "BM_string_memcpy/8192/8/8/iterations:1\n"
+    "BM_string_memcpy/8192/8/16/iterations:1\n"
+    "BM_string_memcpy/8192/8/32/iterations:1\n"
+    "BM_string_memcpy/8192/16/1/iterations:1\n"
+    "BM_string_memcpy/8192/16/2/iterations:1\n"
+    "BM_string_memcpy/8192/16/4/iterations:1\n"
+    "BM_string_memcpy/8192/16/8/iterations:1\n"
+    "BM_string_memcpy/8192/16/16/iterations:1\n"
+    "BM_string_memcpy/8192/16/32/iterations:1\n"
+    "BM_string_memcpy/8192/32/1/iterations:1\n"
+    "BM_string_memcpy/8192/32/2/iterations:1\n"
+    "BM_string_memcpy/8192/32/4/iterations:1\n"
+    "BM_string_memcpy/8192/32/8/iterations:1\n"
+    "BM_string_memcpy/8192/32/16/iterations:1\n"
+    "BM_string_memcpy/8192/32/32/iterations:1\n"
+    "BM_string_memcpy/16384/0/0/iterations:1\n"
+    "BM_string_memcpy/16384/1/1/iterations:1\n"
+    "BM_string_memcpy/16384/1/2/iterations:1\n"
+    "BM_string_memcpy/16384/1/4/iterations:1\n"
+    "BM_string_memcpy/16384/1/8/iterations:1\n"
+    "BM_string_memcpy/16384/1/16/iterations:1\n"
+    "BM_string_memcpy/16384/1/32/iterations:1\n"
+    "BM_string_memcpy/16384/2/1/iterations:1\n"
+    "BM_string_memcpy/16384/2/2/iterations:1\n"
+    "BM_string_memcpy/16384/2/4/iterations:1\n"
+    "BM_string_memcpy/16384/2/8/iterations:1\n"
+    "BM_string_memcpy/16384/2/16/iterations:1\n"
+    "BM_string_memcpy/16384/2/32/iterations:1\n"
+    "BM_string_memcpy/16384/4/1/iterations:1\n"
+    "BM_string_memcpy/16384/4/2/iterations:1\n"
+    "BM_string_memcpy/16384/4/4/iterations:1\n"
+    "BM_string_memcpy/16384/4/8/iterations:1\n"
+    "BM_string_memcpy/16384/4/16/iterations:1\n"
+    "BM_string_memcpy/16384/4/32/iterations:1\n"
+    "BM_string_memcpy/16384/8/1/iterations:1\n"
+    "BM_string_memcpy/16384/8/2/iterations:1\n"
+    "BM_string_memcpy/16384/8/4/iterations:1\n"
+    "BM_string_memcpy/16384/8/8/iterations:1\n"
+    "BM_string_memcpy/16384/8/16/iterations:1\n"
+    "BM_string_memcpy/16384/8/32/iterations:1\n"
+    "BM_string_memcpy/16384/16/1/iterations:1\n"
+    "BM_string_memcpy/16384/16/2/iterations:1\n"
+    "BM_string_memcpy/16384/16/4/iterations:1\n"
+    "BM_string_memcpy/16384/16/8/iterations:1\n"
+    "BM_string_memcpy/16384/16/16/iterations:1\n"
+    "BM_string_memcpy/16384/16/32/iterations:1\n"
+    "BM_string_memcpy/16384/32/1/iterations:1\n"
+    "BM_string_memcpy/16384/32/2/iterations:1\n"
+    "BM_string_memcpy/16384/32/4/iterations:1\n"
+    "BM_string_memcpy/16384/32/8/iterations:1\n"
+    "BM_string_memcpy/16384/32/16/iterations:1\n"
+    "BM_string_memcpy/16384/32/32/iterations:1\n"
+    "BM_string_memcpy/32768/0/0/iterations:1\n"
+    "BM_string_memcpy/32768/1/1/iterations:1\n"
+    "BM_string_memcpy/32768/1/2/iterations:1\n"
+    "BM_string_memcpy/32768/1/4/iterations:1\n"
+    "BM_string_memcpy/32768/1/8/iterations:1\n"
+    "BM_string_memcpy/32768/1/16/iterations:1\n"
+    "BM_string_memcpy/32768/1/32/iterations:1\n"
+    "BM_string_memcpy/32768/2/1/iterations:1\n"
+    "BM_string_memcpy/32768/2/2/iterations:1\n"
+    "BM_string_memcpy/32768/2/4/iterations:1\n"
+    "BM_string_memcpy/32768/2/8/iterations:1\n"
+    "BM_string_memcpy/32768/2/16/iterations:1\n"
+    "BM_string_memcpy/32768/2/32/iterations:1\n"
+    "BM_string_memcpy/32768/4/1/iterations:1\n"
+    "BM_string_memcpy/32768/4/2/iterations:1\n"
+    "BM_string_memcpy/32768/4/4/iterations:1\n"
+    "BM_string_memcpy/32768/4/8/iterations:1\n"
+    "BM_string_memcpy/32768/4/16/iterations:1\n"
+    "BM_string_memcpy/32768/4/32/iterations:1\n"
+    "BM_string_memcpy/32768/8/1/iterations:1\n"
+    "BM_string_memcpy/32768/8/2/iterations:1\n"
+    "BM_string_memcpy/32768/8/4/iterations:1\n"
+    "BM_string_memcpy/32768/8/8/iterations:1\n"
+    "BM_string_memcpy/32768/8/16/iterations:1\n"
+    "BM_string_memcpy/32768/8/32/iterations:1\n"
+    "BM_string_memcpy/32768/16/1/iterations:1\n"
+    "BM_string_memcpy/32768/16/2/iterations:1\n"
+    "BM_string_memcpy/32768/16/4/iterations:1\n"
+    "BM_string_memcpy/32768/16/8/iterations:1\n"
+    "BM_string_memcpy/32768/16/16/iterations:1\n"
+    "BM_string_memcpy/32768/16/32/iterations:1\n"
+    "BM_string_memcpy/32768/32/1/iterations:1\n"
+    "BM_string_memcpy/32768/32/2/iterations:1\n"
+    "BM_string_memcpy/32768/32/4/iterations:1\n"
+    "BM_string_memcpy/32768/32/8/iterations:1\n"
+    "BM_string_memcpy/32768/32/16/iterations:1\n"
+    "BM_string_memcpy/32768/32/32/iterations:1\n"
+    "BM_string_memcpy/65536/0/0/iterations:1\n"
+    "BM_string_memcpy/65536/1/1/iterations:1\n"
+    "BM_string_memcpy/65536/1/2/iterations:1\n"
+    "BM_string_memcpy/65536/1/4/iterations:1\n"
+    "BM_string_memcpy/65536/1/8/iterations:1\n"
+    "BM_string_memcpy/65536/1/16/iterations:1\n"
+    "BM_string_memcpy/65536/1/32/iterations:1\n"
+    "BM_string_memcpy/65536/2/1/iterations:1\n"
+    "BM_string_memcpy/65536/2/2/iterations:1\n"
+    "BM_string_memcpy/65536/2/4/iterations:1\n"
+    "BM_string_memcpy/65536/2/8/iterations:1\n"
+    "BM_string_memcpy/65536/2/16/iterations:1\n"
+    "BM_string_memcpy/65536/2/32/iterations:1\n"
+    "BM_string_memcpy/65536/4/1/iterations:1\n"
+    "BM_string_memcpy/65536/4/2/iterations:1\n"
+    "BM_string_memcpy/65536/4/4/iterations:1\n"
+    "BM_string_memcpy/65536/4/8/iterations:1\n"
+    "BM_string_memcpy/65536/4/16/iterations:1\n"
+    "BM_string_memcpy/65536/4/32/iterations:1\n"
+    "BM_string_memcpy/65536/8/1/iterations:1\n"
+    "BM_string_memcpy/65536/8/2/iterations:1\n"
+    "BM_string_memcpy/65536/8/4/iterations:1\n"
+    "BM_string_memcpy/65536/8/8/iterations:1\n"
+    "BM_string_memcpy/65536/8/16/iterations:1\n"
+    "BM_string_memcpy/65536/8/32/iterations:1\n"
+    "BM_string_memcpy/65536/16/1/iterations:1\n"
+    "BM_string_memcpy/65536/16/2/iterations:1\n"
+    "BM_string_memcpy/65536/16/4/iterations:1\n"
+    "BM_string_memcpy/65536/16/8/iterations:1\n"
+    "BM_string_memcpy/65536/16/16/iterations:1\n"
+    "BM_string_memcpy/65536/16/32/iterations:1\n"
+    "BM_string_memcpy/65536/32/1/iterations:1\n"
+    "BM_string_memcpy/65536/32/2/iterations:1\n"
+    "BM_string_memcpy/65536/32/4/iterations:1\n"
+    "BM_string_memcpy/65536/32/8/iterations:1\n"
+    "BM_string_memcpy/65536/32/16/iterations:1\n"
+    "BM_string_memcpy/65536/32/32/iterations:1\n"
+    "BM_string_memcpy/131072/0/0/iterations:1\n"
+    "BM_string_memcpy/131072/1/1/iterations:1\n"
+    "BM_string_memcpy/131072/1/2/iterations:1\n"
+    "BM_string_memcpy/131072/1/4/iterations:1\n"
+    "BM_string_memcpy/131072/1/8/iterations:1\n"
+    "BM_string_memcpy/131072/1/16/iterations:1\n"
+    "BM_string_memcpy/131072/1/32/iterations:1\n"
+    "BM_string_memcpy/131072/2/1/iterations:1\n"
+    "BM_string_memcpy/131072/2/2/iterations:1\n"
+    "BM_string_memcpy/131072/2/4/iterations:1\n"
+    "BM_string_memcpy/131072/2/8/iterations:1\n"
+    "BM_string_memcpy/131072/2/16/iterations:1\n"
+    "BM_string_memcpy/131072/2/32/iterations:1\n"
+    "BM_string_memcpy/131072/4/1/iterations:1\n"
+    "BM_string_memcpy/131072/4/2/iterations:1\n"
+    "BM_string_memcpy/131072/4/4/iterations:1\n"
+    "BM_string_memcpy/131072/4/8/iterations:1\n"
+    "BM_string_memcpy/131072/4/16/iterations:1\n"
+    "BM_string_memcpy/131072/4/32/iterations:1\n"
+    "BM_string_memcpy/131072/8/1/iterations:1\n"
+    "BM_string_memcpy/131072/8/2/iterations:1\n"
+    "BM_string_memcpy/131072/8/4/iterations:1\n"
+    "BM_string_memcpy/131072/8/8/iterations:1\n"
+    "BM_string_memcpy/131072/8/16/iterations:1\n"
+    "BM_string_memcpy/131072/8/32/iterations:1\n"
+    "BM_string_memcpy/131072/16/1/iterations:1\n"
+    "BM_string_memcpy/131072/16/2/iterations:1\n"
+    "BM_string_memcpy/131072/16/4/iterations:1\n"
+    "BM_string_memcpy/131072/16/8/iterations:1\n"
+    "BM_string_memcpy/131072/16/16/iterations:1\n"
+    "BM_string_memcpy/131072/16/32/iterations:1\n"
+    "BM_string_memcpy/131072/32/1/iterations:1\n"
+    "BM_string_memcpy/131072/32/2/iterations:1\n"
+    "BM_string_memcpy/131072/32/4/iterations:1\n"
+    "BM_string_memcpy/131072/32/8/iterations:1\n"
+    "BM_string_memcpy/131072/32/16/iterations:1\n"
+    "BM_string_memcpy/131072/32/32/iterations:1\n"
+    "BM_string_memcpy/262144/0/0/iterations:1\n"
+    "BM_string_memcpy/262144/1/1/iterations:1\n"
+    "BM_string_memcpy/262144/1/2/iterations:1\n"
+    "BM_string_memcpy/262144/1/4/iterations:1\n"
+    "BM_string_memcpy/262144/1/8/iterations:1\n"
+    "BM_string_memcpy/262144/1/16/iterations:1\n"
+    "BM_string_memcpy/262144/1/32/iterations:1\n"
+    "BM_string_memcpy/262144/2/1/iterations:1\n"
+    "BM_string_memcpy/262144/2/2/iterations:1\n"
+    "BM_string_memcpy/262144/2/4/iterations:1\n"
+    "BM_string_memcpy/262144/2/8/iterations:1\n"
+    "BM_string_memcpy/262144/2/16/iterations:1\n"
+    "BM_string_memcpy/262144/2/32/iterations:1\n"
+    "BM_string_memcpy/262144/4/1/iterations:1\n"
+    "BM_string_memcpy/262144/4/2/iterations:1\n"
+    "BM_string_memcpy/262144/4/4/iterations:1\n"
+    "BM_string_memcpy/262144/4/8/iterations:1\n"
+    "BM_string_memcpy/262144/4/16/iterations:1\n"
+    "BM_string_memcpy/262144/4/32/iterations:1\n"
+    "BM_string_memcpy/262144/8/1/iterations:1\n"
+    "BM_string_memcpy/262144/8/2/iterations:1\n"
+    "BM_string_memcpy/262144/8/4/iterations:1\n"
+    "BM_string_memcpy/262144/8/8/iterations:1\n"
+    "BM_string_memcpy/262144/8/16/iterations:1\n"
+    "BM_string_memcpy/262144/8/32/iterations:1\n"
+    "BM_string_memcpy/262144/16/1/iterations:1\n"
+    "BM_string_memcpy/262144/16/2/iterations:1\n"
+    "BM_string_memcpy/262144/16/4/iterations:1\n"
+    "BM_string_memcpy/262144/16/8/iterations:1\n"
+    "BM_string_memcpy/262144/16/16/iterations:1\n"
+    "BM_string_memcpy/262144/16/32/iterations:1\n"
+    "BM_string_memcpy/262144/32/1/iterations:1\n"
+    "BM_string_memcpy/262144/32/2/iterations:1\n"
+    "BM_string_memcpy/262144/32/4/iterations:1\n"
+    "BM_string_memcpy/262144/32/8/iterations:1\n"
+    "BM_string_memcpy/262144/32/16/iterations:1\n"
+    "BM_string_memcpy/262144/32/32/iterations:1\n"
+    "BM_string_memcpy/524288/0/0/iterations:1\n"
+    "BM_string_memcpy/524288/1/1/iterations:1\n"
+    "BM_string_memcpy/524288/1/2/iterations:1\n"
+    "BM_string_memcpy/524288/1/4/iterations:1\n"
+    "BM_string_memcpy/524288/1/8/iterations:1\n"
+    "BM_string_memcpy/524288/1/16/iterations:1\n"
+    "BM_string_memcpy/524288/1/32/iterations:1\n"
+    "BM_string_memcpy/524288/2/1/iterations:1\n"
+    "BM_string_memcpy/524288/2/2/iterations:1\n"
+    "BM_string_memcpy/524288/2/4/iterations:1\n"
+    "BM_string_memcpy/524288/2/8/iterations:1\n"
+    "BM_string_memcpy/524288/2/16/iterations:1\n"
+    "BM_string_memcpy/524288/2/32/iterations:1\n"
+    "BM_string_memcpy/524288/4/1/iterations:1\n"
+    "BM_string_memcpy/524288/4/2/iterations:1\n"
+    "BM_string_memcpy/524288/4/4/iterations:1\n"
+    "BM_string_memcpy/524288/4/8/iterations:1\n"
+    "BM_string_memcpy/524288/4/16/iterations:1\n"
+    "BM_string_memcpy/524288/4/32/iterations:1\n"
+    "BM_string_memcpy/524288/8/1/iterations:1\n"
+    "BM_string_memcpy/524288/8/2/iterations:1\n"
+    "BM_string_memcpy/524288/8/4/iterations:1\n"
+    "BM_string_memcpy/524288/8/8/iterations:1\n"
+    "BM_string_memcpy/524288/8/16/iterations:1\n"
+    "BM_string_memcpy/524288/8/32/iterations:1\n"
+    "BM_string_memcpy/524288/16/1/iterations:1\n"
+    "BM_string_memcpy/524288/16/2/iterations:1\n"
+    "BM_string_memcpy/524288/16/4/iterations:1\n"
+    "BM_string_memcpy/524288/16/8/iterations:1\n"
+    "BM_string_memcpy/524288/16/16/iterations:1\n"
+    "BM_string_memcpy/524288/16/32/iterations:1\n"
+    "BM_string_memcpy/524288/32/1/iterations:1\n"
+    "BM_string_memcpy/524288/32/2/iterations:1\n"
+    "BM_string_memcpy/524288/32/4/iterations:1\n"
+    "BM_string_memcpy/524288/32/8/iterations:1\n"
+    "BM_string_memcpy/524288/32/16/iterations:1\n"
+    "BM_string_memcpy/524288/32/32/iterations:1\n"
+    "BM_string_memcpy/1048576/0/0/iterations:1\n"
+    "BM_string_memcpy/1048576/1/1/iterations:1\n"
+    "BM_string_memcpy/1048576/1/2/iterations:1\n"
+    "BM_string_memcpy/1048576/1/4/iterations:1\n"
+    "BM_string_memcpy/1048576/1/8/iterations:1\n"
+    "BM_string_memcpy/1048576/1/16/iterations:1\n"
+    "BM_string_memcpy/1048576/1/32/iterations:1\n"
+    "BM_string_memcpy/1048576/2/1/iterations:1\n"
+    "BM_string_memcpy/1048576/2/2/iterations:1\n"
+    "BM_string_memcpy/1048576/2/4/iterations:1\n"
+    "BM_string_memcpy/1048576/2/8/iterations:1\n"
+    "BM_string_memcpy/1048576/2/16/iterations:1\n"
+    "BM_string_memcpy/1048576/2/32/iterations:1\n"
+    "BM_string_memcpy/1048576/4/1/iterations:1\n"
+    "BM_string_memcpy/1048576/4/2/iterations:1\n"
+    "BM_string_memcpy/1048576/4/4/iterations:1\n"
+    "BM_string_memcpy/1048576/4/8/iterations:1\n"
+    "BM_string_memcpy/1048576/4/16/iterations:1\n"
+    "BM_string_memcpy/1048576/4/32/iterations:1\n"
+    "BM_string_memcpy/1048576/8/1/iterations:1\n"
+    "BM_string_memcpy/1048576/8/2/iterations:1\n"
+    "BM_string_memcpy/1048576/8/4/iterations:1\n"
+    "BM_string_memcpy/1048576/8/8/iterations:1\n"
+    "BM_string_memcpy/1048576/8/16/iterations:1\n"
+    "BM_string_memcpy/1048576/8/32/iterations:1\n"
+    "BM_string_memcpy/1048576/16/1/iterations:1\n"
+    "BM_string_memcpy/1048576/16/2/iterations:1\n"
+    "BM_string_memcpy/1048576/16/4/iterations:1\n"
+    "BM_string_memcpy/1048576/16/8/iterations:1\n"
+    "BM_string_memcpy/1048576/16/16/iterations:1\n"
+    "BM_string_memcpy/1048576/16/32/iterations:1\n"
+    "BM_string_memcpy/1048576/32/1/iterations:1\n"
+    "BM_string_memcpy/1048576/32/2/iterations:1\n"
+    "BM_string_memcpy/1048576/32/4/iterations:1\n"
+    "BM_string_memcpy/1048576/32/8/iterations:1\n"
+    "BM_string_memcpy/1048576/32/16/iterations:1\n"
+    "BM_string_memcpy/1048576/32/32/iterations:1\n"
+    "BM_string_memcpy/2097152/0/0/iterations:1\n"
+    "BM_string_memcpy/2097152/1/1/iterations:1\n"
+    "BM_string_memcpy/2097152/1/2/iterations:1\n"
+    "BM_string_memcpy/2097152/1/4/iterations:1\n"
+    "BM_string_memcpy/2097152/1/8/iterations:1\n"
+    "BM_string_memcpy/2097152/1/16/iterations:1\n"
+    "BM_string_memcpy/2097152/1/32/iterations:1\n"
+    "BM_string_memcpy/2097152/2/1/iterations:1\n"
+    "BM_string_memcpy/2097152/2/2/iterations:1\n"
+    "BM_string_memcpy/2097152/2/4/iterations:1\n"
+    "BM_string_memcpy/2097152/2/8/iterations:1\n"
+    "BM_string_memcpy/2097152/2/16/iterations:1\n"
+    "BM_string_memcpy/2097152/2/32/iterations:1\n"
+    "BM_string_memcpy/2097152/4/1/iterations:1\n"
+    "BM_string_memcpy/2097152/4/2/iterations:1\n"
+    "BM_string_memcpy/2097152/4/4/iterations:1\n"
+    "BM_string_memcpy/2097152/4/8/iterations:1\n"
+    "BM_string_memcpy/2097152/4/16/iterations:1\n"
+    "BM_string_memcpy/2097152/4/32/iterations:1\n"
+    "BM_string_memcpy/2097152/8/1/iterations:1\n"
+    "BM_string_memcpy/2097152/8/2/iterations:1\n"
+    "BM_string_memcpy/2097152/8/4/iterations:1\n"
+    "BM_string_memcpy/2097152/8/8/iterations:1\n"
+    "BM_string_memcpy/2097152/8/16/iterations:1\n"
+    "BM_string_memcpy/2097152/8/32/iterations:1\n"
+    "BM_string_memcpy/2097152/16/1/iterations:1\n"
+    "BM_string_memcpy/2097152/16/2/iterations:1\n"
+    "BM_string_memcpy/2097152/16/4/iterations:1\n"
+    "BM_string_memcpy/2097152/16/8/iterations:1\n"
+    "BM_string_memcpy/2097152/16/16/iterations:1\n"
+    "BM_string_memcpy/2097152/16/32/iterations:1\n"
+    "BM_string_memcpy/2097152/32/1/iterations:1\n"
+    "BM_string_memcpy/2097152/32/2/iterations:1\n"
+    "BM_string_memcpy/2097152/32/4/iterations:1\n"
+    "BM_string_memcpy/2097152/32/8/iterations:1\n"
+    "BM_string_memcpy/2097152/32/16/iterations:1\n"
+    "BM_string_memcpy/2097152/32/32/iterations:1\n";
+
+  Verify(expected, 0,
+         std::vector<const char*>{GetBionicXmlArg("test_alignment_twobuf.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_twobuf_manual) {
+  std::string expected =
+    "BM_string_strcpy/12345/0/0/iterations:1\n"
+    "BM_string_memcpy/10248/2/1/iterations:1\n"
+    "BM_string_strcpy/17820/4/8/iterations:1\n"
+    "BM_string_memcpy/20000/16/32/iterations:1\n";
+
+  Verify(expected, 0,
+         std::vector<const char*>{GetBionicXmlArg("test_alignment_twobuf_manual.xml").c_str()});
 }
diff --git a/libc/arch-arm/bionic/kuser_helper_on.S b/libc/arch-arm/bionic/kuser_helper_on.S
index 1e971a8..cff2073 100644
--- a/libc/arch-arm/bionic/kuser_helper_on.S
+++ b/libc/arch-arm/bionic/kuser_helper_on.S
@@ -25,14 +25,15 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-	.section	.note.android.kuser_helper_on,"a",%note
-	.align	2
-	.type	kuser_helper_on, %object
+
+  .section .note.android.kuser_helper_on,"a",%note
+  .balign 4
+  .type kuser_helper_on, %object
 kuser_helper_on:
-	.long	2f-1f			/* int32_t namesz */
-	.long	3f-2f			/* int32_t descsz */
-	.long	3			/* int32_t type */
-1:	.ascii	"Android\0"		/* char name[] */
-2:	.long	1	/* int32_t on */
+  .long 2f-1f         // int32_t namesz
+  .long 3f-2f         // int32_t descsz
+  .long 3             // int32_t type
+1:.ascii "Android\0"  // char name[]
+2:.long 1             // int32_t on
 3:
-	.size	kuser_helper_on, .-kuser_helper_on
+  .size kuser_helper_on, .-kuser_helper_on
diff --git a/libc/arch-common/bionic/crtbrand.S b/libc/arch-common/bionic/crtbrand.S
index 11bbfbe..4b4f99c 100644
--- a/libc/arch-common/bionic/crtbrand.S
+++ b/libc/arch-common/bionic/crtbrand.S
@@ -26,14 +26,14 @@
  * SUCH DAMAGE.
  */
 
-	.section	.note.android.ident,"a",%note
-	.align	2
-	.type	abitag, %object
+  .section .note.android.ident,"a",%note
+  .balign 4
+  .type abitag, %object
 abitag:
-	.long	2f-1f			/* int32_t namesz */
-	.long	3f-2f			/* int32_t descsz */
-	.long	1			/* int32_t type */
-1:	.ascii	"Android\0"		/* char name[] */
-2:	.long	PLATFORM_SDK_VERSION	/* int32_t android_api */
+  .long 2f-1f                 // int32_t namesz
+  .long 3f-2f                 // int32_t descsz
+  .long 1                     // int32_t type
+1:.ascii "Android\0"          // char name[]
+2:.long PLATFORM_SDK_VERSION  // int32_t android_api
 3:
-	.size	abitag, .-abitag
+  .size abitag, .-abitag
diff --git a/libc/bionic/__libc_current_sigrtmin.cpp b/libc/bionic/__libc_current_sigrtmin.cpp
index f3b2bf6..04caa89 100644
--- a/libc/bionic/__libc_current_sigrtmin.cpp
+++ b/libc/bionic/__libc_current_sigrtmin.cpp
@@ -28,10 +28,11 @@
 
 #include <signal.h>
 
-// POSIX timers use __SIGRTMIN + 0.
-// libbacktrace uses __SIGRTMIN + 1.
-// libcore uses __SIGRTMIN + 2.
-// __SIGRTMIN + 3 is reserved for triggering native stack dumps.
+// Realtime signals reserved for internal use:
+//   32 (__SIGRTMIN + 0)        POSIX timers
+//   33 (__SIGRTMIN + 1)        libbacktrace
+//   34 (__SIGRTMIN + 2)        libcore
+//   35 (__SIGRTMIN + 3)        debuggerd -b
 
 int __libc_current_sigrtmin(void) {
   // If you change this, also change __ndk_legacy___libc_current_sigrtmin
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp
index 4b7b776..985d47f 100644
--- a/libc/bionic/fortify.cpp
+++ b/libc/bionic/fortify.cpp
@@ -78,7 +78,7 @@
 //   http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
 //
 
-int __FD_ISSET_chk(int fd, fd_set* set, size_t set_size) {
+int __FD_ISSET_chk(int fd, const fd_set* set, size_t set_size) {
   __check_fd_set("FD_ISSET", fd, set_size);
   return FD_ISSET(fd, set);
 }
diff --git a/libc/include/sys/select.h b/libc/include/sys/select.h
index e919188..ac51d3f 100644
--- a/libc/include/sys/select.h
+++ b/libc/include/sys/select.h
@@ -37,39 +37,40 @@
 
 __BEGIN_DECLS
 
+typedef unsigned long fd_mask;
+
 #define FD_SETSIZE 1024
-#define NFDBITS (8 * sizeof(unsigned long))
-#define __FDSET_LONGS (FD_SETSIZE/NFDBITS)
+#define NFDBITS (8 * sizeof(fd_mask))
 
 typedef struct {
-  unsigned long fds_bits[__FDSET_LONGS];
+  fd_mask fds_bits[FD_SETSIZE/NFDBITS];
 } fd_set;
 
 #define __FDELT(fd) ((fd) / NFDBITS)
 #define __FDMASK(fd) (1UL << ((fd) % NFDBITS))
-#define __FDS_BITS(set) (__BIONIC_CAST(static_cast, fd_set*, set)->fds_bits)
+#define __FDS_BITS(type,set) (__BIONIC_CAST(static_cast, type, set)->fds_bits)
 
 /* Inline loop so we don't have to declare memset. */
 #define FD_ZERO(set) \
   do { \
     size_t __i; \
-    for (__i = 0; __i < __FDSET_LONGS; ++__i) { \
+    for (__i = 0; __i < sizeof(fd_set)/sizeof(fd_mask); ++__i) { \
       (set)->fds_bits[__i] = 0; \
     } \
   } while (0)
 
 void __FD_CLR_chk(int, fd_set*, size_t) __INTRODUCED_IN(21);
 void __FD_SET_chk(int, fd_set*, size_t) __INTRODUCED_IN(21);
-int __FD_ISSET_chk(int, fd_set*, size_t) __INTRODUCED_IN(21);
+int __FD_ISSET_chk(int, const fd_set*, size_t) __INTRODUCED_IN(21);
 
 #if defined(__BIONIC_FORTIFY) && __ANDROID_API__ >= __ANDROID_API_L__
 #define FD_CLR(fd, set) __FD_CLR_chk(fd, set, __bos(set))
 #define FD_SET(fd, set) __FD_SET_chk(fd, set, __bos(set))
 #define FD_ISSET(fd, set) __FD_ISSET_chk(fd, set, __bos(set))
 #else
-#define FD_CLR(fd, set) (__FDS_BITS(set)[__FDELT(fd)] &= ~__FDMASK(fd))
-#define FD_SET(fd, set) (__FDS_BITS(set)[__FDELT(fd)] |= __FDMASK(fd))
-#define FD_ISSET(fd, set) ((__FDS_BITS(set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
+#define FD_CLR(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] &= ~__FDMASK(fd))
+#define FD_SET(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] |= __FDMASK(fd))
+#define FD_ISSET(fd, set) ((__FDS_BITS(const fd_set*,set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
 #endif /* defined(__BIONIC_FORTIFY) && __ANDROID_API >= 21 */
 
 int select(int __fd_count, fd_set* __read_fds, fd_set* __write_fds, fd_set* __exception_fds, struct timeval* __timeout);
diff --git a/libc/system_properties/system_properties.cpp b/libc/system_properties/system_properties.cpp
index 3f6601d..89a6fe7 100644
--- a/libc/system_properties/system_properties.cpp
+++ b/libc/system_properties/system_properties.cpp
@@ -46,6 +46,8 @@
 #include <sys/_system_properties.h>
 #include <sys/system_properties.h>
 
+#include <new>
+
 #include <async_safe/log.h>
 
 #include "private/ErrnoRestorer.h"
@@ -63,10 +65,15 @@
 #include "property_filename.h"
 
 // We don't want to use new or malloc in properties (b/31659220), and since these classes are
-// small enough and don't have non-trivial constructors, it's easier to just statically declare
-// them than anything else.
-static ContextsSplit contexts_split;
-static ContextsPreSplit contexts_pre_split;
+// small enough and we place them in a static union.  Note that system properties are initialized
+// before static initializers are called, so using a Constructor here is an error.  Even a
+// Constructor that zero initializes a class will clobber the previous property initialization.
+static union ContextsUnion {
+  ContextsUnion() {}
+  ~ContextsUnion() {}
+  ContextsSplit contexts_split;
+  ContextsPreSplit contexts_pre_split;
+} contexts_union;
 static Contexts* contexts = nullptr;
 
 #define SERIAL_DIRTY(serial) ((serial)&1)
@@ -276,15 +283,17 @@
   }
   contexts = nullptr;
   if (is_dir(property_filename)) {
-    if (!contexts_split.Initialize(false)) {
+    new (&contexts_union.contexts_split) ContextsSplit();
+    if (!contexts_union.contexts_split.Initialize(false)) {
       return -1;
     }
-    contexts = &contexts_split;
+    contexts = &contexts_union.contexts_split;
   } else {
-    if (!contexts_pre_split.Initialize(false)) {
+    new (&contexts_union.contexts_pre_split) ContextsPreSplit();
+    if (!contexts_union.contexts_pre_split.Initialize(false)) {
       return -1;
     }
-    contexts = &contexts_pre_split;
+    contexts = &contexts_union.contexts_pre_split;
   }
   return 0;
 }
@@ -305,8 +314,9 @@
   }
   // We set this unconditionally as we want tests to continue on regardless of if this failed
   // and property_service will abort on an error condition, so no harm done.
-  contexts = &contexts_split;
-  if (!contexts_split.Initialize(true)) {
+  new (&contexts_union.contexts_split) ContextsSplit;
+  contexts = &contexts_union.contexts_split;
+  if (!contexts_union.contexts_split.Initialize(true)) {
     return -1;
   }
   return 0;
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 3baae51..7bf3a5b 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -3533,7 +3533,14 @@
 
   std::string error_msg;
 
-  const char* config_file = file_exists(kLdConfigArchFilePath) ? kLdConfigArchFilePath : kLdConfigFilePath;
+  std::string ld_config_vndk = kLdConfigFilePath;
+  size_t insert_pos = ld_config_vndk.find_last_of(".");
+  if (insert_pos == std::string::npos) {
+    insert_pos = ld_config_vndk.length();
+  }
+  ld_config_vndk.insert(insert_pos, Config::get_vndk_version_string('.'));
+  const char* ld_config_txt = file_exists(ld_config_vndk.c_str()) ? ld_config_vndk.c_str() : kLdConfigFilePath;
+  const char* config_file = file_exists(kLdConfigArchFilePath) ? kLdConfigArchFilePath : ld_config_txt;
 #ifdef USE_LD_CONFIG_FILE
   // This is a debugging/testing only feature. Must not be available on
   // production builds.
diff --git a/linker/linker_config.cpp b/linker/linker_config.cpp
index f7d2c53..60b7ad9 100644
--- a/linker/linker_config.cpp
+++ b/linker/linker_config.cpp
@@ -33,6 +33,7 @@
 #include "linker_utils.h"
 
 #include <android-base/file.h>
+#include <android-base/properties.h>
 #include <android-base/scopeguard.h>
 #include <android-base/strings.h>
 
@@ -49,7 +50,8 @@
 class ConfigParser {
  public:
   enum {
-    kProperty,
+    kPropertyAssign,
+    kPropertyAppend,
     kSection,
     kEndOfFile,
     kError,
@@ -60,7 +62,8 @@
 
   /*
    * Possible return values
-   * kProperty: name is set to property name and value is set to property value
+   * kPropertyAssign: name is set to property name and value is set to property value
+   * kPropertyAppend: same as kPropertyAssign, but the value should be appended
    * kSection: name is set to section name.
    * kEndOfFile: reached end of file.
    * kError: error_msg is set.
@@ -80,17 +83,24 @@
         return kSection;
       }
 
-      found = line.find('=');
-      if (found == std::string::npos) {
-        *error_msg = std::string("invalid format: ") +
-                    line +
-                    ", expected \"name = property\" or \"[section]\"";
-        return kError;
+      size_t found_assign = line.find('=');
+      size_t found_append = line.find("+=");
+      if (found_assign != std::string::npos && found_append == std::string::npos) {
+        *name = android::base::Trim(line.substr(0, found_assign));
+        *value = android::base::Trim(line.substr(found_assign + 1));
+        return kPropertyAssign;
       }
 
-      *name = android::base::Trim(line.substr(0, found));
-      *value = android::base::Trim(line.substr(found + 1));
-      return kProperty;
+      if (found_append != std::string::npos) {
+        *name = android::base::Trim(line.substr(0, found_append));
+        *value = android::base::Trim(line.substr(found_append + 2));
+        return kPropertyAppend;
+      }
+
+      *error_msg = std::string("invalid format: ") +
+                   line +
+                   ", expected \"name = property\", \"name += property\", or \"[section]\"";
+      return kError;
     }
 
     // to avoid infinite cycles when programmer makes a mistake
@@ -141,6 +151,14 @@
     return value_;
   }
 
+  void append_value(std::string&& value) {
+    value_ = value_ + value;
+    // lineno isn't updated as we might have cases like this:
+    // property.x = blah
+    // property.y = blah
+    // property.x += blah
+  }
+
   size_t lineno() const {
     return lineno_;
   }
@@ -194,7 +212,7 @@
       return false;
     }
 
-    if (result == ConfigParser::kProperty) {
+    if (result == ConfigParser::kPropertyAssign) {
       if (!android::base::StartsWith(name, "dir.")) {
         DL_WARN("error parsing %s:%zd: unexpected property name \"%s\", "
                 "expected format dir.<section_name> (ignoring this line)",
@@ -255,7 +273,7 @@
       break;
     }
 
-    if (result == ConfigParser::kProperty) {
+    if (result == ConfigParser::kPropertyAssign) {
       if (properties->find(name) != properties->end()) {
         DL_WARN("%s:%zd: warning: property \"%s\" redefinition",
                 ld_config_file_path,
@@ -264,6 +282,29 @@
       }
 
       (*properties)[name] = PropertyValue(std::move(value), cp.lineno());
+    } else if (result == ConfigParser::kPropertyAppend) {
+      if (properties->find(name) == properties->end()) {
+        DL_WARN("%s:%zd: warning: appending to property \"%s\" which isn't defined",
+                ld_config_file_path,
+                cp.lineno(),
+                name.c_str());
+        (*properties)[name] = PropertyValue(std::move(value), cp.lineno());
+      } else {
+        if (android::base::EndsWith(name, ".links") ||
+            android::base::EndsWith(name, ".namespaces")) {
+          value = "," + value;
+          (*properties)[name].append_value(std::move(value));
+        } else if (android::base::EndsWith(name, ".paths") ||
+                   android::base::EndsWith(name, ".shared_libs")) {
+          value = ":" + value;
+          (*properties)[name].append_value(std::move(value));
+        } else {
+          DL_WARN("%s:%zd: warning: += isn't allowed to property \"%s\". Ignoring.",
+                  ld_config_file_path,
+                  cp.lineno(),
+                  name.c_str());
+        }
+      }
     }
 
     if (result == ConfigParser::kError) {
@@ -278,15 +319,6 @@
   return true;
 }
 
-static std::string getVndkVersionString() {
-  char vndk_version_str[1 + PROP_VALUE_MAX] = {};
-  __system_property_get("ro.vndk.version", vndk_version_str + 1);
-  if (strlen(vndk_version_str + 1) != 0 && strcmp(vndk_version_str + 1, "current") != 0) {
-    vndk_version_str[0] = '-';
-  }
-  return vndk_version_str;
-}
-
 static Config g_config;
 
 static constexpr const char* kDefaultConfigName = "default";
@@ -346,7 +378,7 @@
       params.push_back({ "SDK_VER", buf });
     }
 
-    static std::string vndk = getVndkVersionString();
+    static std::string vndk = Config::get_vndk_version_string('-');
     params.push_back({ "VNDK_VER", vndk });
 
     for (auto&& path : paths) {
@@ -503,6 +535,15 @@
   return true;
 }
 
+std::string Config::get_vndk_version_string(const char delimiter) {
+  std::string version = android::base::GetProperty("ro.vndk.version", "");
+  if (version != "" && version != "current") {
+    //add the delimiter char in front of the string and return it.
+    return version.insert(0, 1, delimiter);
+  }
+  return "";
+}
+
 NamespaceConfig* Config::create_namespace_config(const std::string& name) {
   namespace_configs_.push_back(std::unique_ptr<NamespaceConfig>(new NamespaceConfig(name)));
   NamespaceConfig* ns_config_ptr = namespace_configs_.back().get();
diff --git a/linker/linker_config.h b/linker/linker_config.h
index 6f8bffb..dde9362 100644
--- a/linker/linker_config.h
+++ b/linker/linker_config.h
@@ -146,6 +146,8 @@
                                  bool is_asan,
                                  const Config** config,
                                  std::string* error_msg);
+
+  static std::string get_vndk_version_string(const char delimiter);
  private:
   void clear();
 
diff --git a/linker/tests/linker_config_test.cpp b/linker/tests/linker_config_test.cpp
index c6fade9..4c0dcdd 100644
--- a/linker/tests/linker_config_test.cpp
+++ b/linker/tests/linker_config_test.cpp
@@ -56,19 +56,31 @@
   "\n"
   "enable.target.sdk.version = true\n"
   "additional.namespaces=system\n"
+  "additional.namespaces+=vndk\n"
   "namespace.default.isolated = true\n"
   "namespace.default.search.paths = /vendor/${LIB}\n"
   "namespace.default.permitted.paths = /vendor/${LIB}\n"
-  "namespace.default.asan.search.paths = /data:/vendor/${LIB}\n"
+  "namespace.default.asan.search.paths = /data\n"
+  "namespace.default.asan.search.paths += /vendor/${LIB}\n"
   "namespace.default.asan.permitted.paths = /data:/vendor\n"
   "namespace.default.links = system\n"
-  "namespace.default.link.system.shared_libs = libc.so:libm.so:libdl.so:libstdc++.so\n"
+  "namespace.default.links += vndk\n"
+  // irregular whitespaces are added intentionally for testing purpose
+  "namespace.default.link.system.shared_libs=  libc.so\n"
+  "namespace.default.link.system.shared_libs +=   libm.so:libdl.so\n"
+  "namespace.default.link.system.shared_libs   +=libstdc++.so\n"
+  "namespace.default.link.vndk.shared_libs = libcutils.so:libbase.so\n"
   "namespace.system.isolated = true\n"
   "namespace.system.visible = true\n"
   "namespace.system.search.paths = /system/${LIB}\n"
   "namespace.system.permitted.paths = /system/${LIB}\n"
   "namespace.system.asan.search.paths = /data:/system/${LIB}\n"
   "namespace.system.asan.permitted.paths = /data:/system\n"
+  "namespace.vndk.isolated = tr\n"
+  "namespace.vndk.isolated += ue\n" // should be ignored and return as 'false'.
+  "namespace.vndk.search.paths = /system/${LIB}/vndk\n"
+  "namespace.vndk.asan.search.paths = /data\n"
+  "namespace.vndk.asan.search.paths += /system/${LIB}/vndk\n"
   "\n";
 
 static bool write_version(const std::string& path, uint32_t version) {
@@ -99,6 +111,10 @@
       resolve_paths(is_asan ? std::vector<std::string>({ "/data", "/system" }) :
                               std::vector<std::string>({ "/system/lib" ARCH_SUFFIX }));
 
+  const std::vector<std::string> kExpectedVndkSearchPath =
+      resolve_paths(is_asan ? std::vector<std::string>({ "/data", "/system/lib" ARCH_SUFFIX "/vndk"}) :
+                              std::vector<std::string>({ "/system/lib" ARCH_SUFFIX "/vndk"}));
+
   TemporaryFile tmp_file;
   close(tmp_file.fd);
   tmp_file.fd = -1;
@@ -137,22 +153,27 @@
   ASSERT_EQ(kExpectedDefaultPermittedPath, default_ns_config->permitted_paths());
 
   const auto& default_ns_links = default_ns_config->links();
-  ASSERT_EQ(1U, default_ns_links.size());
+  ASSERT_EQ(2U, default_ns_links.size());
   ASSERT_EQ("system", default_ns_links[0].ns_name());
   ASSERT_EQ("libc.so:libm.so:libdl.so:libstdc++.so", default_ns_links[0].shared_libs());
+  ASSERT_EQ("vndk", default_ns_links[1].ns_name());
+  ASSERT_EQ("libcutils.so:libbase.so", default_ns_links[1].shared_libs());
 
   auto& ns_configs = config->namespace_configs();
-  ASSERT_EQ(2U, ns_configs.size());
+  ASSERT_EQ(3U, ns_configs.size());
 
   // find second namespace
   const NamespaceConfig* ns_system = nullptr;
+  const NamespaceConfig* ns_vndk = nullptr;
   for (auto& ns : ns_configs) {
     std::string ns_name = ns->name();
-    ASSERT_TRUE(ns_name == "system" || ns_name == "default")
+    ASSERT_TRUE(ns_name == "system" || ns_name == "default" || ns_name == "vndk")
         << "unexpected ns name: " << ns->name();
 
     if (ns_name == "system") {
       ns_system = ns.get();
+    } else if (ns_name == "vndk") {
+      ns_vndk = ns.get();
     }
   }
 
@@ -162,6 +183,12 @@
   ASSERT_TRUE(ns_system->visible());
   ASSERT_EQ(kExpectedSystemSearchPath, ns_system->search_paths());
   ASSERT_EQ(kExpectedSystemPermittedPath, ns_system->permitted_paths());
+
+  ASSERT_TRUE(ns_vndk != nullptr) << "vndk namespace was not found";
+
+  ASSERT_FALSE(ns_vndk->isolated()); // malformed bool property
+  ASSERT_FALSE(ns_vndk->visible()); // undefined bool property 
+  ASSERT_EQ(kExpectedVndkSearchPath, ns_vndk->search_paths());
 }
 
 TEST(linker_config, smoke) {
diff --git a/tests/sys_select_test.cpp b/tests/sys_select_test.cpp
index 4ad77f0..0eab876 100644
--- a/tests/sys_select_test.cpp
+++ b/tests/sys_select_test.cpp
@@ -179,3 +179,8 @@
 
   DelayedWriteCleanup(pid, fd);
 }
+
+TEST(sys_select, FD_ISSET_const) {
+  const fd_set none = {};
+  ASSERT_FALSE(FD_ISSET(atoi("0"), &none));
+}