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 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ | 5 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ |
6 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ | 6 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ |
7 | 7 |
8 #include "src/compiler/instruction.h" | 8 #include "src/compiler/instruction.h" |
9 #include "src/compiler/instruction-selector.h" | 9 #include "src/compiler/instruction-selector.h" |
10 #include "src/compiler/linkage.h" | 10 #include "src/compiler/linkage.h" |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 } | 379 } |
380 | 380 |
381 void Overwrite(FlagsCondition condition) { condition_ = condition; } | 381 void Overwrite(FlagsCondition condition) { condition_ = condition; } |
382 | 382 |
383 void OverwriteAndNegateIfEqual(FlagsCondition condition) { | 383 void OverwriteAndNegateIfEqual(FlagsCondition condition) { |
384 bool negate = condition_ == kEqual; | 384 bool negate = condition_ == kEqual; |
385 condition_ = condition; | 385 condition_ = condition; |
386 if (negate) Negate(); | 386 if (negate) Negate(); |
387 } | 387 } |
388 | 388 |
| 389 void OverwriteUnsignedIfSigned() { |
| 390 switch (condition_) { |
| 391 case kSignedLessThan: |
| 392 condition_ = kUnsignedLessThan; |
| 393 break; |
| 394 case kSignedLessThanOrEqual: |
| 395 condition_ = kUnsignedLessThanOrEqual; |
| 396 break; |
| 397 case kSignedGreaterThan: |
| 398 condition_ = kUnsignedGreaterThan; |
| 399 break; |
| 400 case kSignedGreaterThanOrEqual: |
| 401 condition_ = kUnsignedGreaterThanOrEqual; |
| 402 break; |
| 403 default: |
| 404 break; |
| 405 } |
| 406 } |
| 407 |
389 // Encodes this flags continuation into the given opcode. | 408 // Encodes this flags continuation into the given opcode. |
390 InstructionCode Encode(InstructionCode opcode) { | 409 InstructionCode Encode(InstructionCode opcode) { |
391 opcode |= FlagsModeField::encode(mode_); | 410 opcode |= FlagsModeField::encode(mode_); |
392 if (mode_ != kFlags_none) { | 411 if (mode_ != kFlags_none) { |
393 opcode |= FlagsConditionField::encode(condition_); | 412 opcode |= FlagsConditionField::encode(condition_); |
394 } | 413 } |
395 return opcode; | 414 return opcode; |
396 } | 415 } |
397 | 416 |
398 private: | 417 private: |
(...skipping 19 matching lines...) Expand all Loading... |
418 // or mode_ == kFlags_set. | 437 // or mode_ == kFlags_set. |
419 BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch. | 438 BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch. |
420 BasicBlock* false_block_; // Only valid if mode_ == kFlags_branch. | 439 BasicBlock* false_block_; // Only valid if mode_ == kFlags_branch. |
421 }; | 440 }; |
422 | 441 |
423 } // namespace compiler | 442 } // namespace compiler |
424 } // namespace internal | 443 } // namespace internal |
425 } // namespace v8 | 444 } // namespace v8 |
426 | 445 |
427 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ | 446 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ |
OLD | NEW |