Index: src/compiler/arm64/instruction-selector-arm64.cc |
diff --git a/src/compiler/arm64/instruction-selector-arm64.cc b/src/compiler/arm64/instruction-selector-arm64.cc |
index 945b7bd6cd65b2c7ddba088a5dfa12d6e68bc958..6106c514f14468f0a86c57a7abebbcc321578ea2 100644 |
--- a/src/compiler/arm64/instruction-selector-arm64.cc |
+++ b/src/compiler/arm64/instruction-selector-arm64.cc |
@@ -1414,6 +1414,20 @@ void InstructionSelector::VisitChangeUint32ToUint64(Node* node) { |
Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); |
return; |
} |
+ case IrOpcode::kLoad: { |
+ // As for the operations above, a 32-bit load will implicitly clear the |
+ // top 32 bits of the destination register. |
+ LoadRepresentation load_rep = LoadRepresentationOf(value->op()); |
+ switch (load_rep.representation()) { |
+ case MachineRepresentation::kWord8: |
+ case MachineRepresentation::kWord16: |
+ case MachineRepresentation::kWord32: |
+ Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); |
+ return; |
+ default: |
+ break; |
+ } |
+ } |
default: |
break; |
} |