| Index: src/compiler/mips/code-generator-mips.cc
|
| diff --git a/src/compiler/mips/code-generator-mips.cc b/src/compiler/mips/code-generator-mips.cc
|
| index 3e67b31953ef4e7a8f1b7cf2c6a3a031b88b2bb2..476099e5cfedce23c01792ccef2832ab450ffb80 100644
|
| --- a/src/compiler/mips/code-generator-mips.cc
|
| +++ b/src/compiler/mips/code-generator-mips.cc
|
| @@ -1849,6 +1849,107 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ ftrunc_u_w(i.OutputSimd128Register(), i.InputSimd128Register(0));
|
| break;
|
| }
|
| + case kMipsI32x4Neg: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero);
|
| + __ subv_w(i.OutputSimd128Register(), kSimd128RegZero,
|
| + i.InputSimd128Register(0));
|
| + break;
|
| + }
|
| + case kMipsI32x4LtS: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ clt_s_w(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI32x4LeS: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ cle_s_w(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI32x4LtU: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ clt_u_w(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI32x4LeU: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ cle_u_w(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8Splat: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ fill_h(i.OutputSimd128Register(), i.InputRegister(0));
|
| + break;
|
| + }
|
| + case kMipsI16x8ExtractLane: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ copy_s_h(i.OutputRegister(), i.InputSimd128Register(0),
|
| + i.InputInt8(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8ReplaceLane: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + Simd128Register src = i.InputSimd128Register(0);
|
| + Simd128Register dst = i.OutputSimd128Register();
|
| + if (!src.is(dst)) {
|
| + __ move_v(dst, src);
|
| + }
|
| + __ insert_h(dst, i.InputInt8(1), i.InputRegister(2));
|
| + break;
|
| + }
|
| + case kMipsI16x8Neg: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero);
|
| + __ subv_h(i.OutputSimd128Register(), kSimd128RegZero,
|
| + i.InputSimd128Register(0));
|
| + break;
|
| + }
|
| + case kMipsI16x8Shl: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ slli_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputInt4(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8ShrS: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ srai_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputInt4(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8ShrU: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ srli_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputInt4(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8Add: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ addv_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8AddSaturateS: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ adds_s_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8Sub: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ subv_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kMipsI16x8SubSaturateS: {
|
| + CpuFeatureScope msa_scope(masm(), MIPS_SIMD);
|
| + __ subs_s_h(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| }
|
| return kSuccess;
|
| } // NOLINT(readability/fn_size)
|
|
|