| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/cpu.h" | 9 #include "vm/cpu.h" |
| 10 #include "vm/os.h" | 10 #include "vm/os.h" |
| (...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 | 615 |
| 616 ASSEMBLER_TEST_RUN(Slt, test) { | 616 ASSEMBLER_TEST_RUN(Slt, test) { |
| 617 typedef int (*SimpleCode)() DART_UNUSED; | 617 typedef int (*SimpleCode)() DART_UNUSED; |
| 618 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 618 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 619 } | 619 } |
| 620 | 620 |
| 621 | 621 |
| 622 ASSEMBLER_TEST_GENERATE(Sltu, assembler) { | 622 ASSEMBLER_TEST_GENERATE(Sltu, assembler) { |
| 623 __ LoadImmediate(T1, -1); | 623 __ LoadImmediate(T1, -1); |
| 624 __ LoadImmediate(T2, 0); | 624 __ LoadImmediate(T2, 0); |
| 625 __ sltu(V0, T1, T2); | 625 __ sltu(V0, T1, T2); // 0xffffffffUL < 0 -> 0. |
| 626 __ jr(RA); | 626 __ jr(RA); |
| 627 } | 627 } |
| 628 | 628 |
| 629 | 629 |
| 630 ASSEMBLER_TEST_RUN(Sltu, test) { | 630 ASSEMBLER_TEST_RUN(Sltu, test) { |
| 631 typedef int (*SimpleCode)() DART_UNUSED; | 631 typedef int (*SimpleCode)() DART_UNUSED; |
| 632 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 632 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 633 } | 633 } |
| 634 | 634 |
| 635 | 635 |
| 636 ASSEMBLER_TEST_GENERATE(Slti, assembler) { |
| 637 __ LoadImmediate(T1, -2); |
| 638 __ slti(A0, T1, Immediate(-1)); // -2 < -1 -> 1. |
| 639 __ slti(A1, T1, Immediate(0)); // -2 < 0 -> 1. |
| 640 __ and_(V0, A0, A1); |
| 641 __ jr(RA); |
| 642 } |
| 643 |
| 644 |
| 645 ASSEMBLER_TEST_RUN(Slti, test) { |
| 646 typedef int (*SimpleCode)() DART_UNUSED; |
| 647 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 648 } |
| 649 |
| 650 |
| 651 ASSEMBLER_TEST_GENERATE(Sltiu, assembler) { |
| 652 __ LoadImmediate(T1, -1); |
| 653 __ LoadImmediate(T2, 0x10000); |
| 654 __ sltiu(A0, T1, Immediate(-2)); // 0xffffffffUL < 0xfffffffeUL -> 0. |
| 655 __ sltiu(A1, T1, Immediate(0)); // 0xffffffffUL < 0 -> 0. |
| 656 __ sltiu(A2, T2, Immediate(-2)); // 0x10000UL < 0xfffffffeUL -> 1. |
| 657 __ addiu(A2, A2, Immediate(-1)); |
| 658 __ or_(V0, A0, A1); |
| 659 __ or_(V0, V0, A2); |
| 660 __ jr(RA); |
| 661 } |
| 662 |
| 663 |
| 664 ASSEMBLER_TEST_RUN(Sltiu, test) { |
| 665 typedef int (*SimpleCode)() DART_UNUSED; |
| 666 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 667 } |
| 668 |
| 669 |
| 636 ASSEMBLER_TEST_GENERATE(Movz, assembler) { | 670 ASSEMBLER_TEST_GENERATE(Movz, assembler) { |
| 637 __ LoadImmediate(T1, 42); | 671 __ LoadImmediate(T1, 42); |
| 638 __ LoadImmediate(T2, 23); | 672 __ LoadImmediate(T2, 23); |
| 639 __ slt(T3, T1, T2); | 673 __ slt(T3, T1, T2); |
| 640 __ movz(V0, T1, T3); | 674 __ movz(V0, T1, T3); |
| 641 __ jr(RA); | 675 __ jr(RA); |
| 642 } | 676 } |
| 643 | 677 |
| 644 | 678 |
| 645 ASSEMBLER_TEST_RUN(Movz, test) { | 679 ASSEMBLER_TEST_RUN(Movz, test) { |
| (...skipping 1416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2062 A1); | 2096 A1); |
| 2063 __ lw(RA, Address(SP, 0 * kWordSize)); | 2097 __ lw(RA, Address(SP, 0 * kWordSize)); |
| 2064 __ lw(CTX, Address(SP, 1 * kWordSize)); | 2098 __ lw(CTX, Address(SP, 1 * kWordSize)); |
| 2065 __ addiu(SP, SP, Immediate(2 * kWordSize)); | 2099 __ addiu(SP, SP, Immediate(2 * kWordSize)); |
| 2066 __ Ret(); | 2100 __ Ret(); |
| 2067 } | 2101 } |
| 2068 | 2102 |
| 2069 } // namespace dart | 2103 } // namespace dart |
| 2070 | 2104 |
| 2071 #endif // defined TARGET_ARCH_MIPS | 2105 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |