[Liftoff][mips] Implement f32 min/max
Fix initial implementation of min/max f32 instructions. Bug: v8:6600 Change-Id: Icb30515b692caef2c33bd85f468e83c17cdef2a3 Reviewed-on: https://chromium-review.googlesource.com/1030493 Reviewed-by: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com> Commit-Queue: Sreten Kovacevic <sreten.kovacevic@mips.com> Cr-Commit-Position: refs/heads/master@{#52836}
This commit is contained in:
parent
a17083ee3a
commit
600033e65c
@ -745,6 +745,28 @@ void LiftoffAssembler::emit_f64_neg(DoubleRegister dst, DoubleRegister src) {
|
||||
TurboAssembler::Neg_d(dst, src);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_f32_min(DoubleRegister dst, DoubleRegister lhs,
|
||||
DoubleRegister rhs) {
|
||||
Label ool, done;
|
||||
TurboAssembler::Float32Min(dst, lhs, rhs, &ool);
|
||||
Branch(&done);
|
||||
|
||||
bind(&ool);
|
||||
TurboAssembler::Float32MinOutOfLine(dst, lhs, rhs);
|
||||
bind(&done);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_f32_max(DoubleRegister dst, DoubleRegister lhs,
|
||||
DoubleRegister rhs) {
|
||||
Label ool, done;
|
||||
TurboAssembler::Float32Max(dst, lhs, rhs, &ool);
|
||||
Branch(&done);
|
||||
|
||||
bind(&ool);
|
||||
TurboAssembler::Float32MaxOutOfLine(dst, lhs, rhs);
|
||||
bind(&done);
|
||||
}
|
||||
|
||||
#define FP_BINOP(name, instruction) \
|
||||
void LiftoffAssembler::emit_##name(DoubleRegister dst, DoubleRegister lhs, \
|
||||
DoubleRegister rhs) { \
|
||||
@ -759,8 +781,6 @@ FP_BINOP(f32_add, add_s)
|
||||
FP_BINOP(f32_sub, sub_s)
|
||||
FP_BINOP(f32_mul, mul_s)
|
||||
FP_BINOP(f32_div, div_s)
|
||||
FP_BINOP(f32_min, min_s)
|
||||
FP_BINOP(f32_max, max_s)
|
||||
FP_UNOP(f32_abs, abs_s)
|
||||
FP_UNOP(f32_ceil, Ceil_s_s)
|
||||
FP_UNOP(f32_floor, Floor_s_s)
|
||||
|
@ -618,6 +618,28 @@ void LiftoffAssembler::emit_f64_neg(DoubleRegister dst, DoubleRegister src) {
|
||||
TurboAssembler::Neg_d(dst, src);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_f32_min(DoubleRegister dst, DoubleRegister lhs,
|
||||
DoubleRegister rhs) {
|
||||
Label ool, done;
|
||||
TurboAssembler::Float32Min(dst, lhs, rhs, &ool);
|
||||
Branch(&done);
|
||||
|
||||
bind(&ool);
|
||||
TurboAssembler::Float32MinOutOfLine(dst, lhs, rhs);
|
||||
bind(&done);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_f32_max(DoubleRegister dst, DoubleRegister lhs,
|
||||
DoubleRegister rhs) {
|
||||
Label ool, done;
|
||||
TurboAssembler::Float32Max(dst, lhs, rhs, &ool);
|
||||
Branch(&done);
|
||||
|
||||
bind(&ool);
|
||||
TurboAssembler::Float32MaxOutOfLine(dst, lhs, rhs);
|
||||
bind(&done);
|
||||
}
|
||||
|
||||
#define FP_BINOP(name, instruction) \
|
||||
void LiftoffAssembler::emit_##name(DoubleRegister dst, DoubleRegister lhs, \
|
||||
DoubleRegister rhs) { \
|
||||
@ -632,8 +654,6 @@ FP_BINOP(f32_add, add_s)
|
||||
FP_BINOP(f32_sub, sub_s)
|
||||
FP_BINOP(f32_mul, mul_s)
|
||||
FP_BINOP(f32_div, div_s)
|
||||
FP_BINOP(f32_min, min_s)
|
||||
FP_BINOP(f32_max, max_s)
|
||||
FP_UNOP(f32_abs, abs_s)
|
||||
FP_UNOP(f32_ceil, Ceil_s_s)
|
||||
FP_UNOP(f32_floor, Floor_s_s)
|
||||
|
Loading…
Reference in New Issue
Block a user