diff --git a/src/coreclr/jit/hwintrinsiccodegenarm64.cpp b/src/coreclr/jit/hwintrinsiccodegenarm64.cpp index a136dae451668d..9ebcc4499cbbce 100644 --- a/src/coreclr/jit/hwintrinsiccodegenarm64.cpp +++ b/src/coreclr/jit/hwintrinsiccodegenarm64.cpp @@ -1838,6 +1838,11 @@ void CodeGen::genHWIntrinsic(GenTreeHWIntrinsic* node) break; } + case NI_Sve_ReverseElement: + // Use non-predicated version explicitly + GetEmitter()->emitIns_R_R(ins, emitSize, targetReg, op1Reg, opt, INS_SCALABLE_OPTS_UNPREDICATED); + break; + case NI_Sve_StoreNarrowing: opt = emitter::optGetSveInsOpt(emitTypeSize(intrin.baseType)); GetEmitter()->emitIns_R_R_R_I(ins, emitSize, op3Reg, op1Reg, op2Reg, 0, opt); diff --git a/src/coreclr/jit/hwintrinsiclistarm64sve.h b/src/coreclr/jit/hwintrinsiclistarm64sve.h index cde67554bf344a..3c0ce8495b5ef4 100644 --- a/src/coreclr/jit/hwintrinsiclistarm64sve.h +++ b/src/coreclr/jit/hwintrinsiclistarm64sve.h @@ -140,6 +140,10 @@ HARDWARE_INTRINSIC(Sve, Negate, HARDWARE_INTRINSIC(Sve, Or, -1, -1, false, {INS_sve_orr, INS_sve_orr, INS_sve_orr, INS_sve_orr, INS_sve_orr, INS_sve_orr, INS_sve_orr, INS_sve_orr, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_OptionalEmbeddedMaskedOperation|HW_Flag_HasRMWSemantics|HW_Flag_LowMaskedOperation) HARDWARE_INTRINSIC(Sve, OrAcross, -1, -1, false, {INS_sve_orv, INS_sve_orv, INS_sve_orv, INS_sve_orv, INS_sve_orv, INS_sve_orv, INS_sve_orv, INS_sve_orv, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_LowMaskedOperation) HARDWARE_INTRINSIC(Sve, PopCount, -1, -1, false, {INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt, INS_sve_cnt}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbeddedMaskedOperation|HW_Flag_LowMaskedOperation) +HARDWARE_INTRINSIC(Sve, ReverseElement, -1, 1, true, {INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev, INS_sve_rev}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_SpecialCodeGen) +HARDWARE_INTRINSIC(Sve, ReverseElement16, -1, -1, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_revh, INS_sve_revh, INS_sve_revh, INS_sve_revh, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_LowMaskedOperation) +HARDWARE_INTRINSIC(Sve, ReverseElement32, -1, -1, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_revw, INS_sve_revw, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_LowMaskedOperation) +HARDWARE_INTRINSIC(Sve, ReverseElement8, -1, -1, false, {INS_invalid, INS_invalid, INS_sve_revb, INS_sve_revb, INS_sve_revb, INS_sve_revb, INS_sve_revb, INS_sve_revb, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_LowMaskedOperation) HARDWARE_INTRINSIC(Sve, SaturatingDecrementBy16BitElementCount, -1, 3, true, {INS_invalid, INS_invalid, INS_sve_sqdech, INS_sve_uqdech, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_HasImmediateOperand|HW_Flag_HasEnumOperand|HW_Flag_SpecialCodeGen|HW_Flag_HasScalarInputVariant|HW_Flag_SpecialImport|HW_Flag_HasRMWSemantics) HARDWARE_INTRINSIC(Sve, SaturatingDecrementBy32BitElementCount, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_sqdecw, INS_sve_uqdecw, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_HasImmediateOperand|HW_Flag_HasEnumOperand|HW_Flag_SpecialCodeGen|HW_Flag_HasScalarInputVariant|HW_Flag_SpecialImport|HW_Flag_HasRMWSemantics) HARDWARE_INTRINSIC(Sve, SaturatingDecrementBy64BitElementCount, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_sqdecd, INS_sve_uqdecd, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_HasImmediateOperand|HW_Flag_HasEnumOperand|HW_Flag_SpecialCodeGen|HW_Flag_HasScalarInputVariant|HW_Flag_SpecialImport|HW_Flag_HasRMWSemantics) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.PlatformNotSupported.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.PlatformNotSupported.cs index 20b5a2dc609f63..e2876aa590fa09 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.PlatformNotSupported.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.PlatformNotSupported.cs @@ -3093,6 +3093,150 @@ internal Arm64() { } public static unsafe Vector PopCount(Vector value) { throw new PlatformNotSupportedException(); } + /// Reverse all elements + + /// + /// svuint8_t svrev[_u8](svuint8_t op) + /// REV Zresult.B, Zop.B + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat64_t svrev[_f64](svfloat64_t op) + /// REV Zresult.D, Zop.D + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint16_t svrev[_s16](svint16_t op) + /// REV Zresult.H, Zop.H + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint32_t svrev[_s32](svint32_t op) + /// REV Zresult.S, Zop.S + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svrev[_s64](svint64_t op) + /// REV Zresult.D, Zop.D + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint8_t svrev[_s8](svint8_t op) + /// REV Zresult.B, Zop.B + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat32_t svrev[_f32](svfloat32_t op) + /// REV Zresult.S, Zop.S + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint16_t svrev[_u16](svuint16_t op) + /// REV Zresult.H, Zop.H + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svrev[_u32](svuint32_t op) + /// REV Zresult.S, Zop.S + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svrev[_u64](svuint64_t op) + /// REV Zresult.D, Zop.D + /// + public static unsafe Vector ReverseElement(Vector value) { throw new PlatformNotSupportedException(); } + + + /// Reverse halfwords within elements + + /// + /// svint32_t svrevh[_s32]_m(svint32_t inactive, svbool_t pg, svint32_t op) + /// REVH Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement16(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svrevh[_s64]_m(svint64_t inactive, svbool_t pg, svint64_t op) + /// REVH Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement16(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svrevh[_u32]_m(svuint32_t inactive, svbool_t pg, svuint32_t op) + /// REVH Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement16(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svrevh[_u64]_m(svuint64_t inactive, svbool_t pg, svuint64_t op) + /// REVH Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement16(Vector value) { throw new PlatformNotSupportedException(); } + + + /// Reverse words within elements + + /// + /// svint64_t svrevw[_s64]_m(svint64_t inactive, svbool_t pg, svint64_t op) + /// REVW Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement32(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svrevw[_u64]_m(svuint64_t inactive, svbool_t pg, svuint64_t op) + /// REVW Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement32(Vector value) { throw new PlatformNotSupportedException(); } + + + /// Reverse bytes within elements + + /// + /// svint16_t svrevb[_s16]_m(svint16_t inactive, svbool_t pg, svint16_t op) + /// REVB Ztied.H, Pg/M, Zop.H + /// + public static unsafe Vector ReverseElement8(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint32_t svrevb[_s32]_m(svint32_t inactive, svbool_t pg, svint32_t op) + /// REVB Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement8(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svrevb[_s64]_m(svint64_t inactive, svbool_t pg, svint64_t op) + /// REVB Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement8(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint16_t svrevb[_u16]_m(svuint16_t inactive, svbool_t pg, svuint16_t op) + /// REVB Ztied.H, Pg/M, Zop.H + /// + public static unsafe Vector ReverseElement8(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svrevb[_u32]_m(svuint32_t inactive, svbool_t pg, svuint32_t op) + /// REVB Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement8(Vector value) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svrevb[_u64]_m(svuint64_t inactive, svbool_t pg, svuint64_t op) + /// REVB Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement8(Vector value) { throw new PlatformNotSupportedException(); } + + /// Saturating decrement by number of halfword elements /// diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.cs index ed829202b05ea7..71f2332bf86590 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve.cs @@ -3149,6 +3149,150 @@ internal Arm64() { } public static unsafe Vector PopCount(Vector value) => PopCount(value); + /// Reverse all elements + + /// + /// svuint8_t svrev[_u8](svuint8_t op) + /// REV Zresult.B, Zop.B + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svfloat64_t svrev[_f64](svfloat64_t op) + /// REV Zresult.D, Zop.D + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svint16_t svrev[_s16](svint16_t op) + /// REV Zresult.H, Zop.H + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svint32_t svrev[_s32](svint32_t op) + /// REV Zresult.S, Zop.S + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svint64_t svrev[_s64](svint64_t op) + /// REV Zresult.D, Zop.D + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svint8_t svrev[_s8](svint8_t op) + /// REV Zresult.B, Zop.B + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svfloat32_t svrev[_f32](svfloat32_t op) + /// REV Zresult.S, Zop.S + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svuint16_t svrev[_u16](svuint16_t op) + /// REV Zresult.H, Zop.H + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svuint32_t svrev[_u32](svuint32_t op) + /// REV Zresult.S, Zop.S + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + /// + /// svuint64_t svrev[_u64](svuint64_t op) + /// REV Zresult.D, Zop.D + /// + public static unsafe Vector ReverseElement(Vector value) => ReverseElement(value); + + + /// Reverse halfwords within elements + + /// + /// svint32_t svrevh[_s32]_m(svint32_t inactive, svbool_t pg, svint32_t op) + /// REVH Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement16(Vector value) => ReverseElement16(value); + + /// + /// svint64_t svrevh[_s64]_m(svint64_t inactive, svbool_t pg, svint64_t op) + /// REVH Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement16(Vector value) => ReverseElement16(value); + + /// + /// svuint32_t svrevh[_u32]_m(svuint32_t inactive, svbool_t pg, svuint32_t op) + /// REVH Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement16(Vector value) => ReverseElement16(value); + + /// + /// svuint64_t svrevh[_u64]_m(svuint64_t inactive, svbool_t pg, svuint64_t op) + /// REVH Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement16(Vector value) => ReverseElement16(value); + + + /// Reverse words within elements + + /// + /// svint64_t svrevw[_s64]_m(svint64_t inactive, svbool_t pg, svint64_t op) + /// REVW Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement32(Vector value) => ReverseElement32(value); + + /// + /// svuint64_t svrevw[_u64]_m(svuint64_t inactive, svbool_t pg, svuint64_t op) + /// REVW Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement32(Vector value) => ReverseElement32(value); + + + /// Reverse bytes within elements + + /// + /// svint16_t svrevb[_s16]_m(svint16_t inactive, svbool_t pg, svint16_t op) + /// REVB Ztied.H, Pg/M, Zop.H + /// + public static unsafe Vector ReverseElement8(Vector value) => ReverseElement8(value); + + /// + /// svint32_t svrevb[_s32]_m(svint32_t inactive, svbool_t pg, svint32_t op) + /// REVB Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement8(Vector value) => ReverseElement8(value); + + /// + /// svint64_t svrevb[_s64]_m(svint64_t inactive, svbool_t pg, svint64_t op) + /// REVB Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement8(Vector value) => ReverseElement8(value); + + /// + /// svuint16_t svrevb[_u16]_m(svuint16_t inactive, svbool_t pg, svuint16_t op) + /// REVB Ztied.H, Pg/M, Zop.H + /// + public static unsafe Vector ReverseElement8(Vector value) => ReverseElement8(value); + + /// + /// svuint32_t svrevb[_u32]_m(svuint32_t inactive, svbool_t pg, svuint32_t op) + /// REVB Ztied.S, Pg/M, Zop.S + /// + public static unsafe Vector ReverseElement8(Vector value) => ReverseElement8(value); + + /// + /// svuint64_t svrevb[_u64]_m(svuint64_t inactive, svbool_t pg, svuint64_t op) + /// REVB Ztied.D, Pg/M, Zop.D + /// + public static unsafe Vector ReverseElement8(Vector value) => ReverseElement8(value); + + /// Saturating decrement by number of halfword elements /// diff --git a/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs b/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs index a9decba72987b2..177cb10a7b74e5 100644 --- a/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs +++ b/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs @@ -4601,6 +4601,29 @@ internal Arm64() { } public static System.Numerics.Vector PopCount(System.Numerics.Vector value) { throw null; } public static System.Numerics.Vector PopCount(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement16(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement16(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement16(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement16(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement32(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement32(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement8(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement8(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement8(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement8(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement8(System.Numerics.Vector value) { throw null; } + public static System.Numerics.Vector ReverseElement8(System.Numerics.Vector value) { throw null; } + public static int SaturatingDecrementBy16BitElementCount(int value, [ConstantExpected(Min = 1, Max = (byte)(16))] byte scale, [ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw null; } public static long SaturatingDecrementBy16BitElementCount(long value, [ConstantExpected(Min = 1, Max = (byte)(16))] byte scale, [ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw null; } public static uint SaturatingDecrementBy16BitElementCount(uint value, [ConstantExpected(Min = 1, Max = (byte)(16))] byte scale, [ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw null; } diff --git a/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.cs b/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.cs index 943ee1cbd84955..5292152d0d46b6 100644 --- a/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.cs +++ b/src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.cs @@ -3587,6 +3587,29 @@ ("SveStoreNonTemporalTest.template", new Dictionary { ["TestName"] = "SveStoreNonTemporal_ushort", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "StoreNonTemporal", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt16", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "(maskArray[i] == 0 && result[i] != 0) || (maskArray[i] == 1 && result[i] != first[i])"}), ("SveStoreNonTemporalTest.template", new Dictionary { ["TestName"] = "SveStoreNonTemporal_uint", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "StoreNonTemporal", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "(maskArray[i] == 0 && result[i] != 0) || (maskArray[i] == 1 && result[i] != first[i])"}), ("SveStoreNonTemporalTest.template", new Dictionary { ["TestName"] = "SveStoreNonTemporal_ulong", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "StoreNonTemporal", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "(maskArray[i] == 0 && result[i] != 0) || (maskArray[i] == 1 && result[i] != first[i])"}), + + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_float", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_double", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Double", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_sbyte", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_short", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_int", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_long", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_byte", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_ushort", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_uint", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement_ulong", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "result[i] != firstOp[RetElementCount - i - 1]", ["GetIterResult"] = "leftOp[RetElementCount - i - 1]"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement8_short", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement8", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement8(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement8(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement8_int", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement8", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement8(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement8(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement8_long", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement8", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement8(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement8(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement8_ushort", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement8", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement8(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement8(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement8_uint", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement8", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement8(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement8(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement8_ulong", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement8", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement8(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement8(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement16_int", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement16", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement16(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement16(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement16_long", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement16", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement16(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement16(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement16_uint", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement16", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement16(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement16(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement16_ulong", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement16", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement16(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement16(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement32_long", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement32", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement32(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement32(leftOp[i])"}), + ("SveSimpleVecOpTest.template", new Dictionary { ["TestName"] = "SveReverseElement32_ulong", ["Isa"] = "Sve", ["LoadIsa"] = "Sve", ["Method"] = "ReverseElement32", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "result[i] != Helpers.ReverseElement32(firstOp[i])", ["GetIterResult"] = "Helpers.ReverseElement32(leftOp[i])"}), };