Subzero. ARM32. Strength reduce multiplications.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1469113003 .
diff --git a/crosstest/test_arith.cpp b/crosstest/test_arith.cpp
index 47fd47b..6ef2cc6 100644
--- a/crosstest/test_arith.cpp
+++ b/crosstest/test_arith.cpp
@@ -49,3 +49,37 @@
   v4f32 test##inst(v4f32 a, v4f32 b) { return func(a op b); }
 FPOP_TABLE
 #undef X
+
+#define X(mult_by)                                                             \
+  bool testMultiplyBy##mult_by(bool a, bool /*unused*/) {                      \
+    return a * (mult_by);                                                      \
+  }                                                                            \
+  bool testMultiplyByNeg##mult_by(bool a, bool /*unused*/) {                   \
+    return a * (-(mult_by));                                                   \
+  }                                                                            \
+  uint8_t testMultiplyBy##mult_by(uint8_t a, uint8_t /*unused*/) {             \
+    return a * (mult_by);                                                      \
+  }                                                                            \
+  uint8_t testMultiplyByNeg##mult_by(uint8_t a, uint8_t /*unused*/) {          \
+    return a * (-(mult_by));                                                   \
+  }                                                                            \
+  uint16_t testMultiplyBy##mult_by(uint16_t a, uint16_t /*unused*/) {          \
+    return a * (mult_by);                                                      \
+  }                                                                            \
+  uint16_t testMultiplyByNeg##mult_by(uint16_t a, uint16_t /*unused*/) {       \
+    return a * (-(mult_by));                                                   \
+  }                                                                            \
+  uint32_t testMultiplyBy##mult_by(uint32_t a, uint32_t /*unused*/) {          \
+    return a * (mult_by);                                                      \
+  }                                                                            \
+  uint32_t testMultiplyByNeg##mult_by(uint32_t a, uint32_t /*unused*/) {       \
+    return a * (-(mult_by));                                                   \
+  }                                                                            \
+  uint64_t testMultiplyBy##mult_by(uint64_t a, uint64_t /*unused*/) {          \
+    return a * (mult_by);                                                      \
+  }                                                                            \
+  uint64_t testMultiplyByNeg##mult_by(uint64_t a, uint64_t /*unused*/) {       \
+    return a * (-(mult_by));                                                   \
+  }
+MULIMM_TABLE
+#undef X