[liftoff][arm] Implement Sign Extension
This implements sign extension for the arm32 port of Liftoff. Bug: v8:6600 Change-Id: Ib9fb56835b92fa96af013fd3504395d24a27e10e Reviewed-on: https://chromium-review.googlesource.com/c/1348429 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#57779}
This commit is contained in:
parent
7aad32cda1
commit
82f9933129
@ -822,26 +822,29 @@ bool LiftoffAssembler::emit_type_conversion(WasmOpcode opcode,
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i32_signextend_i8(Register dst, Register src) {
|
||||
BAILOUT("emit_i32_signextend_i8");
|
||||
sxtb(dst, src);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i32_signextend_i16(Register dst, Register src) {
|
||||
BAILOUT("emit_i32_signextend_i16");
|
||||
sxth(dst, src);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64_signextend_i8(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
BAILOUT("emit_i64_signextend_i8");
|
||||
emit_i32_signextend_i8(dst.low_gp(), src.low_gp());
|
||||
mov(dst.high_gp(), Operand(dst.low_gp(), ASR, 31));
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64_signextend_i16(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
BAILOUT("emit_i64_signextend_i16");
|
||||
emit_i32_signextend_i16(dst.low_gp(), src.low_gp());
|
||||
mov(dst.high_gp(), Operand(dst.low_gp(), ASR, 31));
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64_signextend_i32(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
BAILOUT("emit_i64_signextend_i32");
|
||||
TurboAssembler::Move(dst.low_gp(), src.low_gp());
|
||||
mov(dst.high_gp(), Operand(src.low_gp(), ASR, 31));
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_jump(Label* label) { b(label); }
|
||||
|
Loading…
Reference in New Issue
Block a user