OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
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 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 __ movl(EAX, Immediate(0)); | 545 __ movl(EAX, Immediate(0)); |
546 __ movl(Address(EAX, 0), EAX); | 546 __ movl(Address(EAX, 0), EAX); |
547 __ Bind(&donetest13); | 547 __ Bind(&donetest13); |
548 | 548 |
549 Label donetest14; | 549 Label donetest14; |
550 __ subl(ESP, Immediate(kWordSize)); | 550 __ subl(ESP, Immediate(kWordSize)); |
551 __ movl(Address(ESP, 0), Immediate(0x80000000)); | 551 __ movl(Address(ESP, 0), Immediate(0x80000000)); |
552 __ movl(EAX, Immediate(0)); | 552 __ movl(EAX, Immediate(0)); |
553 __ movl(ECX, Immediate(3)); | 553 __ movl(ECX, Immediate(3)); |
554 __ sarl(Address(ESP, 0), ECX); | 554 __ sarl(Address(ESP, 0), ECX); |
555 __ shrd(Address(ESP, 0), EAX); | 555 __ shrdl(Address(ESP, 0), EAX); |
556 __ cmpl(Address(ESP, 0), Immediate(0x1e000000)); | 556 __ cmpl(Address(ESP, 0), Immediate(0x1e000000)); |
557 __ j(EQUAL, &donetest14); | 557 __ j(EQUAL, &donetest14); |
558 __ int3(); | 558 __ int3(); |
559 __ Bind(&donetest14); | 559 __ Bind(&donetest14); |
560 __ addl(ESP, Immediate(kWordSize)); | 560 __ addl(ESP, Immediate(kWordSize)); |
561 | 561 |
562 Label donetest15; | 562 Label donetest15; |
563 __ subl(ESP, Immediate(kWordSize)); | 563 __ subl(ESP, Immediate(kWordSize)); |
564 __ movl(Address(ESP, 0), Immediate(0xFF000000)); | 564 __ movl(Address(ESP, 0), Immediate(0xFF000000)); |
565 __ movl(EAX, Immediate(-1)); | 565 __ movl(EAX, Immediate(-1)); |
566 __ movl(ECX, Immediate(2)); | 566 __ movl(ECX, Immediate(2)); |
567 __ shll(Address(ESP, 0), ECX); | 567 __ shll(Address(ESP, 0), ECX); |
568 __ shld(Address(ESP, 0), EAX); | 568 __ shldl(Address(ESP, 0), EAX); |
569 __ cmpl(Address(ESP, 0), Immediate(0xF0000003)); | 569 __ cmpl(Address(ESP, 0), Immediate(0xF0000003)); |
570 __ j(EQUAL, &donetest15); | 570 __ j(EQUAL, &donetest15); |
571 __ int3(); | 571 __ int3(); |
572 __ Bind(&donetest15); | 572 __ Bind(&donetest15); |
573 __ addl(ESP, Immediate(kWordSize)); | 573 __ addl(ESP, Immediate(kWordSize)); |
574 | 574 |
575 Label donetest16; | 575 Label donetest16; |
576 __ movl(EDX, Immediate(0x80000000)); | 576 __ movl(EDX, Immediate(0x80000000)); |
577 __ movl(EAX, Immediate(0)); | 577 __ movl(EAX, Immediate(0)); |
578 __ movl(ECX, Immediate(3)); | 578 __ movl(ECX, Immediate(3)); |
579 __ sarl(EDX, Immediate(3)); | 579 __ sarl(EDX, Immediate(3)); |
580 __ shrd(EDX, EAX, Immediate(3)); | 580 __ shrdl(EDX, EAX, Immediate(3)); |
581 __ cmpl(EDX, Immediate(0x1e000000)); | 581 __ cmpl(EDX, Immediate(0x1e000000)); |
582 __ j(EQUAL, &donetest16); | 582 __ j(EQUAL, &donetest16); |
583 __ int3(); | 583 __ int3(); |
584 __ Bind(&donetest16); | 584 __ Bind(&donetest16); |
585 | 585 |
586 Label donetest17; | 586 Label donetest17; |
587 __ movl(EDX, Immediate(0xFF000000)); | 587 __ movl(EDX, Immediate(0xFF000000)); |
588 __ movl(EAX, Immediate(-1)); | 588 __ movl(EAX, Immediate(-1)); |
589 __ shll(EDX, Immediate(2)); | 589 __ shll(EDX, Immediate(2)); |
590 __ shld(EDX, EAX, Immediate(2)); | 590 __ shldl(EDX, EAX, Immediate(2)); |
591 __ cmpl(EDX, Immediate(0xF0000003)); | 591 __ cmpl(EDX, Immediate(0xF0000003)); |
592 __ j(EQUAL, &donetest17); | 592 __ j(EQUAL, &donetest17); |
593 __ int3(); | 593 __ int3(); |
594 __ Bind(&donetest17); | 594 __ Bind(&donetest17); |
595 | 595 |
596 __ movl(EAX, Immediate(0)); | 596 __ movl(EAX, Immediate(0)); |
597 __ ret(); | 597 __ ret(); |
598 } | 598 } |
599 | 599 |
600 | 600 |
(...skipping 2794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3395 | 3395 |
3396 ASSEMBLER_TEST_RUN(BitTest, test) { | 3396 ASSEMBLER_TEST_RUN(BitTest, test) { |
3397 typedef int (*BitTest)(); | 3397 typedef int (*BitTest)(); |
3398 EXPECT_EQ(1, reinterpret_cast<BitTest>(test->entry())()); | 3398 EXPECT_EQ(1, reinterpret_cast<BitTest>(test->entry())()); |
3399 } | 3399 } |
3400 | 3400 |
3401 | 3401 |
3402 } // namespace dart | 3402 } // namespace dart |
3403 | 3403 |
3404 #endif // defined TARGET_ARCH_IA32 | 3404 #endif // defined TARGET_ARCH_IA32 |
OLD | NEW |