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

Side by Side Diff: test/cctest/compiler/test-run-machops.cc

Issue 1128133003: [turbofan] Make an OptionalOperator for MachineOperatorBuilder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 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
OLDNEW
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 <cmath> 5 #include <cmath>
6 #include <functional> 6 #include <functional>
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/utils/random-number-generator.h" 10 #include "src/base/utils/random-number-generator.h"
(...skipping 4932 matching lines...) Expand 10 before | Expand all | Expand 10 after
4943 CHECK_EQ(expected, result); 4943 CHECK_EQ(expected, result);
4944 } 4944 }
4945 } 4945 }
4946 } 4946 }
4947 4947
4948 4948
4949 TEST(RunFloat32Abs) { 4949 TEST(RunFloat32Abs) {
4950 float input = -1.0; 4950 float input = -1.0;
4951 float result = 0.0; 4951 float result = 0.0;
4952 RawMachineAssemblerTester<int32_t> m; 4952 RawMachineAssemblerTester<int32_t> m;
4953 if (!m.machine()->HasFloat32Abs()) return; 4953 if (!m.machine()->Float32Abs().supported()) return;
4954 m.StoreToPointer(&result, kMachFloat32, 4954 m.StoreToPointer(&result, kMachFloat32,
4955 m.Float32Abs(m.LoadFromPointer(&input, kMachFloat32))); 4955 m.Float32Abs(m.LoadFromPointer(&input, kMachFloat32)));
4956 m.Return(m.Int32Constant(0)); 4956 m.Return(m.Int32Constant(0));
4957 FOR_FLOAT32_INPUTS(i) { 4957 FOR_FLOAT32_INPUTS(i) {
4958 input = *i; 4958 input = *i;
4959 float expected = std::abs(input); 4959 float expected = std::abs(input);
4960 CHECK_EQ(0, m.Call()); 4960 CHECK_EQ(0, m.Call());
4961 CheckFloatEq(expected, result); 4961 CheckFloatEq(expected, result);
4962 } 4962 }
4963 } 4963 }
4964 4964
4965 4965
4966 TEST(RunFloat64Abs) { 4966 TEST(RunFloat64Abs) {
4967 double input = -1.0; 4967 double input = -1.0;
4968 double result = 0.0; 4968 double result = 0.0;
4969 RawMachineAssemblerTester<int32_t> m; 4969 RawMachineAssemblerTester<int32_t> m;
4970 if (!m.machine()->HasFloat64Abs()) return; 4970 if (!m.machine()->Float64Abs().supported()) return;
4971 m.StoreToPointer(&result, kMachFloat64, 4971 m.StoreToPointer(&result, kMachFloat64,
4972 m.Float64Abs(m.LoadFromPointer(&input, kMachFloat64))); 4972 m.Float64Abs(m.LoadFromPointer(&input, kMachFloat64)));
4973 m.Return(m.Int32Constant(0)); 4973 m.Return(m.Int32Constant(0));
4974 FOR_FLOAT64_INPUTS(i) { 4974 FOR_FLOAT64_INPUTS(i) {
4975 input = *i; 4975 input = *i;
4976 double expected = std::abs(input); 4976 double expected = std::abs(input);
4977 CHECK_EQ(0, m.Call()); 4977 CHECK_EQ(0, m.Call());
4978 CheckDoubleEq(expected, result); 4978 CheckDoubleEq(expected, result);
4979 } 4979 }
4980 } 4980 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
5075 -two_52 + 1, 5075 -two_52 + 1,
5076 -two_52 + 1 - 0.1, 5076 -two_52 + 1 - 0.1,
5077 -two_52 + 1 - 0.5, 5077 -two_52 + 1 - 0.5,
5078 -two_52 + 1 - 0.7}; 5078 -two_52 + 1 - 0.7};
5079 5079
5080 5080
5081 TEST(RunFloat64RoundDown1) { 5081 TEST(RunFloat64RoundDown1) {
5082 double input = -1.0; 5082 double input = -1.0;
5083 double result = 0.0; 5083 double result = 0.0;
5084 RawMachineAssemblerTester<int32_t> m; 5084 RawMachineAssemblerTester<int32_t> m;
5085 if (!m.machine()->HasFloat64RoundDown()) return; 5085 if (!m.machine()->Float64RoundDown().supported()) return;
5086 m.StoreToPointer(&result, kMachFloat64, 5086 m.StoreToPointer(&result, kMachFloat64,
5087 m.Float64RoundDown(m.LoadFromPointer(&input, kMachFloat64))); 5087 m.Float64RoundDown(m.LoadFromPointer(&input, kMachFloat64)));
5088 m.Return(m.Int32Constant(0)); 5088 m.Return(m.Int32Constant(0));
5089 for (size_t i = 0; i < arraysize(kValues); ++i) { 5089 for (size_t i = 0; i < arraysize(kValues); ++i) {
5090 input = kValues[i]; 5090 input = kValues[i];
5091 CHECK_EQ(0, m.Call()); 5091 CHECK_EQ(0, m.Call());
5092 double expected = std::floor(kValues[i]); 5092 double expected = std::floor(kValues[i]);
5093 CHECK_EQ(expected, result); 5093 CHECK_EQ(expected, result);
5094 } 5094 }
5095 } 5095 }
5096 5096
5097 5097
5098 TEST(RunFloat64RoundDown2) { 5098 TEST(RunFloat64RoundDown2) {
5099 double input = -1.0; 5099 double input = -1.0;
5100 double result = 0.0; 5100 double result = 0.0;
5101 RawMachineAssemblerTester<int32_t> m; 5101 RawMachineAssemblerTester<int32_t> m;
5102 if (!m.machine()->HasFloat64RoundDown()) return; 5102 if (!m.machine()->Float64RoundDown().supported()) return;
5103 m.StoreToPointer(&result, kMachFloat64, 5103 m.StoreToPointer(&result, kMachFloat64,
5104 m.Float64Sub(m.Float64Constant(-0.0), 5104 m.Float64Sub(m.Float64Constant(-0.0),
5105 m.Float64RoundDown(m.Float64Sub( 5105 m.Float64RoundDown(m.Float64Sub(
5106 m.Float64Constant(-0.0), 5106 m.Float64Constant(-0.0),
5107 m.LoadFromPointer(&input, kMachFloat64))))); 5107 m.LoadFromPointer(&input, kMachFloat64)))));
5108 m.Return(m.Int32Constant(0)); 5108 m.Return(m.Int32Constant(0));
5109 for (size_t i = 0; i < arraysize(kValues); ++i) { 5109 for (size_t i = 0; i < arraysize(kValues); ++i) {
5110 input = kValues[i]; 5110 input = kValues[i];
5111 CHECK_EQ(0, m.Call()); 5111 CHECK_EQ(0, m.Call());
5112 double expected = std::ceil(kValues[i]); 5112 double expected = std::ceil(kValues[i]);
5113 CHECK_EQ(expected, result); 5113 CHECK_EQ(expected, result);
5114 } 5114 }
5115 } 5115 }
5116 5116
5117 5117
5118 TEST(RunFloat64RoundTruncate) { 5118 TEST(RunFloat64RoundTruncate) {
5119 double input = -1.0; 5119 double input = -1.0;
5120 double result = 0.0; 5120 double result = 0.0;
5121 RawMachineAssemblerTester<int32_t> m; 5121 RawMachineAssemblerTester<int32_t> m;
5122 if (!m.machine()->HasFloat64RoundTruncate()) return; 5122 if (!m.machine()->Float64RoundTruncate().supported()) return;
5123 m.StoreToPointer( 5123 m.StoreToPointer(
5124 &result, kMachFloat64, 5124 &result, kMachFloat64,
5125 m.Float64RoundTruncate(m.LoadFromPointer(&input, kMachFloat64))); 5125 m.Float64RoundTruncate(m.LoadFromPointer(&input, kMachFloat64)));
5126 m.Return(m.Int32Constant(0)); 5126 m.Return(m.Int32Constant(0));
5127 for (size_t i = 0; i < arraysize(kValues); ++i) { 5127 for (size_t i = 0; i < arraysize(kValues); ++i) {
5128 input = kValues[i]; 5128 input = kValues[i];
5129 CHECK_EQ(0, m.Call()); 5129 CHECK_EQ(0, m.Call());
5130 double expected = trunc(kValues[i]); 5130 double expected = trunc(kValues[i]);
5131 CHECK_EQ(expected, result); 5131 CHECK_EQ(expected, result);
5132 } 5132 }
5133 } 5133 }
5134 5134
5135 5135
5136 TEST(RunFloat64RoundTiesAway) { 5136 TEST(RunFloat64RoundTiesAway) {
5137 double input = -1.0; 5137 double input = -1.0;
5138 double result = 0.0; 5138 double result = 0.0;
5139 RawMachineAssemblerTester<int32_t> m; 5139 RawMachineAssemblerTester<int32_t> m;
5140 if (!m.machine()->HasFloat64RoundTiesAway()) return; 5140 if (!m.machine()->Float64RoundTiesAway().supported()) return;
5141 m.StoreToPointer( 5141 m.StoreToPointer(
5142 &result, kMachFloat64, 5142 &result, kMachFloat64,
5143 m.Float64RoundTiesAway(m.LoadFromPointer(&input, kMachFloat64))); 5143 m.Float64RoundTiesAway(m.LoadFromPointer(&input, kMachFloat64)));
5144 m.Return(m.Int32Constant(0)); 5144 m.Return(m.Int32Constant(0));
5145 for (size_t i = 0; i < arraysize(kValues); ++i) { 5145 for (size_t i = 0; i < arraysize(kValues); ++i) {
5146 input = kValues[i]; 5146 input = kValues[i];
5147 CHECK_EQ(0, m.Call()); 5147 CHECK_EQ(0, m.Call());
5148 double expected = round(kValues[i]); 5148 double expected = round(kValues[i]);
5149 CHECK_EQ(expected, result); 5149 CHECK_EQ(expected, result);
5150 } 5150 }
5151 } 5151 }
5152 5152
5153 #endif // V8_TURBOFAN_TARGET 5153 #endif // V8_TURBOFAN_TARGET
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698