Index: test/cctest/compiler/test-run-machops.cc |
diff --git a/test/cctest/compiler/test-run-machops.cc b/test/cctest/compiler/test-run-machops.cc |
index 335d20caa01c9264ec7293638ad9d4b336c03d0d..18b93d70221b5ad6707f45a7ec6f65942228e1f9 100644 |
--- a/test/cctest/compiler/test-run-machops.cc |
+++ b/test/cctest/compiler/test-run-machops.cc |
@@ -27,6 +27,54 @@ TEST(RunInt32Add) { |
} |
+void TestWord32Ctz(int32_t value, int32_t expected) { |
+ RawMachineAssemblerTester<int32_t> m; |
+ if (m.machine()->Word32Ctz().IsSupported()) { |
+ Node* ctz = |
+ m.AddNode(m.machine()->Word32Ctz().op(), m.Int32Constant(value)); |
+ m.Return(ctz); |
+ CHECK_EQ(expected, m.Call()); |
+ } |
+} |
+ |
+ |
+TEST(RunInt32Ctz) { |
+ TestWord32Ctz(0x00000000, 32); |
+ TestWord32Ctz(0x80000000, 31); |
+ TestWord32Ctz(0x40000000, 30); |
+ TestWord32Ctz(0x20000000, 29); |
+ TestWord32Ctz(0x10000000, 28); |
+ TestWord32Ctz(0xa8000000, 27); |
+ TestWord32Ctz(0xf4000000, 26); |
+ TestWord32Ctz(0x62000000, 25); |
+ TestWord32Ctz(0x91000000, 24); |
+ TestWord32Ctz(0xcd800000, 23); |
+ TestWord32Ctz(0x09400000, 22); |
+ TestWord32Ctz(0xaf200000, 21); |
+ TestWord32Ctz(0xac100000, 20); |
+ TestWord32Ctz(0xe0b80000, 19); |
+ TestWord32Ctz(0x9ce40000, 18); |
+ TestWord32Ctz(0xc7920000, 17); |
+ TestWord32Ctz(0xb8f10000, 16); |
+ TestWord32Ctz(0x3b9f8000, 15); |
+ TestWord32Ctz(0xdb4c4000, 14); |
+ TestWord32Ctz(0xe9a32000, 13); |
+ TestWord32Ctz(0xfca61000, 12); |
+ TestWord32Ctz(0x6c8a7800, 11); |
+ TestWord32Ctz(0x8ce5a400, 10); |
+ TestWord32Ctz(0xcb7d0200, 9); |
+ TestWord32Ctz(0xcb4dc100, 8); |
+ TestWord32Ctz(0xdfbec580, 7); |
+ TestWord32Ctz(0x27a9db40, 6); |
+ TestWord32Ctz(0xde3bcb20, 5); |
+ TestWord32Ctz(0xd7e8a610, 4); |
+ TestWord32Ctz(0x9afdbc88, 3); |
+ TestWord32Ctz(0x9afdbc84, 2); |
+ TestWord32Ctz(0x9afdbc82, 1); |
+ TestWord32Ctz(0x9afdbc81, 0); |
+} |
+ |
+ |
static Node* Int32Input(RawMachineAssemblerTester<int32_t>* m, int index) { |
switch (index) { |
case 0: |