| OLD | NEW |
| 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 // Addition. | 65 // Addition. |
| 66 __ addu(v0, a0, a1); | 66 __ addu(v0, a0, a1); |
| 67 __ jr(ra); | 67 __ jr(ra); |
| 68 __ nop(); | 68 __ nop(); |
| 69 | 69 |
| 70 CodeDesc desc; | 70 CodeDesc desc; |
| 71 assm.GetCode(&desc); | 71 assm.GetCode(&desc); |
| 72 Handle<Code> code = isolate->factory()->NewCode( | 72 Handle<Code> code = isolate->factory()->NewCode( |
| 73 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 73 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 74 F2 f = FUNCTION_CAST<F2>(code->entry()); | 74 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 75 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 0xab0, 0xc, 0, 0, 0)); | 75 int res = reinterpret_cast<int>( |
| 76 CALL_GENERATED_CODE(isolate, f, 0xab0, 0xc, 0, 0, 0)); |
| 76 CHECK_EQ(static_cast<int32_t>(0xabc), res); | 77 CHECK_EQ(static_cast<int32_t>(0xabc), res); |
| 77 } | 78 } |
| 78 | 79 |
| 79 | 80 |
| 80 TEST(MIPS1) { | 81 TEST(MIPS1) { |
| 81 CcTest::InitializeVM(); | 82 CcTest::InitializeVM(); |
| 82 Isolate* isolate = CcTest::i_isolate(); | 83 Isolate* isolate = CcTest::i_isolate(); |
| 83 HandleScope scope(isolate); | 84 HandleScope scope(isolate); |
| 84 | 85 |
| 85 MacroAssembler assm(isolate, NULL, 0); | 86 MacroAssembler assm(isolate, NULL, 0); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 100 __ nop(); | 101 __ nop(); |
| 101 | 102 |
| 102 __ jr(ra); | 103 __ jr(ra); |
| 103 __ nop(); | 104 __ nop(); |
| 104 | 105 |
| 105 CodeDesc desc; | 106 CodeDesc desc; |
| 106 assm.GetCode(&desc); | 107 assm.GetCode(&desc); |
| 107 Handle<Code> code = isolate->factory()->NewCode( | 108 Handle<Code> code = isolate->factory()->NewCode( |
| 108 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 109 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 109 F1 f = FUNCTION_CAST<F1>(code->entry()); | 110 F1 f = FUNCTION_CAST<F1>(code->entry()); |
| 110 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 50, 0, 0, 0, 0)); | 111 int res = reinterpret_cast<int>( |
| 112 CALL_GENERATED_CODE(isolate, f, 50, 0, 0, 0, 0)); |
| 111 CHECK_EQ(1275, res); | 113 CHECK_EQ(1275, res); |
| 112 } | 114 } |
| 113 | 115 |
| 114 | 116 |
| 115 TEST(MIPS2) { | 117 TEST(MIPS2) { |
| 116 CcTest::InitializeVM(); | 118 CcTest::InitializeVM(); |
| 117 Isolate* isolate = CcTest::i_isolate(); | 119 Isolate* isolate = CcTest::i_isolate(); |
| 118 HandleScope scope(isolate); | 120 HandleScope scope(isolate); |
| 119 | 121 |
| 120 MacroAssembler assm(isolate, NULL, 0); | 122 MacroAssembler assm(isolate, NULL, 0); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 | 239 |
| 238 __ bind(&exit); | 240 __ bind(&exit); |
| 239 __ jr(ra); | 241 __ jr(ra); |
| 240 __ nop(); | 242 __ nop(); |
| 241 | 243 |
| 242 CodeDesc desc; | 244 CodeDesc desc; |
| 243 assm.GetCode(&desc); | 245 assm.GetCode(&desc); |
| 244 Handle<Code> code = isolate->factory()->NewCode( | 246 Handle<Code> code = isolate->factory()->NewCode( |
| 245 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 247 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 246 F2 f = FUNCTION_CAST<F2>(code->entry()); | 248 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 247 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, 0xab0, 0xc, 0, 0, 0)); | 249 int res = reinterpret_cast<int>( |
| 250 CALL_GENERATED_CODE(isolate, f, 0xab0, 0xc, 0, 0, 0)); |
| 248 CHECK_EQ(static_cast<int32_t>(0x31415926), res); | 251 CHECK_EQ(static_cast<int32_t>(0x31415926), res); |
| 249 } | 252 } |
| 250 | 253 |
| 251 | 254 |
| 252 TEST(MIPS3) { | 255 TEST(MIPS3) { |
| 253 // Test floating point instructions. | 256 // Test floating point instructions. |
| 254 CcTest::InitializeVM(); | 257 CcTest::InitializeVM(); |
| 255 Isolate* isolate = CcTest::i_isolate(); | 258 Isolate* isolate = CcTest::i_isolate(); |
| 256 HandleScope scope(isolate); | 259 HandleScope scope(isolate); |
| 257 | 260 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 t.f = 0.0; | 357 t.f = 0.0; |
| 355 t.h = 1.5; | 358 t.h = 1.5; |
| 356 t.i = 2.75; | 359 t.i = 2.75; |
| 357 // Single test values. | 360 // Single test values. |
| 358 t.fa = 1.5e6; | 361 t.fa = 1.5e6; |
| 359 t.fb = 2.75e4; | 362 t.fb = 2.75e4; |
| 360 t.fc = 0.0; | 363 t.fc = 0.0; |
| 361 t.fd = 0.0; | 364 t.fd = 0.0; |
| 362 t.fe = 0.0; | 365 t.fe = 0.0; |
| 363 t.ff = 0.0; | 366 t.ff = 0.0; |
| 364 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 367 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 365 USE(dummy); | 368 USE(dummy); |
| 366 // Expected double results. | 369 // Expected double results. |
| 367 CHECK_EQ(1.5e14, t.a); | 370 CHECK_EQ(1.5e14, t.a); |
| 368 CHECK_EQ(1.5e14, t.b); | 371 CHECK_EQ(1.5e14, t.b); |
| 369 CHECK_EQ(1.50275e14, t.c); | 372 CHECK_EQ(1.50275e14, t.c); |
| 370 CHECK_EQ(1.50550e14, t.d); | 373 CHECK_EQ(1.50550e14, t.d); |
| 371 CHECK_EQ(1.8066e16, t.e); | 374 CHECK_EQ(1.8066e16, t.e); |
| 372 CHECK_EQ(120.44, t.f); | 375 CHECK_EQ(120.44, t.f); |
| 373 CHECK_EQ(10.97451593465515908537, t.g); | 376 CHECK_EQ(10.97451593465515908537, t.g); |
| 374 if (IsMipsArchVariant(kMips32r2)) { | 377 if (IsMipsArchVariant(kMips32r2)) { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 __ nop(); | 438 __ nop(); |
| 436 | 439 |
| 437 CodeDesc desc; | 440 CodeDesc desc; |
| 438 assm.GetCode(&desc); | 441 assm.GetCode(&desc); |
| 439 Handle<Code> code = isolate->factory()->NewCode( | 442 Handle<Code> code = isolate->factory()->NewCode( |
| 440 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 443 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 441 F3 f = FUNCTION_CAST<F3>(code->entry()); | 444 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 442 t.a = 1.5e22; | 445 t.a = 1.5e22; |
| 443 t.b = 2.75e11; | 446 t.b = 2.75e11; |
| 444 t.c = 17.17; | 447 t.c = 17.17; |
| 445 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 448 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 446 USE(dummy); | 449 USE(dummy); |
| 447 | 450 |
| 448 CHECK_EQ(2.75e11, t.a); | 451 CHECK_EQ(2.75e11, t.a); |
| 449 CHECK_EQ(2.75e11, t.b); | 452 CHECK_EQ(2.75e11, t.b); |
| 450 CHECK_EQ(1.5e22, t.c); | 453 CHECK_EQ(1.5e22, t.c); |
| 451 } | 454 } |
| 452 | 455 |
| 453 | 456 |
| 454 TEST(MIPS5) { | 457 TEST(MIPS5) { |
| 455 // Test conversions between doubles and integers. | 458 // Test conversions between doubles and integers. |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 | 502 |
| 500 CodeDesc desc; | 503 CodeDesc desc; |
| 501 assm.GetCode(&desc); | 504 assm.GetCode(&desc); |
| 502 Handle<Code> code = isolate->factory()->NewCode( | 505 Handle<Code> code = isolate->factory()->NewCode( |
| 503 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 506 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 504 F3 f = FUNCTION_CAST<F3>(code->entry()); | 507 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 505 t.a = 1.5e4; | 508 t.a = 1.5e4; |
| 506 t.b = 2.75e8; | 509 t.b = 2.75e8; |
| 507 t.i = 12345678; | 510 t.i = 12345678; |
| 508 t.j = -100000; | 511 t.j = -100000; |
| 509 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 512 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 510 USE(dummy); | 513 USE(dummy); |
| 511 | 514 |
| 512 CHECK_EQ(12345678.0, t.a); | 515 CHECK_EQ(12345678.0, t.a); |
| 513 CHECK_EQ(-100000.0, t.b); | 516 CHECK_EQ(-100000.0, t.b); |
| 514 CHECK_EQ(15000, t.i); | 517 CHECK_EQ(15000, t.i); |
| 515 CHECK_EQ(275000000, t.j); | 518 CHECK_EQ(275000000, t.j); |
| 516 } | 519 } |
| 517 | 520 |
| 518 | 521 |
| 519 TEST(MIPS6) { | 522 TEST(MIPS6) { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 __ jr(ra); | 570 __ jr(ra); |
| 568 __ nop(); | 571 __ nop(); |
| 569 | 572 |
| 570 CodeDesc desc; | 573 CodeDesc desc; |
| 571 assm.GetCode(&desc); | 574 assm.GetCode(&desc); |
| 572 Handle<Code> code = isolate->factory()->NewCode( | 575 Handle<Code> code = isolate->factory()->NewCode( |
| 573 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 576 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 574 F3 f = FUNCTION_CAST<F3>(code->entry()); | 577 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 575 t.ui = 0x11223344; | 578 t.ui = 0x11223344; |
| 576 t.si = 0x99aabbcc; | 579 t.si = 0x99aabbcc; |
| 577 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 580 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 578 USE(dummy); | 581 USE(dummy); |
| 579 | 582 |
| 580 CHECK_EQ(static_cast<int32_t>(0x11223344), t.r1); | 583 CHECK_EQ(static_cast<int32_t>(0x11223344), t.r1); |
| 581 #if __BYTE_ORDER == __LITTLE_ENDIAN | 584 #if __BYTE_ORDER == __LITTLE_ENDIAN |
| 582 CHECK_EQ(static_cast<int32_t>(0x3344), t.r2); | 585 CHECK_EQ(static_cast<int32_t>(0x3344), t.r2); |
| 583 CHECK_EQ(static_cast<int32_t>(0xffffbbcc), t.r3); | 586 CHECK_EQ(static_cast<int32_t>(0xffffbbcc), t.r3); |
| 584 CHECK_EQ(static_cast<int32_t>(0x0000bbcc), t.r4); | 587 CHECK_EQ(static_cast<int32_t>(0x0000bbcc), t.r4); |
| 585 CHECK_EQ(static_cast<int32_t>(0xffffffcc), t.r5); | 588 CHECK_EQ(static_cast<int32_t>(0xffffffcc), t.r5); |
| 586 CHECK_EQ(static_cast<int32_t>(0x3333bbcc), t.r6); | 589 CHECK_EQ(static_cast<int32_t>(0x3333bbcc), t.r6); |
| 587 #elif __BYTE_ORDER == __BIG_ENDIAN | 590 #elif __BYTE_ORDER == __BIG_ENDIAN |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 Handle<Code> code = isolate->factory()->NewCode( | 668 Handle<Code> code = isolate->factory()->NewCode( |
| 666 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 669 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 667 F3 f = FUNCTION_CAST<F3>(code->entry()); | 670 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 668 t.a = 1.5e14; | 671 t.a = 1.5e14; |
| 669 t.b = 2.75e11; | 672 t.b = 2.75e11; |
| 670 t.c = 2.0; | 673 t.c = 2.0; |
| 671 t.d = -4.0; | 674 t.d = -4.0; |
| 672 t.e = 0.0; | 675 t.e = 0.0; |
| 673 t.f = 0.0; | 676 t.f = 0.0; |
| 674 t.result = 0; | 677 t.result = 0; |
| 675 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 678 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 676 USE(dummy); | 679 USE(dummy); |
| 677 CHECK_EQ(1.5e14, t.a); | 680 CHECK_EQ(1.5e14, t.a); |
| 678 CHECK_EQ(2.75e11, t.b); | 681 CHECK_EQ(2.75e11, t.b); |
| 679 CHECK_EQ(1, t.result); | 682 CHECK_EQ(1, t.result); |
| 680 } | 683 } |
| 681 | 684 |
| 682 | 685 |
| 683 TEST(MIPS8) { | 686 TEST(MIPS8) { |
| 684 // Test ROTR and ROTRV instructions. | 687 // Test ROTR and ROTRV instructions. |
| 685 if (IsMipsArchVariant(kMips32r2)) { | 688 if (IsMipsArchVariant(kMips32r2)) { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 | 759 |
| 757 __ jr(ra); | 760 __ jr(ra); |
| 758 __ nop(); | 761 __ nop(); |
| 759 | 762 |
| 760 CodeDesc desc; | 763 CodeDesc desc; |
| 761 assm.GetCode(&desc); | 764 assm.GetCode(&desc); |
| 762 Handle<Code> code = isolate->factory()->NewCode( | 765 Handle<Code> code = isolate->factory()->NewCode( |
| 763 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 766 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 764 F3 f = FUNCTION_CAST<F3>(code->entry()); | 767 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 765 t.input = 0x12345678; | 768 t.input = 0x12345678; |
| 766 Object* dummy = CALL_GENERATED_CODE(f, &t, 0x0, 0, 0, 0); | 769 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0x0, 0, 0, 0); |
| 767 USE(dummy); | 770 USE(dummy); |
| 768 CHECK_EQ(static_cast<int32_t>(0x81234567), t.result_rotr_4); | 771 CHECK_EQ(static_cast<int32_t>(0x81234567), t.result_rotr_4); |
| 769 CHECK_EQ(static_cast<int32_t>(0x78123456), t.result_rotr_8); | 772 CHECK_EQ(static_cast<int32_t>(0x78123456), t.result_rotr_8); |
| 770 CHECK_EQ(static_cast<int32_t>(0x67812345), t.result_rotr_12); | 773 CHECK_EQ(static_cast<int32_t>(0x67812345), t.result_rotr_12); |
| 771 CHECK_EQ(static_cast<int32_t>(0x56781234), t.result_rotr_16); | 774 CHECK_EQ(static_cast<int32_t>(0x56781234), t.result_rotr_16); |
| 772 CHECK_EQ(static_cast<int32_t>(0x45678123), t.result_rotr_20); | 775 CHECK_EQ(static_cast<int32_t>(0x45678123), t.result_rotr_20); |
| 773 CHECK_EQ(static_cast<int32_t>(0x34567812), t.result_rotr_24); | 776 CHECK_EQ(static_cast<int32_t>(0x34567812), t.result_rotr_24); |
| 774 CHECK_EQ(static_cast<int32_t>(0x23456781), t.result_rotr_28); | 777 CHECK_EQ(static_cast<int32_t>(0x23456781), t.result_rotr_28); |
| 775 | 778 |
| 776 CHECK_EQ(static_cast<int32_t>(0x81234567), t.result_rotrv_4); | 779 CHECK_EQ(static_cast<int32_t>(0x81234567), t.result_rotrv_4); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 864 __ jr(ra); | 867 __ jr(ra); |
| 865 __ nop(); | 868 __ nop(); |
| 866 | 869 |
| 867 CodeDesc desc; | 870 CodeDesc desc; |
| 868 assm.GetCode(&desc); | 871 assm.GetCode(&desc); |
| 869 Handle<Code> code = isolate->factory()->NewCode( | 872 Handle<Code> code = isolate->factory()->NewCode( |
| 870 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 873 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 871 F3 f = FUNCTION_CAST<F3>(code->entry()); | 874 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 872 t.a = 2.147483646e+09; // 0x7FFFFFFE -> 0xFF80000041DFFFFF as double. | 875 t.a = 2.147483646e+09; // 0x7FFFFFFE -> 0xFF80000041DFFFFF as double. |
| 873 t.b_word = 0x0ff00ff0; // 0x0FF00FF0 -> 0x as double. | 876 t.b_word = 0x0ff00ff0; // 0x0FF00FF0 -> 0x as double. |
| 874 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 877 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 875 USE(dummy); | 878 USE(dummy); |
| 876 CHECK_EQ(static_cast<int32_t>(0x41DFFFFF), t.dbl_exp); | 879 CHECK_EQ(static_cast<int32_t>(0x41DFFFFF), t.dbl_exp); |
| 877 CHECK_EQ(static_cast<int32_t>(0xFF800000), t.dbl_mant); | 880 CHECK_EQ(static_cast<int32_t>(0xFF800000), t.dbl_mant); |
| 878 CHECK_EQ(static_cast<int32_t>(0x7FFFFFFE), t.word); | 881 CHECK_EQ(static_cast<int32_t>(0x7FFFFFFE), t.word); |
| 879 // 0x0FF00FF0 -> 2.6739096+e08 | 882 // 0x0FF00FF0 -> 2.6739096+e08 |
| 880 CHECK_EQ(2.6739096e08, t.b); | 883 CHECK_EQ(2.6739096e08, t.b); |
| 881 } | 884 } |
| 882 | 885 |
| 883 | 886 |
| 884 TEST(MIPS11) { | 887 TEST(MIPS11) { |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 __ nop(); | 996 __ nop(); |
| 994 | 997 |
| 995 CodeDesc desc; | 998 CodeDesc desc; |
| 996 assm.GetCode(&desc); | 999 assm.GetCode(&desc); |
| 997 Handle<Code> code = isolate->factory()->NewCode( | 1000 Handle<Code> code = isolate->factory()->NewCode( |
| 998 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1001 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 999 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1002 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1000 t.reg_init = 0xaabbccdd; | 1003 t.reg_init = 0xaabbccdd; |
| 1001 t.mem_init = 0x11223344; | 1004 t.mem_init = 0x11223344; |
| 1002 | 1005 |
| 1003 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 1006 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 1004 USE(dummy); | 1007 USE(dummy); |
| 1005 | 1008 |
| 1006 #if __BYTE_ORDER == __LITTLE_ENDIAN | 1009 #if __BYTE_ORDER == __LITTLE_ENDIAN |
| 1007 CHECK_EQ(static_cast<int32_t>(0x44bbccdd), t.lwl_0); | 1010 CHECK_EQ(static_cast<int32_t>(0x44bbccdd), t.lwl_0); |
| 1008 CHECK_EQ(static_cast<int32_t>(0x3344ccdd), t.lwl_1); | 1011 CHECK_EQ(static_cast<int32_t>(0x3344ccdd), t.lwl_1); |
| 1009 CHECK_EQ(static_cast<int32_t>(0x223344dd), t.lwl_2); | 1012 CHECK_EQ(static_cast<int32_t>(0x223344dd), t.lwl_2); |
| 1010 CHECK_EQ(static_cast<int32_t>(0x11223344), t.lwl_3); | 1013 CHECK_EQ(static_cast<int32_t>(0x11223344), t.lwl_3); |
| 1011 | 1014 |
| 1012 CHECK_EQ(static_cast<int32_t>(0x11223344), t.lwr_0); | 1015 CHECK_EQ(static_cast<int32_t>(0x11223344), t.lwr_0); |
| 1013 CHECK_EQ(static_cast<int32_t>(0xaa112233), t.lwr_1); | 1016 CHECK_EQ(static_cast<int32_t>(0xaa112233), t.lwr_1); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1123 Handle<Code> code = isolate->factory()->NewCode( | 1126 Handle<Code> code = isolate->factory()->NewCode( |
| 1124 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1127 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1125 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1128 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1126 t.x = 1; | 1129 t.x = 1; |
| 1127 t.y = 2; | 1130 t.y = 2; |
| 1128 t.y1 = 3; | 1131 t.y1 = 3; |
| 1129 t.y2 = 4; | 1132 t.y2 = 4; |
| 1130 t.y3 = 0XBABA; | 1133 t.y3 = 0XBABA; |
| 1131 t.y4 = 0xDEDA; | 1134 t.y4 = 0xDEDA; |
| 1132 | 1135 |
| 1133 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 1136 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 1134 USE(dummy); | 1137 USE(dummy); |
| 1135 | 1138 |
| 1136 CHECK_EQ(3, t.y1); | 1139 CHECK_EQ(3, t.y1); |
| 1137 } | 1140 } |
| 1138 | 1141 |
| 1139 | 1142 |
| 1140 TEST(MIPS13) { | 1143 TEST(MIPS13) { |
| 1141 // Test Cvt_d_uw and Trunc_uw_d macros. | 1144 // Test Cvt_d_uw and Trunc_uw_d macros. |
| 1142 CcTest::InitializeVM(); | 1145 CcTest::InitializeVM(); |
| 1143 Isolate* isolate = CcTest::i_isolate(); | 1146 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1174 | 1177 |
| 1175 CodeDesc desc; | 1178 CodeDesc desc; |
| 1176 assm.GetCode(&desc); | 1179 assm.GetCode(&desc); |
| 1177 Handle<Code> code = isolate->factory()->NewCode( | 1180 Handle<Code> code = isolate->factory()->NewCode( |
| 1178 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1181 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1179 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1182 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1180 | 1183 |
| 1181 t.cvt_big_in = 0xFFFFFFFF; | 1184 t.cvt_big_in = 0xFFFFFFFF; |
| 1182 t.cvt_small_in = 333; | 1185 t.cvt_small_in = 333; |
| 1183 | 1186 |
| 1184 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 1187 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 1185 USE(dummy); | 1188 USE(dummy); |
| 1186 | 1189 |
| 1187 CHECK_EQ(t.cvt_big_out, static_cast<double>(t.cvt_big_in)); | 1190 CHECK_EQ(t.cvt_big_out, static_cast<double>(t.cvt_big_in)); |
| 1188 CHECK_EQ(t.cvt_small_out, static_cast<double>(t.cvt_small_in)); | 1191 CHECK_EQ(t.cvt_small_out, static_cast<double>(t.cvt_small_in)); |
| 1189 | 1192 |
| 1190 CHECK_EQ(static_cast<int>(t.trunc_big_out), static_cast<int>(t.cvt_big_in)); | 1193 CHECK_EQ(static_cast<int>(t.trunc_big_out), static_cast<int>(t.cvt_big_in)); |
| 1191 CHECK_EQ(static_cast<int>(t.trunc_small_out), | 1194 CHECK_EQ(static_cast<int>(t.trunc_small_out), |
| 1192 static_cast<int>(t.cvt_small_in)); | 1195 static_cast<int>(t.cvt_small_in)); |
| 1193 } | 1196 } |
| 1194 | 1197 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1298 | 1301 |
| 1299 t.round_up_in = 123.51; | 1302 t.round_up_in = 123.51; |
| 1300 t.round_down_in = 123.49; | 1303 t.round_down_in = 123.49; |
| 1301 t.neg_round_up_in = -123.5; | 1304 t.neg_round_up_in = -123.5; |
| 1302 t.neg_round_down_in = -123.49; | 1305 t.neg_round_down_in = -123.49; |
| 1303 t.err1_in = 123.51; | 1306 t.err1_in = 123.51; |
| 1304 t.err2_in = 1; | 1307 t.err2_in = 1; |
| 1305 t.err3_in = static_cast<double>(1) + 0xFFFFFFFF; | 1308 t.err3_in = static_cast<double>(1) + 0xFFFFFFFF; |
| 1306 t.err4_in = NAN; | 1309 t.err4_in = NAN; |
| 1307 | 1310 |
| 1308 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 1311 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 1309 USE(dummy); | 1312 USE(dummy); |
| 1310 | 1313 |
| 1311 #define GET_FPU_ERR(x) (static_cast<int>(x & kFCSRFlagMask)) | 1314 #define GET_FPU_ERR(x) (static_cast<int>(x & kFCSRFlagMask)) |
| 1312 #define CHECK_ROUND_RESULT(type) \ | 1315 #define CHECK_ROUND_RESULT(type) \ |
| 1313 CHECK(GET_FPU_ERR(t.type##_err1_out) & kFCSRInexactFlagMask); \ | 1316 CHECK(GET_FPU_ERR(t.type##_err1_out) & kFCSRInexactFlagMask); \ |
| 1314 CHECK_EQ(0, GET_FPU_ERR(t.type##_err2_out)); \ | 1317 CHECK_EQ(0, GET_FPU_ERR(t.type##_err2_out)); \ |
| 1315 CHECK(GET_FPU_ERR(t.type##_err3_out) & kFCSRInvalidOpFlagMask); \ | 1318 CHECK(GET_FPU_ERR(t.type##_err3_out) & kFCSRInvalidOpFlagMask); \ |
| 1316 CHECK(GET_FPU_ERR(t.type##_err4_out) & kFCSRInvalidOpFlagMask); \ | 1319 CHECK(GET_FPU_ERR(t.type##_err4_out) & kFCSRInvalidOpFlagMask); \ |
| 1317 CHECK_EQ(kFPUInvalidResult, static_cast<uint>(t.type##_invalid_result)); | 1320 CHECK_EQ(kFPUInvalidResult, static_cast<uint>(t.type##_invalid_result)); |
| 1318 | 1321 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1388 __ swc1(f12, MemOperand(a0, offsetof(Test, k)) ); // src | 1391 __ swc1(f12, MemOperand(a0, offsetof(Test, k)) ); // src |
| 1389 __ swc1(f14, MemOperand(a0, offsetof(Test, l)) ); // src | 1392 __ swc1(f14, MemOperand(a0, offsetof(Test, l)) ); // src |
| 1390 __ jr(ra); | 1393 __ jr(ra); |
| 1391 __ nop(); | 1394 __ nop(); |
| 1392 CodeDesc desc; | 1395 CodeDesc desc; |
| 1393 assm.GetCode(&desc); | 1396 assm.GetCode(&desc); |
| 1394 Handle<Code> code = isolate->factory()->NewCode( | 1397 Handle<Code> code = isolate->factory()->NewCode( |
| 1395 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1398 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1396 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1399 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1397 | 1400 |
| 1398 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1401 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1399 | 1402 |
| 1400 CHECK_EQ(test.a, 1); | 1403 CHECK_EQ(test.a, 1); |
| 1401 CHECK_EQ(test.b, 0); | 1404 CHECK_EQ(test.b, 0); |
| 1402 CHECK_EQ(test.c, 0); | 1405 CHECK_EQ(test.c, 0); |
| 1403 CHECK_EQ(test.d, 1); | 1406 CHECK_EQ(test.d, 1); |
| 1404 | 1407 |
| 1405 const int test_size = 3; | 1408 const int test_size = 3; |
| 1406 const int input_size = 5; | 1409 const int input_size = 5; |
| 1407 | 1410 |
| 1408 double inputs_D[input_size] = {0.0, 65.2, -70.32, | 1411 double inputs_D[input_size] = {0.0, 65.2, -70.32, |
| 1409 18446744073709551621.0, -18446744073709551621.0}; | 1412 18446744073709551621.0, -18446744073709551621.0}; |
| 1410 double outputs_D[input_size] = {0.0, 65.2, -70.32, | 1413 double outputs_D[input_size] = {0.0, 65.2, -70.32, |
| 1411 18446744073709551621.0, -18446744073709551621.0}; | 1414 18446744073709551621.0, -18446744073709551621.0}; |
| 1412 double tests_D[test_size*2] = {2.8, 2.9, -2.8, -2.9, | 1415 double tests_D[test_size*2] = {2.8, 2.9, -2.8, -2.9, |
| 1413 18446744073709551616.0, 18446744073709555712.0}; | 1416 18446744073709551616.0, 18446744073709555712.0}; |
| 1414 float inputs_S[input_size] = {0.0, 65.2, -70.32, | 1417 float inputs_S[input_size] = {0.0, 65.2, -70.32, |
| 1415 18446744073709551621.0, -18446744073709551621.0}; | 1418 18446744073709551621.0, -18446744073709551621.0}; |
| 1416 float outputs_S[input_size] = {0.0, 65.2, -70.32, | 1419 float outputs_S[input_size] = {0.0, 65.2, -70.32, |
| 1417 18446744073709551621.0, -18446744073709551621.0}; | 1420 18446744073709551621.0, -18446744073709551621.0}; |
| 1418 float tests_S[test_size*2] = {2.9, 2.8, -2.9, -2.8, | 1421 float tests_S[test_size*2] = {2.9, 2.8, -2.9, -2.8, |
| 1419 18446744073709551616.0, 18446746272732807168.0}; | 1422 18446744073709551616.0, 18446746272732807168.0}; |
| 1420 for (int j=0; j < test_size; j+=2) { | 1423 for (int j=0; j < test_size; j+=2) { |
| 1421 for (int i=0; i < input_size; i++) { | 1424 for (int i=0; i < input_size; i++) { |
| 1422 test.e = inputs_D[i]; | 1425 test.e = inputs_D[i]; |
| 1423 test.f = tests_D[j]; | 1426 test.f = tests_D[j]; |
| 1424 test.i = inputs_S[i]; | 1427 test.i = inputs_S[i]; |
| 1425 test.j = tests_S[j]; | 1428 test.j = tests_S[j]; |
| 1426 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1429 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1427 CHECK_EQ(test.g, outputs_D[i]); | 1430 CHECK_EQ(test.g, outputs_D[i]); |
| 1428 CHECK_EQ(test.h, 0); | 1431 CHECK_EQ(test.h, 0); |
| 1429 CHECK_EQ(test.k, outputs_S[i]); | 1432 CHECK_EQ(test.k, outputs_S[i]); |
| 1430 CHECK_EQ(test.l, 0); | 1433 CHECK_EQ(test.l, 0); |
| 1431 | 1434 |
| 1432 test.f = tests_D[j+1]; | 1435 test.f = tests_D[j+1]; |
| 1433 test.j = tests_S[j+1]; | 1436 test.j = tests_S[j+1]; |
| 1434 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1437 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1435 CHECK_EQ(test.g, 0); | 1438 CHECK_EQ(test.g, 0); |
| 1436 CHECK_EQ(test.h, outputs_D[i]); | 1439 CHECK_EQ(test.h, outputs_D[i]); |
| 1437 CHECK_EQ(test.k, 0); | 1440 CHECK_EQ(test.k, 0); |
| 1438 CHECK_EQ(test.l, outputs_S[i]); | 1441 CHECK_EQ(test.l, outputs_S[i]); |
| 1439 } | 1442 } |
| 1440 } | 1443 } |
| 1441 } | 1444 } |
| 1442 } | 1445 } |
| 1443 | 1446 |
| 1444 | 1447 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1493 assm.GetCode(&desc); | 1496 assm.GetCode(&desc); |
| 1494 Handle<Code> code = isolate->factory()->NewCode( | 1497 Handle<Code> code = isolate->factory()->NewCode( |
| 1495 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1498 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1496 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1499 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1497 for (int i = 0; i < kTableLength; i++) { | 1500 for (int i = 0; i < kTableLength; i++) { |
| 1498 test.a = inputsa[i]; | 1501 test.a = inputsa[i]; |
| 1499 test.b = inputsb[i]; | 1502 test.b = inputsb[i]; |
| 1500 test.e = inputse[i]; | 1503 test.e = inputse[i]; |
| 1501 test.f = inputsf[i]; | 1504 test.f = inputsf[i]; |
| 1502 | 1505 |
| 1503 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1506 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1504 | 1507 |
| 1505 if (i < kTableLength - 1) { | 1508 if (i < kTableLength - 1) { |
| 1506 CHECK_EQ(test.c, outputsdmin[i]); | 1509 CHECK_EQ(test.c, outputsdmin[i]); |
| 1507 CHECK_EQ(test.d, outputsdmax[i]); | 1510 CHECK_EQ(test.d, outputsdmax[i]); |
| 1508 CHECK_EQ(test.g, outputsfmin[i]); | 1511 CHECK_EQ(test.g, outputsfmin[i]); |
| 1509 CHECK_EQ(test.h, outputsfmax[i]); | 1512 CHECK_EQ(test.h, outputsfmax[i]); |
| 1510 } else { | 1513 } else { |
| 1511 DCHECK(std::isnan(test.c)); | 1514 DCHECK(std::isnan(test.c)); |
| 1512 DCHECK(std::isnan(test.d)); | 1515 DCHECK(std::isnan(test.d)); |
| 1513 DCHECK(std::isnan(test.g)); | 1516 DCHECK(std::isnan(test.g)); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1609 CodeDesc desc; | 1612 CodeDesc desc; |
| 1610 assm.GetCode(&desc); | 1613 assm.GetCode(&desc); |
| 1611 Handle<Code> code = isolate->factory()->NewCode( | 1614 Handle<Code> code = isolate->factory()->NewCode( |
| 1612 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1615 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1613 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1616 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1614 | 1617 |
| 1615 for (int j = 0; j < 4; j++) { | 1618 for (int j = 0; j < 4; j++) { |
| 1616 test.fcsr = fcsr_inputs[j]; | 1619 test.fcsr = fcsr_inputs[j]; |
| 1617 for (int i = 0; i < kTableLength; i++) { | 1620 for (int i = 0; i < kTableLength; i++) { |
| 1618 test.a = inputs[i]; | 1621 test.a = inputs[i]; |
| 1619 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1622 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1620 CHECK_EQ(test.b, outputs[j][i]); | 1623 CHECK_EQ(test.b, outputs[j][i]); |
| 1621 } | 1624 } |
| 1622 } | 1625 } |
| 1623 } | 1626 } |
| 1624 } | 1627 } |
| 1625 | 1628 |
| 1626 | 1629 |
| 1627 TEST(sel) { | 1630 TEST(sel) { |
| 1628 if (IsMipsArchVariant(kMips32r6)) { | 1631 if (IsMipsArchVariant(kMips32r6)) { |
| 1629 CcTest::InitializeVM(); | 1632 CcTest::InitializeVM(); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1675 float tests_S[test_size*2] = {2.9, 2.8, -2.9, -2.8, | 1678 float tests_S[test_size*2] = {2.9, 2.8, -2.9, -2.8, |
| 1676 18446744073709551616.0, 18446746272732807168.0}; | 1679 18446744073709551616.0, 18446746272732807168.0}; |
| 1677 for (int j=0; j < test_size; j+=2) { | 1680 for (int j=0; j < test_size; j+=2) { |
| 1678 for (int i=0; i < input_size; i++) { | 1681 for (int i=0; i < input_size; i++) { |
| 1679 test.dt = inputs_dt[i]; | 1682 test.dt = inputs_dt[i]; |
| 1680 test.dd = tests_D[j]; | 1683 test.dd = tests_D[j]; |
| 1681 test.ds = inputs_ds[i]; | 1684 test.ds = inputs_ds[i]; |
| 1682 test.ft = inputs_ft[i]; | 1685 test.ft = inputs_ft[i]; |
| 1683 test.fd = tests_S[j]; | 1686 test.fd = tests_S[j]; |
| 1684 test.fs = inputs_fs[i]; | 1687 test.fs = inputs_fs[i]; |
| 1685 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1688 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1686 CHECK_EQ(test.dd, inputs_ds[i]); | 1689 CHECK_EQ(test.dd, inputs_ds[i]); |
| 1687 CHECK_EQ(test.fd, inputs_fs[i]); | 1690 CHECK_EQ(test.fd, inputs_fs[i]); |
| 1688 | 1691 |
| 1689 test.dd = tests_D[j+1]; | 1692 test.dd = tests_D[j+1]; |
| 1690 test.fd = tests_S[j+1]; | 1693 test.fd = tests_S[j+1]; |
| 1691 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1694 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1692 CHECK_EQ(test.dd, inputs_dt[i]); | 1695 CHECK_EQ(test.dd, inputs_dt[i]); |
| 1693 CHECK_EQ(test.fd, inputs_ft[i]); | 1696 CHECK_EQ(test.fd, inputs_ft[i]); |
| 1694 } | 1697 } |
| 1695 } | 1698 } |
| 1696 } | 1699 } |
| 1697 } | 1700 } |
| 1698 | 1701 |
| 1699 | 1702 |
| 1700 TEST(rint_s) { | 1703 TEST(rint_s) { |
| 1701 if (IsMipsArchVariant(kMips32r6)) { | 1704 if (IsMipsArchVariant(kMips32r6)) { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1788 CodeDesc desc; | 1791 CodeDesc desc; |
| 1789 assm.GetCode(&desc); | 1792 assm.GetCode(&desc); |
| 1790 Handle<Code> code = isolate->factory()->NewCode( | 1793 Handle<Code> code = isolate->factory()->NewCode( |
| 1791 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1794 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1792 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1795 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1793 | 1796 |
| 1794 for (int j = 0; j < 4; j++) { | 1797 for (int j = 0; j < 4; j++) { |
| 1795 test.fcsr = fcsr_inputs[j]; | 1798 test.fcsr = fcsr_inputs[j]; |
| 1796 for (int i = 0; i < kTableLength; i++) { | 1799 for (int i = 0; i < kTableLength; i++) { |
| 1797 test.a = inputs[i]; | 1800 test.a = inputs[i]; |
| 1798 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1801 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1799 CHECK_EQ(test.b, outputs[j][i]); | 1802 CHECK_EQ(test.b, outputs[j][i]); |
| 1800 } | 1803 } |
| 1801 } | 1804 } |
| 1802 } | 1805 } |
| 1803 } | 1806 } |
| 1804 | 1807 |
| 1805 | 1808 |
| 1806 TEST(mina_maxa) { | 1809 TEST(mina_maxa) { |
| 1807 if (IsMipsArchVariant(kMips32r6)) { | 1810 if (IsMipsArchVariant(kMips32r6)) { |
| 1808 const int kTableLength = 15; | 1811 const int kTableLength = 15; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1876 CodeDesc desc; | 1879 CodeDesc desc; |
| 1877 assm.GetCode(&desc); | 1880 assm.GetCode(&desc); |
| 1878 Handle<Code> code = isolate->factory()->NewCode( | 1881 Handle<Code> code = isolate->factory()->NewCode( |
| 1879 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1882 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1880 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1883 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1881 for (int i = 0; i < kTableLength; i++) { | 1884 for (int i = 0; i < kTableLength; i++) { |
| 1882 test.a = inputsa[i]; | 1885 test.a = inputsa[i]; |
| 1883 test.b = inputsb[i]; | 1886 test.b = inputsb[i]; |
| 1884 test.c = inputsc[i]; | 1887 test.c = inputsc[i]; |
| 1885 test.d = inputsd[i]; | 1888 test.d = inputsd[i]; |
| 1886 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1889 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1887 if (i < kTableLength - 1) { | 1890 if (i < kTableLength - 1) { |
| 1888 CHECK_EQ(test.resd, resd[i]); | 1891 CHECK_EQ(test.resd, resd[i]); |
| 1889 CHECK_EQ(test.resf, resf[i]); | 1892 CHECK_EQ(test.resf, resf[i]); |
| 1890 CHECK_EQ(test.resd1, resd1[i]); | 1893 CHECK_EQ(test.resd1, resd1[i]); |
| 1891 CHECK_EQ(test.resf1, resf1[i]); | 1894 CHECK_EQ(test.resf1, resf1[i]); |
| 1892 } else { | 1895 } else { |
| 1893 DCHECK(std::isnan(test.resd)); | 1896 DCHECK(std::isnan(test.resd)); |
| 1894 DCHECK(std::isnan(test.resf)); | 1897 DCHECK(std::isnan(test.resf)); |
| 1895 DCHECK(std::isnan(test.resd1)); | 1898 DCHECK(std::isnan(test.resd1)); |
| 1896 DCHECK(std::isnan(test.resf1)); | 1899 DCHECK(std::isnan(test.resf1)); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1945 __ nop(); | 1948 __ nop(); |
| 1946 Test test; | 1949 Test test; |
| 1947 CodeDesc desc; | 1950 CodeDesc desc; |
| 1948 assm.GetCode(&desc); | 1951 assm.GetCode(&desc); |
| 1949 Handle<Code> code = isolate->factory()->NewCode( | 1952 Handle<Code> code = isolate->factory()->NewCode( |
| 1950 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 1953 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 1951 F3 f = FUNCTION_CAST<F3>(code->entry()); | 1954 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 1952 for (int i = 0; i < kTableLength; i++) { | 1955 for (int i = 0; i < kTableLength; i++) { |
| 1953 test.a = inputs_D[i]; | 1956 test.a = inputs_D[i]; |
| 1954 test.b = inputs_S[i]; | 1957 test.b = inputs_S[i]; |
| 1955 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 1958 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 1956 CHECK_EQ(test.c, outputs[i]); | 1959 CHECK_EQ(test.c, outputs[i]); |
| 1957 CHECK_EQ(test.d, test.c); | 1960 CHECK_EQ(test.d, test.c); |
| 1958 } | 1961 } |
| 1959 } | 1962 } |
| 1960 } | 1963 } |
| 1961 | 1964 |
| 1962 | 1965 |
| 1963 TEST(movz_movn) { | 1966 TEST(movz_movn) { |
| 1964 if (IsMipsArchVariant(kMips32r2)) { | 1967 if (IsMipsArchVariant(kMips32r2)) { |
| 1965 const int kTableLength = 4; | 1968 const int kTableLength = 4; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2022 CodeDesc desc; | 2025 CodeDesc desc; |
| 2023 assm.GetCode(&desc); | 2026 assm.GetCode(&desc); |
| 2024 Handle<Code> code = isolate->factory()->NewCode( | 2027 Handle<Code> code = isolate->factory()->NewCode( |
| 2025 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2028 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2026 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2029 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2027 for (int i = 0; i < kTableLength; i++) { | 2030 for (int i = 0; i < kTableLength; i++) { |
| 2028 test.a = inputs_D[i]; | 2031 test.a = inputs_D[i]; |
| 2029 test.c = inputs_S[i]; | 2032 test.c = inputs_S[i]; |
| 2030 | 2033 |
| 2031 test.rt = 1; | 2034 test.rt = 1; |
| 2032 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2035 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2033 CHECK_EQ(test.b, test.bold); | 2036 CHECK_EQ(test.b, test.bold); |
| 2034 CHECK_EQ(test.d, test.dold); | 2037 CHECK_EQ(test.d, test.dold); |
| 2035 CHECK_EQ(test.b1, outputs_D[i]); | 2038 CHECK_EQ(test.b1, outputs_D[i]); |
| 2036 CHECK_EQ(test.d1, outputs_S[i]); | 2039 CHECK_EQ(test.d1, outputs_S[i]); |
| 2037 | 2040 |
| 2038 test.rt = 0; | 2041 test.rt = 0; |
| 2039 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2042 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2040 CHECK_EQ(test.b, outputs_D[i]); | 2043 CHECK_EQ(test.b, outputs_D[i]); |
| 2041 CHECK_EQ(test.d, outputs_S[i]); | 2044 CHECK_EQ(test.d, outputs_S[i]); |
| 2042 CHECK_EQ(test.b1, test.bold1); | 2045 CHECK_EQ(test.b1, test.bold1); |
| 2043 CHECK_EQ(test.d1, test.dold1); | 2046 CHECK_EQ(test.d1, test.dold1); |
| 2044 } | 2047 } |
| 2045 } | 2048 } |
| 2046 } | 2049 } |
| 2047 | 2050 |
| 2048 | 2051 |
| 2049 TEST(movt_movd) { | 2052 TEST(movt_movd) { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2119 __ ctc1(t0, FCSR); | 2122 __ ctc1(t0, FCSR); |
| 2120 __ jr(ra); | 2123 __ jr(ra); |
| 2121 __ nop(); | 2124 __ nop(); |
| 2122 | 2125 |
| 2123 CodeDesc desc; | 2126 CodeDesc desc; |
| 2124 assm.GetCode(&desc); | 2127 assm.GetCode(&desc); |
| 2125 Handle<Code> code = isolate->factory()->NewCode( | 2128 Handle<Code> code = isolate->factory()->NewCode( |
| 2126 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2129 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2127 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2130 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2128 | 2131 |
| 2129 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2132 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2130 CHECK_EQ(test.dstf, outputs_S[i]); | 2133 CHECK_EQ(test.dstf, outputs_S[i]); |
| 2131 CHECK_EQ(test.dstd, outputs_D[i]); | 2134 CHECK_EQ(test.dstd, outputs_D[i]); |
| 2132 CHECK_EQ(test.dstf1, test.dstfold1); | 2135 CHECK_EQ(test.dstf1, test.dstfold1); |
| 2133 CHECK_EQ(test.dstd1, test.dstdold1); | 2136 CHECK_EQ(test.dstd1, test.dstdold1); |
| 2134 test.fcsr = 0; | 2137 test.fcsr = 0; |
| 2135 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2138 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2136 CHECK_EQ(test.dstf, test.dstfold); | 2139 CHECK_EQ(test.dstf, test.dstfold); |
| 2137 CHECK_EQ(test.dstd, test.dstdold); | 2140 CHECK_EQ(test.dstd, test.dstdold); |
| 2138 CHECK_EQ(test.dstf1, outputs_S[i]); | 2141 CHECK_EQ(test.dstf1, outputs_S[i]); |
| 2139 CHECK_EQ(test.dstd1, outputs_D[i]); | 2142 CHECK_EQ(test.dstd1, outputs_D[i]); |
| 2140 } | 2143 } |
| 2141 } | 2144 } |
| 2142 } | 2145 } |
| 2143 } | 2146 } |
| 2144 | 2147 |
| 2145 | 2148 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2207 Test test; | 2210 Test test; |
| 2208 CodeDesc desc; | 2211 CodeDesc desc; |
| 2209 assm.GetCode(&desc); | 2212 assm.GetCode(&desc); |
| 2210 Handle<Code> code = isolate->factory()->NewCode( | 2213 Handle<Code> code = isolate->factory()->NewCode( |
| 2211 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2214 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2212 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2215 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2213 for (int j = 0; j < 4; j++) { | 2216 for (int j = 0; j < 4; j++) { |
| 2214 test.fcsr = fcsr_inputs[j]; | 2217 test.fcsr = fcsr_inputs[j]; |
| 2215 for (int i = 0; i < kTableLength; i++) { | 2218 for (int i = 0; i < kTableLength; i++) { |
| 2216 test.a = inputs[i]; | 2219 test.a = inputs[i]; |
| 2217 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2220 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2218 CHECK_EQ(test.b, outputs[j][i]); | 2221 CHECK_EQ(test.b, outputs[j][i]); |
| 2219 } | 2222 } |
| 2220 } | 2223 } |
| 2221 } | 2224 } |
| 2222 | 2225 |
| 2223 | 2226 |
| 2224 TEST(trunc_w) { | 2227 TEST(trunc_w) { |
| 2225 CcTest::InitializeVM(); | 2228 CcTest::InitializeVM(); |
| 2226 Isolate* isolate = CcTest::i_isolate(); | 2229 Isolate* isolate = CcTest::i_isolate(); |
| 2227 HandleScope scope(isolate); | 2230 HandleScope scope(isolate); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2264 __ nop(); | 2267 __ nop(); |
| 2265 Test test; | 2268 Test test; |
| 2266 CodeDesc desc; | 2269 CodeDesc desc; |
| 2267 assm.GetCode(&desc); | 2270 assm.GetCode(&desc); |
| 2268 Handle<Code> code = isolate->factory()->NewCode( | 2271 Handle<Code> code = isolate->factory()->NewCode( |
| 2269 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2272 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2270 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2273 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2271 for (int i = 0; i < kTableLength; i++) { | 2274 for (int i = 0; i < kTableLength; i++) { |
| 2272 test.a = inputs_D[i]; | 2275 test.a = inputs_D[i]; |
| 2273 test.b = inputs_S[i]; | 2276 test.b = inputs_S[i]; |
| 2274 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2277 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2275 CHECK_EQ(test.c, outputs[i]); | 2278 CHECK_EQ(test.c, outputs[i]); |
| 2276 CHECK_EQ(test.d, test.c); | 2279 CHECK_EQ(test.d, test.c); |
| 2277 } | 2280 } |
| 2278 } | 2281 } |
| 2279 | 2282 |
| 2280 | 2283 |
| 2281 TEST(round_w) { | 2284 TEST(round_w) { |
| 2282 CcTest::InitializeVM(); | 2285 CcTest::InitializeVM(); |
| 2283 Isolate* isolate = CcTest::i_isolate(); | 2286 Isolate* isolate = CcTest::i_isolate(); |
| 2284 HandleScope scope(isolate); | 2287 HandleScope scope(isolate); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2321 __ nop(); | 2324 __ nop(); |
| 2322 Test test; | 2325 Test test; |
| 2323 CodeDesc desc; | 2326 CodeDesc desc; |
| 2324 assm.GetCode(&desc); | 2327 assm.GetCode(&desc); |
| 2325 Handle<Code> code = isolate->factory()->NewCode( | 2328 Handle<Code> code = isolate->factory()->NewCode( |
| 2326 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2329 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2327 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2330 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2328 for (int i = 0; i < kTableLength; i++) { | 2331 for (int i = 0; i < kTableLength; i++) { |
| 2329 test.a = inputs_D[i]; | 2332 test.a = inputs_D[i]; |
| 2330 test.b = inputs_S[i]; | 2333 test.b = inputs_S[i]; |
| 2331 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2334 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2332 CHECK_EQ(test.c, outputs[i]); | 2335 CHECK_EQ(test.c, outputs[i]); |
| 2333 CHECK_EQ(test.d, test.c); | 2336 CHECK_EQ(test.d, test.c); |
| 2334 } | 2337 } |
| 2335 } | 2338 } |
| 2336 | 2339 |
| 2337 | 2340 |
| 2338 TEST(round_l) { | 2341 TEST(round_l) { |
| 2339 if (IsFp64Mode()) { | 2342 if (IsFp64Mode()) { |
| 2340 CcTest::InitializeVM(); | 2343 CcTest::InitializeVM(); |
| 2341 Isolate* isolate = CcTest::i_isolate(); | 2344 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2379 __ nop(); | 2382 __ nop(); |
| 2380 Test test; | 2383 Test test; |
| 2381 CodeDesc desc; | 2384 CodeDesc desc; |
| 2382 assm.GetCode(&desc); | 2385 assm.GetCode(&desc); |
| 2383 Handle<Code> code = isolate->factory()->NewCode( | 2386 Handle<Code> code = isolate->factory()->NewCode( |
| 2384 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2387 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2385 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2388 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2386 for (int i = 0; i < kTableLength; i++) { | 2389 for (int i = 0; i < kTableLength; i++) { |
| 2387 test.a = inputs_D[i]; | 2390 test.a = inputs_D[i]; |
| 2388 test.b = inputs_S[i]; | 2391 test.b = inputs_S[i]; |
| 2389 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2392 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2390 CHECK_EQ(test.c, outputs[i]); | 2393 CHECK_EQ(test.c, outputs[i]); |
| 2391 CHECK_EQ(test.d, test.c); | 2394 CHECK_EQ(test.d, test.c); |
| 2392 } | 2395 } |
| 2393 } | 2396 } |
| 2394 } | 2397 } |
| 2395 | 2398 |
| 2396 | 2399 |
| 2397 TEST(sub) { | 2400 TEST(sub) { |
| 2398 const int kTableLength = 12; | 2401 const int kTableLength = 12; |
| 2399 CcTest::InitializeVM(); | 2402 CcTest::InitializeVM(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2449 CodeDesc desc; | 2452 CodeDesc desc; |
| 2450 assm.GetCode(&desc); | 2453 assm.GetCode(&desc); |
| 2451 Handle<Code> code = isolate->factory()->NewCode( | 2454 Handle<Code> code = isolate->factory()->NewCode( |
| 2452 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2455 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2453 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2456 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2454 for (int i = 0; i < kTableLength; i++) { | 2457 for (int i = 0; i < kTableLength; i++) { |
| 2455 test.a = inputfs_S[i]; | 2458 test.a = inputfs_S[i]; |
| 2456 test.b = inputft_S[i]; | 2459 test.b = inputft_S[i]; |
| 2457 test.c = inputfs_D[i]; | 2460 test.c = inputfs_D[i]; |
| 2458 test.d = inputft_D[i]; | 2461 test.d = inputft_D[i]; |
| 2459 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2462 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2460 CHECK_EQ(test.resultS, outputs_S[i]); | 2463 CHECK_EQ(test.resultS, outputs_S[i]); |
| 2461 CHECK_EQ(test.resultD, outputs_D[i]); | 2464 CHECK_EQ(test.resultD, outputs_D[i]); |
| 2462 } | 2465 } |
| 2463 } | 2466 } |
| 2464 | 2467 |
| 2465 | 2468 |
| 2466 TEST(sqrt_rsqrt_recip) { | 2469 TEST(sqrt_rsqrt_recip) { |
| 2467 const int kTableLength = 4; | 2470 const int kTableLength = 4; |
| 2468 const double deltaDouble = 2E-15; | 2471 const double deltaDouble = 2E-15; |
| 2469 const float deltaFloat = 2E-7; | 2472 const float deltaFloat = 2E-7; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2530 Handle<Code> code = isolate->factory()->NewCode( | 2533 Handle<Code> code = isolate->factory()->NewCode( |
| 2531 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2534 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2532 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2535 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2533 | 2536 |
| 2534 for (int i = 0; i < kTableLength; i++) { | 2537 for (int i = 0; i < kTableLength; i++) { |
| 2535 float f1; | 2538 float f1; |
| 2536 double d1; | 2539 double d1; |
| 2537 test.a = inputs_S[i]; | 2540 test.a = inputs_S[i]; |
| 2538 test.c = inputs_D[i]; | 2541 test.c = inputs_D[i]; |
| 2539 | 2542 |
| 2540 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2543 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2541 | 2544 |
| 2542 CHECK_EQ(test.resultS, outputs_S[i]); | 2545 CHECK_EQ(test.resultS, outputs_S[i]); |
| 2543 CHECK_EQ(test.resultD, outputs_D[i]); | 2546 CHECK_EQ(test.resultD, outputs_D[i]); |
| 2544 | 2547 |
| 2545 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { | 2548 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) { |
| 2546 if (i != 0) { | 2549 if (i != 0) { |
| 2547 f1 = test.resultS1 - 1.0F/outputs_S[i]; | 2550 f1 = test.resultS1 - 1.0F/outputs_S[i]; |
| 2548 f1 = (f1 < 0) ? f1 : -f1; | 2551 f1 = (f1 < 0) ? f1 : -f1; |
| 2549 CHECK(f1 <= deltaFloat); | 2552 CHECK(f1 <= deltaFloat); |
| 2550 d1 = test.resultD1 - 1.0L/outputs_D[i]; | 2553 d1 = test.resultD1 - 1.0L/outputs_D[i]; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2606 __ nop(); | 2609 __ nop(); |
| 2607 | 2610 |
| 2608 CodeDesc desc; | 2611 CodeDesc desc; |
| 2609 assm.GetCode(&desc); | 2612 assm.GetCode(&desc); |
| 2610 Handle<Code> code = isolate->factory()->NewCode( | 2613 Handle<Code> code = isolate->factory()->NewCode( |
| 2611 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2614 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2612 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2615 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2613 for (int i = 0; i < kTableLength; i++) { | 2616 for (int i = 0; i < kTableLength; i++) { |
| 2614 test.a = inputs_S[i]; | 2617 test.a = inputs_S[i]; |
| 2615 test.c = inputs_D[i]; | 2618 test.c = inputs_D[i]; |
| 2616 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2619 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2617 CHECK_EQ(test.resultS, outputs_S[i]); | 2620 CHECK_EQ(test.resultS, outputs_S[i]); |
| 2618 CHECK_EQ(test.resultD, outputs_D[i]); | 2621 CHECK_EQ(test.resultD, outputs_D[i]); |
| 2619 } | 2622 } |
| 2620 } | 2623 } |
| 2621 | 2624 |
| 2622 | 2625 |
| 2623 TEST(mul) { | 2626 TEST(mul) { |
| 2624 const int kTableLength = 4; | 2627 const int kTableLength = 4; |
| 2625 CcTest::InitializeVM(); | 2628 CcTest::InitializeVM(); |
| 2626 Isolate* isolate = CcTest::i_isolate(); | 2629 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2665 CodeDesc desc; | 2668 CodeDesc desc; |
| 2666 assm.GetCode(&desc); | 2669 assm.GetCode(&desc); |
| 2667 Handle<Code> code = isolate->factory()->NewCode( | 2670 Handle<Code> code = isolate->factory()->NewCode( |
| 2668 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2671 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2669 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2672 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2670 for (int i = 0; i < kTableLength; i++) { | 2673 for (int i = 0; i < kTableLength; i++) { |
| 2671 test.a = inputfs_S[i]; | 2674 test.a = inputfs_S[i]; |
| 2672 test.b = inputft_S[i]; | 2675 test.b = inputft_S[i]; |
| 2673 test.c = inputfs_D[i]; | 2676 test.c = inputfs_D[i]; |
| 2674 test.d = inputft_D[i]; | 2677 test.d = inputft_D[i]; |
| 2675 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2678 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2676 CHECK_EQ(test.resultS, inputfs_S[i]*inputft_S[i]); | 2679 CHECK_EQ(test.resultS, inputfs_S[i]*inputft_S[i]); |
| 2677 CHECK_EQ(test.resultD, inputfs_D[i]*inputft_D[i]); | 2680 CHECK_EQ(test.resultD, inputfs_D[i]*inputft_D[i]); |
| 2678 } | 2681 } |
| 2679 } | 2682 } |
| 2680 | 2683 |
| 2681 | 2684 |
| 2682 TEST(mov) { | 2685 TEST(mov) { |
| 2683 const int kTableLength = 4; | 2686 const int kTableLength = 4; |
| 2684 CcTest::InitializeVM(); | 2687 CcTest::InitializeVM(); |
| 2685 Isolate* isolate = CcTest::i_isolate(); | 2688 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2720 | 2723 |
| 2721 CodeDesc desc; | 2724 CodeDesc desc; |
| 2722 assm.GetCode(&desc); | 2725 assm.GetCode(&desc); |
| 2723 Handle<Code> code = isolate->factory()->NewCode( | 2726 Handle<Code> code = isolate->factory()->NewCode( |
| 2724 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2727 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2725 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2728 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2726 for (int i = 0; i < kTableLength; i++) { | 2729 for (int i = 0; i < kTableLength; i++) { |
| 2727 test.a = inputs_D[i]; | 2730 test.a = inputs_D[i]; |
| 2728 test.c = inputs_S[i]; | 2731 test.c = inputs_S[i]; |
| 2729 | 2732 |
| 2730 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2733 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2731 CHECK_EQ(test.b, outputs_D[i]); | 2734 CHECK_EQ(test.b, outputs_D[i]); |
| 2732 CHECK_EQ(test.d, outputs_S[i]); | 2735 CHECK_EQ(test.d, outputs_S[i]); |
| 2733 } | 2736 } |
| 2734 } | 2737 } |
| 2735 | 2738 |
| 2736 | 2739 |
| 2737 TEST(floor_w) { | 2740 TEST(floor_w) { |
| 2738 CcTest::InitializeVM(); | 2741 CcTest::InitializeVM(); |
| 2739 Isolate* isolate = CcTest::i_isolate(); | 2742 Isolate* isolate = CcTest::i_isolate(); |
| 2740 HandleScope scope(isolate); | 2743 HandleScope scope(isolate); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2777 __ nop(); | 2780 __ nop(); |
| 2778 Test test; | 2781 Test test; |
| 2779 CodeDesc desc; | 2782 CodeDesc desc; |
| 2780 assm.GetCode(&desc); | 2783 assm.GetCode(&desc); |
| 2781 Handle<Code> code = isolate->factory()->NewCode( | 2784 Handle<Code> code = isolate->factory()->NewCode( |
| 2782 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2785 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2783 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2786 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2784 for (int i = 0; i < kTableLength; i++) { | 2787 for (int i = 0; i < kTableLength; i++) { |
| 2785 test.a = inputs_D[i]; | 2788 test.a = inputs_D[i]; |
| 2786 test.b = inputs_S[i]; | 2789 test.b = inputs_S[i]; |
| 2787 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2790 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2788 CHECK_EQ(test.c, outputs[i]); | 2791 CHECK_EQ(test.c, outputs[i]); |
| 2789 CHECK_EQ(test.d, test.c); | 2792 CHECK_EQ(test.d, test.c); |
| 2790 } | 2793 } |
| 2791 } | 2794 } |
| 2792 | 2795 |
| 2793 | 2796 |
| 2794 TEST(floor_l) { | 2797 TEST(floor_l) { |
| 2795 if (IsFp64Mode()) { | 2798 if (IsFp64Mode()) { |
| 2796 CcTest::InitializeVM(); | 2799 CcTest::InitializeVM(); |
| 2797 Isolate* isolate = CcTest::i_isolate(); | 2800 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2835 __ nop(); | 2838 __ nop(); |
| 2836 Test test; | 2839 Test test; |
| 2837 CodeDesc desc; | 2840 CodeDesc desc; |
| 2838 assm.GetCode(&desc); | 2841 assm.GetCode(&desc); |
| 2839 Handle<Code> code = isolate->factory()->NewCode( | 2842 Handle<Code> code = isolate->factory()->NewCode( |
| 2840 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2843 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2841 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2844 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2842 for (int i = 0; i < kTableLength; i++) { | 2845 for (int i = 0; i < kTableLength; i++) { |
| 2843 test.a = inputs_D[i]; | 2846 test.a = inputs_D[i]; |
| 2844 test.b = inputs_S[i]; | 2847 test.b = inputs_S[i]; |
| 2845 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2848 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2846 CHECK_EQ(test.c, outputs[i]); | 2849 CHECK_EQ(test.c, outputs[i]); |
| 2847 CHECK_EQ(test.d, test.c); | 2850 CHECK_EQ(test.d, test.c); |
| 2848 } | 2851 } |
| 2849 } | 2852 } |
| 2850 } | 2853 } |
| 2851 | 2854 |
| 2852 | 2855 |
| 2853 TEST(ceil_w) { | 2856 TEST(ceil_w) { |
| 2854 CcTest::InitializeVM(); | 2857 CcTest::InitializeVM(); |
| 2855 Isolate* isolate = CcTest::i_isolate(); | 2858 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2893 __ nop(); | 2896 __ nop(); |
| 2894 Test test; | 2897 Test test; |
| 2895 CodeDesc desc; | 2898 CodeDesc desc; |
| 2896 assm.GetCode(&desc); | 2899 assm.GetCode(&desc); |
| 2897 Handle<Code> code = isolate->factory()->NewCode( | 2900 Handle<Code> code = isolate->factory()->NewCode( |
| 2898 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2901 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2899 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2902 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2900 for (int i = 0; i < kTableLength; i++) { | 2903 for (int i = 0; i < kTableLength; i++) { |
| 2901 test.a = inputs_D[i]; | 2904 test.a = inputs_D[i]; |
| 2902 test.b = inputs_S[i]; | 2905 test.b = inputs_S[i]; |
| 2903 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2906 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2904 CHECK_EQ(test.c, outputs[i]); | 2907 CHECK_EQ(test.c, outputs[i]); |
| 2905 CHECK_EQ(test.d, test.c); | 2908 CHECK_EQ(test.d, test.c); |
| 2906 } | 2909 } |
| 2907 } | 2910 } |
| 2908 | 2911 |
| 2909 | 2912 |
| 2910 TEST(ceil_l) { | 2913 TEST(ceil_l) { |
| 2911 if (IsFp64Mode()) { | 2914 if (IsFp64Mode()) { |
| 2912 CcTest::InitializeVM(); | 2915 CcTest::InitializeVM(); |
| 2913 Isolate* isolate = CcTest::i_isolate(); | 2916 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2951 __ nop(); | 2954 __ nop(); |
| 2952 Test test; | 2955 Test test; |
| 2953 CodeDesc desc; | 2956 CodeDesc desc; |
| 2954 assm.GetCode(&desc); | 2957 assm.GetCode(&desc); |
| 2955 Handle<Code> code = isolate->factory()->NewCode( | 2958 Handle<Code> code = isolate->factory()->NewCode( |
| 2956 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 2959 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 2957 F3 f = FUNCTION_CAST<F3>(code->entry()); | 2960 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 2958 for (int i = 0; i < kTableLength; i++) { | 2961 for (int i = 0; i < kTableLength; i++) { |
| 2959 test.a = inputs_D[i]; | 2962 test.a = inputs_D[i]; |
| 2960 test.b = inputs_S[i]; | 2963 test.b = inputs_S[i]; |
| 2961 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 2964 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 2962 CHECK_EQ(test.c, outputs[i]); | 2965 CHECK_EQ(test.c, outputs[i]); |
| 2963 CHECK_EQ(test.d, test.c); | 2966 CHECK_EQ(test.d, test.c); |
| 2964 } | 2967 } |
| 2965 } | 2968 } |
| 2966 } | 2969 } |
| 2967 | 2970 |
| 2968 | 2971 |
| 2969 TEST(jump_tables1) { | 2972 TEST(jump_tables1) { |
| 2970 // Test jump tables with forward jumps. | 2973 // Test jump tables with forward jumps. |
| 2971 CcTest::InitializeVM(); | 2974 CcTest::InitializeVM(); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3017 | 3020 |
| 3018 CodeDesc desc; | 3021 CodeDesc desc; |
| 3019 assm.GetCode(&desc); | 3022 assm.GetCode(&desc); |
| 3020 Handle<Code> code = isolate->factory()->NewCode( | 3023 Handle<Code> code = isolate->factory()->NewCode( |
| 3021 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3024 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3022 #ifdef OBJECT_PRINT | 3025 #ifdef OBJECT_PRINT |
| 3023 code->Print(std::cout); | 3026 code->Print(std::cout); |
| 3024 #endif | 3027 #endif |
| 3025 F1 f = FUNCTION_CAST<F1>(code->entry()); | 3028 F1 f = FUNCTION_CAST<F1>(code->entry()); |
| 3026 for (int i = 0; i < kNumCases; ++i) { | 3029 for (int i = 0; i < kNumCases; ++i) { |
| 3027 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, i, 0, 0, 0, 0)); | 3030 int res = reinterpret_cast<int>( |
| 3031 CALL_GENERATED_CODE(isolate, f, i, 0, 0, 0, 0)); |
| 3028 ::printf("f(%d) = %d\n", i, res); | 3032 ::printf("f(%d) = %d\n", i, res); |
| 3029 CHECK_EQ(values[i], res); | 3033 CHECK_EQ(values[i], res); |
| 3030 } | 3034 } |
| 3031 } | 3035 } |
| 3032 | 3036 |
| 3033 | 3037 |
| 3034 TEST(jump_tables2) { | 3038 TEST(jump_tables2) { |
| 3035 // Test jump tables with backward jumps. | 3039 // Test jump tables with backward jumps. |
| 3036 CcTest::InitializeVM(); | 3040 CcTest::InitializeVM(); |
| 3037 Isolate* isolate = CcTest::i_isolate(); | 3041 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3086 | 3090 |
| 3087 CodeDesc desc; | 3091 CodeDesc desc; |
| 3088 assm.GetCode(&desc); | 3092 assm.GetCode(&desc); |
| 3089 Handle<Code> code = isolate->factory()->NewCode( | 3093 Handle<Code> code = isolate->factory()->NewCode( |
| 3090 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3094 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3091 #ifdef OBJECT_PRINT | 3095 #ifdef OBJECT_PRINT |
| 3092 code->Print(std::cout); | 3096 code->Print(std::cout); |
| 3093 #endif | 3097 #endif |
| 3094 F1 f = FUNCTION_CAST<F1>(code->entry()); | 3098 F1 f = FUNCTION_CAST<F1>(code->entry()); |
| 3095 for (int i = 0; i < kNumCases; ++i) { | 3099 for (int i = 0; i < kNumCases; ++i) { |
| 3096 int res = reinterpret_cast<int>(CALL_GENERATED_CODE(f, i, 0, 0, 0, 0)); | 3100 int res = reinterpret_cast<int>( |
| 3101 CALL_GENERATED_CODE(isolate, f, i, 0, 0, 0, 0)); |
| 3097 ::printf("f(%d) = %d\n", i, res); | 3102 ::printf("f(%d) = %d\n", i, res); |
| 3098 CHECK_EQ(values[i], res); | 3103 CHECK_EQ(values[i], res); |
| 3099 } | 3104 } |
| 3100 } | 3105 } |
| 3101 | 3106 |
| 3102 | 3107 |
| 3103 TEST(jump_tables3) { | 3108 TEST(jump_tables3) { |
| 3104 // Test jump tables with backward jumps and embedded heap objects. | 3109 // Test jump tables with backward jumps and embedded heap objects. |
| 3105 CcTest::InitializeVM(); | 3110 CcTest::InitializeVM(); |
| 3106 Isolate* isolate = CcTest::i_isolate(); | 3111 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3162 | 3167 |
| 3163 CodeDesc desc; | 3168 CodeDesc desc; |
| 3164 assm.GetCode(&desc); | 3169 assm.GetCode(&desc); |
| 3165 Handle<Code> code = isolate->factory()->NewCode( | 3170 Handle<Code> code = isolate->factory()->NewCode( |
| 3166 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3171 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3167 #ifdef OBJECT_PRINT | 3172 #ifdef OBJECT_PRINT |
| 3168 code->Print(std::cout); | 3173 code->Print(std::cout); |
| 3169 #endif | 3174 #endif |
| 3170 F1 f = FUNCTION_CAST<F1>(code->entry()); | 3175 F1 f = FUNCTION_CAST<F1>(code->entry()); |
| 3171 for (int i = 0; i < kNumCases; ++i) { | 3176 for (int i = 0; i < kNumCases; ++i) { |
| 3172 Handle<Object> result(CALL_GENERATED_CODE(f, i, 0, 0, 0, 0), isolate); | 3177 Handle<Object> result( |
| 3178 CALL_GENERATED_CODE(isolate, f, i, 0, 0, 0, 0), isolate); |
| 3173 #ifdef OBJECT_PRINT | 3179 #ifdef OBJECT_PRINT |
| 3174 ::printf("f(%d) = ", i); | 3180 ::printf("f(%d) = ", i); |
| 3175 result->Print(std::cout); | 3181 result->Print(std::cout); |
| 3176 ::printf("\n"); | 3182 ::printf("\n"); |
| 3177 #endif | 3183 #endif |
| 3178 CHECK(values[i].is_identical_to(result)); | 3184 CHECK(values[i].is_identical_to(result)); |
| 3179 } | 3185 } |
| 3180 } | 3186 } |
| 3181 | 3187 |
| 3182 | 3188 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 3210 __ jr(ra); | 3216 __ jr(ra); |
| 3211 __ nop(); | 3217 __ nop(); |
| 3212 | 3218 |
| 3213 CodeDesc desc; | 3219 CodeDesc desc; |
| 3214 assm.GetCode(&desc); | 3220 assm.GetCode(&desc); |
| 3215 Handle<Code> code = isolate->factory()->NewCode( | 3221 Handle<Code> code = isolate->factory()->NewCode( |
| 3216 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3222 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3217 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3223 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3218 t.r1 = 0x781A15C3; | 3224 t.r1 = 0x781A15C3; |
| 3219 t.r2 = 0x8B71FCDE; | 3225 t.r2 = 0x8B71FCDE; |
| 3220 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 3226 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 3221 USE(dummy); | 3227 USE(dummy); |
| 3222 | 3228 |
| 3223 CHECK_EQ(static_cast<int32_t>(0x1E58A8C3), t.r1); | 3229 CHECK_EQ(static_cast<int32_t>(0x1E58A8C3), t.r1); |
| 3224 CHECK_EQ(static_cast<int32_t>(0xD18E3F7B), t.r2); | 3230 CHECK_EQ(static_cast<int32_t>(0xD18E3F7B), t.r2); |
| 3225 } | 3231 } |
| 3226 } | 3232 } |
| 3227 | 3233 |
| 3228 | 3234 |
| 3229 TEST(class_fmt) { | 3235 TEST(class_fmt) { |
| 3230 if (IsMipsArchVariant(kMips32r6)) { | 3236 if (IsMipsArchVariant(kMips32r6)) { |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3366 t.fQuietNan = std::numeric_limits<float>::quiet_NaN(); | 3372 t.fQuietNan = std::numeric_limits<float>::quiet_NaN(); |
| 3367 t.fNegInf = -0.5/0.0; | 3373 t.fNegInf = -0.5/0.0; |
| 3368 t.fNegNorm = -FLT_MIN; | 3374 t.fNegNorm = -FLT_MIN; |
| 3369 t.fNegSubnorm = -FLT_MIN / 1.5; | 3375 t.fNegSubnorm = -FLT_MIN / 1.5; |
| 3370 t.fNegZero = -0.0; | 3376 t.fNegZero = -0.0; |
| 3371 t.fPosInf = 100000.0 / 0.0; | 3377 t.fPosInf = 100000.0 / 0.0; |
| 3372 t.fPosNorm = FLT_MAX; | 3378 t.fPosNorm = FLT_MAX; |
| 3373 t.fPosSubnorm = FLT_MIN / 20.0; | 3379 t.fPosSubnorm = FLT_MIN / 20.0; |
| 3374 t.fPosZero = +0.0; | 3380 t.fPosZero = +0.0; |
| 3375 | 3381 |
| 3376 Object* dummy = CALL_GENERATED_CODE(f, &t, 0, 0, 0, 0); | 3382 Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0); |
| 3377 USE(dummy); | 3383 USE(dummy); |
| 3378 // Expected double results. | 3384 // Expected double results. |
| 3379 CHECK_EQ(bit_cast<int64_t>(t.dSignalingNan), 0x001); | 3385 CHECK_EQ(bit_cast<int64_t>(t.dSignalingNan), 0x001); |
| 3380 CHECK_EQ(bit_cast<int64_t>(t.dQuietNan), 0x002); | 3386 CHECK_EQ(bit_cast<int64_t>(t.dQuietNan), 0x002); |
| 3381 CHECK_EQ(bit_cast<int64_t>(t.dNegInf), 0x004); | 3387 CHECK_EQ(bit_cast<int64_t>(t.dNegInf), 0x004); |
| 3382 CHECK_EQ(bit_cast<int64_t>(t.dNegNorm), 0x008); | 3388 CHECK_EQ(bit_cast<int64_t>(t.dNegNorm), 0x008); |
| 3383 CHECK_EQ(bit_cast<int64_t>(t.dNegSubnorm), 0x010); | 3389 CHECK_EQ(bit_cast<int64_t>(t.dNegSubnorm), 0x010); |
| 3384 CHECK_EQ(bit_cast<int64_t>(t.dNegZero), 0x020); | 3390 CHECK_EQ(bit_cast<int64_t>(t.dNegZero), 0x020); |
| 3385 CHECK_EQ(bit_cast<int64_t>(t.dPosInf), 0x040); | 3391 CHECK_EQ(bit_cast<int64_t>(t.dPosInf), 0x040); |
| 3386 CHECK_EQ(bit_cast<int64_t>(t.dPosNorm), 0x080); | 3392 CHECK_EQ(bit_cast<int64_t>(t.dPosNorm), 0x080); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3436 __ jr(ra); | 3442 __ jr(ra); |
| 3437 __ nop(); | 3443 __ nop(); |
| 3438 | 3444 |
| 3439 CodeDesc desc; | 3445 CodeDesc desc; |
| 3440 assm.GetCode(&desc); | 3446 assm.GetCode(&desc); |
| 3441 Handle<Code> code = isolate->factory()->NewCode( | 3447 Handle<Code> code = isolate->factory()->NewCode( |
| 3442 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3448 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3443 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3449 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3444 test.a = -2.0; | 3450 test.a = -2.0; |
| 3445 test.b = -2.0; | 3451 test.b = -2.0; |
| 3446 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3452 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3447 CHECK_EQ(test.a, 2.0); | 3453 CHECK_EQ(test.a, 2.0); |
| 3448 CHECK_EQ(test.b, 2.0); | 3454 CHECK_EQ(test.b, 2.0); |
| 3449 | 3455 |
| 3450 test.a = 2.0; | 3456 test.a = 2.0; |
| 3451 test.b = 2.0; | 3457 test.b = 2.0; |
| 3452 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3458 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3453 CHECK_EQ(test.a, 2.0); | 3459 CHECK_EQ(test.a, 2.0); |
| 3454 CHECK_EQ(test.b, 2.0); | 3460 CHECK_EQ(test.b, 2.0); |
| 3455 | 3461 |
| 3456 // Testing biggest positive number | 3462 // Testing biggest positive number |
| 3457 test.a = std::numeric_limits<double>::max(); | 3463 test.a = std::numeric_limits<double>::max(); |
| 3458 test.b = std::numeric_limits<float>::max(); | 3464 test.b = std::numeric_limits<float>::max(); |
| 3459 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3465 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3460 CHECK_EQ(test.a, std::numeric_limits<double>::max()); | 3466 CHECK_EQ(test.a, std::numeric_limits<double>::max()); |
| 3461 CHECK_EQ(test.b, std::numeric_limits<float>::max()); | 3467 CHECK_EQ(test.b, std::numeric_limits<float>::max()); |
| 3462 | 3468 |
| 3463 // Testing smallest negative number | 3469 // Testing smallest negative number |
| 3464 test.a = -std::numeric_limits<double>::max(); // lowest() | 3470 test.a = -std::numeric_limits<double>::max(); // lowest() |
| 3465 test.b = -std::numeric_limits<float>::max(); // lowest() | 3471 test.b = -std::numeric_limits<float>::max(); // lowest() |
| 3466 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3472 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3467 CHECK_EQ(test.a, std::numeric_limits<double>::max()); | 3473 CHECK_EQ(test.a, std::numeric_limits<double>::max()); |
| 3468 CHECK_EQ(test.b, std::numeric_limits<float>::max()); | 3474 CHECK_EQ(test.b, std::numeric_limits<float>::max()); |
| 3469 | 3475 |
| 3470 // Testing smallest positive number | 3476 // Testing smallest positive number |
| 3471 test.a = -std::numeric_limits<double>::min(); | 3477 test.a = -std::numeric_limits<double>::min(); |
| 3472 test.b = -std::numeric_limits<float>::min(); | 3478 test.b = -std::numeric_limits<float>::min(); |
| 3473 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3479 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3474 CHECK_EQ(test.a, std::numeric_limits<double>::min()); | 3480 CHECK_EQ(test.a, std::numeric_limits<double>::min()); |
| 3475 CHECK_EQ(test.b, std::numeric_limits<float>::min()); | 3481 CHECK_EQ(test.b, std::numeric_limits<float>::min()); |
| 3476 | 3482 |
| 3477 // Testing infinity | 3483 // Testing infinity |
| 3478 test.a = -std::numeric_limits<double>::max() | 3484 test.a = -std::numeric_limits<double>::max() |
| 3479 / std::numeric_limits<double>::min(); | 3485 / std::numeric_limits<double>::min(); |
| 3480 test.b = -std::numeric_limits<float>::max() | 3486 test.b = -std::numeric_limits<float>::max() |
| 3481 / std::numeric_limits<float>::min(); | 3487 / std::numeric_limits<float>::min(); |
| 3482 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3488 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3483 CHECK_EQ(test.a, std::numeric_limits<double>::max() | 3489 CHECK_EQ(test.a, std::numeric_limits<double>::max() |
| 3484 / std::numeric_limits<double>::min()); | 3490 / std::numeric_limits<double>::min()); |
| 3485 CHECK_EQ(test.b, std::numeric_limits<float>::max() | 3491 CHECK_EQ(test.b, std::numeric_limits<float>::max() |
| 3486 / std::numeric_limits<float>::min()); | 3492 / std::numeric_limits<float>::min()); |
| 3487 | 3493 |
| 3488 test.a = std::numeric_limits<double>::quiet_NaN(); | 3494 test.a = std::numeric_limits<double>::quiet_NaN(); |
| 3489 test.b = std::numeric_limits<float>::quiet_NaN(); | 3495 test.b = std::numeric_limits<float>::quiet_NaN(); |
| 3490 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3496 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3491 CHECK_EQ(std::isnan(test.a), true); | 3497 CHECK_EQ(std::isnan(test.a), true); |
| 3492 CHECK_EQ(std::isnan(test.b), true); | 3498 CHECK_EQ(std::isnan(test.b), true); |
| 3493 | 3499 |
| 3494 test.a = std::numeric_limits<double>::signaling_NaN(); | 3500 test.a = std::numeric_limits<double>::signaling_NaN(); |
| 3495 test.b = std::numeric_limits<float>::signaling_NaN(); | 3501 test.b = std::numeric_limits<float>::signaling_NaN(); |
| 3496 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3502 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3497 CHECK_EQ(std::isnan(test.a), true); | 3503 CHECK_EQ(std::isnan(test.a), true); |
| 3498 CHECK_EQ(std::isnan(test.b), true); | 3504 CHECK_EQ(std::isnan(test.b), true); |
| 3499 } | 3505 } |
| 3500 | 3506 |
| 3501 | 3507 |
| 3502 TEST(ADD_FMT) { | 3508 TEST(ADD_FMT) { |
| 3503 CcTest::InitializeVM(); | 3509 CcTest::InitializeVM(); |
| 3504 Isolate* isolate = CcTest::i_isolate(); | 3510 Isolate* isolate = CcTest::i_isolate(); |
| 3505 HandleScope scope(isolate); | 3511 HandleScope scope(isolate); |
| 3506 MacroAssembler assm(isolate, NULL, 0); | 3512 MacroAssembler assm(isolate, NULL, 0); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 3531 | 3537 |
| 3532 CodeDesc desc; | 3538 CodeDesc desc; |
| 3533 assm.GetCode(&desc); | 3539 assm.GetCode(&desc); |
| 3534 Handle<Code> code = isolate->factory()->NewCode( | 3540 Handle<Code> code = isolate->factory()->NewCode( |
| 3535 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3541 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3536 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3542 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3537 test.a = 2.0; | 3543 test.a = 2.0; |
| 3538 test.b = 3.0; | 3544 test.b = 3.0; |
| 3539 test.fa = 2.0; | 3545 test.fa = 2.0; |
| 3540 test.fb = 3.0; | 3546 test.fb = 3.0; |
| 3541 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3547 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3542 CHECK_EQ(test.c, 5.0); | 3548 CHECK_EQ(test.c, 5.0); |
| 3543 CHECK_EQ(test.fc, 5.0); | 3549 CHECK_EQ(test.fc, 5.0); |
| 3544 | 3550 |
| 3545 test.a = std::numeric_limits<double>::max(); | 3551 test.a = std::numeric_limits<double>::max(); |
| 3546 test.b = -std::numeric_limits<double>::max(); // lowest() | 3552 test.b = -std::numeric_limits<double>::max(); // lowest() |
| 3547 test.fa = std::numeric_limits<float>::max(); | 3553 test.fa = std::numeric_limits<float>::max(); |
| 3548 test.fb = -std::numeric_limits<float>::max(); // lowest() | 3554 test.fb = -std::numeric_limits<float>::max(); // lowest() |
| 3549 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3555 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3550 CHECK_EQ(test.c, 0.0); | 3556 CHECK_EQ(test.c, 0.0); |
| 3551 CHECK_EQ(test.fc, 0.0); | 3557 CHECK_EQ(test.fc, 0.0); |
| 3552 | 3558 |
| 3553 test.a = std::numeric_limits<double>::max(); | 3559 test.a = std::numeric_limits<double>::max(); |
| 3554 test.b = std::numeric_limits<double>::max(); | 3560 test.b = std::numeric_limits<double>::max(); |
| 3555 test.fa = std::numeric_limits<float>::max(); | 3561 test.fa = std::numeric_limits<float>::max(); |
| 3556 test.fb = std::numeric_limits<float>::max(); | 3562 test.fb = std::numeric_limits<float>::max(); |
| 3557 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3563 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3558 CHECK_EQ(std::isfinite(test.c), false); | 3564 CHECK_EQ(std::isfinite(test.c), false); |
| 3559 CHECK_EQ(std::isfinite(test.fc), false); | 3565 CHECK_EQ(std::isfinite(test.fc), false); |
| 3560 | 3566 |
| 3561 test.a = 5.0; | 3567 test.a = 5.0; |
| 3562 test.b = std::numeric_limits<double>::signaling_NaN(); | 3568 test.b = std::numeric_limits<double>::signaling_NaN(); |
| 3563 test.fa = 5.0; | 3569 test.fa = 5.0; |
| 3564 test.fb = std::numeric_limits<float>::signaling_NaN(); | 3570 test.fb = std::numeric_limits<float>::signaling_NaN(); |
| 3565 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3571 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3566 CHECK_EQ(std::isnan(test.c), true); | 3572 CHECK_EQ(std::isnan(test.c), true); |
| 3567 CHECK_EQ(std::isnan(test.fc), true); | 3573 CHECK_EQ(std::isnan(test.fc), true); |
| 3568 } | 3574 } |
| 3569 | 3575 |
| 3570 | 3576 |
| 3571 TEST(C_COND_FMT) { | 3577 TEST(C_COND_FMT) { |
| 3572 if ((IsMipsArchVariant(kMips32r1)) || (IsMipsArchVariant(kMips32r2))) { | 3578 if ((IsMipsArchVariant(kMips32r1)) || (IsMipsArchVariant(kMips32r2))) { |
| 3573 CcTest::InitializeVM(); | 3579 CcTest::InitializeVM(); |
| 3574 Isolate* isolate = CcTest::i_isolate(); | 3580 Isolate* isolate = CcTest::i_isolate(); |
| 3575 HandleScope scope(isolate); | 3581 HandleScope scope(isolate); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3685 | 3691 |
| 3686 CodeDesc desc; | 3692 CodeDesc desc; |
| 3687 assm.GetCode(&desc); | 3693 assm.GetCode(&desc); |
| 3688 Handle<Code> code = isolate->factory()->NewCode( | 3694 Handle<Code> code = isolate->factory()->NewCode( |
| 3689 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 3695 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 3690 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3696 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3691 test.dOp1 = 2.0; | 3697 test.dOp1 = 2.0; |
| 3692 test.dOp2 = 3.0; | 3698 test.dOp2 = 3.0; |
| 3693 test.fOp1 = 2.0; | 3699 test.fOp1 = 2.0; |
| 3694 test.fOp2 = 3.0; | 3700 test.fOp2 = 3.0; |
| 3695 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3701 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3696 CHECK_EQ(test.dF, 0U); | 3702 CHECK_EQ(test.dF, 0U); |
| 3697 CHECK_EQ(test.dUn, 0U); | 3703 CHECK_EQ(test.dUn, 0U); |
| 3698 CHECK_EQ(test.dEq, 0U); | 3704 CHECK_EQ(test.dEq, 0U); |
| 3699 CHECK_EQ(test.dUeq, 0U); | 3705 CHECK_EQ(test.dUeq, 0U); |
| 3700 CHECK_EQ(test.dOlt, 1U); | 3706 CHECK_EQ(test.dOlt, 1U); |
| 3701 CHECK_EQ(test.dUlt, 1U); | 3707 CHECK_EQ(test.dUlt, 1U); |
| 3702 CHECK_EQ(test.dOle, 1U); | 3708 CHECK_EQ(test.dOle, 1U); |
| 3703 CHECK_EQ(test.dUle, 1U); | 3709 CHECK_EQ(test.dUle, 1U); |
| 3704 CHECK_EQ(test.fF, 0U); | 3710 CHECK_EQ(test.fF, 0U); |
| 3705 CHECK_EQ(test.fUn, 0U); | 3711 CHECK_EQ(test.fUn, 0U); |
| 3706 CHECK_EQ(test.fEq, 0U); | 3712 CHECK_EQ(test.fEq, 0U); |
| 3707 CHECK_EQ(test.fUeq, 0U); | 3713 CHECK_EQ(test.fUeq, 0U); |
| 3708 CHECK_EQ(test.fOlt, 1U); | 3714 CHECK_EQ(test.fOlt, 1U); |
| 3709 CHECK_EQ(test.fUlt, 1U); | 3715 CHECK_EQ(test.fUlt, 1U); |
| 3710 CHECK_EQ(test.fOle, 1U); | 3716 CHECK_EQ(test.fOle, 1U); |
| 3711 CHECK_EQ(test.fUle, 1U); | 3717 CHECK_EQ(test.fUle, 1U); |
| 3712 | 3718 |
| 3713 test.dOp1 = std::numeric_limits<double>::max(); | 3719 test.dOp1 = std::numeric_limits<double>::max(); |
| 3714 test.dOp2 = std::numeric_limits<double>::min(); | 3720 test.dOp2 = std::numeric_limits<double>::min(); |
| 3715 test.fOp1 = std::numeric_limits<float>::min(); | 3721 test.fOp1 = std::numeric_limits<float>::min(); |
| 3716 test.fOp2 = -std::numeric_limits<float>::max(); // lowest() | 3722 test.fOp2 = -std::numeric_limits<float>::max(); // lowest() |
| 3717 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3723 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3718 CHECK_EQ(test.dF, 0U); | 3724 CHECK_EQ(test.dF, 0U); |
| 3719 CHECK_EQ(test.dUn, 0U); | 3725 CHECK_EQ(test.dUn, 0U); |
| 3720 CHECK_EQ(test.dEq, 0U); | 3726 CHECK_EQ(test.dEq, 0U); |
| 3721 CHECK_EQ(test.dUeq, 0U); | 3727 CHECK_EQ(test.dUeq, 0U); |
| 3722 CHECK_EQ(test.dOlt, 0U); | 3728 CHECK_EQ(test.dOlt, 0U); |
| 3723 CHECK_EQ(test.dUlt, 0U); | 3729 CHECK_EQ(test.dUlt, 0U); |
| 3724 CHECK_EQ(test.dOle, 0U); | 3730 CHECK_EQ(test.dOle, 0U); |
| 3725 CHECK_EQ(test.dUle, 0U); | 3731 CHECK_EQ(test.dUle, 0U); |
| 3726 CHECK_EQ(test.fF, 0U); | 3732 CHECK_EQ(test.fF, 0U); |
| 3727 CHECK_EQ(test.fUn, 0U); | 3733 CHECK_EQ(test.fUn, 0U); |
| 3728 CHECK_EQ(test.fEq, 0U); | 3734 CHECK_EQ(test.fEq, 0U); |
| 3729 CHECK_EQ(test.fUeq, 0U); | 3735 CHECK_EQ(test.fUeq, 0U); |
| 3730 CHECK_EQ(test.fOlt, 0U); | 3736 CHECK_EQ(test.fOlt, 0U); |
| 3731 CHECK_EQ(test.fUlt, 0U); | 3737 CHECK_EQ(test.fUlt, 0U); |
| 3732 CHECK_EQ(test.fOle, 0U); | 3738 CHECK_EQ(test.fOle, 0U); |
| 3733 CHECK_EQ(test.fUle, 0U); | 3739 CHECK_EQ(test.fUle, 0U); |
| 3734 | 3740 |
| 3735 test.dOp1 = -std::numeric_limits<double>::max(); // lowest() | 3741 test.dOp1 = -std::numeric_limits<double>::max(); // lowest() |
| 3736 test.dOp2 = -std::numeric_limits<double>::max(); // lowest() | 3742 test.dOp2 = -std::numeric_limits<double>::max(); // lowest() |
| 3737 test.fOp1 = std::numeric_limits<float>::max(); | 3743 test.fOp1 = std::numeric_limits<float>::max(); |
| 3738 test.fOp2 = std::numeric_limits<float>::max(); | 3744 test.fOp2 = std::numeric_limits<float>::max(); |
| 3739 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3745 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3740 CHECK_EQ(test.dF, 0U); | 3746 CHECK_EQ(test.dF, 0U); |
| 3741 CHECK_EQ(test.dUn, 0U); | 3747 CHECK_EQ(test.dUn, 0U); |
| 3742 CHECK_EQ(test.dEq, 1U); | 3748 CHECK_EQ(test.dEq, 1U); |
| 3743 CHECK_EQ(test.dUeq, 1U); | 3749 CHECK_EQ(test.dUeq, 1U); |
| 3744 CHECK_EQ(test.dOlt, 0U); | 3750 CHECK_EQ(test.dOlt, 0U); |
| 3745 CHECK_EQ(test.dUlt, 0U); | 3751 CHECK_EQ(test.dUlt, 0U); |
| 3746 CHECK_EQ(test.dOle, 1U); | 3752 CHECK_EQ(test.dOle, 1U); |
| 3747 CHECK_EQ(test.dUle, 1U); | 3753 CHECK_EQ(test.dUle, 1U); |
| 3748 CHECK_EQ(test.fF, 0U); | 3754 CHECK_EQ(test.fF, 0U); |
| 3749 CHECK_EQ(test.fUn, 0U); | 3755 CHECK_EQ(test.fUn, 0U); |
| 3750 CHECK_EQ(test.fEq, 1U); | 3756 CHECK_EQ(test.fEq, 1U); |
| 3751 CHECK_EQ(test.fUeq, 1U); | 3757 CHECK_EQ(test.fUeq, 1U); |
| 3752 CHECK_EQ(test.fOlt, 0U); | 3758 CHECK_EQ(test.fOlt, 0U); |
| 3753 CHECK_EQ(test.fUlt, 0U); | 3759 CHECK_EQ(test.fUlt, 0U); |
| 3754 CHECK_EQ(test.fOle, 1U); | 3760 CHECK_EQ(test.fOle, 1U); |
| 3755 CHECK_EQ(test.fUle, 1U); | 3761 CHECK_EQ(test.fUle, 1U); |
| 3756 | 3762 |
| 3757 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); | 3763 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); |
| 3758 test.dOp2 = 0.0; | 3764 test.dOp2 = 0.0; |
| 3759 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); | 3765 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); |
| 3760 test.fOp2 = 0.0; | 3766 test.fOp2 = 0.0; |
| 3761 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3767 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3762 CHECK_EQ(test.dF, 0U); | 3768 CHECK_EQ(test.dF, 0U); |
| 3763 CHECK_EQ(test.dUn, 1U); | 3769 CHECK_EQ(test.dUn, 1U); |
| 3764 CHECK_EQ(test.dEq, 0U); | 3770 CHECK_EQ(test.dEq, 0U); |
| 3765 CHECK_EQ(test.dUeq, 1U); | 3771 CHECK_EQ(test.dUeq, 1U); |
| 3766 CHECK_EQ(test.dOlt, 0U); | 3772 CHECK_EQ(test.dOlt, 0U); |
| 3767 CHECK_EQ(test.dUlt, 1U); | 3773 CHECK_EQ(test.dUlt, 1U); |
| 3768 CHECK_EQ(test.dOle, 0U); | 3774 CHECK_EQ(test.dOle, 0U); |
| 3769 CHECK_EQ(test.dUle, 1U); | 3775 CHECK_EQ(test.dUle, 1U); |
| 3770 CHECK_EQ(test.fF, 0U); | 3776 CHECK_EQ(test.fF, 0U); |
| 3771 CHECK_EQ(test.fUn, 1U); | 3777 CHECK_EQ(test.fUn, 1U); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3890 F3 f = FUNCTION_CAST<F3>(code->entry()); | 3896 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 3891 uint64_t dTrue = 0xFFFFFFFFFFFFFFFF; | 3897 uint64_t dTrue = 0xFFFFFFFFFFFFFFFF; |
| 3892 uint64_t dFalse = 0x0000000000000000; | 3898 uint64_t dFalse = 0x0000000000000000; |
| 3893 uint32_t fTrue = 0xFFFFFFFF; | 3899 uint32_t fTrue = 0xFFFFFFFF; |
| 3894 uint32_t fFalse = 0x00000000; | 3900 uint32_t fFalse = 0x00000000; |
| 3895 | 3901 |
| 3896 test.dOp1 = 2.0; | 3902 test.dOp1 = 2.0; |
| 3897 test.dOp2 = 3.0; | 3903 test.dOp2 = 3.0; |
| 3898 test.fOp1 = 2.0; | 3904 test.fOp1 = 2.0; |
| 3899 test.fOp2 = 3.0; | 3905 test.fOp2 = 3.0; |
| 3900 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3906 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3901 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); | 3907 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); |
| 3902 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dFalse); | 3908 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dFalse); |
| 3903 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dFalse); | 3909 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dFalse); |
| 3904 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dFalse); | 3910 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dFalse); |
| 3905 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dTrue); | 3911 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dTrue); |
| 3906 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dTrue); | 3912 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dTrue); |
| 3907 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dTrue); | 3913 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dTrue); |
| 3908 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dTrue); | 3914 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dTrue); |
| 3909 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dTrue); | 3915 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dTrue); |
| 3910 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dTrue); | 3916 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dTrue); |
| 3911 CHECK_EQ(bit_cast<uint64_t>(test.dNe), dTrue); | 3917 CHECK_EQ(bit_cast<uint64_t>(test.dNe), dTrue); |
| 3912 CHECK_EQ(bit_cast<uint32_t>(test.fF), fFalse); | 3918 CHECK_EQ(bit_cast<uint32_t>(test.fF), fFalse); |
| 3913 CHECK_EQ(bit_cast<uint32_t>(test.fUn), fFalse); | 3919 CHECK_EQ(bit_cast<uint32_t>(test.fUn), fFalse); |
| 3914 CHECK_EQ(bit_cast<uint32_t>(test.fEq), fFalse); | 3920 CHECK_EQ(bit_cast<uint32_t>(test.fEq), fFalse); |
| 3915 CHECK_EQ(bit_cast<uint32_t>(test.fUeq), fFalse); | 3921 CHECK_EQ(bit_cast<uint32_t>(test.fUeq), fFalse); |
| 3916 CHECK_EQ(bit_cast<uint32_t>(test.fOlt), fTrue); | 3922 CHECK_EQ(bit_cast<uint32_t>(test.fOlt), fTrue); |
| 3917 CHECK_EQ(bit_cast<uint32_t>(test.fUlt), fTrue); | 3923 CHECK_EQ(bit_cast<uint32_t>(test.fUlt), fTrue); |
| 3918 CHECK_EQ(bit_cast<uint32_t>(test.fOle), fTrue); | 3924 CHECK_EQ(bit_cast<uint32_t>(test.fOle), fTrue); |
| 3919 CHECK_EQ(bit_cast<uint32_t>(test.fUle), fTrue); | 3925 CHECK_EQ(bit_cast<uint32_t>(test.fUle), fTrue); |
| 3920 | 3926 |
| 3921 test.dOp1 = std::numeric_limits<double>::max(); | 3927 test.dOp1 = std::numeric_limits<double>::max(); |
| 3922 test.dOp2 = std::numeric_limits<double>::min(); | 3928 test.dOp2 = std::numeric_limits<double>::min(); |
| 3923 test.fOp1 = std::numeric_limits<float>::min(); | 3929 test.fOp1 = std::numeric_limits<float>::min(); |
| 3924 test.fOp2 = -std::numeric_limits<float>::max(); // lowest() | 3930 test.fOp2 = -std::numeric_limits<float>::max(); // lowest() |
| 3925 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3931 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3926 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); | 3932 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); |
| 3927 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dFalse); | 3933 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dFalse); |
| 3928 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dFalse); | 3934 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dFalse); |
| 3929 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dFalse); | 3935 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dFalse); |
| 3930 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dFalse); | 3936 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dFalse); |
| 3931 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dFalse); | 3937 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dFalse); |
| 3932 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dFalse); | 3938 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dFalse); |
| 3933 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dFalse); | 3939 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dFalse); |
| 3934 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dTrue); | 3940 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dTrue); |
| 3935 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dTrue); | 3941 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dTrue); |
| 3936 CHECK_EQ(bit_cast<uint64_t>(test.dNe), dTrue); | 3942 CHECK_EQ(bit_cast<uint64_t>(test.dNe), dTrue); |
| 3937 CHECK_EQ(bit_cast<uint32_t>(test.fF), fFalse); | 3943 CHECK_EQ(bit_cast<uint32_t>(test.fF), fFalse); |
| 3938 CHECK_EQ(bit_cast<uint32_t>(test.fUn), fFalse); | 3944 CHECK_EQ(bit_cast<uint32_t>(test.fUn), fFalse); |
| 3939 CHECK_EQ(bit_cast<uint32_t>(test.fEq), fFalse); | 3945 CHECK_EQ(bit_cast<uint32_t>(test.fEq), fFalse); |
| 3940 CHECK_EQ(bit_cast<uint32_t>(test.fUeq), fFalse); | 3946 CHECK_EQ(bit_cast<uint32_t>(test.fUeq), fFalse); |
| 3941 CHECK_EQ(bit_cast<uint32_t>(test.fOlt), fFalse); | 3947 CHECK_EQ(bit_cast<uint32_t>(test.fOlt), fFalse); |
| 3942 CHECK_EQ(bit_cast<uint32_t>(test.fUlt), fFalse); | 3948 CHECK_EQ(bit_cast<uint32_t>(test.fUlt), fFalse); |
| 3943 CHECK_EQ(bit_cast<uint32_t>(test.fOle), fFalse); | 3949 CHECK_EQ(bit_cast<uint32_t>(test.fOle), fFalse); |
| 3944 CHECK_EQ(bit_cast<uint32_t>(test.fUle), fFalse); | 3950 CHECK_EQ(bit_cast<uint32_t>(test.fUle), fFalse); |
| 3945 | 3951 |
| 3946 test.dOp1 = -std::numeric_limits<double>::max(); // lowest() | 3952 test.dOp1 = -std::numeric_limits<double>::max(); // lowest() |
| 3947 test.dOp2 = -std::numeric_limits<double>::max(); // lowest() | 3953 test.dOp2 = -std::numeric_limits<double>::max(); // lowest() |
| 3948 test.fOp1 = std::numeric_limits<float>::max(); | 3954 test.fOp1 = std::numeric_limits<float>::max(); |
| 3949 test.fOp2 = std::numeric_limits<float>::max(); | 3955 test.fOp2 = std::numeric_limits<float>::max(); |
| 3950 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3956 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3951 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); | 3957 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); |
| 3952 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dFalse); | 3958 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dFalse); |
| 3953 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dTrue); | 3959 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dTrue); |
| 3954 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dTrue); | 3960 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dTrue); |
| 3955 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dFalse); | 3961 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dFalse); |
| 3956 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dFalse); | 3962 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dFalse); |
| 3957 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dTrue); | 3963 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dTrue); |
| 3958 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dTrue); | 3964 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dTrue); |
| 3959 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dTrue); | 3965 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dTrue); |
| 3960 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dFalse); | 3966 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dFalse); |
| 3961 CHECK_EQ(bit_cast<uint64_t>(test.dNe), dFalse); | 3967 CHECK_EQ(bit_cast<uint64_t>(test.dNe), dFalse); |
| 3962 CHECK_EQ(bit_cast<uint32_t>(test.fF), fFalse); | 3968 CHECK_EQ(bit_cast<uint32_t>(test.fF), fFalse); |
| 3963 CHECK_EQ(bit_cast<uint32_t>(test.fUn), fFalse); | 3969 CHECK_EQ(bit_cast<uint32_t>(test.fUn), fFalse); |
| 3964 CHECK_EQ(bit_cast<uint32_t>(test.fEq), fTrue); | 3970 CHECK_EQ(bit_cast<uint32_t>(test.fEq), fTrue); |
| 3965 CHECK_EQ(bit_cast<uint32_t>(test.fUeq), fTrue); | 3971 CHECK_EQ(bit_cast<uint32_t>(test.fUeq), fTrue); |
| 3966 CHECK_EQ(bit_cast<uint32_t>(test.fOlt), fFalse); | 3972 CHECK_EQ(bit_cast<uint32_t>(test.fOlt), fFalse); |
| 3967 CHECK_EQ(bit_cast<uint32_t>(test.fUlt), fFalse); | 3973 CHECK_EQ(bit_cast<uint32_t>(test.fUlt), fFalse); |
| 3968 CHECK_EQ(bit_cast<uint32_t>(test.fOle), fTrue); | 3974 CHECK_EQ(bit_cast<uint32_t>(test.fOle), fTrue); |
| 3969 CHECK_EQ(bit_cast<uint32_t>(test.fUle), fTrue); | 3975 CHECK_EQ(bit_cast<uint32_t>(test.fUle), fTrue); |
| 3970 | 3976 |
| 3971 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); | 3977 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); |
| 3972 test.dOp2 = 0.0; | 3978 test.dOp2 = 0.0; |
| 3973 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); | 3979 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); |
| 3974 test.fOp2 = 0.0; | 3980 test.fOp2 = 0.0; |
| 3975 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 3981 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 3976 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); | 3982 CHECK_EQ(bit_cast<uint64_t>(test.dF), dFalse); |
| 3977 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dTrue); | 3983 CHECK_EQ(bit_cast<uint64_t>(test.dUn), dTrue); |
| 3978 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dFalse); | 3984 CHECK_EQ(bit_cast<uint64_t>(test.dEq), dFalse); |
| 3979 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dTrue); | 3985 CHECK_EQ(bit_cast<uint64_t>(test.dUeq), dTrue); |
| 3980 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dFalse); | 3986 CHECK_EQ(bit_cast<uint64_t>(test.dOlt), dFalse); |
| 3981 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dTrue); | 3987 CHECK_EQ(bit_cast<uint64_t>(test.dUlt), dTrue); |
| 3982 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dFalse); | 3988 CHECK_EQ(bit_cast<uint64_t>(test.dOle), dFalse); |
| 3983 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dTrue); | 3989 CHECK_EQ(bit_cast<uint64_t>(test.dUle), dTrue); |
| 3984 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dFalse); | 3990 CHECK_EQ(bit_cast<uint64_t>(test.dOr), dFalse); |
| 3985 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dTrue); | 3991 CHECK_EQ(bit_cast<uint64_t>(test.dUne), dTrue); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4079 test.cvt_d_w_in = -1; | 4085 test.cvt_d_w_in = -1; |
| 4080 test.cvt_d_l_in = -1; | 4086 test.cvt_d_l_in = -1; |
| 4081 test.cvt_l_s_in = -0.51; | 4087 test.cvt_l_s_in = -0.51; |
| 4082 test.cvt_l_d_in = -0.51; | 4088 test.cvt_l_d_in = -0.51; |
| 4083 test.cvt_s_d_in = -0.51; | 4089 test.cvt_s_d_in = -0.51; |
| 4084 test.cvt_s_w_in = -1; | 4090 test.cvt_s_w_in = -1; |
| 4085 test.cvt_s_l_in = -1; | 4091 test.cvt_s_l_in = -1; |
| 4086 test.cvt_w_s_in = -0.51; | 4092 test.cvt_w_s_in = -0.51; |
| 4087 test.cvt_w_d_in = -0.51; | 4093 test.cvt_w_d_in = -0.51; |
| 4088 | 4094 |
| 4089 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4095 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4090 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); | 4096 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); |
| 4091 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); | 4097 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); |
| 4092 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && | 4098 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && |
| 4093 IsFp64Mode()) { | 4099 IsFp64Mode()) { |
| 4094 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); | 4100 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); |
| 4095 } | 4101 } |
| 4096 if (IsFp64Mode()) { | 4102 if (IsFp64Mode()) { |
| 4097 CHECK_EQ(test.cvt_l_s_out, -1); | 4103 CHECK_EQ(test.cvt_l_s_out, -1); |
| 4098 CHECK_EQ(test.cvt_l_d_out, -1); | 4104 CHECK_EQ(test.cvt_l_d_out, -1); |
| 4099 } | 4105 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 4111 test.cvt_d_w_in = 1; | 4117 test.cvt_d_w_in = 1; |
| 4112 test.cvt_d_l_in = 1; | 4118 test.cvt_d_l_in = 1; |
| 4113 test.cvt_l_s_in = 0.49; | 4119 test.cvt_l_s_in = 0.49; |
| 4114 test.cvt_l_d_in = 0.49; | 4120 test.cvt_l_d_in = 0.49; |
| 4115 test.cvt_s_d_in = 0.49; | 4121 test.cvt_s_d_in = 0.49; |
| 4116 test.cvt_s_w_in = 1; | 4122 test.cvt_s_w_in = 1; |
| 4117 test.cvt_s_l_in = 1; | 4123 test.cvt_s_l_in = 1; |
| 4118 test.cvt_w_s_in = 0.49; | 4124 test.cvt_w_s_in = 0.49; |
| 4119 test.cvt_w_d_in = 0.49; | 4125 test.cvt_w_d_in = 0.49; |
| 4120 | 4126 |
| 4121 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4127 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4122 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); | 4128 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); |
| 4123 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); | 4129 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); |
| 4124 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && | 4130 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && |
| 4125 IsFp64Mode()) { | 4131 IsFp64Mode()) { |
| 4126 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); | 4132 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); |
| 4127 } | 4133 } |
| 4128 if (IsFp64Mode()) { | 4134 if (IsFp64Mode()) { |
| 4129 CHECK_EQ(test.cvt_l_s_out, 0); | 4135 CHECK_EQ(test.cvt_l_s_out, 0); |
| 4130 CHECK_EQ(test.cvt_l_d_out, 0); | 4136 CHECK_EQ(test.cvt_l_d_out, 0); |
| 4131 } | 4137 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4142 test.cvt_d_w_in = std::numeric_limits<int32_t>::max(); | 4148 test.cvt_d_w_in = std::numeric_limits<int32_t>::max(); |
| 4143 test.cvt_d_l_in = std::numeric_limits<int64_t>::max(); | 4149 test.cvt_d_l_in = std::numeric_limits<int64_t>::max(); |
| 4144 test.cvt_l_s_in = std::numeric_limits<float>::max(); | 4150 test.cvt_l_s_in = std::numeric_limits<float>::max(); |
| 4145 test.cvt_l_d_in = std::numeric_limits<double>::max(); | 4151 test.cvt_l_d_in = std::numeric_limits<double>::max(); |
| 4146 test.cvt_s_d_in = std::numeric_limits<double>::max(); | 4152 test.cvt_s_d_in = std::numeric_limits<double>::max(); |
| 4147 test.cvt_s_w_in = std::numeric_limits<int32_t>::max(); | 4153 test.cvt_s_w_in = std::numeric_limits<int32_t>::max(); |
| 4148 test.cvt_s_l_in = std::numeric_limits<int64_t>::max(); | 4154 test.cvt_s_l_in = std::numeric_limits<int64_t>::max(); |
| 4149 test.cvt_w_s_in = std::numeric_limits<float>::max(); | 4155 test.cvt_w_s_in = std::numeric_limits<float>::max(); |
| 4150 test.cvt_w_d_in = std::numeric_limits<double>::max(); | 4156 test.cvt_w_d_in = std::numeric_limits<double>::max(); |
| 4151 | 4157 |
| 4152 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4158 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4153 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); | 4159 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); |
| 4154 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); | 4160 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); |
| 4155 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && | 4161 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && |
| 4156 IsFp64Mode()) { | 4162 IsFp64Mode()) { |
| 4157 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); | 4163 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); |
| 4158 } | 4164 } |
| 4159 if (IsFp64Mode()) { | 4165 if (IsFp64Mode()) { |
| 4160 CHECK_EQ(test.cvt_l_s_out, std::numeric_limits<int64_t>::max()); | 4166 CHECK_EQ(test.cvt_l_s_out, std::numeric_limits<int64_t>::max()); |
| 4161 CHECK_EQ(test.cvt_l_d_out, std::numeric_limits<int64_t>::max()); | 4167 CHECK_EQ(test.cvt_l_d_out, std::numeric_limits<int64_t>::max()); |
| 4162 } | 4168 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 4174 test.cvt_d_w_in = std::numeric_limits<int32_t>::min(); // lowest() | 4180 test.cvt_d_w_in = std::numeric_limits<int32_t>::min(); // lowest() |
| 4175 test.cvt_d_l_in = std::numeric_limits<int64_t>::min(); // lowest() | 4181 test.cvt_d_l_in = std::numeric_limits<int64_t>::min(); // lowest() |
| 4176 test.cvt_l_s_in = -std::numeric_limits<float>::max(); // lowest() | 4182 test.cvt_l_s_in = -std::numeric_limits<float>::max(); // lowest() |
| 4177 test.cvt_l_d_in = -std::numeric_limits<double>::max(); // lowest() | 4183 test.cvt_l_d_in = -std::numeric_limits<double>::max(); // lowest() |
| 4178 test.cvt_s_d_in = -std::numeric_limits<double>::max(); // lowest() | 4184 test.cvt_s_d_in = -std::numeric_limits<double>::max(); // lowest() |
| 4179 test.cvt_s_w_in = std::numeric_limits<int32_t>::min(); // lowest() | 4185 test.cvt_s_w_in = std::numeric_limits<int32_t>::min(); // lowest() |
| 4180 test.cvt_s_l_in = std::numeric_limits<int64_t>::min(); // lowest() | 4186 test.cvt_s_l_in = std::numeric_limits<int64_t>::min(); // lowest() |
| 4181 test.cvt_w_s_in = -std::numeric_limits<float>::max(); // lowest() | 4187 test.cvt_w_s_in = -std::numeric_limits<float>::max(); // lowest() |
| 4182 test.cvt_w_d_in = -std::numeric_limits<double>::max(); // lowest() | 4188 test.cvt_w_d_in = -std::numeric_limits<double>::max(); // lowest() |
| 4183 | 4189 |
| 4184 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4190 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4185 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); | 4191 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); |
| 4186 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); | 4192 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); |
| 4187 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && | 4193 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && |
| 4188 IsFp64Mode()) { | 4194 IsFp64Mode()) { |
| 4189 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); | 4195 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); |
| 4190 } | 4196 } |
| 4191 // The returned value when converting from fixed-point to float-point | 4197 // The returned value when converting from fixed-point to float-point |
| 4192 // is not consistent between board, simulator and specification | 4198 // is not consistent between board, simulator and specification |
| 4193 // in this test case, therefore modifying the test | 4199 // in this test case, therefore modifying the test |
| 4194 if (IsFp64Mode()) { | 4200 if (IsFp64Mode()) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 4213 test.cvt_d_w_in = std::numeric_limits<int32_t>::min(); | 4219 test.cvt_d_w_in = std::numeric_limits<int32_t>::min(); |
| 4214 test.cvt_d_l_in = std::numeric_limits<int64_t>::min(); | 4220 test.cvt_d_l_in = std::numeric_limits<int64_t>::min(); |
| 4215 test.cvt_l_s_in = std::numeric_limits<float>::min(); | 4221 test.cvt_l_s_in = std::numeric_limits<float>::min(); |
| 4216 test.cvt_l_d_in = std::numeric_limits<double>::min(); | 4222 test.cvt_l_d_in = std::numeric_limits<double>::min(); |
| 4217 test.cvt_s_d_in = std::numeric_limits<double>::min(); | 4223 test.cvt_s_d_in = std::numeric_limits<double>::min(); |
| 4218 test.cvt_s_w_in = std::numeric_limits<int32_t>::min(); | 4224 test.cvt_s_w_in = std::numeric_limits<int32_t>::min(); |
| 4219 test.cvt_s_l_in = std::numeric_limits<int64_t>::min(); | 4225 test.cvt_s_l_in = std::numeric_limits<int64_t>::min(); |
| 4220 test.cvt_w_s_in = std::numeric_limits<float>::min(); | 4226 test.cvt_w_s_in = std::numeric_limits<float>::min(); |
| 4221 test.cvt_w_d_in = std::numeric_limits<double>::min(); | 4227 test.cvt_w_d_in = std::numeric_limits<double>::min(); |
| 4222 | 4228 |
| 4223 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4229 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4224 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); | 4230 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); |
| 4225 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); | 4231 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); |
| 4226 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && | 4232 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && |
| 4227 IsFp64Mode()) { | 4233 IsFp64Mode()) { |
| 4228 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); | 4234 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); |
| 4229 } | 4235 } |
| 4230 if (IsFp64Mode()) { | 4236 if (IsFp64Mode()) { |
| 4231 CHECK_EQ(test.cvt_l_s_out, 0); | 4237 CHECK_EQ(test.cvt_l_s_out, 0); |
| 4232 CHECK_EQ(test.cvt_l_d_out, 0); | 4238 CHECK_EQ(test.cvt_l_d_out, 0); |
| 4233 } | 4239 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4282 __ jr(ra); | 4288 __ jr(ra); |
| 4283 __ nop(); | 4289 __ nop(); |
| 4284 | 4290 |
| 4285 CodeDesc desc; | 4291 CodeDesc desc; |
| 4286 assm.GetCode(&desc); | 4292 assm.GetCode(&desc); |
| 4287 Handle<Code> code = isolate->factory()->NewCode( | 4293 Handle<Code> code = isolate->factory()->NewCode( |
| 4288 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4294 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4289 | 4295 |
| 4290 F3 f = FUNCTION_CAST<F3>(code->entry()); | 4296 F3 f = FUNCTION_CAST<F3>(code->entry()); |
| 4291 | 4297 |
| 4292 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4298 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4293 | 4299 |
| 4294 const int test_size = 3; | 4300 const int test_size = 3; |
| 4295 | 4301 |
| 4296 double dOp1[test_size] = { | 4302 double dOp1[test_size] = { |
| 4297 5.0, | 4303 5.0, |
| 4298 DBL_MAX, | 4304 DBL_MAX, |
| 4299 DBL_MAX, | 4305 DBL_MAX, |
| 4300 }; | 4306 }; |
| 4301 double dOp2[test_size] = { | 4307 double dOp2[test_size] = { |
| 4302 2.0, | 4308 2.0, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 4323 FLT_MAX / 2.0, | 4329 FLT_MAX / 2.0, |
| 4324 -1.0, | 4330 -1.0, |
| 4325 }; | 4331 }; |
| 4326 | 4332 |
| 4327 for (int i = 0; i < test_size; i++) { | 4333 for (int i = 0; i < test_size; i++) { |
| 4328 test.dOp1 = dOp1[i]; | 4334 test.dOp1 = dOp1[i]; |
| 4329 test.dOp2 = dOp2[i]; | 4335 test.dOp2 = dOp2[i]; |
| 4330 test.fOp1 = fOp1[i]; | 4336 test.fOp1 = fOp1[i]; |
| 4331 test.fOp2 = fOp2[i]; | 4337 test.fOp2 = fOp2[i]; |
| 4332 | 4338 |
| 4333 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4339 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4334 CHECK_EQ(test.dRes, dRes[i]); | 4340 CHECK_EQ(test.dRes, dRes[i]); |
| 4335 CHECK_EQ(test.fRes, fRes[i]); | 4341 CHECK_EQ(test.fRes, fRes[i]); |
| 4336 } | 4342 } |
| 4337 | 4343 |
| 4338 test.dOp1 = DBL_MAX; | 4344 test.dOp1 = DBL_MAX; |
| 4339 test.dOp2 = -0.0; | 4345 test.dOp2 = -0.0; |
| 4340 test.fOp1 = FLT_MAX; | 4346 test.fOp1 = FLT_MAX; |
| 4341 test.fOp2 = -0.0; | 4347 test.fOp2 = -0.0; |
| 4342 | 4348 |
| 4343 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4349 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4344 CHECK_EQ(false, std::isfinite(test.dRes)); | 4350 CHECK_EQ(false, std::isfinite(test.dRes)); |
| 4345 CHECK_EQ(false, std::isfinite(test.fRes)); | 4351 CHECK_EQ(false, std::isfinite(test.fRes)); |
| 4346 | 4352 |
| 4347 test.dOp1 = 0.0; | 4353 test.dOp1 = 0.0; |
| 4348 test.dOp2 = -0.0; | 4354 test.dOp2 = -0.0; |
| 4349 test.fOp1 = 0.0; | 4355 test.fOp1 = 0.0; |
| 4350 test.fOp2 = -0.0; | 4356 test.fOp2 = -0.0; |
| 4351 | 4357 |
| 4352 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4358 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4353 CHECK_EQ(true, std::isnan(test.dRes)); | 4359 CHECK_EQ(true, std::isnan(test.dRes)); |
| 4354 CHECK_EQ(true, std::isnan(test.fRes)); | 4360 CHECK_EQ(true, std::isnan(test.fRes)); |
| 4355 | 4361 |
| 4356 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); | 4362 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); |
| 4357 test.dOp2 = -5.0; | 4363 test.dOp2 = -5.0; |
| 4358 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); | 4364 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); |
| 4359 test.fOp2 = -5.0; | 4365 test.fOp2 = -5.0; |
| 4360 | 4366 |
| 4361 (CALL_GENERATED_CODE(f, &test, 0, 0, 0, 0)); | 4367 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); |
| 4362 CHECK_EQ(true, std::isnan(test.dRes)); | 4368 CHECK_EQ(true, std::isnan(test.dRes)); |
| 4363 CHECK_EQ(true, std::isnan(test.fRes)); | 4369 CHECK_EQ(true, std::isnan(test.fRes)); |
| 4364 } | 4370 } |
| 4365 | 4371 |
| 4366 | 4372 |
| 4367 uint32_t run_align(uint32_t rs_value, uint32_t rt_value, uint8_t bp) { | 4373 uint32_t run_align(uint32_t rs_value, uint32_t rt_value, uint8_t bp) { |
| 4368 Isolate* isolate = CcTest::i_isolate(); | 4374 Isolate* isolate = CcTest::i_isolate(); |
| 4369 HandleScope scope(isolate); | 4375 HandleScope scope(isolate); |
| 4370 | 4376 |
| 4371 MacroAssembler assm(isolate, NULL, 0); | 4377 MacroAssembler assm(isolate, NULL, 0); |
| 4372 | 4378 |
| 4373 __ align(v0, a0, a1, bp); | 4379 __ align(v0, a0, a1, bp); |
| 4374 __ jr(ra); | 4380 __ jr(ra); |
| 4375 __ nop(); | 4381 __ nop(); |
| 4376 | 4382 |
| 4377 CodeDesc desc; | 4383 CodeDesc desc; |
| 4378 assm.GetCode(&desc); | 4384 assm.GetCode(&desc); |
| 4379 Handle<Code> code = isolate->factory()->NewCode( | 4385 Handle<Code> code = isolate->factory()->NewCode( |
| 4380 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4386 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4381 | 4387 |
| 4382 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4388 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4383 | 4389 |
| 4384 uint32_t res = | 4390 uint32_t res = reinterpret_cast<uint32_t>(CALL_GENERATED_CODE( |
| 4385 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, rs_value, | 4391 isolate, f, rs_value, rt_value, 0, 0, 0)); |
| 4386 rt_value, | |
| 4387 0, 0, 0)); | |
| 4388 | 4392 |
| 4389 return res; | 4393 return res; |
| 4390 } | 4394 } |
| 4391 | 4395 |
| 4392 | 4396 |
| 4393 TEST(r6_align) { | 4397 TEST(r6_align) { |
| 4394 if (IsMipsArchVariant(kMips32r6)) { | 4398 if (IsMipsArchVariant(kMips32r6)) { |
| 4395 CcTest::InitializeVM(); | 4399 CcTest::InitializeVM(); |
| 4396 | 4400 |
| 4397 struct TestCaseAlign { | 4401 struct TestCaseAlign { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4430 __ nop(); | 4434 __ nop(); |
| 4431 | 4435 |
| 4432 CodeDesc desc; | 4436 CodeDesc desc; |
| 4433 assm.GetCode(&desc); | 4437 assm.GetCode(&desc); |
| 4434 Handle<Code> code = isolate->factory()->NewCode( | 4438 Handle<Code> code = isolate->factory()->NewCode( |
| 4435 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4439 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4436 | 4440 |
| 4437 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4441 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4438 PC = (uint32_t) f; // Set the program counter. | 4442 PC = (uint32_t) f; // Set the program counter. |
| 4439 | 4443 |
| 4440 uint32_t res = | 4444 uint32_t res = reinterpret_cast<uint32_t>( |
| 4441 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 4445 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 4442 | 4446 |
| 4443 return res; | 4447 return res; |
| 4444 } | 4448 } |
| 4445 | 4449 |
| 4446 | 4450 |
| 4447 TEST(r6_aluipc) { | 4451 TEST(r6_aluipc) { |
| 4448 if (IsMipsArchVariant(kMips32r6)) { | 4452 if (IsMipsArchVariant(kMips32r6)) { |
| 4449 CcTest::InitializeVM(); | 4453 CcTest::InitializeVM(); |
| 4450 | 4454 |
| 4451 struct TestCaseAluipc { | 4455 struct TestCaseAluipc { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4484 __ nop(); | 4488 __ nop(); |
| 4485 | 4489 |
| 4486 CodeDesc desc; | 4490 CodeDesc desc; |
| 4487 assm.GetCode(&desc); | 4491 assm.GetCode(&desc); |
| 4488 Handle<Code> code = isolate->factory()->NewCode( | 4492 Handle<Code> code = isolate->factory()->NewCode( |
| 4489 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4493 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4490 | 4494 |
| 4491 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4495 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4492 PC = (uint32_t) f; // Set the program counter. | 4496 PC = (uint32_t) f; // Set the program counter. |
| 4493 | 4497 |
| 4494 uint32_t res = | 4498 uint32_t res = reinterpret_cast<uint32_t>( |
| 4495 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 4499 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 4496 | 4500 |
| 4497 return res; | 4501 return res; |
| 4498 } | 4502 } |
| 4499 | 4503 |
| 4500 | 4504 |
| 4501 TEST(r6_auipc) { | 4505 TEST(r6_auipc) { |
| 4502 if (IsMipsArchVariant(kMips32r6)) { | 4506 if (IsMipsArchVariant(kMips32r6)) { |
| 4503 CcTest::InitializeVM(); | 4507 CcTest::InitializeVM(); |
| 4504 | 4508 |
| 4505 struct TestCaseAuipc { | 4509 struct TestCaseAuipc { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4559 __ jr(ra); | 4563 __ jr(ra); |
| 4560 __ nop(); | 4564 __ nop(); |
| 4561 | 4565 |
| 4562 CodeDesc desc; | 4566 CodeDesc desc; |
| 4563 assm.GetCode(&desc); | 4567 assm.GetCode(&desc); |
| 4564 Handle<Code> code = isolate->factory()->NewCode( | 4568 Handle<Code> code = isolate->factory()->NewCode( |
| 4565 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4569 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4566 | 4570 |
| 4567 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4571 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4568 | 4572 |
| 4569 uint32_t res = | 4573 uint32_t res = reinterpret_cast<uint32_t>( |
| 4570 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 4574 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 4571 | 4575 |
| 4572 return res; | 4576 return res; |
| 4573 } | 4577 } |
| 4574 | 4578 |
| 4575 | 4579 |
| 4576 TEST(r6_lwpc) { | 4580 TEST(r6_lwpc) { |
| 4577 if (IsMipsArchVariant(kMips32r6)) { | 4581 if (IsMipsArchVariant(kMips32r6)) { |
| 4578 CcTest::InitializeVM(); | 4582 CcTest::InitializeVM(); |
| 4579 | 4583 |
| 4580 struct TestCaseLwpc { | 4584 struct TestCaseLwpc { |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4643 __ jr(ra); | 4647 __ jr(ra); |
| 4644 __ nop(); | 4648 __ nop(); |
| 4645 | 4649 |
| 4646 CodeDesc desc; | 4650 CodeDesc desc; |
| 4647 assm.GetCode(&desc); | 4651 assm.GetCode(&desc); |
| 4648 Handle<Code> code = isolate->factory()->NewCode( | 4652 Handle<Code> code = isolate->factory()->NewCode( |
| 4649 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4653 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4650 | 4654 |
| 4651 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4655 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4652 | 4656 |
| 4653 uint32_t res = | 4657 uint32_t res = reinterpret_cast<uint32_t>( |
| 4654 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 4658 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 4655 | 4659 |
| 4656 return res; | 4660 return res; |
| 4657 } | 4661 } |
| 4658 | 4662 |
| 4659 | 4663 |
| 4660 TEST(r6_jic) { | 4664 TEST(r6_jic) { |
| 4661 if (IsMipsArchVariant(kMips32r6)) { | 4665 if (IsMipsArchVariant(kMips32r6)) { |
| 4662 CcTest::InitializeVM(); | 4666 CcTest::InitializeVM(); |
| 4663 | 4667 |
| 4664 struct TestCaseJic { | 4668 struct TestCaseJic { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4715 __ jr(ra); | 4719 __ jr(ra); |
| 4716 __ nop(); | 4720 __ nop(); |
| 4717 | 4721 |
| 4718 CodeDesc desc; | 4722 CodeDesc desc; |
| 4719 assm.GetCode(&desc); | 4723 assm.GetCode(&desc); |
| 4720 Handle<Code> code = isolate->factory()->NewCode( | 4724 Handle<Code> code = isolate->factory()->NewCode( |
| 4721 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4725 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4722 | 4726 |
| 4723 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4727 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4724 | 4728 |
| 4725 uint32_t res = | 4729 uint32_t res = reinterpret_cast<uint32_t>( |
| 4726 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, value, 0, 0, 0, 0)); | 4730 CALL_GENERATED_CODE(isolate, f, value, 0, 0, 0, 0)); |
| 4727 | 4731 |
| 4728 return res; | 4732 return res; |
| 4729 } | 4733 } |
| 4730 | 4734 |
| 4731 | 4735 |
| 4732 TEST(r6_beqzc) { | 4736 TEST(r6_beqzc) { |
| 4733 if (IsMipsArchVariant(kMips32r6)) { | 4737 if (IsMipsArchVariant(kMips32r6)) { |
| 4734 CcTest::InitializeVM(); | 4738 CcTest::InitializeVM(); |
| 4735 | 4739 |
| 4736 struct TestCaseBeqzc { | 4740 struct TestCaseBeqzc { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4809 __ nop(); | 4813 __ nop(); |
| 4810 | 4814 |
| 4811 | 4815 |
| 4812 CodeDesc desc; | 4816 CodeDesc desc; |
| 4813 assm.GetCode(&desc); | 4817 assm.GetCode(&desc); |
| 4814 Handle<Code> code = isolate->factory()->NewCode( | 4818 Handle<Code> code = isolate->factory()->NewCode( |
| 4815 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4819 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4816 | 4820 |
| 4817 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4821 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4818 | 4822 |
| 4819 uint32_t res = | 4823 uint32_t res = reinterpret_cast<uint32_t>( |
| 4820 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 4824 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 4821 | 4825 |
| 4822 return res; | 4826 return res; |
| 4823 } | 4827 } |
| 4824 | 4828 |
| 4825 | 4829 |
| 4826 TEST(r6_jialc) { | 4830 TEST(r6_jialc) { |
| 4827 if (IsMipsArchVariant(kMips32r6)) { | 4831 if (IsMipsArchVariant(kMips32r6)) { |
| 4828 CcTest::InitializeVM(); | 4832 CcTest::InitializeVM(); |
| 4829 | 4833 |
| 4830 struct TestCaseJialc { | 4834 struct TestCaseJialc { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 4860 __ nop(); | 4864 __ nop(); |
| 4861 | 4865 |
| 4862 CodeDesc desc; | 4866 CodeDesc desc; |
| 4863 assm.GetCode(&desc); | 4867 assm.GetCode(&desc); |
| 4864 Handle<Code> code = isolate->factory()->NewCode( | 4868 Handle<Code> code = isolate->factory()->NewCode( |
| 4865 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4869 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4866 | 4870 |
| 4867 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4871 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4868 PC = (uint32_t) f; // Set the program counter. | 4872 PC = (uint32_t) f; // Set the program counter. |
| 4869 | 4873 |
| 4870 uint32_t rs = | 4874 uint32_t rs = reinterpret_cast<uint32_t>( |
| 4871 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, imm19, 0, 0, 0, 0)); | 4875 CALL_GENERATED_CODE(isolate, f, imm19, 0, 0, 0, 0)); |
| 4872 | 4876 |
| 4873 return rs; | 4877 return rs; |
| 4874 } | 4878 } |
| 4875 | 4879 |
| 4876 | 4880 |
| 4877 TEST(r6_addiupc) { | 4881 TEST(r6_addiupc) { |
| 4878 if (IsMipsArchVariant(kMips32r6)) { | 4882 if (IsMipsArchVariant(kMips32r6)) { |
| 4879 CcTest::InitializeVM(); | 4883 CcTest::InitializeVM(); |
| 4880 | 4884 |
| 4881 struct TestCaseAddiupc { | 4885 struct TestCaseAddiupc { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4943 __ jr(ra); | 4947 __ jr(ra); |
| 4944 __ nop(); | 4948 __ nop(); |
| 4945 | 4949 |
| 4946 CodeDesc desc; | 4950 CodeDesc desc; |
| 4947 assm.GetCode(&desc); | 4951 assm.GetCode(&desc); |
| 4948 Handle<Code> code = isolate->factory()->NewCode( | 4952 Handle<Code> code = isolate->factory()->NewCode( |
| 4949 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 4953 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 4950 | 4954 |
| 4951 F2 f = FUNCTION_CAST<F2>(code->entry()); | 4955 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 4952 | 4956 |
| 4953 int32_t res = | 4957 int32_t res = reinterpret_cast<int32_t>( |
| 4954 reinterpret_cast<int32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 4958 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 4955 | 4959 |
| 4956 return res; | 4960 return res; |
| 4957 } | 4961 } |
| 4958 | 4962 |
| 4959 | 4963 |
| 4960 TEST(r6_bc) { | 4964 TEST(r6_bc) { |
| 4961 if (IsMipsArchVariant(kMips32r6)) { | 4965 if (IsMipsArchVariant(kMips32r6)) { |
| 4962 CcTest::InitializeVM(); | 4966 CcTest::InitializeVM(); |
| 4963 | 4967 |
| 4964 struct TestCaseBc { | 4968 struct TestCaseBc { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5025 __ jr(ra); | 5029 __ jr(ra); |
| 5026 __ nop(); | 5030 __ nop(); |
| 5027 | 5031 |
| 5028 CodeDesc desc; | 5032 CodeDesc desc; |
| 5029 assm.GetCode(&desc); | 5033 assm.GetCode(&desc); |
| 5030 Handle<Code> code = isolate->factory()->NewCode( | 5034 Handle<Code> code = isolate->factory()->NewCode( |
| 5031 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 5035 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 5032 | 5036 |
| 5033 F2 f = FUNCTION_CAST<F2>(code->entry()); | 5037 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 5034 | 5038 |
| 5035 int32_t res = | 5039 int32_t res = reinterpret_cast<int32_t>( |
| 5036 reinterpret_cast<int32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 5040 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 5037 | 5041 |
| 5038 return res; | 5042 return res; |
| 5039 } | 5043 } |
| 5040 | 5044 |
| 5041 | 5045 |
| 5042 TEST(r6_balc) { | 5046 TEST(r6_balc) { |
| 5043 if (IsMipsArchVariant(kMips32r6)) { | 5047 if (IsMipsArchVariant(kMips32r6)) { |
| 5044 CcTest::InitializeVM(); | 5048 CcTest::InitializeVM(); |
| 5045 | 5049 |
| 5046 struct TestCaseBalc { | 5050 struct TestCaseBalc { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5083 __ jr(ra); | 5087 __ jr(ra); |
| 5084 __ nop(); | 5088 __ nop(); |
| 5085 | 5089 |
| 5086 CodeDesc desc; | 5090 CodeDesc desc; |
| 5087 assm.GetCode(&desc); | 5091 assm.GetCode(&desc); |
| 5088 Handle<Code> code = isolate->factory()->NewCode( | 5092 Handle<Code> code = isolate->factory()->NewCode( |
| 5089 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 5093 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 5090 | 5094 |
| 5091 F2 f = FUNCTION_CAST<F2>(code->entry()); | 5095 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 5092 | 5096 |
| 5093 uint32_t res = | 5097 uint32_t res = reinterpret_cast<uint32_t>( |
| 5094 reinterpret_cast<uint32_t>(CALL_GENERATED_CODE(f, 0, 0, 0, 0, 0)); | 5098 CALL_GENERATED_CODE(isolate, f, 0, 0, 0, 0, 0)); |
| 5095 | 5099 |
| 5096 return res; | 5100 return res; |
| 5097 } | 5101 } |
| 5098 | 5102 |
| 5099 | 5103 |
| 5100 TEST(bal) { | 5104 TEST(bal) { |
| 5101 CcTest::InitializeVM(); | 5105 CcTest::InitializeVM(); |
| 5102 | 5106 |
| 5103 struct TestCaseBal { | 5107 struct TestCaseBal { |
| 5104 int16_t offset; | 5108 int16_t offset; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 5135 __ bind(&done); | 5139 __ bind(&done); |
| 5136 __ Ret(USE_DELAY_SLOT); | 5140 __ Ret(USE_DELAY_SLOT); |
| 5137 __ mov(v0, zero_reg); | 5141 __ mov(v0, zero_reg); |
| 5138 | 5142 |
| 5139 CodeDesc desc; | 5143 CodeDesc desc; |
| 5140 assm.GetCode(&desc); | 5144 assm.GetCode(&desc); |
| 5141 Handle<Code> code = isolate->factory()->NewCode( | 5145 Handle<Code> code = isolate->factory()->NewCode( |
| 5142 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); | 5146 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); |
| 5143 F2 f = FUNCTION_CAST<F2>(code->entry()); | 5147 F2 f = FUNCTION_CAST<F2>(code->entry()); |
| 5144 | 5148 |
| 5145 int32_t res = | 5149 int32_t res = reinterpret_cast<int32_t>( |
| 5146 reinterpret_cast<int32_t>(CALL_GENERATED_CODE(f, 42, 42, 0, 0, 0)); | 5150 CALL_GENERATED_CODE(isolate, f, 42, 42, 0, 0, 0)); |
| 5147 CHECK_EQ(res, 0); | 5151 CHECK_EQ(res, 0); |
| 5148 } | 5152 } |
| 5149 | 5153 |
| 5150 | 5154 |
| 5151 #undef __ | 5155 #undef __ |
| OLD | NEW |