Add new benchmark options.

Add a bunch of extra options to allow greater flexibility for creating
benchmarks. Add a pattern option that can be used to represent any
one buffer or two buffer possibility. This should fully replace the
functionality of microbench.

Add a single option for one buffer benchmarks and two buffer benchmarks
that represents all of the possible options to run a string benchmark.

Add a string test suite that includes all string benchmarks using the
above option.

Test: New unit tests to cover all the new options, and all pass.
Test: Ran new string test suite with a single bionic iteration.
Change-Id: Idb13ea15e44cec626e9f46672ccd648d7ca72ba6
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>