Commit cd674a13 authored by Zhao Jiazhong's avatar Zhao Jiazhong Committed by Commit Bot

[mips64][turbofan][ptr-compr] Optimize Smi Tagging for 31 bit smis

port edd50ad2 https://crrev.com/c/1924355

Original Commit Message:

  In both ChangeIntPtrToSmi and ChangeInt32ToSmi we can use bitcasts
  instead of change nodes for Smi Tagging, when we are using 31 bit
  smis in 64 bit architectures with pointer compression enabled.

  In ChangeIntPtrToSmi we can ignore the truncation as well.

  Updated DecompressionOptimizer to match the new pattern.

Change-Id: I309e6c7ba671499f721149e1ea1c8e153fe3b2ef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1939028
Auto-Submit: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65215}
parent d442c431
...@@ -1294,6 +1294,10 @@ void InstructionSelector::VisitTryTruncateFloat64ToUint64(Node* node) { ...@@ -1294,6 +1294,10 @@ void InstructionSelector::VisitTryTruncateFloat64ToUint64(Node* node) {
Emit(kMips64TruncUlD, output_count, outputs, 1, inputs); Emit(kMips64TruncUlD, output_count, outputs, 1, inputs);
} }
void InstructionSelector::VisitBitcastWord32ToWord64(Node* node) {
UNIMPLEMENTED();
}
void InstructionSelector::VisitChangeInt32ToInt64(Node* node) { void InstructionSelector::VisitChangeInt32ToInt64(Node* node) {
Node* value = node->InputAt(0); Node* value = node->InputAt(0);
if (value->opcode() == IrOpcode::kLoad && CanCover(node, value)) { if (value->opcode() == IrOpcode::kLoad && CanCover(node, value)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment