diff --git a/src/compiler/backend/arm64/instruction-selector-arm64.cc b/src/compiler/backend/arm64/instruction-selector-arm64.cc
index f8cbca8..3afbdc3 100644
--- a/src/compiler/backend/arm64/instruction-selector-arm64.cc
+++ b/src/compiler/backend/arm64/instruction-selector-arm64.cc
@@ -2109,6 +2109,10 @@
         immediate_mode = kLoadStoreImm16;
         break;
       case MachineRepresentation::kWord32:
+      case MachineRepresentation::kWord64:
+        // Since BitcastElider may remove nodes of
+        // IrOpcode::kTruncateInt64ToInt32 and directly use the inputs, values
+        // with kWord64 can also reach this line.
       case MachineRepresentation::kTaggedSigned:
       case MachineRepresentation::kTagged:
         opcode = kArm64Ldrsw;
diff --git a/src/compiler/backend/x64/instruction-selector-x64.cc b/src/compiler/backend/x64/instruction-selector-x64.cc
index 164b69d..f1f83cc 100644
--- a/src/compiler/backend/x64/instruction-selector-x64.cc
+++ b/src/compiler/backend/x64/instruction-selector-x64.cc
@@ -1713,7 +1713,7 @@
         break;
       case MachineRepresentation::kWord32:
       case MachineRepresentation::kWord64:
-        // While BitcastElider may remove nodes of
+        // Since BitcastElider may remove nodes of
         // IrOpcode::kTruncateInt64ToInt32 and directly use the inputs, values
         // with kWord64 can also reach this line.
       case MachineRepresentation::kTaggedSigned:
diff --git a/test/mjsunit/regress/wasm/regress-13700.js b/test/mjsunit/regress/wasm/regress-13700.js
index 03f5fa8..8855d80 100644
--- a/test/mjsunit/regress/wasm/regress-13700.js
+++ b/test/mjsunit/regress/wasm/regress-13700.js
@@ -10,7 +10,7 @@
 let expects = [0n, 1234n, 0n, -1n];
 
 for (let i = 0; i < bases.length; ++i) {
-  var builder = new WasmModuleBuilder();
+  let builder = new WasmModuleBuilder();
   let g0 = builder.addImportedGlobal("mod", "g0", kWasmI64, true);
   builder.addExportOfKind('g0', kExternalGlobal, g0);
 
@@ -22,10 +22,30 @@
       kExprGlobalSet, g0,
     ]).exportAs("trunci64");
 
-  var to_imported = new WebAssembly.Global({value: "i64", mutable: true}, bases[i]);
-  var instance = builder.instantiate({mod: { g0: to_imported }});
+  let to_imported =
+      new WebAssembly.Global({value: 'i64', mutable: true}, bases[i]);
+  let instance = builder.instantiate({mod: { g0: to_imported }});
 
   assertEquals(bases[i], instance.exports.g0.value);
   instance.exports.trunci64();
   assertEquals(expects[i], instance.exports.g0.value);
 }
+
+for (let i = 0; i < bases.length; ++i) {
+  let builder = new WasmModuleBuilder();
+  builder.addMemory(1, 1, true);
+
+  builder.addFunction("trunci64", kSig_l_v).exportFunc().addBody([
+    kExprI32Const, 0,  // address for load: 0
+    kExprI64LoadMem, 0, 0,  // alignment 0, offset 0
+    kExprI32ConvertI64,
+    kExprI64SConvertI32,
+  ]);
+
+  let instance = builder.instantiate();
+
+  let mem = new BigInt64Array(instance.exports.memory.buffer);
+  mem[0] = bases[i];
+  let result = instance.exports.trunci64();
+  assertEquals(result, expects[i]);
+}
