ppc64: [baseline] port LoadTagged functions

Change-Id: Ic65f0cccaba6cea2d441540b57689e2c68af3125
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3585526
Reviewed-by: Milad Farazmand <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#79967}
This commit is contained in:
Junliang Yan 2022-04-13 12:11:26 -04:00 committed by V8 LUCI CQ
parent af1fa2869b
commit 7a5f4f55aa
3 changed files with 19 additions and 6 deletions

View File

@ -332,11 +332,11 @@ void BaselineAssembler::Move(Register output, int32_t value) {
}
void BaselineAssembler::MoveMaybeSmi(Register output, Register source) {
__ mov(output, source);
__ mr(output, source);
}
void BaselineAssembler::MoveSmi(Register output, Register source) {
__ mov(output, source);
__ mr(output, source);
}
namespace detail {
@ -451,15 +451,17 @@ void BaselineAssembler::Pop(T... registers) {
void BaselineAssembler::LoadTaggedPointerField(Register output, Register source,
int offset) {
UNIMPLEMENTED();
__ LoadTaggedPointerField(output, FieldMemOperand(source, offset), r0);
}
void BaselineAssembler::LoadTaggedSignedField(Register output, Register source,
int offset) {
UNIMPLEMENTED();
__ LoadTaggedSignedField(output, FieldMemOperand(source, offset), r0);
}
void BaselineAssembler::LoadTaggedAnyField(Register output, Register source,
int offset) {
UNIMPLEMENTED();
__ LoadAnyTaggedField(output, FieldMemOperand(source, offset), r0);
}
void BaselineAssembler::LoadWord16FieldZeroExtend(Register output,
@ -469,7 +471,6 @@ void BaselineAssembler::LoadWord16FieldZeroExtend(Register output,
void BaselineAssembler::LoadWord8Field(Register output, Register source,
int offset) {
UNIMPLEMENTED();
__ LoadU8(output, FieldMemOperand(source, offset), r0);
}

View File

@ -627,6 +627,16 @@ void TurboAssembler::DecompressAnyTagged(Register destination,
RecordComment("]");
}
void TurboAssembler::LoadTaggedSignedField(Register destination,
MemOperand field_operand,
Register scratch) {
if (COMPRESS_POINTERS_BOOL) {
DecompressTaggedSigned(destination, field_operand);
} else {
LoadU64(destination, field_operand, scratch);
}
}
void MacroAssembler::RecordWriteField(Register object, int offset,
Register value, Register slot_address,
LinkRegisterStatus lr_status,

View File

@ -982,6 +982,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void LoadTaggedPointerField(const Register& destination,
const MemOperand& field_operand,
const Register& scratch = no_reg);
void LoadTaggedSignedField(Register destination, MemOperand field_operand,
Register scratch);
// Loads a field containing any tagged value and decompresses it if necessary.
void LoadAnyTaggedField(const Register& destination,