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/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 1167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1178 return VisitWord64Compare(selector, value, cont); | 1178 return VisitWord64Compare(selector, value, cont); |
1179 case IrOpcode::kInt64LessThan: | 1179 case IrOpcode::kInt64LessThan: |
1180 cont->OverwriteAndNegateIfEqual(kSignedLessThan); | 1180 cont->OverwriteAndNegateIfEqual(kSignedLessThan); |
1181 return VisitWord64Compare(selector, value, cont); | 1181 return VisitWord64Compare(selector, value, cont); |
1182 case IrOpcode::kInt64LessThanOrEqual: | 1182 case IrOpcode::kInt64LessThanOrEqual: |
1183 cont->OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); | 1183 cont->OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); |
1184 return VisitWord64Compare(selector, value, cont); | 1184 return VisitWord64Compare(selector, value, cont); |
1185 case IrOpcode::kUint64LessThan: | 1185 case IrOpcode::kUint64LessThan: |
1186 cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); | 1186 cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); |
1187 return VisitWord64Compare(selector, value, cont); | 1187 return VisitWord64Compare(selector, value, cont); |
| 1188 case IrOpcode::kUint64LessThanOrEqual: |
| 1189 cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); |
| 1190 return VisitWord64Compare(selector, value, cont); |
1188 #endif | 1191 #endif |
1189 case IrOpcode::kFloat32Equal: | 1192 case IrOpcode::kFloat32Equal: |
1190 cont->OverwriteAndNegateIfEqual(kEqual); | 1193 cont->OverwriteAndNegateIfEqual(kEqual); |
1191 return VisitFloat32Compare(selector, value, cont); | 1194 return VisitFloat32Compare(selector, value, cont); |
1192 case IrOpcode::kFloat32LessThan: | 1195 case IrOpcode::kFloat32LessThan: |
1193 cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); | 1196 cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); |
1194 return VisitFloat32Compare(selector, value, cont); | 1197 return VisitFloat32Compare(selector, value, cont); |
1195 case IrOpcode::kFloat32LessThanOrEqual: | 1198 case IrOpcode::kFloat32LessThanOrEqual: |
1196 cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); | 1199 cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); |
1197 return VisitFloat32Compare(selector, value, cont); | 1200 return VisitFloat32Compare(selector, value, cont); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1376 VisitWord64Compare(this, node, &cont); | 1379 VisitWord64Compare(this, node, &cont); |
1377 } | 1380 } |
1378 | 1381 |
1379 | 1382 |
1380 void InstructionSelector::VisitInt64LessThanOrEqual(Node* node) { | 1383 void InstructionSelector::VisitInt64LessThanOrEqual(Node* node) { |
1381 FlagsContinuation cont(kSignedLessThanOrEqual, node); | 1384 FlagsContinuation cont(kSignedLessThanOrEqual, node); |
1382 VisitWord64Compare(this, node, &cont); | 1385 VisitWord64Compare(this, node, &cont); |
1383 } | 1386 } |
1384 | 1387 |
1385 | 1388 |
1386 void InstructionSelector::VisitUint64LessThan(Node* node) { | 1389 void InstructionSelector::VisitUint64LessThanOrEqual(Node* node) { |
1387 FlagsContinuation cont(kUnsignedLessThan, node); | 1390 FlagsContinuation cont(kUnsignedLessThanOrEqual, node); |
1388 VisitWord64Compare(this, node, &cont); | 1391 VisitWord64Compare(this, node, &cont); |
1389 } | 1392 } |
1390 #endif | 1393 #endif |
1391 | 1394 |
1392 | 1395 |
1393 void InstructionSelector::VisitFloat32Equal(Node* node) { | 1396 void InstructionSelector::VisitFloat32Equal(Node* node) { |
1394 FlagsContinuation cont(kEqual, node); | 1397 FlagsContinuation cont(kEqual, node); |
1395 VisitFloat32Compare(this, node, &cont); | 1398 VisitFloat32Compare(this, node, &cont); |
1396 } | 1399 } |
1397 | 1400 |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1648 InstructionSelector::SupportedMachineOperatorFlags() { | 1651 InstructionSelector::SupportedMachineOperatorFlags() { |
1649 return MachineOperatorBuilder::kFloat64RoundDown | | 1652 return MachineOperatorBuilder::kFloat64RoundDown | |
1650 MachineOperatorBuilder::kFloat64RoundTruncate | | 1653 MachineOperatorBuilder::kFloat64RoundTruncate | |
1651 MachineOperatorBuilder::kFloat64RoundTiesAway; | 1654 MachineOperatorBuilder::kFloat64RoundTiesAway; |
1652 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. | 1655 // We omit kWord32ShiftIsSafe as s[rl]w use 0x3f as a mask rather than 0x1f. |
1653 } | 1656 } |
1654 | 1657 |
1655 } // namespace compiler | 1658 } // namespace compiler |
1656 } // namespace internal | 1659 } // namespace internal |
1657 } // namespace v8 | 1660 } // namespace v8 |
OLD | NEW |