From 50ed551dd09f4a22353d3315f9b69ef99e1dc096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Petryka?= <35800402+MichalPetryka@users.noreply.github.com> Date: Sat, 22 Jul 2023 03:38:00 +0200 Subject: [PATCH 1/5] Fix Vector512 rightshift Fixes #89338 --- src/coreclr/jit/hwintrinsiclistxarch.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/jit/hwintrinsiclistxarch.h b/src/coreclr/jit/hwintrinsiclistxarch.h index 1d60e326384aa1..7ff3e97fec8baa 100644 --- a/src/coreclr/jit/hwintrinsiclistxarch.h +++ b/src/coreclr/jit/hwintrinsiclistxarch.h @@ -315,7 +315,7 @@ HARDWARE_INTRINSIC(Vector512, op_Inequality, HARDWARE_INTRINSIC(Vector512, op_LeftShift, 64, 2, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) HARDWARE_INTRINSIC(Vector512, op_Multiply, 64, 2, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) HARDWARE_INTRINSIC(Vector512, op_OnesComplement, 64, 1, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) -HARDWARE_INTRINSIC(Vector512, op_RightShift, 32, 2, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) +HARDWARE_INTRINSIC(Vector512, op_RightShift, 64, 2, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) HARDWARE_INTRINSIC(Vector512, op_Subtraction, 64, 2, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) HARDWARE_INTRINSIC(Vector512, op_UnaryNegation, 64, 1, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) HARDWARE_INTRINSIC(Vector512, op_UnaryPlus, 64, 1, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen) From 6d5529a29e3f27aa86d53a7a58fbba031d1cfd13 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Mon, 31 Jul 2023 08:06:41 -0700 Subject: [PATCH 2/5] Adding tests covering the Vector shift operators --- .../GenerateHWIntrinsicTests_General.cs | 252 +++++++++++++++ .../VectorImmBinaryOperatorTest.template | 297 ++++++++++++++++++ 2 files changed, 549 insertions(+) create mode 100644 src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template diff --git a/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_General.cs b/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_General.cs index 9c04cd193843f4..6b9e59e4e7ec3c 100644 --- a/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_General.cs +++ b/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_General.cs @@ -595,6 +595,27 @@ ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "UInt32", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "left[i] != right[i]" }), ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "UInt64", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "left[i] != right[i]" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] << 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] << 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] * right[i])" }), @@ -617,6 +638,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(~firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(~firstOp[i])" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector64", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] - right[i])" }), @@ -649,6 +691,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ushort)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(+firstOp[i])" }), + + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >>> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >>> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector64", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), }; (string templateFileName, Dictionary templateData)[] Vector128Inputs = new [] @@ -1278,6 +1341,27 @@ ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "left[i] != right[i]" }), ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "UInt64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "left[i] != right[i]" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] << 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] << 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] * right[i])" }), @@ -1300,6 +1384,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(~firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(~firstOp[i])" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] - right[i])" }), @@ -1332,6 +1437,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ushort)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(+firstOp[i])" }), + + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >>> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >>> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector128", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), }; (string templateFileName, Dictionary templateData)[] Vector256Inputs = new [] @@ -1957,6 +2083,27 @@ ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "UInt32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "left[i] != right[i]" }), ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "UInt64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "left[i] != right[i]" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] << 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] << 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] * right[i])" }), @@ -1979,6 +2126,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(~firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(~firstOp[i])" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector256", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] - right[i])" }), @@ -2011,6 +2179,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ushort)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(+firstOp[i])" }), + + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >>> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >>> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector256", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector256", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector256", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), }; (string templateFileName, Dictionary templateData)[] Vector512Inputs = new [] @@ -2636,6 +2825,27 @@ ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "left[i] != right[i]" }), ("VectorBooleanAnyBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Inequality", ["Opcode"] = "!=", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "left[i] != right[i]" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] << 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] << 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) << 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] << 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] << 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_LeftShift", ["Opcode"] = "<<", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] * right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Multiply", ["Opcode"] = "*", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] * right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] * right[i])" }), @@ -2658,6 +2868,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(~firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_OnesComplement", ["Opcode"] = "~", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(~firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(~firstOp[i])" }), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_RightShift", ["Opcode"] = ">>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "result[0] != (double)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (double)(left[i] - right[i])" }), ("VectorBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_Subtraction", ["Opcode"] = "-", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] - right[0])", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] - right[i])" }), @@ -2690,6 +2921,27 @@ ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ushort)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (uint)(+firstOp[i])" }), ("VectorUnaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnaryPlus", ["Opcode"] = "+", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(+firstOp[0])", ["ValidateRemainingResults"] = "result[i] != (ulong)(+firstOp[i])" }), + + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != (byte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (byte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != (BitConverter.DoubleToInt64Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != (BitConverter.DoubleToInt64Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Double", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateFirstResult"] = "BitConverter.DoubleToInt64Bits(result[0]) != BitConverter.DoubleToInt64Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.DoubleToInt64Bits(result[i]) != BitConverter.DoubleToInt64Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != (short)(left[0] >>> 1", ["ValidateRemainingResults"] = "result[i] != (short)(left[i] >>> 1"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != (int)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (int)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != (long)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (long)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Int64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "SByte", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != (sbyte)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (sbyte)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "SByte", ["Imm"] = "8", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Single", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != (BitConverter.SingleToInt32Bits(left[0]) >>> 1)", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != (BitConverter.SingleToInt32Bits(left[i]) >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Single", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateFirstResult"] = "BitConverter.SingleToInt32Bits(result[0]) != BitConverter.SingleToInt32Bits(left[0])", ["ValidateRemainingResults"] = "BitConverter.SingleToInt32Bits(result[i]) != BitConverter.SingleToInt32Bits(left[i])"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != (ushort)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ushort)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt16", ["Imm"] = "16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != (uint)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (uint)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt32", ["Imm"] = "32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Imm"] = "1", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != (ulong)(left[0] >>> 1)", ["ValidateRemainingResults"] = "result[i] != (ulong)(left[i] >>> 1)"}), + ("VectorImmBinaryOperatorTest.template", new Dictionary { ["Isa"] = "Vector512", ["Method"] = "op_UnsignedRightShift", ["Opcode"] = ">>>", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "UInt64", ["Imm"] = "64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateFirstResult"] = "result[0] != left[0]", ["ValidateRemainingResults"] = "result[i] != left[i]"}), }; (string templateFileName, Dictionary templateData)[] NotSupportedInputs = new [] diff --git a/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template b/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template new file mode 100644 index 00000000000000..6e7c5ad0d435fb --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template @@ -0,0 +1,297 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\X86\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using Xunit; + +namespace JIT.HardwareIntrinsics.General +{ + public static partial class Program + { + [Fact] + public static void {Method}{RetBaseType}{Imm}() + { + var test = new VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm}(); + + // Validates basic functionality works, using Unsafe.Read + test.RunBasicScenario_UnsafeRead(); + + // Validates calling via reflection works, using Unsafe.Read + test.RunReflectionScenario_UnsafeRead(); + + // Validates passing a static member works + test.RunClsVarScenario(); + + // Validates passing a local works, using Unsafe.Read + test.RunLclVarScenario_UnsafeRead(); + + // Validates passing the field of a local class works + test.RunClassLclFldScenario(); + + // Validates passing an instance member of a class works + test.RunClassFldScenario(); + + // Validates passing the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates passing an instance member of a struct works + test.RunStructFldScenario(); + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm} + { + private struct DataTable + { + private byte[] inArray1; + private byte[] outArray; + + private GCHandle inHandle1; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable({Op1BaseType}[] inArray1, {RetBaseType}[] outArray, int alignment) + { + int sizeOfinArray1 = inArray1.Length * Unsafe.SizeOf<{Op1BaseType}>(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf<{RetBaseType}>(); + if (!int.IsPow2(alignment) || (alignment > {LargestVectorSize}) || (alignment * 2) < sizeOfinArray1 || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray1 = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle1 = GCHandle.Alloc(this.inArray1, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArray1Ptr), ref Unsafe.As<{Op1BaseType}, byte>(ref inArray1[0]), (uint)sizeOfinArray1); + } + + public void* inArray1Ptr => Align((byte*)(inHandle1.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle1.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public {Op1VectorType}<{Op1BaseType}> _fld1; + + public static TestStruct Create() + { + var testStruct = new TestStruct(); + + for (var i = 0; i < Op1ElementCount; i++) { _data1[i] = {NextValueOp1}; } + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{Op1VectorType}<{Op1BaseType}>, byte>(ref testStruct._fld1), ref Unsafe.As<{Op1BaseType}, byte>(ref _data1[0]), (uint)Unsafe.SizeOf<{Op1VectorType}<{Op1BaseType}>>()); + + return testStruct; + } + + public void RunStructFldScenario(VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm} testClass) + { + var result = _fld1 {Opcode} {Imm}; + + Unsafe.Write(testClass._dataTable.outArrayPtr, result); + testClass.ValidateResult(_fld1, testClass._dataTable.outArrayPtr); + } + } + + private static readonly int LargestVectorSize = {LargestVectorSize}; + + private static readonly int Op1ElementCount = Unsafe.SizeOf<{Op1VectorType}<{Op1BaseType}>>() / sizeof({Op1BaseType}); + private static readonly int RetElementCount = Unsafe.SizeOf<{RetVectorType}<{RetBaseType}>>() / sizeof({RetBaseType}); + + private static {Op1BaseType}[] _data1 = new {Op1BaseType}[Op1ElementCount]; + + private static {Op1VectorType}<{Op1BaseType}> _clsVar1; + + private {Op1VectorType}<{Op1BaseType}> _fld1; + + private DataTable _dataTable; + + static VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm}() + { + for (var i = 0; i < Op1ElementCount; i++) { _data1[i] = {NextValueOp1}; } + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{Op1VectorType}<{Op1BaseType}>, byte>(ref _clsVar1), ref Unsafe.As<{Op1BaseType}, byte>(ref _data1[0]), (uint)Unsafe.SizeOf<{Op1VectorType}<{Op1BaseType}>>()); + } + + public VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm}() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data1[i] = {NextValueOp1}; } + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{Op1VectorType}<{Op1BaseType}>, byte>(ref _fld1), ref Unsafe.As<{Op1BaseType}, byte>(ref _data1[0]), (uint)Unsafe.SizeOf<{Op1VectorType}<{Op1BaseType}>>()); + + for (var i = 0; i < Op1ElementCount; i++) { _data1[i] = {NextValueOp1}; } + _dataTable = new DataTable(_data1, new {RetBaseType}[RetElementCount], LargestVectorSize); + } + + public bool Succeeded { get; set; } + + public void RunBasicScenario_UnsafeRead() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_UnsafeRead)); + + var result = Unsafe.Read<{Op1VectorType}<{Op1BaseType}>>(_dataTable.inArray1Ptr) {Opcode} {Imm}; + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArray1Ptr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario_UnsafeRead() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario_UnsafeRead)); + + var result = typeof({Isa}<{RetBaseType}>).GetMethod("{Method}", new Type[] { typeof({Op1VectorType}<{Op1BaseType}>), typeof(int) }) + .Invoke(null, new object[] { + Unsafe.Read<{Op1VectorType}<{Op1BaseType}>>(_dataTable.inArray1Ptr), + {Imm} + }); + + Unsafe.Write(_dataTable.outArrayPtr, ({RetVectorType}<{RetBaseType}>)(result)); + ValidateResult(_dataTable.inArray1Ptr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + var result = _clsVar1 {Opcode} {Imm}; + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_clsVar1, _dataTable.outArrayPtr); + } + + public void RunLclVarScenario_UnsafeRead() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_UnsafeRead)); + + var op1 = Unsafe.Read<{Op1VectorType}<{Op1BaseType}>>(_dataTable.inArray1Ptr); + var result = op1 {Opcode} {Imm}; + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(op1, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm}(); + var result = test._fld1 {Opcode} {Imm}; + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(test._fld1, _dataTable.outArrayPtr); + } + + public void RunClassFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario)); + + var result = _fld1 {Opcode} {Imm}; + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_fld1, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + var result = test._fld1 {Opcode} {Imm}; + + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(test._fld1, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + private void ValidateResult({Op1VectorType}<{Op1BaseType}> op1, void* result, [CallerMemberName] string method = "") + { + {Op1BaseType}[] inArray1 = new {Op1BaseType}[Op1ElementCount]; + {RetBaseType}[] outArray = new {RetBaseType}[RetElementCount]; + + Unsafe.WriteUnaligned(ref Unsafe.As<{Op1BaseType}, byte>(ref inArray1[0]), op1); + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{RetBaseType}, byte>(ref outArray[0]), ref Unsafe.AsRef(result), (uint)Unsafe.SizeOf<{RetVectorType}<{RetBaseType}>>()); + + ValidateResult(inArray1, outArray, method); + } + + private void ValidateResult(void* op1, void* result, [CallerMemberName] string method = "") + { + {Op1BaseType}[] inArray1 = new {Op1BaseType}[Op1ElementCount]; + {RetBaseType}[] outArray = new {RetBaseType}[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{Op1BaseType}, byte>(ref inArray1[0]), ref Unsafe.AsRef(op1), (uint)Unsafe.SizeOf<{Op1VectorType}<{Op1BaseType}>>()); + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{RetBaseType}, byte>(ref outArray[0]), ref Unsafe.AsRef(result), (uint)Unsafe.SizeOf<{RetVectorType}<{RetBaseType}>>()); + + ValidateResult(inArray1, outArray, method); + } + + private void ValidateResult({Op1BaseType}[] left, {RetBaseType}[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + if ({ValidateFirstResult}) + { + succeeded = false; + } + else + { + for (var i = 1; i < RetElementCount; i++) + { + if ({ValidateRemainingResults}) + { + succeeded = false; + break; + } + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof({Isa})}.{Method}<{RetBaseType}>({Op1VectorType}<{Op1BaseType}>, {Imm}): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" left: ({string.Join(", ", left)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} From b2b022f738bd431a34056afaf3dde0f8f1e32606 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Wed, 2 Aug 2023 09:26:21 -0700 Subject: [PATCH 3/5] Ensure Unsafe.Read/Write are marked intrinsic --- .../src/System/Runtime/CompilerServices/Unsafe.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/Unsafe.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/Unsafe.cs index 3affb74f3783ec..1b598ccd2428d4 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/Unsafe.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/Unsafe.cs @@ -626,6 +626,7 @@ public static ref T AddByteOffset(ref T source, IntPtr byteOffset) /// /// Reads a value of type from the given location. /// + [Intrinsic] [NonVersionable] [CLSCompliant(false)] [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -637,6 +638,7 @@ public static T Read(void* source) /// /// Writes a value of type to the given location. /// + [Intrinsic] [NonVersionable] [CLSCompliant(false)] [MethodImpl(MethodImplOptions.AggressiveInlining)] From f8a5eeaf7064b64211661af19cc6147dd659f4c3 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Wed, 2 Aug 2023 11:44:03 -0700 Subject: [PATCH 4/5] Workaround a separate bug on Arm64 --- .../General/Shared/VectorImmBinaryOperatorTest.template | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template b/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template index 6e7c5ad0d435fb..eb80627eef6a83 100644 --- a/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template +++ b/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template @@ -87,7 +87,12 @@ namespace JIT.HardwareIntrinsics.General } public void* inArray1Ptr => Align((byte*)(inHandle1.AddrOfPinnedObject().ToPointer()), alignment); - public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr + { + // Workaround a bug on Arm64 + [MethodImpl(MethodImplOptions.NoInlining)] + get => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + } public void Dispose() { From 73020e08c00a880831dcb36e143d5f20621ee778 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Thu, 3 Aug 2023 09:01:08 -0700 Subject: [PATCH 5/5] Mark the new vector shift tests with ActiveIssue where relevant --- .../General/Shared/VectorImmBinaryOperatorTest.template | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template b/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template index eb80627eef6a83..ff62ffcfc91335 100644 --- a/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template +++ b/src/tests/JIT/HardwareIntrinsics/General/Shared/VectorImmBinaryOperatorTest.template @@ -19,6 +19,7 @@ namespace JIT.HardwareIntrinsics.General public static partial class Program { [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/89938", TestRuntimes.Mono)] public static void {Method}{RetBaseType}{Imm}() { var test = new VectorImmBinaryOpTest__{Method}{RetBaseType}{Imm}(); @@ -42,9 +43,11 @@ namespace JIT.HardwareIntrinsics.General test.RunClassFldScenario(); // Validates passing the field of a local struct works - test.RunStructLclFldScenario(); + // ActiveIssue: https://github.com/dotnet/runtime/issues/89868 + // test.RunStructLclFldScenario(); // Validates passing an instance member of a struct works + // ActiveIssue: https://github.com/dotnet/runtime/issues/89868 test.RunStructFldScenario(); if (!test.Succeeded)