| 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/base/adapters.h" | 5 #include "src/base/adapters.h" |
| 6 #include "src/base/bits.h" | 6 #include "src/base/bits.h" |
| 7 #include "src/compiler/instruction-selector-impl.h" | 7 #include "src/compiler/instruction-selector-impl.h" |
| 8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
| 9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
| 10 | 10 |
| (...skipping 1264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1275 | 1275 |
| 1276 void InstructionSelector::VisitFloat32Abs(Node* node) { | 1276 void InstructionSelector::VisitFloat32Abs(Node* node) { |
| 1277 VisitRR(this, kMips64AbsS, node); | 1277 VisitRR(this, kMips64AbsS, node); |
| 1278 } | 1278 } |
| 1279 | 1279 |
| 1280 | 1280 |
| 1281 void InstructionSelector::VisitFloat64Abs(Node* node) { | 1281 void InstructionSelector::VisitFloat64Abs(Node* node) { |
| 1282 VisitRR(this, kMips64AbsD, node); | 1282 VisitRR(this, kMips64AbsD, node); |
| 1283 } | 1283 } |
| 1284 | 1284 |
| 1285 void InstructionSelector::VisitFloat64Log(Node* node) { | |
| 1286 Mips64OperandGenerator g(this); | |
| 1287 Emit(kIeee754Float64Log, g.DefineAsFixed(node, f0), | |
| 1288 g.UseFixed(node->InputAt(0), f12)) | |
| 1289 ->MarkAsCall(); | |
| 1290 } | |
| 1291 | |
| 1292 void InstructionSelector::VisitFloat32Sqrt(Node* node) { | 1285 void InstructionSelector::VisitFloat32Sqrt(Node* node) { |
| 1293 VisitRR(this, kMips64SqrtS, node); | 1286 VisitRR(this, kMips64SqrtS, node); |
| 1294 } | 1287 } |
| 1295 | 1288 |
| 1296 | 1289 |
| 1297 void InstructionSelector::VisitFloat64Sqrt(Node* node) { | 1290 void InstructionSelector::VisitFloat64Sqrt(Node* node) { |
| 1298 VisitRR(this, kMips64SqrtD, node); | 1291 VisitRR(this, kMips64SqrtD, node); |
| 1299 } | 1292 } |
| 1300 | 1293 |
| 1301 | 1294 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1340 | 1333 |
| 1341 | 1334 |
| 1342 void InstructionSelector::VisitFloat64RoundTiesEven(Node* node) { | 1335 void InstructionSelector::VisitFloat64RoundTiesEven(Node* node) { |
| 1343 VisitRR(this, kMips64Float64RoundTiesEven, node); | 1336 VisitRR(this, kMips64Float64RoundTiesEven, node); |
| 1344 } | 1337 } |
| 1345 | 1338 |
| 1346 void InstructionSelector::VisitFloat32Neg(Node* node) { UNREACHABLE(); } | 1339 void InstructionSelector::VisitFloat32Neg(Node* node) { UNREACHABLE(); } |
| 1347 | 1340 |
| 1348 void InstructionSelector::VisitFloat64Neg(Node* node) { UNREACHABLE(); } | 1341 void InstructionSelector::VisitFloat64Neg(Node* node) { UNREACHABLE(); } |
| 1349 | 1342 |
| 1343 void InstructionSelector::VisitFloat64Ieee754Unop(Node* node, |
| 1344 InstructionCode opcode) { |
| 1345 Mips64OperandGenerator g(this); |
| 1346 Emit(opcode, g.DefineAsFixed(node, f0), g.UseFixed(node->InputAt(0), f12)) |
| 1347 ->MarkAsCall(); |
| 1348 } |
| 1349 |
| 1350 void InstructionSelector::EmitPrepareArguments( | 1350 void InstructionSelector::EmitPrepareArguments( |
| 1351 ZoneVector<PushParameter>* arguments, const CallDescriptor* descriptor, | 1351 ZoneVector<PushParameter>* arguments, const CallDescriptor* descriptor, |
| 1352 Node* node) { | 1352 Node* node) { |
| 1353 Mips64OperandGenerator g(this); | 1353 Mips64OperandGenerator g(this); |
| 1354 | 1354 |
| 1355 // Prepare for C function call. | 1355 // Prepare for C function call. |
| 1356 if (descriptor->IsCFunctionCall()) { | 1356 if (descriptor->IsCFunctionCall()) { |
| 1357 Emit(kArchPrepareCallCFunction | | 1357 Emit(kArchPrepareCallCFunction | |
| 1358 MiscField::encode(static_cast<int>(descriptor->CParameterCount())), | 1358 MiscField::encode(static_cast<int>(descriptor->CParameterCount())), |
| 1359 0, nullptr, 0, nullptr); | 1359 0, nullptr, 0, nullptr); |
| (...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2075 } else { | 2075 } else { |
| 2076 DCHECK(kArchVariant == kMips64r2); | 2076 DCHECK(kArchVariant == kMips64r2); |
| 2077 return MachineOperatorBuilder::AlignmentRequirements:: | 2077 return MachineOperatorBuilder::AlignmentRequirements:: |
| 2078 NoUnalignedAccessSupport(); | 2078 NoUnalignedAccessSupport(); |
| 2079 } | 2079 } |
| 2080 } | 2080 } |
| 2081 | 2081 |
| 2082 } // namespace compiler | 2082 } // namespace compiler |
| 2083 } // namespace internal | 2083 } // namespace internal |
| 2084 } // namespace v8 | 2084 } // namespace v8 |
| OLD | NEW |