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 |