| Index: runtime/vm/assembler_ia32_test.cc
|
| diff --git a/runtime/vm/assembler_ia32_test.cc b/runtime/vm/assembler_ia32_test.cc
|
| index 1d17e4c80b20bae36a1c0094d3a1e84be8ab5014..5fb460d5aa517d2c2b2d8c74f64ee1002a45661c 100644
|
| --- a/runtime/vm/assembler_ia32_test.cc
|
| +++ b/runtime/vm/assembler_ia32_test.cc
|
| @@ -2048,6 +2048,45 @@ ASSEMBLER_TEST_RUN(IntToDoubleConversion2, test) {
|
| }
|
|
|
|
|
| +ASSEMBLER_TEST_GENERATE(Int64ToDoubleConversion, assembler) {
|
| + __ movl(EAX, Immediate(0));
|
| + __ movl(EDX, Immediate(6));
|
| + __ pushl(EAX);
|
| + __ pushl(EDX);
|
| + __ fildl(Address(ESP, 0));
|
| + __ popl(EAX);
|
| + __ popl(EAX);
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +ASSEMBLER_TEST_RUN(Int64ToDoubleConversion, test) {
|
| + typedef double (*Int64ToDoubleConversionCode)();
|
| + double res = reinterpret_cast<Int64ToDoubleConversionCode>(test->entry())();
|
| + EXPECT_EQ(6.0, res);
|
| +}
|
| +
|
| +
|
| +ASSEMBLER_TEST_GENERATE(NegativeInt64ToDoubleConversion, assembler) {
|
| + __ movl(EAX, Immediate(0xFFFFFFFF));
|
| + __ movl(EDX, Immediate(0xFFFFFFFA));
|
| + __ pushl(EAX);
|
| + __ pushl(EDX);
|
| + __ fildl(Address(ESP, 0));
|
| + __ popl(EAX);
|
| + __ popl(EAX);
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +ASSEMBLER_TEST_RUN(NegativeInt64ToDoubleConversion, test) {
|
| + typedef double (*NegativeInt64ToDoubleConversionCode)();
|
| + double res =
|
| + reinterpret_cast<NegativeInt64ToDoubleConversionCode>(test->entry())();
|
| + EXPECT_EQ(-6.0, res);
|
| +}
|
| +
|
| +
|
| ASSEMBLER_TEST_GENERATE(IntToFloatConversion, assembler) {
|
| __ movl(EDX, Immediate(6));
|
| __ cvtsi2ss(XMM1, EDX);
|
|
|