Open
Description
namespace System.Runtime.Intrinsics.Arm;
/// VectorT Summary
public abstract partial class SveFp16 : AdvSimd /// Feature: FEAT_FP16
{
public static unsafe Vector<half> Abs(Vector<half> value); // FABS // predicated, MOVPRFX
public static unsafe Vector<half> AbsoluteCompareGreaterThan(Vector<half> left, Vector<half> right); // FACGT // predicated
public static unsafe Vector<half> AbsoluteCompareGreaterThanOrEqual(Vector<half> left, Vector<half> right); // FACGE // predicated
public static unsafe Vector<half> AbsoluteCompareLessThan(Vector<half> left, Vector<half> right); // FACGT // predicated
public static unsafe Vector<half> AbsoluteCompareLessThanOrEqual(Vector<half> left, Vector<half> right); // FACGE // predicated
public static unsafe Vector<half> AbsoluteDifference(Vector<half> left, Vector<half> right); // FABD // predicated, MOVPRFX
public static unsafe Vector<half> Add(Vector<half> left, Vector<half> right); // FADD // predicated, MOVPRFX
public static unsafe Vector<half> AddAcross(Vector<half> value); // FADDV // predicated
public static unsafe Vector<half> AddPairwise(Vector<half> left, Vector<half> right); // FADDP // predicated, MOVPRFX
public static unsafe Vector<half> AddRotateComplex(Vector<half> left, Vector<half> right, [ConstantExpected] byte rotation); // FCADD // predicated, MOVPRFX
public static unsafe Vector<half> AddSequentialAcross(Vector<half> initial, Vector<half> value); // FADDA // predicated
public static unsafe Vector<half> CompareEqual(Vector<half> left, Vector<half> right); // FCMEQ // predicated
public static unsafe Vector<half> CompareGreaterThan(Vector<half> left, Vector<half> right); // FCMGT // predicated
public static unsafe Vector<half> CompareGreaterThanOrEqual(Vector<half> left, Vector<half> right); // FCMGE // predicated
public static unsafe Vector<half> CompareLessThan(Vector<half> left, Vector<half> right); // FCMGT // predicated
public static unsafe Vector<half> CompareLessThanOrEqual(Vector<half> left, Vector<half> right); // FCMGE // predicated
public static unsafe Vector<half> CompareNotEqualTo(Vector<half> left, Vector<half> right); // FCMNE // predicated
public static unsafe Vector<half> CompareUnordered(Vector<half> left, Vector<half> right); // FCMUO // predicated
public static unsafe Vector<half> ConcatenateEvenInt128FromTwoInputs(Vector<half> left, Vector<half> right); // UZP1
public static unsafe Vector<half> ConcatenateOddInt128FromTwoInputs(Vector<half> left, Vector<half> right); // UZP2
public static unsafe Vector<half> ConditionalExtractAfterLastActiveElement(Vector<half> mask, Vector<half> defaultValue, Vector<half> data); // CLASTA // MOVPRFX
public static unsafe half ConditionalExtractAfterLastActiveElement(Vector<half> mask, half defaultValues, Vector<half> data); // CLASTA // MOVPRFX
public static unsafe Vector<half> ConditionalExtractAfterLastActiveElementAndReplicate(Vector<half> mask, Vector<half> defaultScalar, Vector<half> data); // CLASTA // MOVPRFX
public static unsafe Vector<half> ConditionalExtractLastActiveElement(Vector<half> mask, Vector<half> defaultValue, Vector<half> data); // CLASTB // MOVPRFX
public static unsafe half ConditionalExtractLastActiveElement(Vector<half> mask, half defaultValues, Vector<half> data); // CLASTB // MOVPRFX
public static unsafe Vector<half> ConditionalExtractLastActiveElementAndReplicate(Vector<half> mask, Vector<half> fallback, Vector<half> data); // CLASTB // MOVPRFX
public static unsafe Vector<half> ConditionalSelect(Vector<half> mask, Vector<half> left, Vector<half> right); // SEL
public static unsafe Vector<double> ConvertToDouble(Vector<half> value); // FCVT // predicated, MOVPRFX
/// T: [half, float], [half, double], [half, short], [half, int], [half, long], [half, ushort], [half, uint], [half, ulong]
public static unsafe Vector<T> ConvertToHalf(Vector<T2> value); // FCVT or SCVTF or UCVTF // predicated, MOVPRFX
public static unsafe Vector<short> ConvertToInt16(Vector<half> value); // FCVTZS // predicated, MOVPRFX
public static unsafe Vector<int> ConvertToInt32(Vector<half> value); // FCVTZS // predicated, MOVPRFX
public static unsafe Vector<long> ConvertToInt64(Vector<half> value); // FCVTZS // predicated, MOVPRFX
public static unsafe Vector<float> ConvertToSingle(Vector<half> value); // FCVT // predicated, MOVPRFX
public static unsafe Vector<ushort> ConvertToUInt16(Vector<half> value); // FCVTZU // predicated, MOVPRFX
public static unsafe Vector<uint> ConvertToUInt32(Vector<half> value); // FCVTZU // predicated, MOVPRFX
public static unsafe Vector<ulong> ConvertToUInt64(Vector<half> value); // FCVTZU // predicated, MOVPRFX
public static unsafe Vector<half> CreateFalseMaskHalf(); // PFALSE
public static unsafe Vector<half> CreateTrueMaskHalf([ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All); // PTRUE
public static unsafe Vector<half> CreateWhileReadAfterWriteMask(half* left, half* right); // WHILERW
public static unsafe Vector<half> CreateWhileWriteAfterReadMask(half* left, half* right); // WHILEWR
public static unsafe Vector<half> Divide(Vector<half> left, Vector<half> right); // FDIV or FDIVR // predicated, MOVPRFX
public static unsafe Vector<half> DownConvertNarrowingUpper(Vector<float> value); // FCVTNT // predicated
public static unsafe Vector<half> DuplicateSelectedScalarToVector(Vector<half> data, [ConstantExpected] byte index); // DUP or TBL
public static unsafe half ExtractAfterLastScalar(Vector<half> value); // LASTA // predicated
public static unsafe Vector<half> ExtractAfterLastVector(Vector<half> value); // LASTA // predicated
public static unsafe half ExtractLastScalar(Vector<half> value); // LASTB // predicated
public static unsafe Vector<half> ExtractLastVector(Vector<half> value); // LASTB // predicated
public static unsafe Vector<half> ExtractVector(Vector<half> upper, Vector<half> lower, [ConstantExpected] byte index); // EXT // MOVPRFX
public static unsafe Vector<half> FloatingPointExponentialAccelerator(Vector<ushort> value); // FEXPA
public static unsafe Vector<half> FusedMultiplyAdd(Vector<half> addend, Vector<half> left, Vector<half> right); // FMLA or FMAD // predicated, MOVPRFX
public static unsafe Vector<half> FusedMultiplyAddBySelectedScalar(Vector<half> addend, Vector<half> left, Vector<half> right, [ConstantExpected] byte rightIndex); // FMLA // MOVPRFX
public static unsafe Vector<half> FusedMultiplyAddNegated(Vector<half> addend, Vector<half> left, Vector<half> right); // FNMLA or FNMAD // predicated, MOVPRFX
public static unsafe Vector<half> FusedMultiplySubtract(Vector<half> minuend, Vector<half> left, Vector<half> right); // FMLS or FMSB // predicated, MOVPRFX
public static unsafe Vector<half> FusedMultiplySubtractBySelectedScalar(Vector<half> minuend, Vector<half> left, Vector<half> right, [ConstantExpected] byte rightIndex); // FMLS // MOVPRFX
public static unsafe Vector<half> FusedMultiplySubtractNegated(Vector<half> minuend, Vector<half> left, Vector<half> right); // FNMLS or FNMSB // predicated, MOVPRFX
public static unsafe ulong GetActiveElementCount(Vector<half> mask, Vector<half> from); // CNTP
public static unsafe Vector<half> InsertIntoShiftedVector(Vector<half> left, half right); // INSR
public static unsafe Vector<half> InterleaveEvenInt128FromTwoInputs(Vector<half> left, Vector<half> right); // TRN1
public static unsafe Vector<half> InterleaveInt128FromHighHalvesOfTwoInputs(Vector<half> left, Vector<half> right); // ZIP2
public static unsafe Vector<half> InterleaveInt128FromLowHalvesOfTwoInputs(Vector<half> left, Vector<half> right); // ZIP1
public static unsafe Vector<half> InterleaveOddInt128FromTwoInputs(Vector<half> left, Vector<half> right); // TRN2
public static unsafe Vector<half> LoadVector(Vector<half> mask, half* address); // LD1H
public static unsafe Vector<half> LoadVector128AndReplicateToVector(Vector<half> mask, half* address); // LD1RQH
public static unsafe Vector<half> LoadVector256AndReplicateToVector(Vector<half> mask, half* address); // LD1ROH
public static unsafe Vector<half> LoadVectorFirstFaulting(Vector<half> mask, half* address); // LDFF1H
public static unsafe Vector<half> LoadVectorNonFaulting(half* address); // LDNF1H // predicated
public static unsafe Vector<half> LoadVectorNonTemporal(Vector<half> mask, half* address); // LDNT1H
public static unsafe (Vector<half>, Vector<half>) LoadVectorx2(Vector<half> mask, half* address); // LD2H
public static unsafe (Vector<half>, Vector<half>, Vector<half>) LoadVectorx3(Vector<half> mask, half* address); // LD3H
public static unsafe (Vector<half>, Vector<half>, Vector<half>, Vector<half>) LoadVectorx4(Vector<half> mask, half* address); // LD4H
public static unsafe Vector<short> Log2(Vector<half> value); // FLOGB // predicated, MOVPRFX
public static unsafe Vector<half> Max(Vector<half> left, Vector<half> right); // FMAX // predicated, MOVPRFX
public static unsafe Vector<half> MaxAcross(Vector<half> value); // FMAXV // predicated
public static unsafe Vector<half> MaxNumber(Vector<half> left, Vector<half> right); // FMAXNM // predicated, MOVPRFX
public static unsafe Vector<half> MaxNumberAcross(Vector<half> value); // FMAXNMV // predicated
public static unsafe Vector<half> MaxNumberPairwise(Vector<half> left, Vector<half> right); // FMAXNMP // predicated, MOVPRFX
public static unsafe Vector<half> MaxPairwise(Vector<half> left, Vector<half> right); // FMAXP // predicated, MOVPRFX
public static unsafe Vector<half> Min(Vector<half> left, Vector<half> right); // FMIN // predicated, MOVPRFX
public static unsafe Vector<half> MinAcross(Vector<half> value); // FMINV // predicated
public static unsafe Vector<half> MinNumber(Vector<half> left, Vector<half> right); // FMINNM // predicated, MOVPRFX
public static unsafe Vector<half> MinNumberAcross(Vector<half> value); // FMINNMV // predicated
public static unsafe Vector<half> MinNumberPairwise(Vector<half> left, Vector<half> right); // FMINNMP // predicated, MOVPRFX
public static unsafe Vector<half> MinPairwise(Vector<half> left, Vector<half> right); // FMINP // predicated, MOVPRFX
public static unsafe Vector<half> Multiply(Vector<half> left, Vector<half> right); // FMUL // predicated, MOVPRFX
public static unsafe Vector<half> MultiplyAddRotateComplex(Vector<half> addend, Vector<half> left, Vector<half> right, [ConstantExpected] byte rotation); // FCMLA // predicated, MOVPRFX
public static unsafe Vector<half> MultiplyAddRotateComplexBySelectedScalar(Vector<half> addend, Vector<half> left, Vector<half> right, [ConstantExpected] byte rightIndex, [ConstantExpected] byte rotation); // FCMLA // MOVPRFX
public static unsafe Vector<float> MultiplyAddWideningLower(Vector<float> op1, Vector<half> op2, Vector<half> op3); // FMLALB // MOVPRFX
public static unsafe Vector<float> MultiplyAddWideningLower(Vector<float> op1, Vector<half> op2, Vector<half> op3, ulong imm_index); // FMLALB // MOVPRFX
public static unsafe Vector<float> MultiplyAddWideningUpper(Vector<float> op1, Vector<half> op2, Vector<half> op3); // FMLALT // MOVPRFX
public static unsafe Vector<float> MultiplyAddWideningUpper(Vector<float> op1, Vector<half> op2, Vector<half> op3, ulong imm_index); // FMLALT // MOVPRFX
public static unsafe Vector<half> MultiplyBySelectedScalar(Vector<half> left, Vector<half> right, [ConstantExpected] byte rightIndex); // FMUL
public static unsafe Vector<half> MultiplyExtended(Vector<half> left, Vector<half> right); // FMULX // predicated, MOVPRFX
public static unsafe Vector<float> MultiplySubtractWideningLower(Vector<float> op1, Vector<half> op2, Vector<half> op3); // FMLSLB // MOVPRFX
public static unsafe Vector<float> MultiplySubtractWideningLower(Vector<float> op1, Vector<half> op2, Vector<half> op3, ulong imm_index); // FMLSLB // MOVPRFX
public static unsafe Vector<float> MultiplySubtractWideningUpper(Vector<float> op1, Vector<half> op2, Vector<half> op3); // FMLSLT // MOVPRFX
public static unsafe Vector<float> MultiplySubtractWideningUpper(Vector<float> op1, Vector<half> op2, Vector<half> op3, ulong imm_index); // FMLSLT // MOVPRFX
public static unsafe Vector<half> Negate(Vector<half> value); // FNEG // predicated, MOVPRFX
public static unsafe Vector<ushort> PopCount(Vector<half> value); // CNT // predicated, MOVPRFX
public static unsafe Vector<half> ReciprocalEstimate(Vector<half> value); // FRECPE
public static unsafe Vector<half> ReciprocalExponent(Vector<half> value); // FRECPX // predicated, MOVPRFX
public static unsafe Vector<half> ReciprocalSqrtEstimate(Vector<half> value); // FRSQRTE
public static unsafe Vector<half> ReciprocalSqrtStep(Vector<half> left, Vector<half> right); // FRSQRTS
public static unsafe Vector<half> ReciprocalStep(Vector<half> left, Vector<half> right); // FRECPS
public static unsafe Vector<half> ReverseElement(Vector<half> value); // REV
public static unsafe Vector<half> RoundAwayFromZero(Vector<half> value); // FRINTA // predicated, MOVPRFX
public static unsafe Vector<half> RoundToNearest(Vector<half> value); // FRINTN // predicated, MOVPRFX
public static unsafe Vector<half> RoundToNegativeInfinity(Vector<half> value); // FRINTM // predicated, MOVPRFX
public static unsafe Vector<half> RoundToPositiveInfinity(Vector<half> value); // FRINTP // predicated, MOVPRFX
public static unsafe Vector<half> RoundToZero(Vector<half> value); // FRINTZ // predicated, MOVPRFX
public static unsafe Vector<half> Scale(Vector<half> left, Vector<short> right); // FSCALE // predicated, MOVPRFX
public static unsafe Vector<half> Splice(Vector<half> mask, Vector<half> left, Vector<half> right); // SPLICE // MOVPRFX
public static unsafe Vector<half> Sqrt(Vector<half> value); // FSQRT // predicated, MOVPRFX
public static unsafe void Store(Vector<half> mask, half* address, Vector<half> data); // ST1H
public static unsafe void Store(Vector<half> mask, half* address, (Vector<half> Value1, Vector<half> Value2) data); // ST2H
public static unsafe void Store(Vector<half> mask, half* address, (Vector<half> Value1, Vector<half> Value2, Vector<half> Value3) data); // ST3H
public static unsafe void Store(Vector<half> mask, half* address, (Vector<half> Value1, Vector<half> Value2, Vector<half> Value3, Vector<half> Value4) data); // ST4H
public static unsafe void StoreNonTemporal(Vector<half> mask, half* address, Vector<half> data); // STNT1H
public static unsafe Vector<half> Subtract(Vector<half> left, Vector<half> right); // FSUB or FSUBR // predicated, MOVPRFX
public static unsafe Vector<half> TransposeEven(Vector<half> left, Vector<half> right); // TRN1
public static unsafe Vector<half> TransposeOdd(Vector<half> left, Vector<half> right); // TRN2
public static unsafe Vector<half> TrigonometricMultiplyAddCoefficient(Vector<half> left, Vector<half> right, [ConstantExpected] byte control); // FTMAD // MOVPRFX
public static unsafe Vector<half> TrigonometricSelectCoefficient(Vector<half> value, Vector<ushort> selector); // FTSSEL
public static unsafe Vector<half> TrigonometricStartingValue(Vector<half> value, Vector<ushort> sign); // FTSMUL
public static unsafe Vector<half> UnzipEven(Vector<half> left, Vector<half> right); // UZP1
public static unsafe Vector<half> UnzipOdd(Vector<half> left, Vector<half> right); // UZP2
public static unsafe Vector<float> UpConvertWideningUpper(Vector<half> value); // FCVTLT // predicated
public static unsafe Vector<half> VectorTableLookup(Vector<half> data, Vector<ushort> indices); // TBL
public static unsafe Vector<half> VectorTableLookup((Vector<half> data1, Vector<half> data2), Vector<ushort> indices); // TBL
public static unsafe Vector<half> VectorTableLookupExtension(Vector<half> fallback, Vector<half> data, Vector<ushort> indices); // TBX
public static unsafe Vector<half> ZipHigh(Vector<half> left, Vector<half> right); // ZIP2
public static unsafe Vector<half> ZipLow(Vector<half> left, Vector<half> right); // ZIP1
// All patterns used by PTRUE.
public enum SveMaskPattern : byte
{
LargestPowerOf2 = 0, // The largest power of 2.
VectorCount1 = 1, // 1 element.
VectorCount2 = 2, // 2 elements.
VectorCount3 = 3, // 3 elements.
VectorCount4 = 4, // 4 elements.
VectorCount5 = 5, // 5 elements.
VectorCount6 = 6, // 6 elements.
VectorCount7 = 7, // 7 elements.
VectorCount8 = 8, // 8 elements.
VectorCount16 = 9, // 16 elements.
VectorCount32 = 10, // 32 elements.
VectorCount64 = 11, // 64 elements.
VectorCount128 = 12, // 128 elements.
VectorCount256 = 13, // 256 elements.
LargestMultipleOf4 = 29, // The largest multiple of 4.
LargestMultipleOf3 = 30, // The largest multiple of 3.
All = 31 // All available (implicitly a multiple of two).
};
/// total method signatures: 131
/// Optional Entries:
public static unsafe Vector<half> AbsoluteCompareGreaterThan(Vector<half> left, half right); // FACGT // predicated
public static unsafe Vector<half> AbsoluteCompareGreaterThanOrEqual(Vector<half> left, half right); // FACGE // predicated
public static unsafe Vector<half> AbsoluteCompareLessThan(Vector<half> left, half right); // FACGT // predicated
public static unsafe Vector<half> AbsoluteCompareLessThanOrEqual(Vector<half> left, half right); // FACGE // predicated
public static unsafe Vector<half> AbsoluteDifference(Vector<half> left, half right); // FABD // predicated, MOVPRFX
public static unsafe Vector<half> Add(Vector<half> left, half right); // FADD or FSUB // predicated, MOVPRFX
public static unsafe Vector<half> CompareEqual(Vector<half> left, half right); // FCMEQ // predicated
public static unsafe Vector<half> CompareGreaterThan(Vector<half> left, half right); // FCMGT // predicated
public static unsafe Vector<half> CompareGreaterThanOrEqual(Vector<half> left, half right); // FCMGE // predicated
public static unsafe Vector<half> CompareLessThan(Vector<half> left, half right); // FCMLT or FCMGT // predicated
public static unsafe Vector<half> CompareLessThanOrEqual(Vector<half> left, half right); // FCMLE or FCMGE // predicated
public static unsafe Vector<half> CompareNotEqualTo(Vector<half> left, half right); // FCMNE // predicated
public static unsafe Vector<half> CompareUnordered(Vector<half> left, half right); // FCMUO // predicated
public static unsafe half ConditionalExtractAfterLastActiveElement(Vector<half> mask, half defaultValue, Vector<half> data); // CLASTA
public static unsafe half ConditionalExtractAfterLastActiveElementAndReplicate(Vector<half> mask, half defaultScalar, Vector<half> data); // CLASTA
public static unsafe half ConditionalExtractLastActiveElement(Vector<half> mask, half defaultValue, Vector<half> data); // CLASTB
public static unsafe half ConditionalExtractLastActiveElementAndReplicate(Vector<half> mask, half fallback, Vector<half> data); // CLASTB
public static unsafe Vector<half> Divide(Vector<half> left, half right); // FDIV or FDIVR // predicated, MOVPRFX
public static unsafe Vector<half> Max(Vector<half> left, half right); // FMAX // predicated, MOVPRFX
public static unsafe Vector<half> MaxNumber(Vector<half> left, half right); // FMAXNM // predicated, MOVPRFX
public static unsafe Vector<half> Min(Vector<half> left, half right); // FMIN // predicated, MOVPRFX
public static unsafe Vector<half> MinNumber(Vector<half> left, half right); // FMINNM // predicated, MOVPRFX
public static unsafe Vector<half> Multiply(Vector<half> left, half right); // FMUL // predicated, MOVPRFX
public static unsafe Vector<half> MultiplyAdd(Vector<half> addend, Vector<half> left, half right); // FMLA or FMAD // predicated, MOVPRFX
public static unsafe Vector<half> MultiplyAddNegated(Vector<half> addend, Vector<half> left, half right); // FNMLA or FNMAD // predicated, MOVPRFX
public static unsafe Vector<float> MultiplyAddWideningLower(Vector<float> op1, Vector<half> op2, half op3); // FMLALB // MOVPRFX
public static unsafe Vector<float> MultiplyAddWideningUpper(Vector<float> op1, Vector<half> op2, half op3); // FMLALT // MOVPRFX
public static unsafe Vector<half> MultiplyExtended(Vector<half> left, half right); // FMULX // predicated, MOVPRFX
public static unsafe Vector<half> MultiplySubtract(Vector<half> minuend, Vector<half> left, half right); // FMLS or FMSB // predicated, MOVPRFX
public static unsafe Vector<half> MultiplySubtractNegated(Vector<half> minuend, Vector<half> left, half right); // FNMLS or FNMSB // predicated, MOVPRFX
public static unsafe Vector<float> MultiplySubtractWideningLower(Vector<float> op1, Vector<half> op2, half op3); // FMLSLB // MOVPRFX
public static unsafe Vector<float> MultiplySubtractWideningUpper(Vector<float> op1, Vector<half> op2, half op3); // FMLSLT // MOVPRFX
public static unsafe Vector<half> Subtract(Vector<half> left, half right); // FSUB or FADD or FSUBR // predicated, MOVPRFX
/// total optional method signatures: 33
}