| Index: runtime/vm/assembler_ia32_test.cc
|
| diff --git a/runtime/vm/assembler_ia32_test.cc b/runtime/vm/assembler_ia32_test.cc
|
| index 04c2915fbeffe0b9a5a8792e5058d288928a0bed..5628494f6f4460fff652dfe61cab221d664aa926 100644
|
| --- a/runtime/vm/assembler_ia32_test.cc
|
| +++ b/runtime/vm/assembler_ia32_test.cc
|
| @@ -294,6 +294,27 @@ ASSEMBLER_TEST_RUN(Negate, test) {
|
| }
|
|
|
|
|
| +ASSEMBLER_TEST_GENERATE(BitScanReverse, assembler) {
|
| + __ movl(ECX, Address(ESP, kWordSize));
|
| + __ movl(EAX, Immediate(666)); // Marker for conditional write.
|
| + __ bsrl(EAX, ECX);
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +ASSEMBLER_TEST_RUN(BitScanReverse, test) {
|
| + typedef int (*Bsr)(int input);
|
| + Bsr call = reinterpret_cast<Bsr>(test->entry());
|
| + EXPECT_EQ(666, call(0));
|
| + EXPECT_EQ(0, call(1));
|
| + EXPECT_EQ(1, call(2));
|
| + EXPECT_EQ(1, call(3));
|
| + EXPECT_EQ(2, call(4));
|
| + EXPECT_EQ(5, call(42));
|
| + EXPECT_EQ(31, call(-1));
|
| +}
|
| +
|
| +
|
| ASSEMBLER_TEST_GENERATE(MoveExtend, assembler) {
|
| __ pushl(EBX); // preserve EBX.
|
| __ movl(EDX, Immediate(0x1234ffff));
|
|
|