Chromium Code Reviews| Index: src/compiler/s390/instruction-selector-s390.cc |
| diff --git a/src/compiler/s390/instruction-selector-s390.cc b/src/compiler/s390/instruction-selector-s390.cc |
| index 4b70e41ffdab884eb5ee8aae7fe74652c4cc9a54..3ead655b7b076b9a59be69783fbbb2b5eaa5b290 100644 |
| --- a/src/compiler/s390/instruction-selector-s390.cc |
| +++ b/src/compiler/s390/instruction-selector-s390.cc |
| @@ -389,6 +389,11 @@ bool ProduceWord32Result(Node* node) { |
| switch (load_rep.representation()) { |
| case MachineRepresentation::kWord32: |
| return true; |
| + case MachineRepresentation::kWord8: |
| + if (load_rep.IsSigned()) |
| + return false; |
| + else |
| + return true; |
| default: |
| return false; |
| } |
| @@ -1242,6 +1247,14 @@ void InstructionSelector::VisitWord32ReverseBits(Node* node) { UNREACHABLE(); } |
| void InstructionSelector::VisitWord64ReverseBits(Node* node) { UNREACHABLE(); } |
| #endif |
| +void InstructionSelector::VisitInt32AbsWithOverflow(Node* node) { |
| + UNREACHABLE(); |
|
Benedikt Meurer
2017/03/31 04:33:08
Can you also provide a baseline implementation of
|
| +} |
| + |
| +void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) { |
| + UNREACHABLE(); |
|
Benedikt Meurer
2017/03/31 04:33:08
Same here.
|
| +} |
| + |
| void InstructionSelector::VisitWord64ReverseBytes(Node* node) { |
| S390OperandGenerator g(this); |
| Emit(kS390_LoadReverse64RR, g.DefineAsRegister(node), |
| @@ -2037,7 +2050,15 @@ void VisitWordCompareZero(InstructionSelector* selector, Node* user, |
| selector, node, kS390_Mul32WithOverflow, |
| OperandMode::kInt32Imm | OperandMode::kAllowDistinctOps, |
| cont); |
| + case IrOpcode::kInt32AbsWithOverflow: |
| + cont->OverwriteAndNegateIfEqual(kOverflow); |
| + return VisitWord32UnaryOp(selector, node, kS390_Abs32, |
| + OperandMode::kNone, cont); |
| #if V8_TARGET_ARCH_S390X |
| + case IrOpcode::kInt64AbsWithOverflow: |
| + cont->OverwriteAndNegateIfEqual(kOverflow); |
| + return VisitWord64UnaryOp(selector, node, kS390_Abs64, |
| + OperandMode::kNone, cont); |
| case IrOpcode::kInt64AddWithOverflow: |
| cont->OverwriteAndNegateIfEqual(kOverflow); |
| return VisitWord64BinOp(selector, node, kS390_Add64, |
| @@ -2450,6 +2471,8 @@ InstructionSelector::SupportedMachineOperatorFlags() { |
| MachineOperatorBuilder::kWord32Popcnt | |
| MachineOperatorBuilder::kWord32ReverseBytes | |
| MachineOperatorBuilder::kWord64ReverseBytes | |
| + MachineOperatorBuilder::kInt32AbsWithOverflow | |
| + MachineOperatorBuilder::kInt64AbsWithOverflow | |
| MachineOperatorBuilder::kWord64Popcnt; |
| } |