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

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

Issue 2677183002: [test] Make CHECK_EQ calls in cctest consistent. (Closed)
Patch Set: Cleanup order for test.x checks. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/cctest/test-assembler-mips.cc ('k') | test/cctest/test-assembler-x87.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1571 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 __ jr(ra); 1582 __ jr(ra);
1583 __ nop(); 1583 __ nop();
1584 CodeDesc desc; 1584 CodeDesc desc;
1585 assm.GetCode(&desc); 1585 assm.GetCode(&desc);
1586 Handle<Code> code = isolate->factory()->NewCode( 1586 Handle<Code> code = isolate->factory()->NewCode(
1587 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 1587 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
1588 F3 f = FUNCTION_CAST<F3>(code->entry()); 1588 F3 f = FUNCTION_CAST<F3>(code->entry());
1589 1589
1590 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 1590 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
1591 1591
1592 CHECK_EQ(test.a, 1); 1592 CHECK_EQ(1, test.a);
1593 CHECK_EQ(test.b, 0); 1593 CHECK_EQ(0, test.b);
1594 CHECK_EQ(test.c, 0); 1594 CHECK_EQ(0, test.c);
1595 CHECK_EQ(test.d, 1); 1595 CHECK_EQ(1, test.d);
1596 1596
1597 const int test_size = 3; 1597 const int test_size = 3;
1598 const int input_size = 5; 1598 const int input_size = 5;
1599 1599
1600 double inputs_D[input_size] = {0.0, 65.2, -70.32, 1600 double inputs_D[input_size] = {0.0, 65.2, -70.32,
1601 18446744073709551621.0, -18446744073709551621.0}; 1601 18446744073709551621.0, -18446744073709551621.0};
1602 double outputs_D[input_size] = {0.0, 65.2, -70.32, 1602 double outputs_D[input_size] = {0.0, 65.2, -70.32,
1603 18446744073709551621.0, -18446744073709551621.0}; 1603 18446744073709551621.0, -18446744073709551621.0};
1604 double tests_D[test_size*2] = {2.8, 2.9, -2.8, -2.9, 1604 double tests_D[test_size*2] = {2.8, 2.9, -2.8, -2.9,
1605 18446744073709551616.0, 18446744073709555712.0}; 1605 18446744073709551616.0, 18446744073709555712.0};
1606 float inputs_S[input_size] = {0.0, 65.2, -70.32, 1606 float inputs_S[input_size] = {0.0, 65.2, -70.32,
1607 18446744073709551621.0, -18446744073709551621.0}; 1607 18446744073709551621.0, -18446744073709551621.0};
1608 float outputs_S[input_size] = {0.0, 65.2, -70.32, 1608 float outputs_S[input_size] = {0.0, 65.2, -70.32,
1609 18446744073709551621.0, -18446744073709551621.0}; 1609 18446744073709551621.0, -18446744073709551621.0};
1610 float tests_S[test_size*2] = {2.9, 2.8, -2.9, -2.8, 1610 float tests_S[test_size*2] = {2.9, 2.8, -2.9, -2.8,
1611 18446744073709551616.0, 18446746272732807168.0}; 1611 18446744073709551616.0, 18446746272732807168.0};
1612 for (int j=0; j < test_size; j+=2) { 1612 for (int j=0; j < test_size; j+=2) {
1613 for (int i=0; i < input_size; i++) { 1613 for (int i=0; i < input_size; i++) {
1614 test.e = inputs_D[i]; 1614 test.e = inputs_D[i];
1615 test.f = tests_D[j]; 1615 test.f = tests_D[j];
1616 test.i = inputs_S[i]; 1616 test.i = inputs_S[i];
1617 test.j = tests_S[j]; 1617 test.j = tests_S[j];
1618 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 1618 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
1619 CHECK_EQ(test.g, outputs_D[i]); 1619 CHECK_EQ(outputs_D[i], test.g);
1620 CHECK_EQ(test.h, 0); 1620 CHECK_EQ(0, test.h);
1621 CHECK_EQ(test.k, outputs_S[i]); 1621 CHECK_EQ(outputs_S[i], test.k);
1622 CHECK_EQ(test.l, 0); 1622 CHECK_EQ(0, test.l);
1623 1623
1624 test.f = tests_D[j+1]; 1624 test.f = tests_D[j+1];
1625 test.j = tests_S[j+1]; 1625 test.j = tests_S[j+1];
1626 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 1626 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
1627 CHECK_EQ(test.g, 0); 1627 CHECK_EQ(0, test.g);
1628 CHECK_EQ(test.h, outputs_D[i]); 1628 CHECK_EQ(outputs_D[i], test.h);
1629 CHECK_EQ(test.k, 0); 1629 CHECK_EQ(0, test.k);
1630 CHECK_EQ(test.l, outputs_S[i]); 1630 CHECK_EQ(outputs_S[i], test.l);
1631 } 1631 }
1632 } 1632 }
1633 } 1633 }
1634 } 1634 }
1635 1635
1636 1636
1637 1637
1638 TEST(min_max) { 1638 TEST(min_max) {
1639 if (kArchVariant == kMips64r6) { 1639 if (kArchVariant == kMips64r6) {
1640 CcTest::InitializeVM(); 1640 CcTest::InitializeVM();
(...skipping 1667 matching lines...) Expand 10 before | Expand all | Expand 10 after
3308 __ b(&done); 3308 __ b(&done);
3309 __ nop(); 3309 __ nop();
3310 } 3310 }
3311 3311
3312 __ bind(&done); 3312 __ bind(&done);
3313 __ ld(ra, MemOperand(sp)); 3313 __ ld(ra, MemOperand(sp));
3314 __ daddiu(sp, sp, 8); 3314 __ daddiu(sp, sp, 8);
3315 __ jr(ra); 3315 __ jr(ra);
3316 __ nop(); 3316 __ nop();
3317 3317
3318 CHECK_EQ(assm.UnboundLabelsCount(), 0); 3318 CHECK_EQ(0, assm.UnboundLabelsCount());
3319 3319
3320 CodeDesc desc; 3320 CodeDesc desc;
3321 assm.GetCode(&desc); 3321 assm.GetCode(&desc);
3322 Handle<Code> code = isolate->factory()->NewCode( 3322 Handle<Code> code = isolate->factory()->NewCode(
3323 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 3323 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
3324 #ifdef OBJECT_PRINT 3324 #ifdef OBJECT_PRINT
3325 code->Print(std::cout); 3325 code->Print(std::cout);
3326 #endif 3326 #endif
3327 F1 f = FUNCTION_CAST<F1>(code->entry()); 3327 F1 f = FUNCTION_CAST<F1>(code->entry());
3328 for (int i = 0; i < kNumCases; ++i) { 3328 for (int i = 0; i < kNumCases; ++i) {
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
3822 / std::numeric_limits<float>::min(); 3822 / std::numeric_limits<float>::min();
3823 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 3823 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
3824 CHECK_EQ(test.a, std::numeric_limits<double>::max() 3824 CHECK_EQ(test.a, std::numeric_limits<double>::max()
3825 / std::numeric_limits<double>::min()); 3825 / std::numeric_limits<double>::min());
3826 CHECK_EQ(test.b, std::numeric_limits<float>::max() 3826 CHECK_EQ(test.b, std::numeric_limits<float>::max()
3827 / std::numeric_limits<float>::min()); 3827 / std::numeric_limits<float>::min());
3828 3828
3829 test.a = std::numeric_limits<double>::quiet_NaN(); 3829 test.a = std::numeric_limits<double>::quiet_NaN();
3830 test.b = std::numeric_limits<float>::quiet_NaN(); 3830 test.b = std::numeric_limits<float>::quiet_NaN();
3831 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 3831 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
3832 CHECK_EQ(std::isnan(test.a), true); 3832 CHECK(std::isnan(test.a));
3833 CHECK_EQ(std::isnan(test.b), true); 3833 CHECK(std::isnan(test.b));
3834 3834
3835 test.a = std::numeric_limits<double>::signaling_NaN(); 3835 test.a = std::numeric_limits<double>::signaling_NaN();
3836 test.b = std::numeric_limits<float>::signaling_NaN(); 3836 test.b = std::numeric_limits<float>::signaling_NaN();
3837 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 3837 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
3838 CHECK_EQ(std::isnan(test.a), true); 3838 CHECK(std::isnan(test.a));
3839 CHECK_EQ(std::isnan(test.b), true); 3839 CHECK(std::isnan(test.b));
3840 } 3840 }
3841 3841
3842 3842
3843 TEST(ADD_FMT) { 3843 TEST(ADD_FMT) {
3844 CcTest::InitializeVM(); 3844 CcTest::InitializeVM();
3845 Isolate* isolate = CcTest::i_isolate(); 3845 Isolate* isolate = CcTest::i_isolate();
3846 HandleScope scope(isolate); 3846 HandleScope scope(isolate);
3847 MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes); 3847 MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes);
3848 3848
3849 typedef struct test_float { 3849 typedef struct test_float {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3889 test.fb = -std::numeric_limits<float>::max(); // lowest() 3889 test.fb = -std::numeric_limits<float>::max(); // lowest()
3890 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 3890 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
3891 CHECK_EQ(test.c, 0.0); 3891 CHECK_EQ(test.c, 0.0);
3892 CHECK_EQ(test.fc, 0.0); 3892 CHECK_EQ(test.fc, 0.0);
3893 3893
3894 test.a = std::numeric_limits<double>::max(); 3894 test.a = std::numeric_limits<double>::max();
3895 test.b = std::numeric_limits<double>::max(); 3895 test.b = std::numeric_limits<double>::max();
3896 test.fa = std::numeric_limits<float>::max(); 3896 test.fa = std::numeric_limits<float>::max();
3897 test.fb = std::numeric_limits<float>::max(); 3897 test.fb = std::numeric_limits<float>::max();
3898 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 3898 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
3899 CHECK_EQ(std::isfinite(test.c), false); 3899 CHECK(!std::isfinite(test.c));
3900 CHECK_EQ(std::isfinite(test.fc), false); 3900 CHECK(!std::isfinite(test.fc));
3901 3901
3902 test.a = 5.0; 3902 test.a = 5.0;
3903 test.b = std::numeric_limits<double>::signaling_NaN(); 3903 test.b = std::numeric_limits<double>::signaling_NaN();
3904 test.fa = 5.0; 3904 test.fa = 5.0;
3905 test.fb = std::numeric_limits<float>::signaling_NaN(); 3905 test.fb = std::numeric_limits<float>::signaling_NaN();
3906 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 3906 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
3907 CHECK_EQ(std::isnan(test.c), true); 3907 CHECK(std::isnan(test.c));
3908 CHECK_EQ(std::isnan(test.fc), true); 3908 CHECK(std::isnan(test.fc));
3909 } 3909 }
3910 3910
3911 3911
3912 TEST(C_COND_FMT) { 3912 TEST(C_COND_FMT) {
3913 if (kArchVariant == kMips64r2) { 3913 if (kArchVariant == kMips64r2) {
3914 CcTest::InitializeVM(); 3914 CcTest::InitializeVM();
3915 Isolate* isolate = CcTest::i_isolate(); 3915 Isolate* isolate = CcTest::i_isolate();
3916 HandleScope scope(isolate); 3916 HandleScope scope(isolate);
3917 MacroAssembler assm(isolate, NULL, 0, 3917 MacroAssembler assm(isolate, NULL, 0,
3918 v8::internal::CodeObjectRequired::kYes); 3918 v8::internal::CodeObjectRequired::kYes);
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
4418 test.cvt_s_d_in = -0.51; 4418 test.cvt_s_d_in = -0.51;
4419 test.cvt_s_w_in = -1; 4419 test.cvt_s_w_in = -1;
4420 test.cvt_s_l_in = -1; 4420 test.cvt_s_l_in = -1;
4421 test.cvt_w_s_in = -0.51; 4421 test.cvt_w_s_in = -0.51;
4422 test.cvt_w_d_in = -0.51; 4422 test.cvt_w_d_in = -0.51;
4423 4423
4424 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 4424 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
4425 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); 4425 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in));
4426 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); 4426 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in));
4427 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); 4427 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in));
4428 CHECK_EQ(test.cvt_l_s_out, -1); 4428 CHECK_EQ(-1, test.cvt_l_s_out);
4429 CHECK_EQ(test.cvt_l_d_out, -1); 4429 CHECK_EQ(-1, test.cvt_l_d_out);
4430 CHECK_EQ(test.cvt_s_d_out, static_cast<float>(test.cvt_s_d_in)); 4430 CHECK_EQ(test.cvt_s_d_out, static_cast<float>(test.cvt_s_d_in));
4431 CHECK_EQ(test.cvt_s_w_out, static_cast<float>(test.cvt_s_w_in)); 4431 CHECK_EQ(test.cvt_s_w_out, static_cast<float>(test.cvt_s_w_in));
4432 CHECK_EQ(test.cvt_s_l_out, static_cast<float>(test.cvt_s_l_in)); 4432 CHECK_EQ(test.cvt_s_l_out, static_cast<float>(test.cvt_s_l_in));
4433 CHECK_EQ(test.cvt_w_s_out, -1); 4433 CHECK_EQ(-1, test.cvt_w_s_out);
4434 CHECK_EQ(test.cvt_w_d_out, -1); 4434 CHECK_EQ(-1, test.cvt_w_d_out);
4435
4436 4435
4437 test.cvt_d_s_in = 0.49; 4436 test.cvt_d_s_in = 0.49;
4438 test.cvt_d_w_in = 1; 4437 test.cvt_d_w_in = 1;
4439 test.cvt_d_l_in = 1; 4438 test.cvt_d_l_in = 1;
4440 test.cvt_l_s_in = 0.49; 4439 test.cvt_l_s_in = 0.49;
4441 test.cvt_l_d_in = 0.49; 4440 test.cvt_l_d_in = 0.49;
4442 test.cvt_s_d_in = 0.49; 4441 test.cvt_s_d_in = 0.49;
4443 test.cvt_s_w_in = 1; 4442 test.cvt_s_w_in = 1;
4444 test.cvt_s_l_in = 1; 4443 test.cvt_s_l_in = 1;
4445 test.cvt_w_s_in = 0.49; 4444 test.cvt_w_s_in = 0.49;
4446 test.cvt_w_d_in = 0.49; 4445 test.cvt_w_d_in = 0.49;
4447 4446
4448 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 4447 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
4449 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); 4448 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in));
4450 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); 4449 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in));
4451 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); 4450 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in));
4452 CHECK_EQ(test.cvt_l_s_out, 0); 4451 CHECK_EQ(0, test.cvt_l_s_out);
4453 CHECK_EQ(test.cvt_l_d_out, 0); 4452 CHECK_EQ(0, test.cvt_l_d_out);
4454 CHECK_EQ(test.cvt_s_d_out, static_cast<float>(test.cvt_s_d_in)); 4453 CHECK_EQ(test.cvt_s_d_out, static_cast<float>(test.cvt_s_d_in));
4455 CHECK_EQ(test.cvt_s_w_out, static_cast<float>(test.cvt_s_w_in)); 4454 CHECK_EQ(test.cvt_s_w_out, static_cast<float>(test.cvt_s_w_in));
4456 CHECK_EQ(test.cvt_s_l_out, static_cast<float>(test.cvt_s_l_in)); 4455 CHECK_EQ(test.cvt_s_l_out, static_cast<float>(test.cvt_s_l_in));
4457 CHECK_EQ(test.cvt_w_s_out, 0); 4456 CHECK_EQ(0, test.cvt_w_s_out);
4458 CHECK_EQ(test.cvt_w_d_out, 0); 4457 CHECK_EQ(0, test.cvt_w_d_out);
4459 4458
4460 test.cvt_d_s_in = std::numeric_limits<float>::max(); 4459 test.cvt_d_s_in = std::numeric_limits<float>::max();
4461 test.cvt_d_w_in = std::numeric_limits<int32_t>::max(); 4460 test.cvt_d_w_in = std::numeric_limits<int32_t>::max();
4462 test.cvt_d_l_in = std::numeric_limits<int64_t>::max(); 4461 test.cvt_d_l_in = std::numeric_limits<int64_t>::max();
4463 test.cvt_l_s_in = std::numeric_limits<float>::max(); 4462 test.cvt_l_s_in = std::numeric_limits<float>::max();
4464 test.cvt_l_d_in = std::numeric_limits<double>::max(); 4463 test.cvt_l_d_in = std::numeric_limits<double>::max();
4465 test.cvt_s_d_in = std::numeric_limits<double>::max(); 4464 test.cvt_s_d_in = std::numeric_limits<double>::max();
4466 test.cvt_s_w_in = std::numeric_limits<int32_t>::max(); 4465 test.cvt_s_w_in = std::numeric_limits<int32_t>::max();
4467 test.cvt_s_l_in = std::numeric_limits<int64_t>::max(); 4466 test.cvt_s_l_in = std::numeric_limits<int64_t>::max();
4468 test.cvt_w_s_in = std::numeric_limits<float>::max(); 4467 test.cvt_w_s_in = std::numeric_limits<float>::max();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
4520 test.cvt_s_d_in = std::numeric_limits<double>::min(); 4519 test.cvt_s_d_in = std::numeric_limits<double>::min();
4521 test.cvt_s_w_in = std::numeric_limits<int32_t>::min(); 4520 test.cvt_s_w_in = std::numeric_limits<int32_t>::min();
4522 test.cvt_s_l_in = std::numeric_limits<int64_t>::min(); 4521 test.cvt_s_l_in = std::numeric_limits<int64_t>::min();
4523 test.cvt_w_s_in = std::numeric_limits<float>::min(); 4522 test.cvt_w_s_in = std::numeric_limits<float>::min();
4524 test.cvt_w_d_in = std::numeric_limits<double>::min(); 4523 test.cvt_w_d_in = std::numeric_limits<double>::min();
4525 4524
4526 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 4525 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
4527 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in)); 4526 CHECK_EQ(test.cvt_d_s_out, static_cast<double>(test.cvt_d_s_in));
4528 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in)); 4527 CHECK_EQ(test.cvt_d_w_out, static_cast<double>(test.cvt_d_w_in));
4529 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in)); 4528 CHECK_EQ(test.cvt_d_l_out, static_cast<double>(test.cvt_d_l_in));
4530 CHECK_EQ(test.cvt_l_s_out, 0); 4529 CHECK_EQ(0, test.cvt_l_s_out);
4531 CHECK_EQ(test.cvt_l_d_out, 0); 4530 CHECK_EQ(0, test.cvt_l_d_out);
4532 CHECK_EQ(test.cvt_s_d_out, static_cast<float>(test.cvt_s_d_in)); 4531 CHECK_EQ(test.cvt_s_d_out, static_cast<float>(test.cvt_s_d_in));
4533 CHECK_EQ(test.cvt_s_w_out, static_cast<float>(test.cvt_s_w_in)); 4532 CHECK_EQ(test.cvt_s_w_out, static_cast<float>(test.cvt_s_w_in));
4534 CHECK_EQ(test.cvt_s_l_out, static_cast<float>(test.cvt_s_l_in)); 4533 CHECK_EQ(test.cvt_s_l_out, static_cast<float>(test.cvt_s_l_in));
4535 CHECK_EQ(test.cvt_w_s_out, 0); 4534 CHECK_EQ(0, test.cvt_w_s_out);
4536 CHECK_EQ(test.cvt_w_d_out, 0); 4535 CHECK_EQ(0, test.cvt_w_d_out);
4537 } 4536 }
4538 4537
4539 4538
4540 TEST(DIV_FMT) { 4539 TEST(DIV_FMT) {
4541 CcTest::InitializeVM(); 4540 CcTest::InitializeVM();
4542 Isolate* isolate = CcTest::i_isolate(); 4541 Isolate* isolate = CcTest::i_isolate();
4543 HandleScope scope(isolate); 4542 HandleScope scope(isolate);
4544 MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes); 4543 MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes);
4545 4544
4546 typedef struct test { 4545 typedef struct test {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
4627 CHECK_EQ(test.dRes, dRes[i]); 4626 CHECK_EQ(test.dRes, dRes[i]);
4628 CHECK_EQ(test.fRes, fRes[i]); 4627 CHECK_EQ(test.fRes, fRes[i]);
4629 } 4628 }
4630 4629
4631 test.dOp1 = DBL_MAX; 4630 test.dOp1 = DBL_MAX;
4632 test.dOp2 = -0.0; 4631 test.dOp2 = -0.0;
4633 test.fOp1 = FLT_MAX; 4632 test.fOp1 = FLT_MAX;
4634 test.fOp2 = -0.0; 4633 test.fOp2 = -0.0;
4635 4634
4636 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 4635 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
4637 CHECK_EQ(false, std::isfinite(test.dRes)); 4636 CHECK(!std::isfinite(test.dRes));
4638 CHECK_EQ(false, std::isfinite(test.fRes)); 4637 CHECK(!std::isfinite(test.fRes));
4639 4638
4640 test.dOp1 = 0.0; 4639 test.dOp1 = 0.0;
4641 test.dOp2 = -0.0; 4640 test.dOp2 = -0.0;
4642 test.fOp1 = 0.0; 4641 test.fOp1 = 0.0;
4643 test.fOp2 = -0.0; 4642 test.fOp2 = -0.0;
4644 4643
4645 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 4644 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
4646 CHECK_EQ(true, std::isnan(test.dRes)); 4645 CHECK(std::isnan(test.dRes));
4647 CHECK_EQ(true, std::isnan(test.fRes)); 4646 CHECK(std::isnan(test.fRes));
4648 4647
4649 test.dOp1 = std::numeric_limits<double>::quiet_NaN(); 4648 test.dOp1 = std::numeric_limits<double>::quiet_NaN();
4650 test.dOp2 = -5.0; 4649 test.dOp2 = -5.0;
4651 test.fOp1 = std::numeric_limits<float>::quiet_NaN(); 4650 test.fOp1 = std::numeric_limits<float>::quiet_NaN();
4652 test.fOp2 = -5.0; 4651 test.fOp2 = -5.0;
4653 4652
4654 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0)); 4653 (CALL_GENERATED_CODE(isolate, f, &test, 0, 0, 0, 0));
4655 CHECK_EQ(true, std::isnan(test.dRes)); 4654 CHECK(std::isnan(test.dRes));
4656 CHECK_EQ(true, std::isnan(test.fRes)); 4655 CHECK(std::isnan(test.fRes));
4657 } 4656 }
4658 4657
4659 4658
4660 uint64_t run_align(uint64_t rs_value, uint64_t rt_value, uint8_t bp) { 4659 uint64_t run_align(uint64_t rs_value, uint64_t rt_value, uint8_t bp) {
4661 Isolate* isolate = CcTest::i_isolate(); 4660 Isolate* isolate = CcTest::i_isolate();
4662 HandleScope scope(isolate); 4661 HandleScope scope(isolate);
4663 4662
4664 MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes); 4663 MacroAssembler assm(isolate, NULL, 0, v8::internal::CodeObjectRequired::kYes);
4665 4664
4666 __ align(v0, a0, a1, bp); 4665 __ align(v0, a0, a1, bp);
(...skipping 1257 matching lines...) Expand 10 before | Expand all | Expand 10 after
5924 __ mov(v0, zero_reg); 5923 __ mov(v0, zero_reg);
5925 5924
5926 CodeDesc desc; 5925 CodeDesc desc;
5927 assm.GetCode(&desc); 5926 assm.GetCode(&desc);
5928 Handle<Code> code = isolate->factory()->NewCode( 5927 Handle<Code> code = isolate->factory()->NewCode(
5929 desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 5928 desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
5930 F2 f = FUNCTION_CAST<F2>(code->entry()); 5929 F2 f = FUNCTION_CAST<F2>(code->entry());
5931 5930
5932 int64_t res = reinterpret_cast<int64_t>( 5931 int64_t res = reinterpret_cast<int64_t>(
5933 CALL_GENERATED_CODE(isolate, f, 42, 42, 0, 0, 0)); 5932 CALL_GENERATED_CODE(isolate, f, 42, 42, 0, 0, 0));
5934 CHECK_EQ(res, 0); 5933 CHECK_EQ(0, res);
5935 } 5934 }
5936 5935
5937 template <class T> 5936 template <class T>
5938 struct TestCaseMaddMsub { 5937 struct TestCaseMaddMsub {
5939 T fr, fs, ft, fd_add, fd_sub; 5938 T fr, fs, ft, fd_add, fd_sub;
5940 }; 5939 };
5941 5940
5942 template <typename T, typename F> 5941 template <typename T, typename F>
5943 void helper_madd_msub_maddf_msubf(F func) { 5942 void helper_madd_msub_maddf_msubf(F func) {
5944 CcTest::InitializeVM(); 5943 CcTest::InitializeVM();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
6054 if (kArchVariant != kMips64r6) return; 6053 if (kArchVariant != kMips64r6) return;
6055 helper_madd_msub_maddf_msubf<double>([](MacroAssembler& assm) { 6054 helper_madd_msub_maddf_msubf<double>([](MacroAssembler& assm) {
6056 __ maddf_d(f4, f6, f8); 6055 __ maddf_d(f4, f6, f8);
6057 __ sdc1(f4, MemOperand(a0, offsetof(TestCaseMaddMsub<double>, fd_add))); 6056 __ sdc1(f4, MemOperand(a0, offsetof(TestCaseMaddMsub<double>, fd_add)));
6058 __ msubf_d(f16, f6, f8); 6057 __ msubf_d(f16, f6, f8);
6059 __ sdc1(f16, MemOperand(a0, offsetof(TestCaseMaddMsub<double>, fd_sub))); 6058 __ sdc1(f16, MemOperand(a0, offsetof(TestCaseMaddMsub<double>, fd_sub)));
6060 }); 6059 });
6061 } 6060 }
6062 6061
6063 #undef __ 6062 #undef __
OLDNEW
« no previous file with comments | « test/cctest/test-assembler-mips.cc ('k') | test/cctest/test-assembler-x87.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698