diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index a5f5f9fda75aed..c0c1c2d9cf1c38 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -28311,8 +28311,8 @@ bool GenTreeHWIntrinsic::OperIsMemoryLoad(GenTree** pAddr) const case NI_Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting: case NI_Sve_GatherVectorUInt32ZeroExtend: case NI_Sve_GatherVectorUInt32ZeroExtendFirstFaulting: - case NI_Sve_GatherVectorWithByteOffsetFirstFaulting: case NI_Sve_GatherVectorWithByteOffsets: + case NI_Sve_GatherVectorWithByteOffsetFirstFaulting: case NI_Sve_LoadVector: case NI_Sve_LoadVectorNonTemporal: case NI_Sve_LoadVector128AndReplicateToVector: @@ -28375,6 +28375,18 @@ bool GenTreeHWIntrinsic::OperIsMemoryLoad(GenTree** pAddr) const case NI_Sve_LoadVectorUInt16NonFaultingZeroExtendToUInt64: case NI_Sve_LoadVectorUInt32NonFaultingZeroExtendToInt64: case NI_Sve_LoadVectorUInt32NonFaultingZeroExtendToUInt64: + case NI_Sve2_GatherVectorByteZeroExtendNonTemporal: + case NI_Sve2_GatherVectorInt16SignExtendNonTemporal: + case NI_Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal: + case NI_Sve2_GatherVectorInt32SignExtendNonTemporal: + case NI_Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal: + case NI_Sve2_GatherVectorNonTemporal: + case NI_Sve2_GatherVectorSByteSignExtendNonTemporal: + case NI_Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt16ZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt32ZeroExtendNonTemporal: + case NI_Sve2_GatherVectorWithByteOffsetsNonTemporal: addr = Op(2); break; @@ -28467,9 +28479,24 @@ bool GenTreeHWIntrinsic::OperIsMemoryLoad(GenTree** pAddr) const NI_Sve_GatherVectorUInt32WithByteOffsetsZeroExtend, NI_Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting, NI_Sve_GatherVectorUInt32ZeroExtend, NI_Sve_GatherVectorUInt32ZeroExtendFirstFaulting)); - assert(varTypeIsI(addr) || - (varTypeIsSIMD(addr) && ((intrinsicId >= NI_Sve_GatherVector) && - (intrinsicId <= NI_Sve_GatherVectorUInt32ZeroExtendFirstFaulting)))); + + static_assert(AreContiguous(NI_Sve2_GatherVectorByteZeroExtendNonTemporal, + NI_Sve2_GatherVectorInt16SignExtendNonTemporal, + NI_Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal, + NI_Sve2_GatherVectorInt32SignExtendNonTemporal, + NI_Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal, + NI_Sve2_GatherVectorNonTemporal, NI_Sve2_GatherVectorSByteSignExtendNonTemporal, + NI_Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal, + NI_Sve2_GatherVectorUInt16ZeroExtendNonTemporal, + NI_Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal, + NI_Sve2_GatherVectorUInt32ZeroExtendNonTemporal, + NI_Sve2_GatherVectorWithByteOffsetsNonTemporal)); + + bool isSveGatherLoad = + (intrinsicId >= NI_Sve_GatherVector) && (intrinsicId <= NI_Sve_GatherVectorUInt32ZeroExtendFirstFaulting); + bool isSve2GatherLoad = (intrinsicId >= NI_Sve2_GatherVectorByteZeroExtendNonTemporal) && + (intrinsicId <= NI_Sve2_GatherVectorWithByteOffsetsNonTemporal); + assert(varTypeIsI(addr) || (varTypeIsSIMD(addr) && (isSveGatherLoad || isSve2GatherLoad))); #else assert(varTypeIsI(addr)); #endif diff --git a/src/coreclr/jit/hwintrinsic.cpp b/src/coreclr/jit/hwintrinsic.cpp index beb9315395c184..757b7ad971a188 100644 --- a/src/coreclr/jit/hwintrinsic.cpp +++ b/src/coreclr/jit/hwintrinsic.cpp @@ -2488,9 +2488,21 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic, case NI_Sve_GatherVectorUInt32WithByteOffsetsZeroExtend: case NI_Sve_GatherVectorUInt32WithByteOffsetsZeroExtendFirstFaulting: case NI_Sve_GatherVectorUInt32ZeroExtend: - case NI_Sve_GatherVectorWithByteOffsetFirstFaulting: - case NI_Sve_GatherVectorWithByteOffsets: case NI_Sve_GatherVectorUInt32ZeroExtendFirstFaulting: + case NI_Sve_GatherVectorWithByteOffsets: + case NI_Sve_GatherVectorWithByteOffsetFirstFaulting: + case NI_Sve2_GatherVectorByteZeroExtendNonTemporal: + case NI_Sve2_GatherVectorInt16SignExtendNonTemporal: + case NI_Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal: + case NI_Sve2_GatherVectorInt32SignExtendNonTemporal: + case NI_Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal: + case NI_Sve2_GatherVectorNonTemporal: + case NI_Sve2_GatherVectorSByteSignExtendNonTemporal: + case NI_Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt16ZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt32ZeroExtendNonTemporal: + case NI_Sve2_GatherVectorWithByteOffsetsNonTemporal: assert(varTypeIsSIMD(op3->TypeGet())); if (numArgs == 3) { diff --git a/src/coreclr/jit/hwintrinsiccodegenarm64.cpp b/src/coreclr/jit/hwintrinsiccodegenarm64.cpp index 9e90f6e182e7f5..9d4a6dc62adfff 100644 --- a/src/coreclr/jit/hwintrinsiccodegenarm64.cpp +++ b/src/coreclr/jit/hwintrinsiccodegenarm64.cpp @@ -2331,6 +2331,52 @@ void CodeGen::genHWIntrinsic(GenTreeHWIntrinsic* node) break; } + case NI_Sve2_GatherVectorByteZeroExtendNonTemporal: + case NI_Sve2_GatherVectorInt16SignExtendNonTemporal: + case NI_Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal: + case NI_Sve2_GatherVectorInt32SignExtendNonTemporal: + case NI_Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal: + case NI_Sve2_GatherVectorNonTemporal: + case NI_Sve2_GatherVectorSByteSignExtendNonTemporal: + case NI_Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt16ZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal: + case NI_Sve2_GatherVectorUInt32ZeroExtendNonTemporal: + case NI_Sve2_GatherVectorWithByteOffsetsNonTemporal: + { + if (!varTypeIsSIMD(intrin.op2->gtType)) + { + // GatherVector...(Vector mask, T* address, Vector offsets) + + // Calculate the byte offsets if using indices. + if ((intrin.id == NI_Sve2_GatherVectorInt16SignExtendNonTemporal) || + (intrin.id == NI_Sve2_GatherVectorUInt16ZeroExtendNonTemporal)) + { + GetEmitter()->emitIns_R_R_I(INS_sve_lsl, emitSize, op3Reg, op3Reg, 1, opt); + } + else if ((intrin.id == NI_Sve2_GatherVectorInt32SignExtendNonTemporal) || + (intrin.id == NI_Sve2_GatherVectorUInt32ZeroExtendNonTemporal)) + { + GetEmitter()->emitIns_R_R_I(INS_sve_lsl, emitSize, op3Reg, op3Reg, 2, opt); + } + else if (intrin.id == NI_Sve2_GatherVectorNonTemporal) + { + assert(emitActualTypeSize(intrin.baseType) == 8); + GetEmitter()->emitIns_R_R_I(INS_sve_lsl, emitSize, op3Reg, op3Reg, 3, opt); + } + + // op2Reg and op3Reg are swapped + GetEmitter()->emitIns_R_R_R_R(ins, emitSize, targetReg, op1Reg, op3Reg, op2Reg, opt); + } + else + { + // GatherVector...(Vector mask, Vector addresses) + + GetEmitter()->emitIns_R_R_R_R(ins, emitSize, targetReg, op1Reg, op2Reg, REG_ZR, opt); + } + break; + } + case NI_Sve_ReverseElement: // Use non-predicated version explicitly GetEmitter()->emitIns_R_R(ins, emitSize, targetReg, op1Reg, opt); diff --git a/src/coreclr/jit/hwintrinsiclistarm64sve.h b/src/coreclr/jit/hwintrinsiclistarm64sve.h index 75e9603c8946ea..caaaca7fdb1f83 100644 --- a/src/coreclr/jit/hwintrinsiclistarm64sve.h +++ b/src/coreclr/jit/hwintrinsiclistarm64sve.h @@ -349,6 +349,18 @@ HARDWARE_INTRINSIC(Sve2, DotProductRotateComplexBySelectedIndex, HARDWARE_INTRINSIC(Sve2, FusedAddHalving, -1, -1, {INS_sve_shadd, INS_sve_uhadd, INS_sve_shadd, INS_sve_uhadd, INS_sve_shadd, INS_sve_uhadd, INS_sve_shadd, INS_sve_uhadd, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_HasRMWSemantics|HW_Flag_LowMaskedOperation) HARDWARE_INTRINSIC(Sve2, FusedAddRoundedHalving, -1, -1, {INS_sve_srhadd, INS_sve_urhadd, INS_sve_srhadd, INS_sve_urhadd, INS_sve_srhadd, INS_sve_urhadd, INS_sve_srhadd, INS_sve_urhadd, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_HasRMWSemantics|HW_Flag_LowMaskedOperation) HARDWARE_INTRINSIC(Sve2, FusedSubtractHalving, -1, -1, {INS_sve_shsub, INS_sve_uhsub, INS_sve_shsub, INS_sve_uhsub, INS_sve_shsub, INS_sve_uhsub, INS_sve_shsub, INS_sve_uhsub, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_EmbeddedMaskedOperation|HW_Flag_HasRMWSemantics|HW_Flag_LowMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorByteZeroExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1b, INS_sve_ldnt1b, INS_sve_ldnt1b, INS_sve_ldnt1b, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorInt16SignExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1sh, INS_sve_ldnt1sh, INS_sve_ldnt1sh, INS_sve_ldnt1sh, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorInt16WithByteOffsetsSignExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1sh, INS_sve_ldnt1sh, INS_sve_ldnt1sh, INS_sve_ldnt1sh, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorInt32SignExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1sw, INS_sve_ldnt1sw, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorInt32WithByteOffsetsSignExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1sw, INS_sve_ldnt1sw, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1w, INS_sve_ldnt1w, INS_sve_ldnt1d, INS_sve_ldnt1d, INS_sve_ldnt1w, INS_sve_ldnt1d}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorSByteSignExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1sb, INS_sve_ldnt1sb, INS_sve_ldnt1sb, INS_sve_ldnt1sb, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1h, INS_sve_ldnt1h, INS_sve_ldnt1h, INS_sve_ldnt1h, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorUInt16ZeroExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1h, INS_sve_ldnt1h, INS_sve_ldnt1h, INS_sve_ldnt1h, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1w, INS_sve_ldnt1w, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorUInt32ZeroExtendNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1w, INS_sve_ldnt1w, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) +HARDWARE_INTRINSIC(Sve2, GatherVectorWithByteOffsetsNonTemporal, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_ldnt1w, INS_sve_ldnt1w, INS_sve_ldnt1d, INS_sve_ldnt1d, INS_sve_ldnt1w, INS_sve_ldnt1d}, HW_Category_MemoryLoad, HW_Flag_Scalable|HW_Flag_SpecialCodeGen|HW_Flag_ExplicitMaskedOperation|HW_Flag_LowMaskedOperation|HW_Flag_ZeroingMaskedOperation) HARDWARE_INTRINSIC(Sve2, InterleavingXorEvenOdd, -1, 3, {INS_sve_eorbt, INS_sve_eorbt, INS_sve_eorbt, INS_sve_eorbt, INS_sve_eorbt, INS_sve_eorbt, INS_sve_eorbt, INS_sve_eorbt, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_HasRMWSemantics) HARDWARE_INTRINSIC(Sve2, InterleavingXorOddEven, -1, 3, {INS_sve_eortb, INS_sve_eortb, INS_sve_eortb, INS_sve_eortb, INS_sve_eortb, INS_sve_eortb, INS_sve_eortb, INS_sve_eortb, INS_invalid, INS_invalid}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_HasRMWSemantics) HARDWARE_INTRINSIC(Sve2, Log2, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sve_flogb, INS_invalid, INS_sve_flogb, INS_invalid, INS_sve_flogb, INS_sve_flogb}, HW_Category_SIMD, HW_Flag_Scalable|HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbeddedMaskedOperation|HW_Flag_LowMaskedOperation) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.PlatformNotSupported.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.PlatformNotSupported.cs index 9722d809c321c7..28d5c6d61a8b91 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.PlatformNotSupported.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.PlatformNotSupported.cs @@ -1479,6 +1479,584 @@ internal Arm64() { } public static Vector FusedAddRoundedHalving(Vector left, Vector right) { throw new PlatformNotSupportedException(); } + // Load 8-bit data and zero-extend, non-temporal + + // + // svint32_t svldnt1ub_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1B Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint32_t svldnt1ub_gather_[u32]offset_s32(svbool_t pg, const uint8_t *base, svuint32_t offsets) + /// LDNT1B Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1ub_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1B Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1ub_gather_[s64]offset_s64(svbool_t pg, const uint8_t *base, svint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1ub_gather_[u64]offset_s64(svbool_t pg, const uint8_t *base, svuint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + // + // svuint32_t svldnt1ub_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1B Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svldnt1ub_gather_[u32]offset_u32(svbool_t pg, const uint8_t *base, svuint32_t offsets) + /// LDNT1B Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1ub_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1B Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1ub_gather_[s64]offset_u64(svbool_t pg, const uint8_t *base, svint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1ub_gather_[u64]offset_u64(svbool_t pg, const uint8_t *base, svuint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Load 16-bit data and sign-extend, non-temporal + + // + // svint32_t svldnt1sh_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1SH Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sh_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1SH Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sh_gather_[s64]index_s64(svbool_t pg, const int16_t *base, svint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sh_gather_[u64]index_s64(svbool_t pg, const int16_t *base, svuint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) { throw new PlatformNotSupportedException(); } + + // + // svuint32_t svldnt1sh_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1SH Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sh_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1SH Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sh_gather_[s64]index_u64(svbool_t pg, const int16_t *base, svint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sh_gather_[u64]index_u64(svbool_t pg, const int16_t *base, svuint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) { throw new PlatformNotSupportedException(); } + + + // Load 16-bit data and sign-extend, non-temporal + + /// + /// svint32_t svldnt1sh_gather_[u32]offset_s32(svbool_t pg, const int16_t *base, svuint32_t offsets) + /// LDNT1SH Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sh_gather_[s64]offset_s64(svbool_t pg, const int16_t *base, svint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sh_gather_[u64]offset_s64(svbool_t pg, const int16_t *base, svuint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svldnt1sh_gather_[u32]offset_u32(svbool_t pg, const int16_t *base, svuint32_t offsets) + /// LDNT1SH Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sh_gather_[s64]offset_u64(svbool_t pg, const int16_t *base, svint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sh_gather_[u64]offset_u64(svbool_t pg, const int16_t *base, svuint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Load 32-bit data and sign-extend, non-temporal + + /// + /// svint64_t svldnt1sw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sw_gather_[s64]index_s64(svbool_t pg, const int32_t *base, svint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sw_gather_[u64]index_s64(svbool_t pg, const int32_t *base, svuint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sw_gather_[s64]index_u64(svbool_t pg, const int32_t *base, svint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sw_gather_[u64]index_u64(svbool_t pg, const int32_t *base, svuint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) { throw new PlatformNotSupportedException(); } + + + // Load 32-bit data and sign-extend, non-temporal + + /// + /// svint64_t svldnt1sw_gather_[s64]offset_s64(svbool_t pg, const int32_t *base, svint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sw_gather_[u64]offset_s64(svbool_t pg, const int32_t *base, svuint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sw_gather_[s64]offset_u64(svbool_t pg, const int32_t *base, svint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sw_gather_[u64]offset_u64(svbool_t pg, const int32_t *base, svuint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Unextended load, non-temporal + + /// + /// svfloat64_t svldnt1_gather[_u64base]_f64(svbool_t pg, svuint64_t bases) + /// LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat64_t svldnt1_gather_[s64]index[_f64](svbool_t pg, const float64_t *base, svint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, double* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat64_t svldnt1_gather_[u64]index[_f64](svbool_t pg, const float64_t *base, svuint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, double* address, Vector indices) { throw new PlatformNotSupportedException(); } + + // + // svint32_t svldnt1_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1_gather_[s64]index[_s64](svbool_t pg, const int64_t *base, svint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, long* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1_gather_[u64]index[_s64](svbool_t pg, const int64_t *base, svuint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, long* address, Vector indices) { throw new PlatformNotSupportedException(); } + + // + // svfloat32_t svldnt1_gather[_u32base]_f32(svbool_t pg, svuint32_t bases) + // LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + // + // svuint32_t svldnt1_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1_gather_[s64]index[_u64](svbool_t pg, const uint64_t *base, svint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, ulong* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1_gather_[u64]index[_u64](svbool_t pg, const uint64_t *base, svuint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, ulong* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat64_t svldnt1_gather_[s64]offset[_f64](svbool_t pg, const float64_t *base, svint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, double* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat64_t svldnt1_gather_[u64]offset[_f64](svbool_t pg, const float64_t *base, svuint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, double* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint32_t svldnt1_gather_[u32]offset[_s32](svbool_t pg, const int32_t *base, svuint32_t offsets) + /// LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, int* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1_gather_[s64]offset[_s64](svbool_t pg, const int64_t *base, svint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, long* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1_gather_[u64]offset[_s64](svbool_t pg, const int64_t *base, svuint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, long* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svfloat32_t svldnt1_gather_[u32]offset[_f32](svbool_t pg, const float32_t *base, svuint32_t offsets) + /// LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, float* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svldnt1_gather_[u32]offset[_u32](svbool_t pg, const uint32_t *base, svuint32_t offsets) + /// LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, uint* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1_gather_[s64]offset[_u64](svbool_t pg, const uint64_t *base, svint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, ulong* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1_gather_[u64]offset[_u64](svbool_t pg, const uint64_t *base, svuint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, ulong* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Load 8-bit data and sign-extend, non-temporal + + // + // svint32_t svldnt1sb_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1SB Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint32_t svldnt1sb_gather_[u32]offset_s32(svbool_t pg, const int8_t *base, svuint32_t offsets) + /// LDNT1SB Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sb_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1SB Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sb_gather_[s64]offset_s64(svbool_t pg, const int8_t *base, svint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1sb_gather_[u64]offset_s64(svbool_t pg, const int8_t *base, svuint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + // + // svuint32_t svldnt1sb_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1SB Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svldnt1sb_gather_[u32]offset_u32(svbool_t pg, const int8_t *base, svuint32_t offsets) + /// LDNT1SB Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sb_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1SB Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sb_gather_[s64]offset_u64(svbool_t pg, const int8_t *base, svint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1sb_gather_[u64]offset_u64(svbool_t pg, const int8_t *base, svuint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Load 16-bit data and zero-extend, non-temporal + + /// + /// svint32_t svldnt1uh_gather_[u32]offset_s32(svbool_t pg, const uint16_t *base, svuint32_t offsets) + /// LDNT1H Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uh_gather_[s64]offset_s64(svbool_t pg, const uint16_t *base, svint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uh_gather_[u64]offset_s64(svbool_t pg, const uint16_t *base, svuint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint32_t svldnt1uh_gather_[u32]offset_u32(svbool_t pg, const uint16_t *base, svuint32_t offsets) + /// LDNT1H Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uh_gather_[s64]offset_u64(svbool_t pg, const uint16_t *base, svint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uh_gather_[u64]offset_u64(svbool_t pg, const uint16_t *base, svuint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Load 16-bit data and zero-extend, non-temporal + + // + // svint32_t svldnt1uh_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1H Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uh_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1H Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uh_gather_[s64]index_s64(svbool_t pg, const uint16_t *base, svint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uh_gather_[u64]index_s64(svbool_t pg, const uint16_t *base, svuint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) { throw new PlatformNotSupportedException(); } + + // + // svuint32_t svldnt1uh_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1H Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uh_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1H Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uh_gather_[s64]index_u64(svbool_t pg, const uint16_t *base, svint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uh_gather_[u64]index_u64(svbool_t pg, const uint16_t *base, svuint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) { throw new PlatformNotSupportedException(); } + + + // Load 32-bit data and zero-extend, non-temporal + + /// + /// svint64_t svldnt1uw_gather_[s64]offset_s64(svbool_t pg, const uint32_t *base, svint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uw_gather_[u64]offset_s64(svbool_t pg, const uint32_t *base, svuint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uw_gather_[s64]offset_u64(svbool_t pg, const uint32_t *base, svint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uw_gather_[u64]offset_u64(svbool_t pg, const uint32_t *base, svuint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) { throw new PlatformNotSupportedException(); } + + + // Load 32-bit data and zero-extend, non-temporal + + /// + /// svint64_t svldnt1uw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uw_gather_[s64]index_s64(svbool_t pg, const uint32_t *base, svint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svint64_t svldnt1uw_gather_[u64]index_s64(svbool_t pg, const uint32_t *base, svuint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, Vector addresses) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uw_gather_[s64]index_u64(svbool_t pg, const uint32_t *base, svint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// + /// svuint64_t svldnt1uw_gather_[u64]index_u64(svbool_t pg, const uint32_t *base, svuint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) { throw new PlatformNotSupportedException(); } + + /// Interleaving Xor /// diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.cs index 904ce01689efbb..f2c28fc4b82dfc 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sve2.cs @@ -1479,6 +1479,584 @@ internal Arm64() { } public static Vector FusedAddRoundedHalving(Vector left, Vector right) => FusedAddRoundedHalving(left, right); + // Load 8-bit data and zero-extend, non-temporal + + // + // svint32_t svldnt1ub_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1B Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorByteZeroExtendNonTemporal(mask, addresses); + + /// + /// svint32_t svldnt1ub_gather_[u32]offset_s32(svbool_t pg, const uint8_t *base, svuint32_t offsets) + /// LDNT1B Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) => GatherVectorByteZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1ub_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1B Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorByteZeroExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1ub_gather_[s64]offset_s64(svbool_t pg, const uint8_t *base, svint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) => GatherVectorByteZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1ub_gather_[u64]offset_s64(svbool_t pg, const uint8_t *base, svuint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) => GatherVectorByteZeroExtendNonTemporal(mask, address, offsets); + + // + // svuint32_t svldnt1ub_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1B Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorByteZeroExtendNonTemporal(mask, addresses); + + /// + /// svuint32_t svldnt1ub_gather_[u32]offset_u32(svbool_t pg, const uint8_t *base, svuint32_t offsets) + /// LDNT1B Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) => GatherVectorByteZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1ub_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1B Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorByteZeroExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1ub_gather_[s64]offset_u64(svbool_t pg, const uint8_t *base, svint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) => GatherVectorByteZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1ub_gather_[u64]offset_u64(svbool_t pg, const uint8_t *base, svuint64_t offsets) + /// LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, byte* address, Vector offsets) => GatherVectorByteZeroExtendNonTemporal(mask, address, offsets); + + + // Load 16-bit data and sign-extend, non-temporal + + // + // svint32_t svldnt1sh_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1SH Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorInt16SignExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1sh_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1SH Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorInt16SignExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1sh_gather_[s64]index_s64(svbool_t pg, const int16_t *base, svint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) => GatherVectorInt16SignExtendNonTemporal(mask, address, indices); + + /// + /// svint64_t svldnt1sh_gather_[u64]index_s64(svbool_t pg, const int16_t *base, svuint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) => GatherVectorInt16SignExtendNonTemporal(mask, address, indices); + + // + // svuint32_t svldnt1sh_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1SH Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorInt16SignExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1sh_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1SH Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorInt16SignExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1sh_gather_[s64]index_u64(svbool_t pg, const int16_t *base, svint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) => GatherVectorInt16SignExtendNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1sh_gather_[u64]index_u64(svbool_t pg, const int16_t *base, svuint64_t indices) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, short* address, Vector indices) => GatherVectorInt16SignExtendNonTemporal(mask, address, indices); + + + // Load 16-bit data and sign-extend, non-temporal + + /// + /// svint32_t svldnt1sh_gather_[u32]offset_s32(svbool_t pg, const int16_t *base, svuint32_t offsets) + /// LDNT1SH Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) => GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1sh_gather_[s64]offset_s64(svbool_t pg, const int16_t *base, svint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) => GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1sh_gather_[u64]offset_s64(svbool_t pg, const int16_t *base, svuint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) => GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint32_t svldnt1sh_gather_[u32]offset_u32(svbool_t pg, const int16_t *base, svuint32_t offsets) + /// LDNT1SH Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) => GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1sh_gather_[s64]offset_u64(svbool_t pg, const int16_t *base, svint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) => GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1sh_gather_[u64]offset_u64(svbool_t pg, const int16_t *base, svuint64_t offsets) + /// LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector mask, short* address, Vector offsets) => GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + + // Load 32-bit data and sign-extend, non-temporal + + /// + /// svint64_t svldnt1sw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorInt32SignExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1sw_gather_[s64]index_s64(svbool_t pg, const int32_t *base, svint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) => GatherVectorInt32SignExtendNonTemporal(mask, address, indices); + + /// + /// svint64_t svldnt1sw_gather_[u64]index_s64(svbool_t pg, const int32_t *base, svuint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) => GatherVectorInt32SignExtendNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1sw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorInt32SignExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1sw_gather_[s64]index_u64(svbool_t pg, const int32_t *base, svint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) => GatherVectorInt32SignExtendNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1sw_gather_[u64]index_u64(svbool_t pg, const int32_t *base, svuint64_t indices) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, int* address, Vector indices) => GatherVectorInt32SignExtendNonTemporal(mask, address, indices); + + + // Load 32-bit data and sign-extend, non-temporal + + /// + /// svint64_t svldnt1sw_gather_[s64]offset_s64(svbool_t pg, const int32_t *base, svint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) => GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1sw_gather_[u64]offset_s64(svbool_t pg, const int32_t *base, svuint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) => GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1sw_gather_[s64]offset_u64(svbool_t pg, const int32_t *base, svint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) => GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1sw_gather_[u64]offset_u64(svbool_t pg, const int32_t *base, svuint64_t offsets) + /// LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector mask, int* address, Vector offsets) => GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(mask, address, offsets); + + + // Unextended load, non-temporal + + /// + /// svfloat64_t svldnt1_gather[_u64base]_f64(svbool_t pg, svuint64_t bases) + /// LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) => GatherVectorNonTemporal(mask, addresses); + + /// + /// svfloat64_t svldnt1_gather_[s64]index[_f64](svbool_t pg, const float64_t *base, svint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, double* address, Vector indices) => GatherVectorNonTemporal(mask, address, indices); + + /// + /// svfloat64_t svldnt1_gather_[u64]index[_f64](svbool_t pg, const float64_t *base, svuint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, double* address, Vector indices) => GatherVectorNonTemporal(mask, address, indices); + + // + // svint32_t svldnt1_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) => GatherVectorNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) => GatherVectorNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1_gather_[s64]index[_s64](svbool_t pg, const int64_t *base, svint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, long* address, Vector indices) => GatherVectorNonTemporal(mask, address, indices); + + /// + /// svint64_t svldnt1_gather_[u64]index[_s64](svbool_t pg, const int64_t *base, svuint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, long* address, Vector indices) => GatherVectorNonTemporal(mask, address, indices); + + // + // svfloat32_t svldnt1_gather[_u32base]_f32(svbool_t pg, svuint32_t bases) + // LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) => GatherVectorNonTemporal(mask, addresses); + + // + // svuint32_t svldnt1_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) => GatherVectorNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector addresses) => GatherVectorNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1_gather_[s64]index[_u64](svbool_t pg, const uint64_t *base, svint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, ulong* address, Vector indices) => GatherVectorNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1_gather_[u64]index[_u64](svbool_t pg, const uint64_t *base, svuint64_t indices) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorNonTemporal(Vector mask, ulong* address, Vector indices) => GatherVectorNonTemporal(mask, address, indices); + + /// + /// svfloat64_t svldnt1_gather_[s64]offset[_f64](svbool_t pg, const float64_t *base, svint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, double* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svfloat64_t svldnt1_gather_[u64]offset[_f64](svbool_t pg, const float64_t *base, svuint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, double* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svint32_t svldnt1_gather_[u32]offset[_s32](svbool_t pg, const int32_t *base, svuint32_t offsets) + /// LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, int* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1_gather_[s64]offset[_s64](svbool_t pg, const int64_t *base, svint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, long* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1_gather_[u64]offset[_s64](svbool_t pg, const int64_t *base, svuint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, long* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svfloat32_t svldnt1_gather_[u32]offset[_f32](svbool_t pg, const float32_t *base, svuint32_t offsets) + /// LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, float* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svuint32_t svldnt1_gather_[u32]offset[_u32](svbool_t pg, const uint32_t *base, svuint32_t offsets) + /// LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, uint* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1_gather_[s64]offset[_u64](svbool_t pg, const uint64_t *base, svint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, ulong* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1_gather_[u64]offset[_u64](svbool_t pg, const uint64_t *base, svuint64_t offsets) + /// LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorWithByteOffsetsNonTemporal(Vector mask, ulong* address, Vector offsets) => GatherVectorWithByteOffsetsNonTemporal(mask, address, offsets); + + + // Load 8-bit data and sign-extend, non-temporal + + // + // svint32_t svldnt1sb_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1SB Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorSByteSignExtendNonTemporal(mask, addresses); + + /// + /// svint32_t svldnt1sb_gather_[u32]offset_s32(svbool_t pg, const int8_t *base, svuint32_t offsets) + /// LDNT1SB Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) => GatherVectorSByteSignExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1sb_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1SB Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorSByteSignExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1sb_gather_[s64]offset_s64(svbool_t pg, const int8_t *base, svint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) => GatherVectorSByteSignExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1sb_gather_[u64]offset_s64(svbool_t pg, const int8_t *base, svuint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) => GatherVectorSByteSignExtendNonTemporal(mask, address, offsets); + + // + // svuint32_t svldnt1sb_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1SB Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorSByteSignExtendNonTemporal(mask, addresses); + + /// + /// svuint32_t svldnt1sb_gather_[u32]offset_u32(svbool_t pg, const int8_t *base, svuint32_t offsets) + /// LDNT1SB Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) => GatherVectorSByteSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1sb_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1SB Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorSByteSignExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1sb_gather_[s64]offset_u64(svbool_t pg, const int8_t *base, svint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) => GatherVectorSByteSignExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1sb_gather_[u64]offset_u64(svbool_t pg, const int8_t *base, svuint64_t offsets) + /// LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorSByteSignExtendNonTemporal(Vector mask, sbyte* address, Vector offsets) => GatherVectorSByteSignExtendNonTemporal(mask, address, offsets); + + + // Load 16-bit data and zero-extend, non-temporal + + /// + /// svint32_t svldnt1uh_gather_[u32]offset_s32(svbool_t pg, const uint16_t *base, svuint32_t offsets) + /// LDNT1H Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) => GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1uh_gather_[s64]offset_s64(svbool_t pg, const uint16_t *base, svint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) => GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1uh_gather_[u64]offset_s64(svbool_t pg, const uint16_t *base, svuint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) => GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint32_t svldnt1uh_gather_[u32]offset_u32(svbool_t pg, const uint16_t *base, svuint32_t offsets) + /// LDNT1H Zresult.S, Pg/Z, [Zoffsets.S, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) => GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1uh_gather_[s64]offset_u64(svbool_t pg, const uint16_t *base, svint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) => GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1uh_gather_[u64]offset_u64(svbool_t pg, const uint16_t *base, svuint64_t offsets) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector mask, ushort* address, Vector offsets) => GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + + // Load 16-bit data and zero-extend, non-temporal + + // + // svint32_t svldnt1uh_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) + // LDNT1H Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorUInt16ZeroExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1uh_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1H Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorUInt16ZeroExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1uh_gather_[s64]index_s64(svbool_t pg, const uint16_t *base, svint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) => GatherVectorUInt16ZeroExtendNonTemporal(mask, address, indices); + + /// + /// svint64_t svldnt1uh_gather_[u64]index_s64(svbool_t pg, const uint16_t *base, svuint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) => GatherVectorUInt16ZeroExtendNonTemporal(mask, address, indices); + + // + // svuint32_t svldnt1uh_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) + // LDNT1H Zresult.S, Pg/Z, [Zbases.S, XZR] + // + // Removed as per #103297 + // public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorUInt16ZeroExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1uh_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1H Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorUInt16ZeroExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1uh_gather_[s64]index_u64(svbool_t pg, const uint16_t *base, svint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) => GatherVectorUInt16ZeroExtendNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1uh_gather_[u64]index_u64(svbool_t pg, const uint16_t *base, svuint64_t indices) + /// LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt16ZeroExtendNonTemporal(Vector mask, ushort* address, Vector indices) => GatherVectorUInt16ZeroExtendNonTemporal(mask, address, indices); + + + // Load 32-bit data and zero-extend, non-temporal + + /// + /// svint64_t svldnt1uw_gather_[s64]offset_s64(svbool_t pg, const uint32_t *base, svint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) => GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svint64_t svldnt1uw_gather_[u64]offset_s64(svbool_t pg, const uint32_t *base, svuint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) => GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1uw_gather_[s64]offset_u64(svbool_t pg, const uint32_t *base, svint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) => GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + /// + /// svuint64_t svldnt1uw_gather_[u64]offset_u64(svbool_t pg, const uint32_t *base, svuint64_t offsets) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector mask, uint* address, Vector offsets) => GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(mask, address, offsets); + + + // Load 32-bit data and zero-extend, non-temporal + + /// + /// svint64_t svldnt1uw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) + /// LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorUInt32ZeroExtendNonTemporal(mask, addresses); + + /// + /// svint64_t svldnt1uw_gather_[s64]index_s64(svbool_t pg, const uint32_t *base, svint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) => GatherVectorUInt32ZeroExtendNonTemporal(mask, address, indices); + + /// + /// svint64_t svldnt1uw_gather_[u64]index_s64(svbool_t pg, const uint32_t *base, svuint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) => GatherVectorUInt32ZeroExtendNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1uw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) + /// LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, Vector addresses) => GatherVectorUInt32ZeroExtendNonTemporal(mask, addresses); + + /// + /// svuint64_t svldnt1uw_gather_[s64]index_u64(svbool_t pg, const uint32_t *base, svint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) => GatherVectorUInt32ZeroExtendNonTemporal(mask, address, indices); + + /// + /// svuint64_t svldnt1uw_gather_[u64]index_u64(svbool_t pg, const uint32_t *base, svuint64_t indices) + /// LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase] + /// + public static unsafe Vector GatherVectorUInt32ZeroExtendNonTemporal(Vector mask, uint* address, Vector indices) => GatherVectorUInt32ZeroExtendNonTemporal(mask, address, indices); + + /// Interleaving Xor /// 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 479501776f2a19..eaf11a1716bfd3 100644 --- a/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs +++ b/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs @@ -6384,6 +6384,95 @@ internal Arm64() { } public static System.Numerics.Vector FusedSubtractHalving(System.Numerics.Vector left, System.Numerics.Vector right) { throw null; } public static System.Numerics.Vector FusedSubtractHalving(System.Numerics.Vector left, System.Numerics.Vector right) { throw null; } public static System.Numerics.Vector FusedSubtractHalving(System.Numerics.Vector left, System.Numerics.Vector right) { throw null; } + // public static System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, byte* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, byte* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, byte* address, System.Numerics.Vector offsets) { throw null; } + // public static System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, byte* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, byte* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorByteZeroExtendNonTemporal(System.Numerics.Vector mask, byte* address, System.Numerics.Vector offsets) { throw null; } + // public static System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector indices) { throw null; } + // public static System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16SignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, short* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorInt32SignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32SignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32SignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector indices) { throw null; } + public static System.Numerics.Vector GatherVectorInt32SignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32SignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32SignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, double* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, double* address, System.Numerics.Vector indices) { throw null; } + // public static System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, long* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, long* address, System.Numerics.Vector indices) { throw null; } + // public static System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + // public static System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, ulong* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorNonTemporal(System.Numerics.Vector mask, ulong* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, double* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, double* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, int* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, long* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, long* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, float* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, ulong* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorWithByteOffsetsNonTemporal(System.Numerics.Vector mask, ulong* address, System.Numerics.Vector offsets) { throw null; } + // public static System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, sbyte* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, sbyte* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, sbyte* address, System.Numerics.Vector offsets) { throw null; } + // public static System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, sbyte* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, sbyte* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorSByteSignExtendNonTemporal(System.Numerics.Vector mask, sbyte* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector offsets) { throw null; } + // public static System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector indices) { throw null; } + // public static System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt16ZeroExtendNonTemporal(System.Numerics.Vector mask, ushort* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector offsets) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector offsets) { throw null; } + public static System.Numerics.Vector GatherVectorUInt32ZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32ZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32ZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector indices) { throw null; } + public static System.Numerics.Vector GatherVectorUInt32ZeroExtendNonTemporal(System.Numerics.Vector mask, System.Numerics.Vector addresses) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32ZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector indices) { throw null; } + public static unsafe System.Numerics.Vector GatherVectorUInt32ZeroExtendNonTemporal(System.Numerics.Vector mask, uint* address, System.Numerics.Vector indices) { throw null; } public static System.Numerics.Vector InterleavingXorEvenOdd(System.Numerics.Vector odd, System.Numerics.Vector leftEven, System.Numerics.Vector rightOdd) { throw null; } public static System.Numerics.Vector InterleavingXorEvenOdd(System.Numerics.Vector odd, System.Numerics.Vector leftEven, System.Numerics.Vector rightOdd) { throw null; } public static System.Numerics.Vector InterleavingXorEvenOdd(System.Numerics.Vector odd, System.Numerics.Vector leftEven, System.Numerics.Vector rightOdd) { throw null; } diff --git a/src/tests/Common/GenerateHWIntrinsicTests/Arm/Sve2Tests.cs b/src/tests/Common/GenerateHWIntrinsicTests/Arm/Sve2Tests.cs index 2bba9e4521cc8c..d7f4038c1b03ad 100644 --- a/src/tests/Common/GenerateHWIntrinsicTests/Arm/Sve2Tests.cs +++ b/src/tests/Common/GenerateHWIntrinsicTests/Arm/Sve2Tests.cs @@ -291,6 +291,107 @@ static class Sve2Tests (Templates.SveVecBinOpTest, new Dictionary { ["TestName"] = "Sve2_FusedAddRoundedHalving_uint", ["Method"] = "FusedAddRoundedHalving", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["ConvertFunc"] = "", ["ValidateIterResult"] = "result[i] != Helpers.FusedAddRoundedHalving(left[i], right[i])", ["GetIterResult"] = "Helpers.FusedAddRoundedHalving(leftOp[i], rightOp[i])",}), (Templates.SveVecBinOpTest, new Dictionary { ["TestName"] = "Sve2_FusedAddRoundedHalving_ulong", ["Method"] = "FusedAddRoundedHalving", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["ConvertFunc"] = "", ["ValidateIterResult"] = "result[i] != Helpers.FusedAddRoundedHalving(left[i], right[i])", ["GetIterResult"] = "Helpers.FusedAddRoundedHalving(leftOp[i], rightOp[i])",}), + // (Templates.SveGatherVectorVectorBases,new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Bases_int_uint", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()" ["NextValueBase"] = "TestLibrary.Generator.GetInt32()"}), + // (Templates.SveGatherVectorVectorBases,new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Bases_uint_uint", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()" ["NextValueBase"] = "TestLibrary.Generator.GetUInt32()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()" }), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Indices_int_uint", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Indices_uint_uint", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Indices_long_long", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorByteZeroExtendNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorByteZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + + // (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Bases_int_uint", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()" ["NextValueBase"] = "TestLibrary.Generator.GetInt32()}), + // (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Bases_uint_uint", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()" ["NextValueBase"] = "TestLibrary.Generator.GetUInt32()}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Indices_long_long", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16SignExtendNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorInt16SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal_int_uint", ["Method"] = "GatherVectorInt16WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal_uint_uint", ["Method"] = "GatherVectorInt16WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal_long_long", ["Method"] = "GatherVectorInt16WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal_ulong_long", ["Method"] = "GatherVectorInt16WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal_long_ulong", ["Method"] = "GatherVectorInt16WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt16WithByteOffsetsSignExtendNonTemporal_ulong_ulong", ["Method"] = "GatherVectorInt16WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32SignExtendNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorInt32SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32SignExtendNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorInt32SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32SignExtendNonTemporal_Indices_long_long", ["Method"] = "GatherVectorInt32SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32SignExtendNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorInt32SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32SignExtendNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorInt32SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32SignExtendNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorInt32SignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal_long_long", ["Method"] = "GatherVectorInt32WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal_ulong_long", ["Method"] = "GatherVectorInt32WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal_long_ulong", ["Method"] = "GatherVectorInt32WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorInt32WithByteOffsetsSignExtendNonTemporal_ulong_ulong", ["Method"] = "GatherVectorInt32WithByteOffsetsSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + + // (Templates.SveGatherVectorVectorBases, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Bases_float_uint", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Single", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "Single", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskSingle()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueBase"] = "TestLibrary.Generator.GetSingle()"}), + // (Templates.SveGatherVectorVectorBases, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Bases_int_uint", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueBase"] = "TestLibrary.Generator.GetInt32()"}), + // (Templates.SveGatherVectorVectorBases, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Bases_uint_uint", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt32()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Bases_double_ulong", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Double", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetDouble()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()"}), + (Templates.SveGatherVector, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Indices_double_long", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Double", ["Op2BaseType"] = "Double", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Double", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Indices_long_long", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Indices_double_ulong", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Double", ["Op2BaseType"] = "Double", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Double", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Int64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary { ["TestName"] = "Sve2_GatherVectorNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt64", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_float_uint", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Single", ["Op2BaseType"] = "Single", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskSingle()", ["NextValueOp2"] = "TestLibrary.Generator.GetSingle()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["ConvertFunc"] = "BitConverter.SingleToInt32Bits"}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_int_uint", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["ConvertFunc"] = ""}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_uint_uint", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["ConvertFunc"] = ""}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_double_long", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Double", ["Op2BaseType"] = "Double", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["ConvertFunc"] = "BitConverter.DoubleToInt64Bits"}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_long_long", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["ConvertFunc"] = ""}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_ulong_long", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["ConvertFunc"] = ""}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_double_ulong", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Double", ["Op2BaseType"] = "Double", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["ConvertFunc"] = "BitConverter.DoubleToInt64Bits"}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_long_ulong", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "Int64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["ConvertFunc"] = ""}), + (Templates.SveGatherVectorByteOffsets, new Dictionary {["TestName"] = "Sve2_GatherVectorWithByteOffsetsNonTemporal_ulong_ulong", ["Method"] = "GatherVectorWithByteOffsetsNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt64", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["ConvertFunc"] = ""}), + + // (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Bases_int_uint", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueBase"] = "TestLibrary.Generator.GetInt32()"}), + // (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Bases_uint_uint", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt32()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Indices_int_uint", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2BaseType"] = "SByte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetSByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "false" }), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Indices_uint_uint", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2BaseType"] = "SByte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetSByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "false" }), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Indices_long_long", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "SByte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetSByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false" }), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "SByte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetSByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false" }), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "SByte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetSByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false" }), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorSByteSignExtendNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorSByteSignExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "SByte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "SByte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetSByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false" }), + + // (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Bases_int_uint", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()" ["NextValueBase"] = "TestLibrary.Generator.GetInt32()}), + // (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Bases_uint_uint", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt32", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()" ["NextValueBase"] = "TestLibrary.Generator.GetUInt32()}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Indices_long_long", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16ZeroExtendNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorUInt16ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal_int_uint", ["Method"] = "GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal_uint_uint", ["Method"] = "GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt32", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt32", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt32()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal_long_long", ["Method"] = "GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal_ulong_long", ["Method"] = "GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal_long_ulong", ["Method"] = "GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal_ulong_ulong", ["Method"] = "GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32ZeroExtendNonTemporal_Bases_long_ulong", ["Method"] = "GatherVectorUInt32ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetInt64()"}), + (Templates.SveGatherVectorVectorBases, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32ZeroExtendNonTemporal_Bases_ulong_ulong", ["Method"] = "GatherVectorUInt32ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt64()", ["NextValueBase"] = "TestLibrary.Generator.GetUInt64()"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32ZeroExtendNonTemporal_Indices_long_long", ["Method"] = "GatherVectorUInt32ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32ZeroExtendNonTemporal_Indices_ulong_long", ["Method"] = "GatherVectorUInt32ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32ZeroExtendNonTemporal_Indices_long_ulong", ["Method"] = "GatherVectorUInt32ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32ZeroExtendNonTemporal_Indices_ulong_ulong", ["Method"] = "GatherVectorUInt32ZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "false"}), + + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal_long_long", ["Method"] = "GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal_ulong_long", ["Method"] = "GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal_long_ulong", ["Method"] = "GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + (Templates.SveGatherVector, new Dictionary {["TestName"] = "Sve2_GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal_ulong_ulong", ["Method"] = "GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal", ["RetVectorType"] = "Vector", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "UInt64", ["Op2BaseType"] = "UInt32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "UInt64", ["ExtendedElementType"] = "UInt32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "Helpers.getMaskUInt64()", ["NextValueOp2"] = "TestLibrary.Generator.GetUInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetUInt64()", ["AreOffsets"] = "true"}), + (Templates.SveVecTernOpTest, new Dictionary { ["TestName"] = "Sve2_InterleavingXorEvenOdd_byte", ["Method"] = "InterleavingXorEvenOdd", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "Byte", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Byte", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["NextValueOp3"] = "TestLibrary.Generator.GetByte()", ["ConvertFunc"] = "", ["ValidateIterResult"] = "result[i] != Helpers.InterleavingXorEvenOdd(firstOp, secondOp, thirdOp)[i]", ["GetIterResult"] = "Helpers.InterleavingXorEvenOdd(first, second, third)[i]"}), (Templates.SveVecTernOpTest, new Dictionary { ["TestName"] = "Sve2_InterleavingXorEvenOdd_short", ["Method"] = "InterleavingXorEvenOdd", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int16", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "Int16", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int16", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt16()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt16()", ["ConvertFunc"] = "", ["ValidateIterResult"] = "result[i] != Helpers.InterleavingXorEvenOdd(firstOp, secondOp, thirdOp)[i]", ["GetIterResult"] = "Helpers.InterleavingXorEvenOdd(first, second, third)[i]"}), (Templates.SveVecTernOpTest, new Dictionary { ["TestName"] = "Sve2_InterleavingXorEvenOdd_int", ["Method"] = "InterleavingXorEvenOdd", ["RetVectorType"] = "Vector", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector", ["Op1BaseType"] = "Int32", ["Op2VectorType"] = "Vector", ["Op2BaseType"] = "Int32", ["Op3VectorType"] = "Vector", ["Op3BaseType"] = "Int32", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp2"] = "TestLibrary.Generator.GetInt32()", ["NextValueOp3"] = "TestLibrary.Generator.GetInt32()", ["ConvertFunc"] = "", ["ValidateIterResult"] = "result[i] != Helpers.InterleavingXorEvenOdd(firstOp, secondOp, thirdOp)[i]", ["GetIterResult"] = "Helpers.InterleavingXorEvenOdd(first, second, third)[i]"}),