Commit 169d336e authored by Ng Zhi An's avatar Ng Zhi An Committed by Commit Bot

[wasm-simd][x64] Add AVX for i64x2 shifts

Bug: v8:9561
Change-Id: I6f0b027d02b4d6a128a81584d40a30b1c5c518f6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2069399
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66477}
parent eea168f8
...@@ -197,7 +197,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -197,7 +197,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
AVX_OP(Pavgb, pavgb) AVX_OP(Pavgb, pavgb)
AVX_OP(Pavgw, pavgw) AVX_OP(Pavgw, pavgw)
AVX_OP(Psrad, psrad) AVX_OP(Psrad, psrad)
AVX_OP(Psllq, psllq)
AVX_OP(Psrld, psrld) AVX_OP(Psrld, psrld)
AVX_OP(Psrlq, psrlq)
AVX_OP(Paddd, paddd) AVX_OP(Paddd, paddd)
AVX_OP(Paddq, paddq) AVX_OP(Paddq, paddq)
AVX_OP(Pcmpgtd, pcmpgtd) AVX_OP(Pcmpgtd, pcmpgtd)
...@@ -474,7 +476,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -474,7 +476,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void Pinsrb(XMMRegister dst, Register src, int8_t imm8); void Pinsrb(XMMRegister dst, Register src, int8_t imm8);
void Pinsrb(XMMRegister dst, Operand src, int8_t imm8); void Pinsrb(XMMRegister dst, Operand src, int8_t imm8);
void Psllq(XMMRegister dst, int imm8) { Psllq(dst, static_cast<byte>(imm8)); }
void Psllq(XMMRegister dst, byte imm8); void Psllq(XMMRegister dst, byte imm8);
void Psrlq(XMMRegister dst, int imm8) { Psrlq(dst, static_cast<byte>(imm8)); }
void Psrlq(XMMRegister dst, byte imm8); void Psrlq(XMMRegister dst, byte imm8);
void Pslld(XMMRegister dst, byte imm8); void Pslld(XMMRegister dst, byte imm8);
void Psrld(XMMRegister dst, byte imm8); void Psrld(XMMRegister dst, byte imm8);
......
...@@ -2654,7 +2654,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( ...@@ -2654,7 +2654,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
} }
case kX64I64x2Shl: { case kX64I64x2Shl: {
// Take shift value modulo 2^6. // Take shift value modulo 2^6.
ASSEMBLE_SIMD_SHIFT(psllq, 6); ASSEMBLE_SIMD_SHIFT(Psllq, 6);
break; break;
} }
case kX64I64x2ShrS: { case kX64I64x2ShrS: {
...@@ -2667,14 +2667,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( ...@@ -2667,14 +2667,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// Modulo 64 not required as sarq_cl will mask cl to 6 bits. // Modulo 64 not required as sarq_cl will mask cl to 6 bits.
// lower quadword // lower quadword
__ pextrq(tmp, src, 0x0); __ Pextrq(tmp, src, static_cast<int8_t>(0x0));
__ sarq_cl(tmp); __ sarq_cl(tmp);
__ pinsrq(dst, tmp, 0x0); __ Pinsrq(dst, tmp, static_cast<int8_t>(0x0));
// upper quadword // upper quadword
__ pextrq(tmp, src, 0x1); __ Pextrq(tmp, src, static_cast<int8_t>(0x1));
__ sarq_cl(tmp); __ sarq_cl(tmp);
__ pinsrq(dst, tmp, 0x1); __ Pinsrq(dst, tmp, static_cast<int8_t>(0x1));
break; break;
} }
case kX64I64x2Add: { case kX64I64x2Add: {
...@@ -2804,7 +2804,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( ...@@ -2804,7 +2804,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
} }
case kX64I64x2ShrU: { case kX64I64x2ShrU: {
// Take shift value modulo 2^6. // Take shift value modulo 2^6.
ASSEMBLE_SIMD_SHIFT(psrlq, 6); ASSEMBLE_SIMD_SHIFT(Psrlq, 6);
break; break;
} }
case kX64I64x2MinU: { case kX64I64x2MinU: {
......
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