17d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 27d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 37d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// found in the LICENSE file. 47d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 57d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/v8.h" 67d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 77d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "test/cctest/cctest.h" 87d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "test/cctest/compiler/codegen-tester.h" 97d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "test/cctest/compiler/value-helper.h" 107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgusing namespace v8::internal; 127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgusing namespace v8::internal::compiler; 137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(CompareWrapper) { 157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Who tests the testers? 167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // If CompareWrapper is broken, then test expectations will be broken. 177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wWord32Equal(IrOpcode::kWord32Equal); 197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wInt32LessThan(IrOpcode::kInt32LessThan); 207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wInt32LessThanOrEqual(IrOpcode::kInt32LessThanOrEqual); 217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wUint32LessThan(IrOpcode::kUint32LessThan); 227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wUint32LessThanOrEqual(IrOpcode::kUint32LessThanOrEqual); 237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(pl) { 267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(pr) { 277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t a = *pl; 287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t b = *pr; 297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(a == b, wWord32Equal.Int32Compare(a, b)); 307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(a < b, wInt32LessThan.Int32Compare(a, b)); 317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(a <= b, wInt32LessThanOrEqual.Int32Compare(a, b)); 327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_UINT32_INPUTS(pl) { 387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_UINT32_INPUTS(pr) { 397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org uint32_t a = *pl; 407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org uint32_t b = *pr; 417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(a == b, wWord32Equal.Int32Compare(a, b)); 427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(a < b, wUint32LessThan.Int32Compare(a, b)); 437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(a <= b, wUint32LessThanOrEqual.Int32Compare(a, b)); 447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wWord32Equal.Int32Compare(0, 0)); 497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wWord32Equal.Int32Compare(257, 257)); 507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wWord32Equal.Int32Compare(65539, 65539)); 517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wWord32Equal.Int32Compare(-1, -1)); 527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wWord32Equal.Int32Compare(0xffffffff, 0xffffffff)); 537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wWord32Equal.Int32Compare(0, 1)); 557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wWord32Equal.Int32Compare(257, 256)); 567d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wWord32Equal.Int32Compare(65539, 65537)); 577d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wWord32Equal.Int32Compare(-1, -2)); 587d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wWord32Equal.Int32Compare(0xffffffff, 0xfffffffe)); 597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(0, 0)); 617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(357, 357)); 627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(75539, 75539)); 637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(-1, -1)); 647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(0xffffffff, 0xffffffff)); 657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThan.Int32Compare(0, 1)); 677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThan.Int32Compare(456, 457)); 687d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThan.Int32Compare(85537, 85539)); 697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThan.Int32Compare(-2, -1)); 707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThan.Int32Compare(0xfffffffe, 0xffffffff)); 717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 727d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(1, 0)); 737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(457, 456)); 747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(85539, 85537)); 757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(-1, -2)); 767d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThan.Int32Compare(0xffffffff, 0xfffffffe)); 777d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 787d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(0, 0)); 797d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(357, 357)); 807d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(75539, 75539)); 817d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(-1, -1)); 827d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(0xffffffff, 0xffffffff)); 837d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 847d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(0, 1)); 857d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(456, 457)); 867d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(85537, 85539)); 877d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(-2, -1)); 887d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wInt32LessThanOrEqual.Int32Compare(0xfffffffe, 0xffffffff)); 897d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 907d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThanOrEqual.Int32Compare(1, 0)); 917d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThanOrEqual.Int32Compare(457, 456)); 927d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThanOrEqual.Int32Compare(85539, 85537)); 937d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThanOrEqual.Int32Compare(-1, -2)); 947d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wInt32LessThanOrEqual.Int32Compare(0xffffffff, 0xfffffffe)); 957d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 967d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Unsigned comparisons. 977d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(0, 0)); 987d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(357, 357)); 997d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(75539, 75539)); 1007d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(-1, -1)); 1017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(0xffffffff, 0xffffffff)); 1027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(0xffffffff, 0)); 1037d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(-2999, 0)); 1047d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1057d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(0, 1)); 1067d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(456, 457)); 1077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(85537, 85539)); 1087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(-11, -10)); 1097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(0xfffffffe, 0xffffffff)); 1107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(0, 0xffffffff)); 1117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThan.Int32Compare(0, -2996)); 1127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(1, 0)); 1147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(457, 456)); 1157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(85539, 85537)); 1167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(-10, -21)); 1177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThan.Int32Compare(0xffffffff, 0xfffffffe)); 1187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(0, 0)); 1207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(357, 357)); 1217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(75539, 75539)); 1227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(-1, -1)); 1237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(0xffffffff, 0xffffffff)); 1247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(0, 1)); 1267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(456, 457)); 1277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(85537, 85539)); 1287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(-300, -299)); 1297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(-300, -300)); 1307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(0xfffffffe, 0xffffffff)); 1317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wUint32LessThanOrEqual.Int32Compare(0, -2995)); 1327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThanOrEqual.Int32Compare(1, 0)); 1347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThanOrEqual.Int32Compare(457, 456)); 1357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThanOrEqual.Int32Compare(85539, 85537)); 1367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThanOrEqual.Int32Compare(-130, -170)); 1377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThanOrEqual.Int32Compare(0xffffffff, 0xfffffffe)); 1387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wUint32LessThanOrEqual.Int32Compare(-2997, 0)); 1397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wFloat64Equal(IrOpcode::kFloat64Equal); 1417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wFloat64LessThan(IrOpcode::kFloat64LessThan); 1427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompareWrapper wFloat64LessThanOrEqual(IrOpcode::kFloat64LessThanOrEqual); 1437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Check NaN handling. 1457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org double nan = v8::base::OS::nan_value(); 1467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org double inf = V8_INFINITY; 1477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(nan, 0.0)); 1487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(nan, 1.0)); 1497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(nan, inf)); 1507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(nan, -inf)); 1517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(nan, nan)); 1527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(0.0, nan)); 1547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(1.0, nan)); 1557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(inf, nan)); 1567d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(-inf, nan)); 1577d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(nan, nan)); 1587d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(nan, 0.0)); 1607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(nan, 1.0)); 1617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(nan, inf)); 1627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(nan, -inf)); 1637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(nan, nan)); 1647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(0.0, nan)); 1667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(1.0, nan)); 1677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, nan)); 1687d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(-inf, nan)); 1697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(nan, nan)); 1707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(nan, 0.0)); 1727d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(nan, 1.0)); 1737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(nan, inf)); 1747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(nan, -inf)); 1757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(nan, nan)); 1767d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1777d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(0.0, nan)); 1787d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(1.0, nan)); 1797d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(inf, nan)); 1807d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(-inf, nan)); 1817d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(nan, nan)); 1827d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1837d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Check inf handling. 1847d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(inf, 0.0)); 1857d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(inf, 1.0)); 1867d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(inf, inf)); 1877d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(inf, -inf)); 1887d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1897d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(0.0, inf)); 1907d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(1.0, inf)); 1917d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(inf, inf)); 1927d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(-inf, inf)); 1937d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1947d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, 0.0)); 1957d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, 1.0)); 1967d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, inf)); 1977d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, -inf)); 1987d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1997d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(0.0, inf)); 2007d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(1.0, inf)); 2017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, inf)); 2027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(-inf, inf)); 2037d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2047d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(inf, 0.0)); 2057d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(inf, 1.0)); 2067d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(inf, inf)); 2077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(inf, -inf)); 2087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(0.0, inf)); 2107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(1.0, inf)); 2117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(inf, inf)); 2127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-inf, inf)); 2137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Check -inf handling. 2157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(-inf, 0.0)); 2167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(-inf, 1.0)); 2177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(-inf, inf)); 2187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(-inf, -inf)); 2197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(0.0, -inf)); 2217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(1.0, -inf)); 2227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(inf, -inf)); 2237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(-inf, -inf)); 2247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(-inf, 0.0)); 2267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(-inf, 1.0)); 2277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(-inf, inf)); 2287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(-inf, -inf)); 2297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(0.0, -inf)); 2317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(1.0, -inf)); 2327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(inf, -inf)); 2337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(-inf, -inf)); 2347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-inf, 0.0)); 2367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-inf, 1.0)); 2377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-inf, inf)); 2387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-inf, -inf)); 2397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(0.0, -inf)); 2417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(1.0, -inf)); 2427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(inf, -inf)); 2437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-inf, -inf)); 2447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Check basic values. 2467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(0, 0)); 2477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(257.1, 257.1)); 2487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(65539.1, 65539.1)); 2497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64Equal.Float64Compare(-1.1, -1.1)); 2507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(0, 1)); 2527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(257.2, 256.2)); 2537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(65539.2, 65537.2)); 2547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64Equal.Float64Compare(-1.2, -2.2)); 2557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2567d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(0, 0)); 2577d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(357.3, 357.3)); 2587d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(75539.3, 75539.3)); 2597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(-1.3, -1.3)); 2607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(0, 1)); 2627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(456.4, 457.4)); 2637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(85537.4, 85539.4)); 2647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThan.Float64Compare(-2.4, -1.4)); 2657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(1, 0)); 2677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(457.5, 456.5)); 2687d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(85539.5, 85537.5)); 2697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThan.Float64Compare(-1.5, -2.5)); 2707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(0, 0)); 2727d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(357.6, 357.6)); 2737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(75539.6, 75539.6)); 2747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-1.6, -1.6)); 2757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2767d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(0, 1)); 2777d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(456.7, 457.7)); 2787d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(85537.7, 85539.7)); 2797d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(true, wFloat64LessThanOrEqual.Float64Compare(-2.7, -1.7)); 2807d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2817d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(1, 0)); 2827d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(457.8, 456.8)); 2837d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(85539.8, 85537.8)); 2847d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(false, wFloat64LessThanOrEqual.Float64Compare(-1.8, -2.8)); 2857d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 2867d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2877d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2887d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgvoid Int32BinopInputShapeTester::TestAllInputShapes() { 2897d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org std::vector<int32_t> inputs = ValueHelper::int32_vector(); 2907d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int num_int_inputs = static_cast<int>(inputs.size()); 2917d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (num_int_inputs > 16) num_int_inputs = 16; // limit to 16 inputs 2927d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2937d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org for (int i = -2; i < num_int_inputs; i++) { // for all left shapes 2947d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org for (int j = -2; j < num_int_inputs; j++) { // for all right shapes 2957d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (i >= 0 && j >= 0) break; // No constant/constant combos 2965e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); 2977d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p0 = m.Parameter(0); 2987d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p1 = m.Parameter(1); 2997d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* n0; 3007d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* n1; 3017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // left = Parameter | Load | Constant 3037d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (i == -2) { 3047d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org n0 = p0; 3057d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } else if (i == -1) { 3065e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org n0 = m.LoadFromPointer(&input_a, kMachInt32); 3077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } else { 3087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org n0 = m.Int32Constant(inputs[i]); 3097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // right = Parameter | Load | Constant 3127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (j == -2) { 3137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org n1 = p1; 3147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } else if (j == -1) { 3155e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org n1 = m.LoadFromPointer(&input_b, kMachInt32); 3167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } else { 3177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org n1 = m.Int32Constant(inputs[j]); 3187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org gen->gen(&m, n0, n1); 3217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (false) printf("Int32BinopInputShapeTester i=%d, j=%d\n", i, j); 3237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (i >= 0) { 3247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org input_a = inputs[i]; 3257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunRight(&m); 3267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } else if (j >= 0) { 3277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org input_b = inputs[j]; 3287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunLeft(&m); 3297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } else { 3307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Run(&m); 3317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 3357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgvoid Int32BinopInputShapeTester::Run(RawMachineAssemblerTester<int32_t>* m) { 3387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(pl) { 3397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(pr) { 3407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org input_a = *pl; 3417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org input_b = *pr; 3427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t expect = gen->expected(input_a, input_b); 3437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (false) printf(" cmp(a=%d, b=%d) ?== %d\n", input_a, input_b, expect); 3447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(expect, m->Call(input_a, input_b)); 3457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 3487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgvoid Int32BinopInputShapeTester::RunLeft( 3517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t>* m) { 3527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_UINT32_INPUTS(i) { 3537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org input_a = *i; 3547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t expect = gen->expected(input_a, input_b); 3557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (false) printf(" cmp(a=%d, b=%d) ?== %d\n", input_a, input_b, expect); 3567d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(expect, m->Call(input_a, input_b)); 3577d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3587d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 3597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgvoid Int32BinopInputShapeTester::RunRight( 3627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t>* m) { 3637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_UINT32_INPUTS(i) { 3647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org input_b = *i; 3657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t expect = gen->expected(input_a, input_b); 3667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (false) printf(" cmp(a=%d, b=%d) ?== %d\n", input_a, input_b, expect); 3677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(expect, m->Call(input_a, input_b)); 3687d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 3707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 37242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org#if V8_TURBOFAN_TARGET 37342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 3747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(ParametersEqual) { 3755e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); 3767d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p1 = m.Parameter(1); 3777d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_NE(NULL, p1); 3787d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p0 = m.Parameter(0); 3797d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_NE(NULL, p0); 3807d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(p0, m.Parameter(0)); 3817d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(p1, m.Parameter(1)); 3827d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 3837d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3847d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3857d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgvoid RunSmiConstant(int32_t v) { 3867d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// TODO(dcarney): on x64 Smis are generated with the SmiConstantRegister 3877d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#if !V8_TARGET_ARCH_X64 3887d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (Smi::IsValid(v)) { 3897d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<Object*> m; 3907d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.NumberConstant(v)); 3917d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(Smi::FromInt(v), m.Call()); 3927d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 3937d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#endif 3947d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 3957d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3967d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 3977d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgvoid RunNumberConstant(double v) { 3987d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<Object*> m; 3997d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#if V8_TARGET_ARCH_X64 4007d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // TODO(dcarney): on x64 Smis are generated with the SmiConstantRegister 4017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Handle<Object> number = m.isolate()->factory()->NewNumber(v); 4027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (number->IsSmi()) return; 4037d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#endif 4047d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.NumberConstant(v)); 4057d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Object* result = m.Call(); 4067d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.CheckNumber(v, result); 4077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunEmpty) { 4117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 4127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.Int32Constant(0)); 4137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(0, m.Call()); 4147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunInt32Constants) { 4187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { 4197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 4207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.Int32Constant(*i)); 4217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(*i, m.Call()); 4227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 4237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunSmiConstants) { 4277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org for (int32_t i = 1; i < Smi::kMaxValue && i != 0; i = i << 1) { 4287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(i); 4297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(3 * i); 4307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(5 * i); 4317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(-i); 4327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(i | 1); 4337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(i | 3); 4347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 4357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(Smi::kMaxValue); 4367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(Smi::kMaxValue - 1); 4377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(Smi::kMinValue); 4387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunSmiConstant(Smi::kMinValue + 1); 4397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { RunSmiConstant(*i); } 4417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunNumberConstants) { 4457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 4467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_FLOAT64_INPUTS(i) { RunNumberConstant(*i); } 4477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 4487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 4497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { RunNumberConstant(*i); } 4507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 4517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org for (int32_t i = 1; i < Smi::kMaxValue && i != 0; i = i << 1) { 4537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(i); 4547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(-i); 4557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(i | 1); 4567d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(i | 3); 4577d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 4587d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(Smi::kMaxValue); 4597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(Smi::kMaxValue - 1); 4607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(Smi::kMinValue); 4617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RunNumberConstant(Smi::kMinValue + 1); 4627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunEmptyString) { 4667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<Object*> m; 4677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.StringConstant("empty")); 4687d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.CheckString("empty", m.Call()); 4697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4727d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunHeapConstant) { 4737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<Object*> m; 4747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.StringConstant("empty")); 4757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.CheckString("empty", m.Call()); 4767d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4777d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4787d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4797d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunHeapNumberConstant) { 4807d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<Object*> m; 4817d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Handle<Object> number = m.isolate()->factory()->NewHeapNumber(100.5); 4827d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.HeapConstant(number)); 4837d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Object* result = m.Call(); 4847d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(result, *number); 4857d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4867d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4877d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4887d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunParam1) { 4895e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org RawMachineAssemblerTester<int32_t> m(kMachInt32); 4907d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(m.Parameter(0)); 4917d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4927d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { 4937d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t result = m.Call(*i); 4947d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(*i, result); 4957d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 4967d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 4977d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4987d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 4997d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunParam2_1) { 5005e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); 5017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p0 = m.Parameter(0); 5027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p1 = m.Parameter(1); 5037d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(p0); 5047d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org USE(p1); 5057d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5067d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { 5077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t result = m.Call(*i, -9999); 5087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(*i, result); 5097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 5117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunParam2_2) { 5145e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32); 5157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p0 = m.Parameter(0); 5167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* p1 = m.Parameter(1); 5177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(p1); 5187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org USE(p0); 5197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { 5217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t result = m.Call(-7777, *i); 5227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(*i, result); 5237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 5257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunParam3) { 5287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org for (int i = 0; i < 3; i++) { 5295e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org RawMachineAssemblerTester<int32_t> m(kMachInt32, kMachInt32, kMachInt32); 5307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* nodes[] = {m.Parameter(0), m.Parameter(1), m.Parameter(2)}; 5317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org m.Return(nodes[i]); 5327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int p[] = {-99, -77, -88}; 5347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(j) { 5357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org p[i] = *j; 5367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int32_t result = m.Call(p[0], p[1], p[2]); 5377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_EQ(*j, result); 5387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 5417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(RunBinopTester) { 5447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 5457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 5467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Int32BinopTester bt(&m); 5477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org bt.AddReturn(bt.param0); 5487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { CHECK_EQ(*i, bt.call(*i, 777)); } 5507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 5537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 5547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Int32BinopTester bt(&m); 5557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org bt.AddReturn(bt.param1); 5567d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5577d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_INT32_INPUTS(i) { CHECK_EQ(*i, bt.call(666, *i)); } 5587d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 5617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 5627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Float64BinopTester bt(&m); 5637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org bt.AddReturn(bt.param0); 5647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_FLOAT64_INPUTS(i) { CHECK_EQ(*i, bt.call(*i, 9.0)); } 5667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5687d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org { 5697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org RawMachineAssemblerTester<int32_t> m; 5707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Float64BinopTester bt(&m); 5717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org bt.AddReturn(bt.param1); 5727d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org FOR_FLOAT64_INPUTS(i) { CHECK_EQ(*i, bt.call(-11.25, *i)); } 5747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org } 5757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 5767d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 5777d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#endif // V8_TURBOFAN_TARGET 578