s390x: [liftoff] implement store op

Change-Id: I96abe7c2b2a2c988867dda3cf823f11c00ddec87
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2650234
Reviewed-by: Milad Fa <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/master@{#72337}
This commit is contained in:
Junliang Yan 2021-01-26 13:23:26 -05:00 committed by Commit Bot
parent 173d660849
commit d70c8f4530

View File

@ -289,7 +289,39 @@ void LiftoffAssembler::Store(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister src,
StoreType type, LiftoffRegList pinned,
uint32_t* protected_store_pc, bool is_store_mem) {
bailout(kUnsupportedArchitecture, "Store");
DCHECK(is_int20(offset_imm));
MemOperand dst_op =
MemOperand(dst_addr, offset_reg == no_reg ? r0 : offset_reg, offset_imm);
if (protected_store_pc) *protected_store_pc = pc_offset();
switch (type.value()) {
case StoreType::kI32Store8:
case StoreType::kI64Store8:
StoreU8(src.gp(), dst_op);
break;
case StoreType::kI32Store16:
case StoreType::kI64Store16:
StoreU16LE(src.gp(), dst_op, r1);
break;
case StoreType::kI32Store:
case StoreType::kI64Store32:
StoreU32LE(src.gp(), dst_op, r1);
break;
case StoreType::kI64Store:
StoreU64LE(src.gp(), dst_op, r1);
break;
case StoreType::kF32Store:
StoreF32LE(src.fp(), dst_op, r1);
break;
case StoreType::kF64Store:
StoreF64LE(src.fp(), dst_op, r1);
break;
case StoreType::kS128Store: {
StoreV128LE(src.fp(), dst_op, r0, r1);
break;
}
default:
UNREACHABLE();
}
}
void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, Register src_addr,