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 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 | 730 |
731 | 731 |
732 #if V8_TARGET_ARCH_PPC64 | 732 #if V8_TARGET_ARCH_PPC64 |
733 // TODO(mbrandy): Absorb logical-and into rldic? | 733 // TODO(mbrandy): Absorb logical-and into rldic? |
734 void InstructionSelector::VisitWord64Ror(Node* node) { | 734 void InstructionSelector::VisitWord64Ror(Node* node) { |
735 VisitRRO(this, node, kPPC_RotRight64, kShift64Imm); | 735 VisitRRO(this, node, kPPC_RotRight64, kShift64Imm); |
736 } | 736 } |
737 #endif | 737 #endif |
738 | 738 |
739 | 739 |
| 740 void InstructionSelector::VisitWord32Clz(Node* node) { |
| 741 PPCOperandGenerator g(this); |
| 742 Emit(kPPC_Cntlz32, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); |
| 743 } |
| 744 |
| 745 |
740 void InstructionSelector::VisitInt32Add(Node* node) { | 746 void InstructionSelector::VisitInt32Add(Node* node) { |
741 VisitBinop<Int32BinopMatcher>(this, node, kPPC_Add32, kInt16Imm); | 747 VisitBinop<Int32BinopMatcher>(this, node, kPPC_Add32, kInt16Imm); |
742 } | 748 } |
743 | 749 |
744 | 750 |
745 #if V8_TARGET_ARCH_PPC64 | 751 #if V8_TARGET_ARCH_PPC64 |
746 void InstructionSelector::VisitInt64Add(Node* node) { | 752 void InstructionSelector::VisitInt64Add(Node* node) { |
747 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Add64, kInt16Imm); | 753 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Add64, kInt16Imm); |
748 } | 754 } |
749 #endif | 755 #endif |
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1499 MachineOperatorBuilder::kFloat64Min | | 1505 MachineOperatorBuilder::kFloat64Min | |
1500 MachineOperatorBuilder::kFloat64RoundDown | | 1506 MachineOperatorBuilder::kFloat64RoundDown | |
1501 MachineOperatorBuilder::kFloat64RoundTruncate | | 1507 MachineOperatorBuilder::kFloat64RoundTruncate | |
1502 MachineOperatorBuilder::kFloat64RoundTiesAway; | 1508 MachineOperatorBuilder::kFloat64RoundTiesAway; |
1503 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. | 1509 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. |
1504 } | 1510 } |
1505 | 1511 |
1506 } // namespace compiler | 1512 } // namespace compiler |
1507 } // namespace internal | 1513 } // namespace internal |
1508 } // namespace v8 | 1514 } // namespace v8 |
OLD | NEW |