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/compiler/instruction-selector-impl.h" | 5 #include "src/compiler/instruction-selector-impl.h" |
6 #include "src/compiler/node-matchers.h" | 6 #include "src/compiler/node-matchers.h" |
7 #include "src/compiler/node-properties.h" | 7 #include "src/compiler/node-properties.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 | 1263 |
1264 Node* success_output = NodeProperties::FindProjection(node, 1); | 1264 Node* success_output = NodeProperties::FindProjection(node, 1); |
1265 if (success_output) { | 1265 if (success_output) { |
1266 outputs[output_count++] = g.DefineAsRegister(success_output); | 1266 outputs[output_count++] = g.DefineAsRegister(success_output); |
1267 } | 1267 } |
1268 | 1268 |
1269 Emit(kArm64Float64ToInt64, output_count, outputs, 1, inputs); | 1269 Emit(kArm64Float64ToInt64, output_count, outputs, 1, inputs); |
1270 } | 1270 } |
1271 | 1271 |
1272 | 1272 |
1273 void InstructionSelector::VisitTruncateFloat32ToUint64(Node* node) { | 1273 void InstructionSelector::VisitTryTruncateFloat32ToUint64(Node* node) { |
1274 VisitRR(this, kArm64Float32ToUint64, node); | 1274 Arm64OperandGenerator g(this); |
| 1275 |
| 1276 InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; |
| 1277 InstructionOperand outputs[2]; |
| 1278 size_t output_count = 0; |
| 1279 outputs[output_count++] = g.DefineAsRegister(node); |
| 1280 |
| 1281 Node* success_output = NodeProperties::FindProjection(node, 1); |
| 1282 if (success_output) { |
| 1283 outputs[output_count++] = g.DefineAsRegister(success_output); |
| 1284 } |
| 1285 |
| 1286 Emit(kArm64Float32ToUint64, output_count, outputs, 1, inputs); |
1275 } | 1287 } |
1276 | 1288 |
1277 | 1289 |
1278 void InstructionSelector::VisitTryTruncateFloat64ToUint64(Node* node) { | 1290 void InstructionSelector::VisitTryTruncateFloat64ToUint64(Node* node) { |
1279 Arm64OperandGenerator g(this); | 1291 Arm64OperandGenerator g(this); |
1280 | 1292 |
1281 InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; | 1293 InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; |
1282 InstructionOperand outputs[2]; | 1294 InstructionOperand outputs[2]; |
1283 size_t output_count = 0; | 1295 size_t output_count = 0; |
1284 outputs[output_count++] = g.DefineAsRegister(node); | 1296 outputs[output_count++] = g.DefineAsRegister(node); |
(...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2145 MachineOperatorBuilder::kFloat32RoundTiesEven | | 2157 MachineOperatorBuilder::kFloat32RoundTiesEven | |
2146 MachineOperatorBuilder::kFloat64RoundTiesEven | | 2158 MachineOperatorBuilder::kFloat64RoundTiesEven | |
2147 MachineOperatorBuilder::kWord32ShiftIsSafe | | 2159 MachineOperatorBuilder::kWord32ShiftIsSafe | |
2148 MachineOperatorBuilder::kInt32DivIsSafe | | 2160 MachineOperatorBuilder::kInt32DivIsSafe | |
2149 MachineOperatorBuilder::kUint32DivIsSafe; | 2161 MachineOperatorBuilder::kUint32DivIsSafe; |
2150 } | 2162 } |
2151 | 2163 |
2152 } // namespace compiler | 2164 } // namespace compiler |
2153 } // namespace internal | 2165 } // namespace internal |
2154 } // namespace v8 | 2166 } // namespace v8 |
OLD | NEW |