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 18b93d70221b5ad6707f45a7ec6f65942228e1f9..65afcf87ebf76ef595af6f1c1cfc15a6a91cd193 100644 |
--- a/test/cctest/compiler/test-run-machops.cc |
+++ b/test/cctest/compiler/test-run-machops.cc |
@@ -75,6 +75,51 @@ TEST(RunInt32Ctz) { |
} |
+void TestWord32Clz(int32_t value, int32_t expected) { |
+ RawMachineAssemblerTester<int32_t> m; |
+ Node* clz = m.Word32Clz(m.Int32Constant(value)); |
+ m.Return(clz); |
+ CHECK_EQ(expected, m.Call()); |
+} |
+ |
+ |
+TEST(RunInt32Clz) { |
+ TestWord32Clz(0x80001000, 0); |
+ TestWord32Clz(0x40000500, 1); |
+ TestWord32Clz(0x20000300, 2); |
+ TestWord32Clz(0x10000003, 3); |
+ TestWord32Clz(0x08050000, 4); |
+ TestWord32Clz(0x04006000, 5); |
+ TestWord32Clz(0x02000000, 6); |
+ TestWord32Clz(0x010000a0, 7); |
+ TestWord32Clz(0x00800c00, 8); |
+ TestWord32Clz(0x00400000, 9); |
+ TestWord32Clz(0x0020000d, 10); |
+ TestWord32Clz(0x00100f00, 11); |
+ TestWord32Clz(0x00080000, 12); |
+ TestWord32Clz(0x00041000, 13); |
+ TestWord32Clz(0x00020020, 14); |
+ TestWord32Clz(0x00010300, 15); |
+ TestWord32Clz(0x00008040, 16); |
+ TestWord32Clz(0x00004005, 17); |
+ TestWord32Clz(0x00002050, 18); |
+ TestWord32Clz(0x00001700, 19); |
+ TestWord32Clz(0x00000870, 20); |
+ TestWord32Clz(0x00000405, 21); |
+ TestWord32Clz(0x00000203, 22); |
+ TestWord32Clz(0x00000101, 23); |
+ TestWord32Clz(0x00000089, 24); |
+ TestWord32Clz(0x00000041, 25); |
+ TestWord32Clz(0x00000022, 26); |
+ TestWord32Clz(0x00000013, 27); |
+ TestWord32Clz(0x00000008, 28); |
+ TestWord32Clz(0x00000004, 29); |
+ TestWord32Clz(0x00000002, 30); |
+ TestWord32Clz(0x00000001, 31); |
+ TestWord32Clz(0x00000000, 32); |
+} |
+ |
+ |
static Node* Int32Input(RawMachineAssemblerTester<int32_t>* m, int index) { |
switch (index) { |
case 0: |