| 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 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 void InstructionSelector::VisitWord32Ror(Node* node) { | 394 void InstructionSelector::VisitWord32Ror(Node* node) { |
| 395 VisitRRO(this, kMipsRor, node); | 395 VisitRRO(this, kMipsRor, node); |
| 396 } | 396 } |
| 397 | 397 |
| 398 | 398 |
| 399 void InstructionSelector::VisitWord32Clz(Node* node) { | 399 void InstructionSelector::VisitWord32Clz(Node* node) { |
| 400 VisitRR(this, kMipsClz, node); | 400 VisitRR(this, kMipsClz, node); |
| 401 } | 401 } |
| 402 | 402 |
| 403 | 403 |
| 404 void InstructionSelector::VisitWord32Ctz(Node* node) { UNREACHABLE(); } | 404 void InstructionSelector::VisitWord32Ctz(Node* node) { |
| 405 MipsOperandGenerator g(this); |
| 406 Emit(kMipsCtz, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); |
| 407 } |
| 405 | 408 |
| 406 | 409 |
| 407 void InstructionSelector::VisitWord32Popcnt(Node* node) { UNREACHABLE(); } | 410 void InstructionSelector::VisitWord32Popcnt(Node* node) { |
| 411 MipsOperandGenerator g(this); |
| 412 Emit(kMipsPopcnt, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); |
| 413 } |
| 408 | 414 |
| 409 | 415 |
| 410 void InstructionSelector::VisitInt32Add(Node* node) { | 416 void InstructionSelector::VisitInt32Add(Node* node) { |
| 411 MipsOperandGenerator g(this); | 417 MipsOperandGenerator g(this); |
| 412 | 418 |
| 413 // TODO(plind): Consider multiply & add optimization from arm port. | 419 // TODO(plind): Consider multiply & add optimization from arm port. |
| 414 VisitBinop(this, node, kMipsAdd); | 420 VisitBinop(this, node, kMipsAdd); |
| 415 } | 421 } |
| 416 | 422 |
| 417 | 423 |
| (...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1311 MachineOperatorBuilder::Flags | 1317 MachineOperatorBuilder::Flags |
| 1312 InstructionSelector::SupportedMachineOperatorFlags() { | 1318 InstructionSelector::SupportedMachineOperatorFlags() { |
| 1313 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; | 1319 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; |
| 1314 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && | 1320 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && |
| 1315 IsFp64Mode()) { | 1321 IsFp64Mode()) { |
| 1316 flags |= MachineOperatorBuilder::kFloat64RoundDown | | 1322 flags |= MachineOperatorBuilder::kFloat64RoundDown | |
| 1317 MachineOperatorBuilder::kFloat64RoundUp | | 1323 MachineOperatorBuilder::kFloat64RoundUp | |
| 1318 MachineOperatorBuilder::kFloat64RoundTruncate | | 1324 MachineOperatorBuilder::kFloat64RoundTruncate | |
| 1319 MachineOperatorBuilder::kFloat64RoundTiesEven; | 1325 MachineOperatorBuilder::kFloat64RoundTiesEven; |
| 1320 } | 1326 } |
| 1321 return flags | MachineOperatorBuilder::kInt32DivIsSafe | | 1327 return flags | MachineOperatorBuilder::kWord32Ctz | |
| 1328 MachineOperatorBuilder::kWord32Popcnt | |
| 1329 MachineOperatorBuilder::kInt32DivIsSafe | |
| 1322 MachineOperatorBuilder::kUint32DivIsSafe | | 1330 MachineOperatorBuilder::kUint32DivIsSafe | |
| 1323 MachineOperatorBuilder::kWord32ShiftIsSafe | | 1331 MachineOperatorBuilder::kWord32ShiftIsSafe | |
| 1324 MachineOperatorBuilder::kFloat64Min | | 1332 MachineOperatorBuilder::kFloat64Min | |
| 1325 MachineOperatorBuilder::kFloat64Max | | 1333 MachineOperatorBuilder::kFloat64Max | |
| 1326 MachineOperatorBuilder::kFloat32Min | | 1334 MachineOperatorBuilder::kFloat32Min | |
| 1327 MachineOperatorBuilder::kFloat32Max | | 1335 MachineOperatorBuilder::kFloat32Max | |
| 1328 MachineOperatorBuilder::kFloat32RoundDown | | 1336 MachineOperatorBuilder::kFloat32RoundDown | |
| 1329 MachineOperatorBuilder::kFloat32RoundUp | | 1337 MachineOperatorBuilder::kFloat32RoundUp | |
| 1330 MachineOperatorBuilder::kFloat32RoundTruncate | | 1338 MachineOperatorBuilder::kFloat32RoundTruncate | |
| 1331 MachineOperatorBuilder::kFloat32RoundTiesEven; | 1339 MachineOperatorBuilder::kFloat32RoundTiesEven; |
| 1332 } | 1340 } |
| 1333 | 1341 |
| 1334 } // namespace compiler | 1342 } // namespace compiler |
| 1335 } // namespace internal | 1343 } // namespace internal |
| 1336 } // namespace v8 | 1344 } // namespace v8 |
| OLD | NEW |