| OLD | NEW | 
|---|
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/v8.h" | 5 #include "src/v8.h" | 
| 6 | 6 | 
| 7 #include "test/cctest/cctest.h" | 7 #include "test/cctest/cctest.h" | 
| 8 #include "test/cctest/compiler/codegen-tester.h" | 8 #include "test/cctest/compiler/codegen-tester.h" | 
| 9 #include "test/cctest/compiler/value-helper.h" | 9 #include "test/cctest/compiler/value-helper.h" | 
| 10 | 10 | 
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 286 | 286 | 
| 287 | 287 | 
| 288 void Int32BinopInputShapeTester::TestAllInputShapes() { | 288 void Int32BinopInputShapeTester::TestAllInputShapes() { | 
| 289   std::vector<int32_t> inputs = ValueHelper::int32_vector(); | 289   std::vector<int32_t> inputs = ValueHelper::int32_vector(); | 
| 290   int num_int_inputs = static_cast<int>(inputs.size()); | 290   int num_int_inputs = static_cast<int>(inputs.size()); | 
| 291   if (num_int_inputs > 16) num_int_inputs = 16;  // limit to 16 inputs | 291   if (num_int_inputs > 16) num_int_inputs = 16;  // limit to 16 inputs | 
| 292 | 292 | 
| 293   for (int i = -2; i < num_int_inputs; i++) {    // for all left shapes | 293   for (int i = -2; i < num_int_inputs; i++) {    // for all left shapes | 
| 294     for (int j = -2; j < num_int_inputs; j++) {  // for all right shapes | 294     for (int j = -2; j < num_int_inputs; j++) {  // for all right shapes | 
| 295       if (i >= 0 && j >= 0) break;               // No constant/constant combos | 295       if (i >= 0 && j >= 0) break;               // No constant/constant combos | 
| 296       RawMachineAssemblerTester<int32_t> m(kMachineWord32, kMachineWord32); | 296       RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); | 
| 297       Node* p0 = m.Parameter(0); | 297       Node* p0 = m.Parameter(0); | 
| 298       Node* p1 = m.Parameter(1); | 298       Node* p1 = m.Parameter(1); | 
| 299       Node* n0; | 299       Node* n0; | 
| 300       Node* n1; | 300       Node* n1; | 
| 301 | 301 | 
| 302       // left = Parameter | Load | Constant | 302       // left = Parameter | Load | Constant | 
| 303       if (i == -2) { | 303       if (i == -2) { | 
| 304         n0 = p0; | 304         n0 = p0; | 
| 305       } else if (i == -1) { | 305       } else if (i == -1) { | 
| 306         n0 = m.LoadFromPointer(&input_a, kMachineWord32); | 306         n0 = m.LoadFromPointer(&input_a, kMachInt32); | 
| 307       } else { | 307       } else { | 
| 308         n0 = m.Int32Constant(inputs[i]); | 308         n0 = m.Int32Constant(inputs[i]); | 
| 309       } | 309       } | 
| 310 | 310 | 
| 311       // right = Parameter | Load | Constant | 311       // right = Parameter | Load | Constant | 
| 312       if (j == -2) { | 312       if (j == -2) { | 
| 313         n1 = p1; | 313         n1 = p1; | 
| 314       } else if (j == -1) { | 314       } else if (j == -1) { | 
| 315         n1 = m.LoadFromPointer(&input_b, kMachineWord32); | 315         n1 = m.LoadFromPointer(&input_b, kMachInt32); | 
| 316       } else { | 316       } else { | 
| 317         n1 = m.Int32Constant(inputs[j]); | 317         n1 = m.Int32Constant(inputs[j]); | 
| 318       } | 318       } | 
| 319 | 319 | 
| 320       gen->gen(&m, n0, n1); | 320       gen->gen(&m, n0, n1); | 
| 321 | 321 | 
| 322       if (false) printf("Int32BinopInputShapeTester i=%d, j=%d\n", i, j); | 322       if (false) printf("Int32BinopInputShapeTester i=%d, j=%d\n", i, j); | 
| 323       if (i >= 0) { | 323       if (i >= 0) { | 
| 324         input_a = inputs[i]; | 324         input_a = inputs[i]; | 
| 325         RunRight(&m); | 325         RunRight(&m); | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 363   FOR_UINT32_INPUTS(i) { | 363   FOR_UINT32_INPUTS(i) { | 
| 364     input_b = *i; | 364     input_b = *i; | 
| 365     int32_t expect = gen->expected(input_a, input_b); | 365     int32_t expect = gen->expected(input_a, input_b); | 
| 366     if (false) printf("  cmp(a=%d, b=%d) ?== %d\n", input_a, input_b, expect); | 366     if (false) printf("  cmp(a=%d, b=%d) ?== %d\n", input_a, input_b, expect); | 
| 367     CHECK_EQ(expect, m->Call(input_a, input_b)); | 367     CHECK_EQ(expect, m->Call(input_a, input_b)); | 
| 368   } | 368   } | 
| 369 } | 369 } | 
| 370 | 370 | 
| 371 | 371 | 
| 372 TEST(ParametersEqual) { | 372 TEST(ParametersEqual) { | 
| 373   RawMachineAssemblerTester<int32_t> m(kMachineWord32, kMachineWord32); | 373   RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); | 
| 374   Node* p1 = m.Parameter(1); | 374   Node* p1 = m.Parameter(1); | 
| 375   CHECK_NE(NULL, p1); | 375   CHECK_NE(NULL, p1); | 
| 376   Node* p0 = m.Parameter(0); | 376   Node* p0 = m.Parameter(0); | 
| 377   CHECK_NE(NULL, p0); | 377   CHECK_NE(NULL, p0); | 
| 378   CHECK_EQ(p0, m.Parameter(0)); | 378   CHECK_EQ(p0, m.Parameter(0)); | 
| 379   CHECK_EQ(p1, m.Parameter(1)); | 379   CHECK_EQ(p1, m.Parameter(1)); | 
| 380 } | 380 } | 
| 381 | 381 | 
| 382 | 382 | 
| 383 #if V8_TURBOFAN_TARGET | 383 #if V8_TURBOFAN_TARGET | 
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 479 TEST(RunHeapNumberConstant) { | 479 TEST(RunHeapNumberConstant) { | 
| 480   RawMachineAssemblerTester<Object*> m; | 480   RawMachineAssemblerTester<Object*> m; | 
| 481   Handle<Object> number = m.isolate()->factory()->NewHeapNumber(100.5); | 481   Handle<Object> number = m.isolate()->factory()->NewHeapNumber(100.5); | 
| 482   m.Return(m.HeapConstant(number)); | 482   m.Return(m.HeapConstant(number)); | 
| 483   Object* result = m.Call(); | 483   Object* result = m.Call(); | 
| 484   CHECK_EQ(result, *number); | 484   CHECK_EQ(result, *number); | 
| 485 } | 485 } | 
| 486 | 486 | 
| 487 | 487 | 
| 488 TEST(RunParam1) { | 488 TEST(RunParam1) { | 
| 489   RawMachineAssemblerTester<int32_t> m(kMachineWord32); | 489   RawMachineAssemblerTester<int32_t> m(kMachInt32); | 
| 490   m.Return(m.Parameter(0)); | 490   m.Return(m.Parameter(0)); | 
| 491 | 491 | 
| 492   FOR_INT32_INPUTS(i) { | 492   FOR_INT32_INPUTS(i) { | 
| 493     int32_t result = m.Call(*i); | 493     int32_t result = m.Call(*i); | 
| 494     CHECK_EQ(*i, result); | 494     CHECK_EQ(*i, result); | 
| 495   } | 495   } | 
| 496 } | 496 } | 
| 497 | 497 | 
| 498 | 498 | 
| 499 TEST(RunParam2_1) { | 499 TEST(RunParam2_1) { | 
| 500   RawMachineAssemblerTester<int32_t> m(kMachineWord32, kMachineWord32); | 500   RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); | 
| 501   Node* p0 = m.Parameter(0); | 501   Node* p0 = m.Parameter(0); | 
| 502   Node* p1 = m.Parameter(1); | 502   Node* p1 = m.Parameter(1); | 
| 503   m.Return(p0); | 503   m.Return(p0); | 
| 504   USE(p1); | 504   USE(p1); | 
| 505 | 505 | 
| 506   FOR_INT32_INPUTS(i) { | 506   FOR_INT32_INPUTS(i) { | 
| 507     int32_t result = m.Call(*i, -9999); | 507     int32_t result = m.Call(*i, -9999); | 
| 508     CHECK_EQ(*i, result); | 508     CHECK_EQ(*i, result); | 
| 509   } | 509   } | 
| 510 } | 510 } | 
| 511 | 511 | 
| 512 | 512 | 
| 513 TEST(RunParam2_2) { | 513 TEST(RunParam2_2) { | 
| 514   RawMachineAssemblerTester<int32_t> m(kMachineWord32, kMachineWord32); | 514   RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); | 
| 515   Node* p0 = m.Parameter(0); | 515   Node* p0 = m.Parameter(0); | 
| 516   Node* p1 = m.Parameter(1); | 516   Node* p1 = m.Parameter(1); | 
| 517   m.Return(p1); | 517   m.Return(p1); | 
| 518   USE(p0); | 518   USE(p0); | 
| 519 | 519 | 
| 520   FOR_INT32_INPUTS(i) { | 520   FOR_INT32_INPUTS(i) { | 
| 521     int32_t result = m.Call(-7777, *i); | 521     int32_t result = m.Call(-7777, *i); | 
| 522     CHECK_EQ(*i, result); | 522     CHECK_EQ(*i, result); | 
| 523   } | 523   } | 
| 524 } | 524 } | 
| 525 | 525 | 
| 526 | 526 | 
| 527 TEST(RunParam3) { | 527 TEST(RunParam3) { | 
| 528   for (int i = 0; i < 3; i++) { | 528   for (int i = 0; i < 3; i++) { | 
| 529     RawMachineAssemblerTester<int32_t> m(kMachineWord32, kMachineWord32, | 529     RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32, kMachInt32); | 
| 530                                          kMachineWord32); |  | 
| 531     Node* nodes[] = {m.Parameter(0), m.Parameter(1), m.Parameter(2)}; | 530     Node* nodes[] = {m.Parameter(0), m.Parameter(1), m.Parameter(2)}; | 
| 532     m.Return(nodes[i]); | 531     m.Return(nodes[i]); | 
| 533 | 532 | 
| 534     int p[] = {-99, -77, -88}; | 533     int p[] = {-99, -77, -88}; | 
| 535     FOR_INT32_INPUTS(j) { | 534     FOR_INT32_INPUTS(j) { | 
| 536       p[i] = *j; | 535       p[i] = *j; | 
| 537       int32_t result = m.Call(p[0], p[1], p[2]); | 536       int32_t result = m.Call(p[0], p[1], p[2]); | 
| 538       CHECK_EQ(*j, result); | 537       CHECK_EQ(*j, result); | 
| 539     } | 538     } | 
| 540   } | 539   } | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 569   { | 568   { | 
| 570     RawMachineAssemblerTester<int32_t> m; | 569     RawMachineAssemblerTester<int32_t> m; | 
| 571     Float64BinopTester bt(&m); | 570     Float64BinopTester bt(&m); | 
| 572     bt.AddReturn(bt.param1); | 571     bt.AddReturn(bt.param1); | 
| 573 | 572 | 
| 574     FOR_FLOAT64_INPUTS(i) { CHECK_EQ(*i, bt.call(-11.25, *i)); } | 573     FOR_FLOAT64_INPUTS(i) { CHECK_EQ(*i, bt.call(-11.25, *i)); } | 
| 575   } | 574   } | 
| 576 } | 575 } | 
| 577 | 576 | 
| 578 #endif  // V8_TURBOFAN_TARGET | 577 #endif  // V8_TURBOFAN_TARGET | 
| OLD | NEW | 
|---|