Commit 87763e63 authored by Ng Zhi An's avatar Ng Zhi An Committed by Commit Bot

[wasm-simd][liftoff][ia32] Implement v64x2.alltrue and i64x2.ne

Bug: v8:11347,v8:11348
Change-Id: Ib9eb0c8d03af9e0d9171ba668e8720332659e187
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2686010
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72680}
parent 1dd0988a
...@@ -553,7 +553,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -553,7 +553,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
#undef AVX_OP3_WITH_TYPE_SCOPE #undef AVX_OP3_WITH_TYPE_SCOPE
void Haddps(XMMRegister dst, XMMRegister src1, Operand src2); void Haddps(XMMRegister dst, XMMRegister src1, Operand src2);
void Pcmpeqq(XMMRegister dst, Operand src2); void Pcmpeqq(XMMRegister dst, Operand src);
void Pcmpeqq(XMMRegister dst, XMMRegister src) { Pcmpeqq(dst, Operand(src)); }
void Pcmpeqq(XMMRegister dst, XMMRegister src1, Operand src2); void Pcmpeqq(XMMRegister dst, XMMRegister src1, Operand src2);
void Pcmpeqq(XMMRegister dst, XMMRegister src1, XMMRegister src2); void Pcmpeqq(XMMRegister dst, XMMRegister src1, XMMRegister src2);
void Pshufb(XMMRegister dst, XMMRegister src) { Pshufb(dst, dst, src); } void Pshufb(XMMRegister dst, XMMRegister src) { Pshufb(dst, dst, src); }
......
...@@ -2698,7 +2698,11 @@ inline void EmitAnyTrue(LiftoffAssembler* assm, LiftoffRegister dst, ...@@ -2698,7 +2698,11 @@ inline void EmitAnyTrue(LiftoffAssembler* assm, LiftoffRegister dst,
template <void (TurboAssembler::*pcmp)(XMMRegister, XMMRegister)> template <void (TurboAssembler::*pcmp)(XMMRegister, XMMRegister)>
inline void EmitAllTrue(LiftoffAssembler* assm, LiftoffRegister dst, inline void EmitAllTrue(LiftoffAssembler* assm, LiftoffRegister dst,
LiftoffRegister src) { LiftoffRegister src,
base::Optional<CpuFeature> feature = base::nullopt) {
base::Optional<CpuFeatureScope> sse_scope;
if (feature.has_value()) sse_scope.emplace(assm, *feature);
Register tmp = Register tmp =
assm->GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(dst)).gp(); assm->GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(dst)).gp();
XMMRegister tmp_simd = liftoff::kScratchDoubleReg; XMMRegister tmp_simd = liftoff::kScratchDoubleReg;
...@@ -3113,7 +3117,10 @@ void LiftoffAssembler::emit_i64x2_eq(LiftoffRegister dst, LiftoffRegister lhs, ...@@ -3113,7 +3117,10 @@ void LiftoffAssembler::emit_i64x2_eq(LiftoffRegister dst, LiftoffRegister lhs,
void LiftoffAssembler::emit_i64x2_ne(LiftoffRegister dst, LiftoffRegister lhs, void LiftoffAssembler::emit_i64x2_ne(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) { LiftoffRegister rhs) {
bailout(kSimd, "i64x2_ne"); liftoff::EmitSimdCommutativeBinOp<&Assembler::vpcmpeqq, &Assembler::pcmpeqq>(
this, dst, lhs, rhs, SSE4_1);
Pcmpeqq(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg);
Pxor(dst.fp(), liftoff::kScratchDoubleReg);
} }
void LiftoffAssembler::emit_f32x4_eq(LiftoffRegister dst, LiftoffRegister lhs, void LiftoffAssembler::emit_f32x4_eq(LiftoffRegister dst, LiftoffRegister lhs,
...@@ -3826,7 +3833,7 @@ void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst, ...@@ -3826,7 +3833,7 @@ void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst,
void LiftoffAssembler::emit_v64x2_alltrue(LiftoffRegister dst, void LiftoffAssembler::emit_v64x2_alltrue(LiftoffRegister dst,
LiftoffRegister src) { LiftoffRegister src) {
bailout(kSimd, "v64x2_alltrue"); liftoff::EmitAllTrue<&TurboAssembler::Pcmpeqq>(this, dst, src, SSE4_1);
} }
void LiftoffAssembler::emit_i64x2_shl(LiftoffRegister dst, LiftoffRegister lhs, void LiftoffAssembler::emit_i64x2_shl(LiftoffRegister dst, LiftoffRegister lhs,
......
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