Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: test/cctest/test-assembler-mips.cc

Issue 13483017: Unify the way cctest initalizes the VM for each test case. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fixed presubmit errors. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-assembler-ia32.cc ('k') | test/cctest/test-assembler-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 26 matching lines...) Expand all
37 37
38 using namespace v8::internal; 38 using namespace v8::internal;
39 39
40 40
41 // Define these function prototypes to match JSEntryFunction in execution.cc. 41 // Define these function prototypes to match JSEntryFunction in execution.cc.
42 typedef Object* (*F1)(int x, int p1, int p2, int p3, int p4); 42 typedef Object* (*F1)(int x, int p1, int p2, int p3, int p4);
43 typedef Object* (*F2)(int x, int y, int p2, int p3, int p4); 43 typedef Object* (*F2)(int x, int y, int p2, int p3, int p4);
44 typedef Object* (*F3)(void* p, int p1, int p2, int p3, int p4); 44 typedef Object* (*F3)(void* p, int p1, int p2, int p3, int p4);
45 45
46 46
47 static v8::Persistent<v8::Context> env;
48
49
50 static void InitializeVM() {
51 // Disable compilation of natives.
52 FLAG_disable_native_files = true;
53
54 if (env.IsEmpty()) {
55 env = v8::Context::New();
56 }
57 }
58
59
60 #define __ assm. 47 #define __ assm.
61 48
62 49
63 TEST(MIPS0) { 50 TEST(MIPS0) {
64 InitializeVM(); 51 CcTest::InitializeVM();
65 Isolate* isolate = Isolate::Current(); 52 Isolate* isolate = Isolate::Current();
66 HandleScope scope(isolate); 53 HandleScope scope(isolate);
67 54
68 MacroAssembler assm(isolate, NULL, 0); 55 MacroAssembler assm(isolate, NULL, 0);
69 56
70 // Addition. 57 // Addition.
71 __ addu(v0, a0, a1); 58 __ addu(v0, a0, a1);
72 __ jr(ra); 59 __ jr(ra);
73 __ nop(); 60 __ nop();
74 61
75 CodeDesc desc; 62 CodeDesc desc;
76 assm.GetCode(&desc); 63 assm.GetCode(&desc);
77 Object* code = HEAP->CreateCode( 64 Object* code = HEAP->CreateCode(
78 desc, 65 desc,
79 Code::ComputeFlags(Code::STUB), 66 Code::ComputeFlags(Code::STUB),
80 Handle<Code>())->ToObjectChecked(); 67 Handle<Code>())->ToObjectChecked();
81 CHECK(code->IsCode()); 68 CHECK(code->IsCode());
82 F2 f = FUNCTION_CAST<F2>(Code::cast(code)->entry()); 69 F2 f = FUNCTION_CAST<F2>(Code::cast(code)->entry());
83 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 0xab0, 0xc, 0, 0, 0)); 70 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 0xab0, 0xc, 0, 0, 0));
84 ::printf("f() = %d\n", res); 71 ::printf("f() = %d\n", res);
85 CHECK_EQ(0xabc, res); 72 CHECK_EQ(0xabc, res);
86 } 73 }
87 74
88 75
89 TEST(MIPS1) { 76 TEST(MIPS1) {
90 InitializeVM(); 77 CcTest::InitializeVM();
91 Isolate* isolate = Isolate::Current(); 78 Isolate* isolate = Isolate::Current();
92 HandleScope scope(isolate); 79 HandleScope scope(isolate);
93 80
94 MacroAssembler assm(isolate, NULL, 0); 81 MacroAssembler assm(isolate, NULL, 0);
95 Label L, C; 82 Label L, C;
96 83
97 __ mov(a1, a0); 84 __ mov(a1, a0);
98 __ li(v0, 0); 85 __ li(v0, 0);
99 __ b(&C); 86 __ b(&C);
100 __ nop(); 87 __ nop();
(...skipping 18 matching lines...) Expand all
119 Handle<Code>())->ToObjectChecked(); 106 Handle<Code>())->ToObjectChecked();
120 CHECK(code->IsCode()); 107 CHECK(code->IsCode());
121 F1 f = FUNCTION_CAST<F1>(Code::cast(code)->entry()); 108 F1 f = FUNCTION_CAST<F1>(Code::cast(code)->entry());
122 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 50, 0, 0, 0, 0)); 109 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 50, 0, 0, 0, 0));
123 ::printf("f() = %d\n", res); 110 ::printf("f() = %d\n", res);
124 CHECK_EQ(1275, res); 111 CHECK_EQ(1275, res);
125 } 112 }
126 113
127 114
128 TEST(MIPS2) { 115 TEST(MIPS2) {
129 InitializeVM(); 116 CcTest::InitializeVM();
130 Isolate* isolate = Isolate::Current(); 117 Isolate* isolate = Isolate::Current();
131 HandleScope scope(isolate); 118 HandleScope scope(isolate);
132 119
133 MacroAssembler assm(isolate, NULL, 0); 120 MacroAssembler assm(isolate, NULL, 0);
134 121
135 Label exit, error; 122 Label exit, error;
136 123
137 // ----- Test all instructions. 124 // ----- Test all instructions.
138 125
139 // Test lui, ori, and addiu, used in the li pseudo-instruction. 126 // Test lui, ori, and addiu, used in the li pseudo-instruction.
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 CHECK(code->IsCode()); 248 CHECK(code->IsCode());
262 F2 f = FUNCTION_CAST<F2>(Code::cast(code)->entry()); 249 F2 f = FUNCTION_CAST<F2>(Code::cast(code)->entry());
263 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 0xab0, 0xc, 0, 0, 0)); 250 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 0xab0, 0xc, 0, 0, 0));
264 ::printf("f() = %d\n", res); 251 ::printf("f() = %d\n", res);
265 CHECK_EQ(0x31415926, res); 252 CHECK_EQ(0x31415926, res);
266 } 253 }
267 254
268 255
269 TEST(MIPS3) { 256 TEST(MIPS3) {
270 // Test floating point instructions. 257 // Test floating point instructions.
271 InitializeVM(); 258 CcTest::InitializeVM();
272 Isolate* isolate = Isolate::Current(); 259 Isolate* isolate = Isolate::Current();
273 HandleScope scope(isolate); 260 HandleScope scope(isolate);
274 261
275 typedef struct { 262 typedef struct {
276 double a; 263 double a;
277 double b; 264 double b;
278 double c; 265 double c;
279 double d; 266 double d;
280 double e; 267 double e;
281 double f; 268 double f;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 CHECK_EQ(1.8066e16, t.e); 340 CHECK_EQ(1.8066e16, t.e);
354 CHECK_EQ(120.44, t.f); 341 CHECK_EQ(120.44, t.f);
355 CHECK_EQ(10.97451593465515908537, t.g); 342 CHECK_EQ(10.97451593465515908537, t.g);
356 CHECK_EQ(6.875, t.h); 343 CHECK_EQ(6.875, t.h);
357 } 344 }
358 } 345 }
359 346
360 347
361 TEST(MIPS4) { 348 TEST(MIPS4) {
362 // Test moves between floating point and integer registers. 349 // Test moves between floating point and integer registers.
363 InitializeVM(); 350 CcTest::InitializeVM();
364 Isolate* isolate = Isolate::Current(); 351 Isolate* isolate = Isolate::Current();
365 HandleScope scope(isolate); 352 HandleScope scope(isolate);
366 353
367 typedef struct { 354 typedef struct {
368 double a; 355 double a;
369 double b; 356 double b;
370 double c; 357 double c;
371 } T; 358 } T;
372 T t; 359 T t;
373 360
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 401
415 CHECK_EQ(2.75e11, t.a); 402 CHECK_EQ(2.75e11, t.a);
416 CHECK_EQ(2.75e11, t.b); 403 CHECK_EQ(2.75e11, t.b);
417 CHECK_EQ(1.5e22, t.c); 404 CHECK_EQ(1.5e22, t.c);
418 } 405 }
419 } 406 }
420 407
421 408
422 TEST(MIPS5) { 409 TEST(MIPS5) {
423 // Test conversions between doubles and integers. 410 // Test conversions between doubles and integers.
424 InitializeVM(); 411 CcTest::InitializeVM();
425 Isolate* isolate = Isolate::Current(); 412 Isolate* isolate = Isolate::Current();
426 HandleScope scope(isolate); 413 HandleScope scope(isolate);
427 414
428 typedef struct { 415 typedef struct {
429 double a; 416 double a;
430 double b; 417 double b;
431 int i; 418 int i;
432 int j; 419 int j;
433 } T; 420 } T;
434 T t; 421 T t;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 CHECK_EQ(12345678.0, t.a); 473 CHECK_EQ(12345678.0, t.a);
487 CHECK_EQ(-100000.0, t.b); 474 CHECK_EQ(-100000.0, t.b);
488 CHECK_EQ(15000, t.i); 475 CHECK_EQ(15000, t.i);
489 CHECK_EQ(275000000, t.j); 476 CHECK_EQ(275000000, t.j);
490 } 477 }
491 } 478 }
492 479
493 480
494 TEST(MIPS6) { 481 TEST(MIPS6) {
495 // Test simple memory loads and stores. 482 // Test simple memory loads and stores.
496 InitializeVM(); 483 CcTest::InitializeVM();
497 Isolate* isolate = Isolate::Current(); 484 Isolate* isolate = Isolate::Current();
498 HandleScope scope(isolate); 485 HandleScope scope(isolate);
499 486
500 typedef struct { 487 typedef struct {
501 uint32_t ui; 488 uint32_t ui;
502 int32_t si; 489 int32_t si;
503 int32_t r1; 490 int32_t r1;
504 int32_t r2; 491 int32_t r2;
505 int32_t r3; 492 int32_t r3;
506 int32_t r4; 493 int32_t r4;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 CHECK_EQ(0x3344, t.r2); 546 CHECK_EQ(0x3344, t.r2);
560 CHECK_EQ(0xffffbbcc, t.r3); 547 CHECK_EQ(0xffffbbcc, t.r3);
561 CHECK_EQ(0x0000bbcc, t.r4); 548 CHECK_EQ(0x0000bbcc, t.r4);
562 CHECK_EQ(0xffffffcc, t.r5); 549 CHECK_EQ(0xffffffcc, t.r5);
563 CHECK_EQ(0x3333bbcc, t.r6); 550 CHECK_EQ(0x3333bbcc, t.r6);
564 } 551 }
565 552
566 553
567 TEST(MIPS7) { 554 TEST(MIPS7) {
568 // Test floating point compare and branch instructions. 555 // Test floating point compare and branch instructions.
569 InitializeVM(); 556 CcTest::InitializeVM();
570 Isolate* isolate = Isolate::Current(); 557 Isolate* isolate = Isolate::Current();
571 HandleScope scope(isolate); 558 HandleScope scope(isolate);
572 559
573 typedef struct { 560 typedef struct {
574 double a; 561 double a;
575 double b; 562 double b;
576 double c; 563 double c;
577 double d; 564 double d;
578 double e; 565 double e;
579 double f; 566 double f;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 USE(dummy); 628 USE(dummy);
642 CHECK_EQ(1.5e14, t.a); 629 CHECK_EQ(1.5e14, t.a);
643 CHECK_EQ(2.75e11, t.b); 630 CHECK_EQ(2.75e11, t.b);
644 CHECK_EQ(1, t.result); 631 CHECK_EQ(1, t.result);
645 } 632 }
646 } 633 }
647 634
648 635
649 TEST(MIPS8) { 636 TEST(MIPS8) {
650 // Test ROTR and ROTRV instructions. 637 // Test ROTR and ROTRV instructions.
651 InitializeVM(); 638 CcTest::InitializeVM();
652 Isolate* isolate = Isolate::Current(); 639 Isolate* isolate = Isolate::Current();
653 HandleScope scope(isolate); 640 HandleScope scope(isolate);
654 641
655 typedef struct { 642 typedef struct {
656 int32_t input; 643 int32_t input;
657 int32_t result_rotr_4; 644 int32_t result_rotr_4;
658 int32_t result_rotr_8; 645 int32_t result_rotr_8;
659 int32_t result_rotr_12; 646 int32_t result_rotr_12;
660 int32_t result_rotr_16; 647 int32_t result_rotr_16;
661 int32_t result_rotr_20; 648 int32_t result_rotr_20;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 CHECK_EQ(0x67812345, t.result_rotrv_12); 733 CHECK_EQ(0x67812345, t.result_rotrv_12);
747 CHECK_EQ(0x56781234, t.result_rotrv_16); 734 CHECK_EQ(0x56781234, t.result_rotrv_16);
748 CHECK_EQ(0x45678123, t.result_rotrv_20); 735 CHECK_EQ(0x45678123, t.result_rotrv_20);
749 CHECK_EQ(0x34567812, t.result_rotrv_24); 736 CHECK_EQ(0x34567812, t.result_rotrv_24);
750 CHECK_EQ(0x23456781, t.result_rotrv_28); 737 CHECK_EQ(0x23456781, t.result_rotrv_28);
751 } 738 }
752 739
753 740
754 TEST(MIPS9) { 741 TEST(MIPS9) {
755 // Test BRANCH improvements. 742 // Test BRANCH improvements.
756 InitializeVM(); 743 CcTest::InitializeVM();
757 Isolate* isolate = Isolate::Current(); 744 Isolate* isolate = Isolate::Current();
758 HandleScope scope(isolate); 745 HandleScope scope(isolate);
759 746
760 MacroAssembler assm(isolate, NULL, 0); 747 MacroAssembler assm(isolate, NULL, 0);
761 Label exit, exit2, exit3; 748 Label exit, exit2, exit3;
762 749
763 __ Branch(&exit, ge, a0, Operand(0x00000000)); 750 __ Branch(&exit, ge, a0, Operand(0x00000000));
764 __ Branch(&exit2, ge, a0, Operand(0x00001FFF)); 751 __ Branch(&exit2, ge, a0, Operand(0x00001FFF));
765 __ Branch(&exit3, ge, a0, Operand(0x0001FFFF)); 752 __ Branch(&exit3, ge, a0, Operand(0x0001FFFF));
766 753
767 __ bind(&exit); 754 __ bind(&exit);
768 __ bind(&exit2); 755 __ bind(&exit2);
769 __ bind(&exit3); 756 __ bind(&exit3);
770 __ jr(ra); 757 __ jr(ra);
771 __ nop(); 758 __ nop();
772 759
773 CodeDesc desc; 760 CodeDesc desc;
774 assm.GetCode(&desc); 761 assm.GetCode(&desc);
775 Object* code = HEAP->CreateCode( 762 Object* code = HEAP->CreateCode(
776 desc, 763 desc,
777 Code::ComputeFlags(Code::STUB), 764 Code::ComputeFlags(Code::STUB),
778 Handle<Code>())->ToObjectChecked(); 765 Handle<Code>())->ToObjectChecked();
779 CHECK(code->IsCode()); 766 CHECK(code->IsCode());
780 } 767 }
781 768
782 769
783 TEST(MIPS10) { 770 TEST(MIPS10) {
784 // Test conversions between doubles and long integers. 771 // Test conversions between doubles and long integers.
785 // Test hos the long ints map to FP regs pairs. 772 // Test hos the long ints map to FP regs pairs.
786 InitializeVM(); 773 CcTest::InitializeVM();
787 Isolate* isolate = Isolate::Current(); 774 Isolate* isolate = Isolate::Current();
788 HandleScope scope(isolate); 775 HandleScope scope(isolate);
789 776
790 typedef struct { 777 typedef struct {
791 double a; 778 double a;
792 double b; 779 double b;
793 int32_t dbl_mant; 780 int32_t dbl_mant;
794 int32_t dbl_exp; 781 int32_t dbl_exp;
795 int32_t long_hi; 782 int32_t long_hi;
796 int32_t long_lo; 783 int32_t long_lo;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 CHECK_EQ(0, t.long_hi); 838 CHECK_EQ(0, t.long_hi);
852 CHECK_EQ(0x7fffffff, t.long_lo); 839 CHECK_EQ(0x7fffffff, t.long_lo);
853 // 0xFF00FF00FF -> 1.095233372415e12. 840 // 0xFF00FF00FF -> 1.095233372415e12.
854 CHECK_EQ(1.095233372415e12, t.b); 841 CHECK_EQ(1.095233372415e12, t.b);
855 } 842 }
856 } 843 }
857 844
858 845
859 TEST(MIPS11) { 846 TEST(MIPS11) {
860 // Test LWL, LWR, SWL and SWR instructions. 847 // Test LWL, LWR, SWL and SWR instructions.
861 InitializeVM(); 848 CcTest::InitializeVM();
862 Isolate* isolate = Isolate::Current(); 849 Isolate* isolate = Isolate::Current();
863 HandleScope scope(isolate); 850 HandleScope scope(isolate);
864 851
865 typedef struct { 852 typedef struct {
866 int32_t reg_init; 853 int32_t reg_init;
867 int32_t mem_init; 854 int32_t mem_init;
868 int32_t lwl_0; 855 int32_t lwl_0;
869 int32_t lwl_1; 856 int32_t lwl_1;
870 int32_t lwl_2; 857 int32_t lwl_2;
871 int32_t lwl_3; 858 int32_t lwl_3;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 CHECK_EQ(0xaabbccdd, t.swl_3); 982 CHECK_EQ(0xaabbccdd, t.swl_3);
996 983
997 CHECK_EQ(0xaabbccdd, t.swr_0); 984 CHECK_EQ(0xaabbccdd, t.swr_0);
998 CHECK_EQ(0xbbccdd44, t.swr_1); 985 CHECK_EQ(0xbbccdd44, t.swr_1);
999 CHECK_EQ(0xccdd3344, t.swr_2); 986 CHECK_EQ(0xccdd3344, t.swr_2);
1000 CHECK_EQ(0xdd223344, t.swr_3); 987 CHECK_EQ(0xdd223344, t.swr_3);
1001 } 988 }
1002 989
1003 990
1004 TEST(MIPS12) { 991 TEST(MIPS12) {
1005 InitializeVM(); 992 CcTest::InitializeVM();
1006 Isolate* isolate = Isolate::Current(); 993 Isolate* isolate = Isolate::Current();
1007 HandleScope scope(isolate); 994 HandleScope scope(isolate);
1008 995
1009 typedef struct { 996 typedef struct {
1010 int32_t x; 997 int32_t x;
1011 int32_t y; 998 int32_t y;
1012 int32_t y1; 999 int32_t y1;
1013 int32_t y2; 1000 int32_t y2;
1014 int32_t y3; 1001 int32_t y3;
1015 int32_t y4; 1002 int32_t y4;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 1074
1088 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); 1075 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0);
1089 USE(dummy); 1076 USE(dummy);
1090 1077
1091 CHECK_EQ(3, t.y1); 1078 CHECK_EQ(3, t.y1);
1092 } 1079 }
1093 1080
1094 1081
1095 TEST(MIPS13) { 1082 TEST(MIPS13) {
1096 // Test Cvt_d_uw and Trunc_uw_d macros. 1083 // Test Cvt_d_uw and Trunc_uw_d macros.
1097 InitializeVM(); 1084 CcTest::InitializeVM();
1098 Isolate* isolate = Isolate::Current(); 1085 Isolate* isolate = Isolate::Current();
1099 HandleScope scope(isolate); 1086 HandleScope scope(isolate);
1100 1087
1101 typedef struct { 1088 typedef struct {
1102 double cvt_big_out; 1089 double cvt_big_out;
1103 double cvt_small_out; 1090 double cvt_small_out;
1104 uint32_t trunc_big_out; 1091 uint32_t trunc_big_out;
1105 uint32_t trunc_small_out; 1092 uint32_t trunc_small_out;
1106 uint32_t cvt_big_in; 1093 uint32_t cvt_big_in;
1107 uint32_t cvt_small_in; 1094 uint32_t cvt_small_in;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 1137
1151 CHECK_EQ(static_cast<int>(t.trunc_big_out), static_cast<int>(t.cvt_big_in)); 1138 CHECK_EQ(static_cast<int>(t.trunc_big_out), static_cast<int>(t.cvt_big_in));
1152 CHECK_EQ(static_cast<int>(t.trunc_small_out), 1139 CHECK_EQ(static_cast<int>(t.trunc_small_out),
1153 static_cast<int>(t.cvt_small_in)); 1140 static_cast<int>(t.cvt_small_in));
1154 } 1141 }
1155 } 1142 }
1156 1143
1157 1144
1158 TEST(MIPS14) { 1145 TEST(MIPS14) {
1159 // Test round, floor, ceil, trunc, cvt. 1146 // Test round, floor, ceil, trunc, cvt.
1160 InitializeVM(); 1147 CcTest::InitializeVM();
1161 Isolate* isolate = Isolate::Current(); 1148 Isolate* isolate = Isolate::Current();
1162 HandleScope scope(isolate); 1149 HandleScope scope(isolate);
1163 1150
1164 #define ROUND_STRUCT_ELEMENT(x) \ 1151 #define ROUND_STRUCT_ELEMENT(x) \
1165 int32_t x##_up_out; \ 1152 int32_t x##_up_out; \
1166 int32_t x##_down_out; \ 1153 int32_t x##_down_out; \
1167 int32_t neg_##x##_up_out; \ 1154 int32_t neg_##x##_up_out; \
1168 int32_t neg_##x##_down_out; \ 1155 int32_t neg_##x##_down_out; \
1169 uint32_t x##_err1_out; \ 1156 uint32_t x##_err1_out; \
1170 uint32_t x##_err2_out; \ 1157 uint32_t x##_err2_out; \
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 CHECK_ROUND_RESULT(round); 1274 CHECK_ROUND_RESULT(round);
1288 CHECK_ROUND_RESULT(floor); 1275 CHECK_ROUND_RESULT(floor);
1289 CHECK_ROUND_RESULT(ceil); 1276 CHECK_ROUND_RESULT(ceil);
1290 CHECK_ROUND_RESULT(cvt); 1277 CHECK_ROUND_RESULT(cvt);
1291 } 1278 }
1292 } 1279 }
1293 1280
1294 1281
1295 TEST(MIPS15) { 1282 TEST(MIPS15) {
1296 // Test chaining of label usages within instructions (issue 1644). 1283 // Test chaining of label usages within instructions (issue 1644).
1297 InitializeVM(); 1284 CcTest::InitializeVM();
1298 Isolate* isolate = Isolate::Current(); 1285 Isolate* isolate = Isolate::Current();
1299 HandleScope scope(isolate); 1286 HandleScope scope(isolate);
1300 Assembler assm(isolate, NULL, 0); 1287 Assembler assm(isolate, NULL, 0);
1301 1288
1302 Label target; 1289 Label target;
1303 __ beq(v0, v1, &target); 1290 __ beq(v0, v1, &target);
1304 __ nop(); 1291 __ nop();
1305 __ bne(v0, v1, &target); 1292 __ bne(v0, v1, &target);
1306 __ nop(); 1293 __ nop();
1307 __ bind(&target); 1294 __ bind(&target);
1308 __ nop(); 1295 __ nop();
1309 } 1296 }
1310 1297
1311 #undef __ 1298 #undef __
OLDNEW
« no previous file with comments | « test/cctest/test-assembler-ia32.cc ('k') | test/cctest/test-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698