Commit bb09b6ac authored by Zhao Jiazhong's avatar Zhao Jiazhong Committed by Commit Bot

[mips][wasm-simd] Implement I32x4DotI16x8S

Change-Id: Ie187d6ec848414d725b18b9a20be3c65f94f86ba
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477752Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#70580}
parent 3aa1e67f
...@@ -2585,6 +2585,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( ...@@ -2585,6 +2585,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ copy_u_b(dst, scratch0, 0); __ copy_u_b(dst, scratch0, 0);
break; break;
} }
case kMipsI32x4DotI16x8S: {
CpuFeatureScope msa_scope(tasm(), MIPS_SIMD);
__ dotp_s_w(i.OutputSimd128Register(), i.InputSimd128Register(0),
i.InputSimd128Register(1));
break;
}
case kMipsI16x8Splat: { case kMipsI16x8Splat: {
CpuFeatureScope msa_scope(tasm(), MIPS_SIMD); CpuFeatureScope msa_scope(tasm(), MIPS_SIMD);
__ fill_h(i.OutputSimd128Register(), i.InputRegister(0)); __ fill_h(i.OutputSimd128Register(), i.InputRegister(0));
......
...@@ -217,6 +217,7 @@ namespace compiler { ...@@ -217,6 +217,7 @@ namespace compiler {
V(MipsI32x4GeU) \ V(MipsI32x4GeU) \
V(MipsI32x4Abs) \ V(MipsI32x4Abs) \
V(MipsI32x4BitMask) \ V(MipsI32x4BitMask) \
V(MipsI32x4DotI16x8S) \
V(MipsI16x8Splat) \ V(MipsI16x8Splat) \
V(MipsI16x8ExtractLaneU) \ V(MipsI16x8ExtractLaneU) \
V(MipsI16x8ExtractLaneS) \ V(MipsI16x8ExtractLaneS) \
......
...@@ -180,6 +180,7 @@ int InstructionScheduler::GetTargetInstructionFlags( ...@@ -180,6 +180,7 @@ int InstructionScheduler::GetTargetInstructionFlags(
case kMipsI32x4UConvertI16x8Low: case kMipsI32x4UConvertI16x8Low:
case kMipsI32x4Abs: case kMipsI32x4Abs:
case kMipsI32x4BitMask: case kMipsI32x4BitMask:
case kMipsI32x4DotI16x8S:
case kMipsI8x16Add: case kMipsI8x16Add:
case kMipsI8x16AddSatS: case kMipsI8x16AddSatS:
case kMipsI8x16AddSatU: case kMipsI8x16AddSatU:
......
...@@ -2191,6 +2191,7 @@ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) { ...@@ -2191,6 +2191,7 @@ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) {
V(I32x4GeU, kMipsI32x4GeU) \ V(I32x4GeU, kMipsI32x4GeU) \
V(I32x4Abs, kMipsI32x4Abs) \ V(I32x4Abs, kMipsI32x4Abs) \
V(I32x4BitMask, kMipsI32x4BitMask) \ V(I32x4BitMask, kMipsI32x4BitMask) \
V(I32x4DotI16x8S, kMipsI32x4DotI16x8S) \
V(I16x8Add, kMipsI16x8Add) \ V(I16x8Add, kMipsI16x8Add) \
V(I16x8AddSatS, kMipsI16x8AddSatS) \ V(I16x8AddSatS, kMipsI16x8AddSatS) \
V(I16x8AddSatU, kMipsI16x8AddSatU) \ V(I16x8AddSatU, kMipsI16x8AddSatU) \
......
...@@ -2763,6 +2763,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( ...@@ -2763,6 +2763,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ copy_u_b(dst, scratch0, 0); __ copy_u_b(dst, scratch0, 0);
break; break;
} }
case kMips64I32x4DotI16x8S: {
CpuFeatureScope msa_scope(tasm(), MIPS_SIMD);
__ dotp_s_w(i.OutputSimd128Register(), i.InputSimd128Register(0),
i.InputSimd128Register(1));
break;
}
case kMips64I16x8Splat: { case kMips64I16x8Splat: {
CpuFeatureScope msa_scope(tasm(), MIPS_SIMD); CpuFeatureScope msa_scope(tasm(), MIPS_SIMD);
__ fill_h(i.OutputSimd128Register(), i.InputRegister(0)); __ fill_h(i.OutputSimd128Register(), i.InputRegister(0));
......
...@@ -252,6 +252,7 @@ namespace compiler { ...@@ -252,6 +252,7 @@ namespace compiler {
V(Mips64I32x4GeU) \ V(Mips64I32x4GeU) \
V(Mips64I32x4Abs) \ V(Mips64I32x4Abs) \
V(Mips64I32x4BitMask) \ V(Mips64I32x4BitMask) \
V(Mips64I32x4DotI16x8S) \
V(Mips64I16x8Splat) \ V(Mips64I16x8Splat) \
V(Mips64I16x8ExtractLaneU) \ V(Mips64I16x8ExtractLaneU) \
V(Mips64I16x8ExtractLaneS) \ V(Mips64I16x8ExtractLaneS) \
......
...@@ -213,6 +213,7 @@ int InstructionScheduler::GetTargetInstructionFlags( ...@@ -213,6 +213,7 @@ int InstructionScheduler::GetTargetInstructionFlags(
case kMips64I32x4UConvertI16x8Low: case kMips64I32x4UConvertI16x8Low:
case kMips64I32x4Abs: case kMips64I32x4Abs:
case kMips64I32x4BitMask: case kMips64I32x4BitMask:
case kMips64I32x4DotI16x8S:
case kMips64I8x16Add: case kMips64I8x16Add:
case kMips64I8x16AddSatS: case kMips64I8x16AddSatS:
case kMips64I8x16AddSatU: case kMips64I8x16AddSatU:
......
...@@ -2871,6 +2871,7 @@ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) { ...@@ -2871,6 +2871,7 @@ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) {
V(I32x4GeS, kMips64I32x4GeS) \ V(I32x4GeS, kMips64I32x4GeS) \
V(I32x4GtU, kMips64I32x4GtU) \ V(I32x4GtU, kMips64I32x4GtU) \
V(I32x4GeU, kMips64I32x4GeU) \ V(I32x4GeU, kMips64I32x4GeU) \
V(I32x4DotI16x8S, kMips64I32x4DotI16x8S) \
V(I16x8Add, kMips64I16x8Add) \ V(I16x8Add, kMips64I16x8Add) \
V(I16x8AddSatS, kMips64I16x8AddSatS) \ V(I16x8AddSatS, kMips64I16x8AddSatS) \
V(I16x8AddSatU, kMips64I16x8AddSatU) \ V(I16x8AddSatU, kMips64I16x8AddSatU) \
......
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