diff options
Diffstat (limited to 'deps/v8/src/compiler/mips/instruction-selector-mips.cc')
-rw-r--r-- | deps/v8/src/compiler/mips/instruction-selector-mips.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/deps/v8/src/compiler/mips/instruction-selector-mips.cc b/deps/v8/src/compiler/mips/instruction-selector-mips.cc index cfe132338c0..66f38dc2836 100644 --- a/deps/v8/src/compiler/mips/instruction-selector-mips.cc +++ b/deps/v8/src/compiler/mips/instruction-selector-mips.cc @@ -534,7 +534,8 @@ void InstructionSelector::VisitWord32Shr(Node* node) { void InstructionSelector::VisitWord32Sar(Node* node) { Int32BinopMatcher m(node); - if (m.left().IsWord32Shl() && CanCover(node, m.left().node())) { + if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && + m.left().IsWord32Shl() && CanCover(node, m.left().node())) { Int32BinopMatcher mleft(m.left().node()); if (m.right().HasValue() && mleft.right().HasValue()) { MipsOperandGenerator g(this); @@ -1778,7 +1779,7 @@ void InstructionSelector::VisitWord32AtomicExchange(Node* node) { Node* index = node->InputAt(1); Node* value = node->InputAt(2); ArchOpcode opcode = kArchNop; - MachineType type = AtomicOpRepresentationOf(node->op()); + MachineType type = AtomicOpType(node->op()); if (type == MachineType::Int8()) { opcode = kWord32AtomicExchangeInt8; } else if (type == MachineType::Uint8()) { @@ -1817,7 +1818,7 @@ void InstructionSelector::VisitWord32AtomicCompareExchange(Node* node) { Node* old_value = node->InputAt(2); Node* new_value = node->InputAt(3); ArchOpcode opcode = kArchNop; - MachineType type = AtomicOpRepresentationOf(node->op()); + MachineType type = AtomicOpType(node->op()); if (type == MachineType::Int8()) { opcode = kWord32AtomicCompareExchangeInt8; } else if (type == MachineType::Uint8()) { @@ -1858,7 +1859,7 @@ void InstructionSelector::VisitWord32AtomicBinaryOperation( Node* index = node->InputAt(1); Node* value = node->InputAt(2); ArchOpcode opcode = kArchNop; - MachineType type = AtomicOpRepresentationOf(node->op()); + MachineType type = AtomicOpType(node->op()); if (type == MachineType::Int8()) { opcode = int8_op; } else if (type == MachineType::Uint8()) { @@ -2169,8 +2170,8 @@ void InstructionSelector::VisitS8x16Shuffle(Node* node) { uint8_t offset; MipsOperandGenerator g(this); if (TryMatchConcat(shuffle, &offset)) { - Emit(kMipsS8x16Concat, g.DefineSameAsFirst(node), g.UseRegister(input0), - g.UseRegister(input1), g.UseImmediate(offset)); + Emit(kMipsS8x16Concat, g.DefineSameAsFirst(node), g.UseRegister(input1), + g.UseRegister(input0), g.UseImmediate(offset)); return; } if (TryMatch32x4Shuffle(shuffle, shuffle32x4)) { @@ -2215,9 +2216,7 @@ InstructionSelector::SupportedMachineOperatorFlags() { MachineOperatorBuilder::kFloat32RoundDown | MachineOperatorBuilder::kFloat32RoundUp | MachineOperatorBuilder::kFloat32RoundTruncate | - MachineOperatorBuilder::kFloat32RoundTiesEven | - MachineOperatorBuilder::kWord32ReverseBytes | - MachineOperatorBuilder::kWord64ReverseBytes; + MachineOperatorBuilder::kFloat32RoundTiesEven; } // static |