Commit bfd66ef9 authored by Zhi An Ng's avatar Zhi An Ng Committed by Commit Bot

[x64][wasm-simd][liftoff] Use optimized integer widen_high ops

These optimized macro-assembler functions were introduced in
https://crrev.com/c/2591853. Reuse them in Liftoff to get better
code-gen, especially when AVX is supported. The macro-assembler
functions have no alias requirements, so we can pass dst and src
directly without doing any checks or moves.

Change-Id: I0d1badfc2e2b41a8d92d8c4ac73541ec46daeb0a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2603766Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71905}
parent 9f56f37e
...@@ -3902,8 +3902,7 @@ void LiftoffAssembler::emit_i16x8_sconvert_i8x16_low(LiftoffRegister dst, ...@@ -3902,8 +3902,7 @@ void LiftoffAssembler::emit_i16x8_sconvert_i8x16_low(LiftoffRegister dst,
void LiftoffAssembler::emit_i16x8_sconvert_i8x16_high(LiftoffRegister dst, void LiftoffAssembler::emit_i16x8_sconvert_i8x16_high(LiftoffRegister dst,
LiftoffRegister src) { LiftoffRegister src) {
Palignr(dst.fp(), src.fp(), static_cast<uint8_t>(8)); I16x8SConvertI8x16High(dst.fp(), src.fp());
Pmovsxbw(dst.fp(), dst.fp());
} }
void LiftoffAssembler::emit_i16x8_uconvert_i8x16_low(LiftoffRegister dst, void LiftoffAssembler::emit_i16x8_uconvert_i8x16_low(LiftoffRegister dst,
...@@ -3913,8 +3912,7 @@ void LiftoffAssembler::emit_i16x8_uconvert_i8x16_low(LiftoffRegister dst, ...@@ -3913,8 +3912,7 @@ void LiftoffAssembler::emit_i16x8_uconvert_i8x16_low(LiftoffRegister dst,
void LiftoffAssembler::emit_i16x8_uconvert_i8x16_high(LiftoffRegister dst, void LiftoffAssembler::emit_i16x8_uconvert_i8x16_high(LiftoffRegister dst,
LiftoffRegister src) { LiftoffRegister src) {
Palignr(dst.fp(), src.fp(), static_cast<uint8_t>(8)); I16x8UConvertI8x16High(dst.fp(), src.fp());
Pmovzxbw(dst.fp(), dst.fp());
} }
void LiftoffAssembler::emit_i32x4_sconvert_i16x8_low(LiftoffRegister dst, void LiftoffAssembler::emit_i32x4_sconvert_i16x8_low(LiftoffRegister dst,
...@@ -3924,8 +3922,7 @@ void LiftoffAssembler::emit_i32x4_sconvert_i16x8_low(LiftoffRegister dst, ...@@ -3924,8 +3922,7 @@ void LiftoffAssembler::emit_i32x4_sconvert_i16x8_low(LiftoffRegister dst,
void LiftoffAssembler::emit_i32x4_sconvert_i16x8_high(LiftoffRegister dst, void LiftoffAssembler::emit_i32x4_sconvert_i16x8_high(LiftoffRegister dst,
LiftoffRegister src) { LiftoffRegister src) {
Palignr(dst.fp(), src.fp(), static_cast<uint8_t>(8)); I32x4SConvertI16x8High(dst.fp(), src.fp());
Pmovsxwd(dst.fp(), dst.fp());
} }
void LiftoffAssembler::emit_i32x4_uconvert_i16x8_low(LiftoffRegister dst, void LiftoffAssembler::emit_i32x4_uconvert_i16x8_low(LiftoffRegister dst,
...@@ -3935,8 +3932,7 @@ void LiftoffAssembler::emit_i32x4_uconvert_i16x8_low(LiftoffRegister dst, ...@@ -3935,8 +3932,7 @@ void LiftoffAssembler::emit_i32x4_uconvert_i16x8_low(LiftoffRegister dst,
void LiftoffAssembler::emit_i32x4_uconvert_i16x8_high(LiftoffRegister dst, void LiftoffAssembler::emit_i32x4_uconvert_i16x8_high(LiftoffRegister dst,
LiftoffRegister src) { LiftoffRegister src) {
Palignr(dst.fp(), src.fp(), static_cast<uint8_t>(8)); I32x4UConvertI16x8High(dst.fp(), src.fp());
Pmovzxwd(dst.fp(), dst.fp());
} }
void LiftoffAssembler::emit_s128_and_not(LiftoffRegister dst, void LiftoffAssembler::emit_s128_and_not(LiftoffRegister dst,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment