| Index: src/compiler/arm/code-generator-arm.cc
|
| diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc
|
| index e9f83bdd07723ff7c884fcef7bcc6bc243d7e03d..b867d628c925eb0af60886f0abe5637e01cf0bc0 100644
|
| --- a/src/compiler/arm/code-generator-arm.cc
|
| +++ b/src/compiler/arm/code-generator-arm.cc
|
| @@ -1536,6 +1536,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ vneg(i.OutputSimd128Register(), i.InputSimd128Register(0));
|
| break;
|
| }
|
| + case kArmFloat32x4RecipApprox: {
|
| + __ vrecpe(i.OutputSimd128Register(), i.InputSimd128Register(0));
|
| + break;
|
| + }
|
| + case kArmFloat32x4RecipSqrtApprox: {
|
| + __ vrsqrte(i.OutputSimd128Register(), i.InputSimd128Register(0));
|
| + break;
|
| + }
|
| case kArmFloat32x4Add: {
|
| __ vadd(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| i.InputSimd128Register(1));
|
| @@ -1546,6 +1554,31 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| i.InputSimd128Register(1));
|
| break;
|
| }
|
| + case kArmFloat32x4Mul: {
|
| + __ vmul(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kArmFloat32x4Min: {
|
| + __ vmin(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kArmFloat32x4Max: {
|
| + __ vmax(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kArmFloat32x4RecipRefine: {
|
| + __ vrecps(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| + case kArmFloat32x4RecipSqrtRefine: {
|
| + __ vrsqrts(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| + i.InputSimd128Register(1));
|
| + break;
|
| + }
|
| case kArmFloat32x4Equal: {
|
| __ vceq(i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| i.InputSimd128Register(1));
|
| @@ -1557,6 +1590,16 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ vmvn(dst, dst);
|
| break;
|
| }
|
| + case kArmFloat32x4LessThan: {
|
| + __ vcgt(i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| + break;
|
| + }
|
| + case kArmFloat32x4LessThanOrEqual: {
|
| + __ vcge(i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| + break;
|
| + }
|
| case kArmInt32x4Splat: {
|
| __ vdup(Neon32, i.OutputSimd128Register(), i.InputRegister(0));
|
| break;
|
| @@ -1630,14 +1673,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ vmvn(dst, dst);
|
| break;
|
| }
|
| - case kArmInt32x4GreaterThan: {
|
| - __ vcgt(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmInt32x4LessThan: {
|
| + __ vcgt(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| - case kArmInt32x4GreaterThanOrEqual: {
|
| - __ vcge(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmInt32x4LessThanOrEqual: {
|
| + __ vcge(NeonS32, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| case kArmUint32x4ShiftRightByScalar: {
|
| @@ -1655,14 +1698,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| i.InputSimd128Register(1));
|
| break;
|
| }
|
| - case kArmUint32x4GreaterThan: {
|
| - __ vcgt(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmUint32x4LessThan: {
|
| + __ vcgt(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| - case kArmUint32x4GreaterThanOrEqual: {
|
| - __ vcge(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmUint32x4LessThanOrEqual: {
|
| + __ vcge(NeonU32, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| case kArmInt16x8Splat: {
|
| @@ -1740,14 +1783,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ vmvn(dst, dst);
|
| break;
|
| }
|
| - case kArmInt16x8GreaterThan: {
|
| - __ vcgt(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmInt16x8LessThan: {
|
| + __ vcgt(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| - case kArmInt16x8GreaterThanOrEqual: {
|
| - __ vcge(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmInt16x8LessThanOrEqual: {
|
| + __ vcge(NeonS16, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| case kArmUint16x8ShiftRightByScalar: {
|
| @@ -1775,14 +1818,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| i.InputSimd128Register(1));
|
| break;
|
| }
|
| - case kArmUint16x8GreaterThan: {
|
| - __ vcgt(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmUint16x8LessThan: {
|
| + __ vcgt(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| - case kArmUint16x8GreaterThanOrEqual: {
|
| - __ vcge(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmUint16x8LessThanOrEqual: {
|
| + __ vcge(NeonU16, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| case kArmInt8x16Splat: {
|
| @@ -1859,14 +1902,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ vmvn(dst, dst);
|
| break;
|
| }
|
| - case kArmInt8x16GreaterThan: {
|
| - __ vcgt(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmInt8x16LessThan: {
|
| + __ vcgt(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| - case kArmInt8x16GreaterThanOrEqual: {
|
| - __ vcge(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmInt8x16LessThanOrEqual: {
|
| + __ vcge(NeonS8, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| case kArmUint8x16ShiftRightByScalar: {
|
| @@ -1894,14 +1937,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| i.InputSimd128Register(1));
|
| break;
|
| }
|
| - case kArmUint8x16GreaterThan: {
|
| - __ vcgt(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmUint8x16LessThan: {
|
| + __ vcgt(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| - case kArmUint8x16GreaterThanOrEqual: {
|
| - __ vcge(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(0),
|
| - i.InputSimd128Register(1));
|
| + case kArmUint8x16LessThanOrEqual: {
|
| + __ vcge(NeonU8, i.OutputSimd128Register(), i.InputSimd128Register(1),
|
| + i.InputSimd128Register(0));
|
| break;
|
| }
|
| case kArmSimd128Zero: {
|
|
|