namespaceSystem.Runtime.Intrinsics.Arm{publicabstractpartialclassArmBase{publicabstractpartialclassArm64{publicstaticintLeadingSignCount(nintvalue);}publicstaticintLeadingZeroCount(nintvalue);publicstaticintLeadingZeroCount(nuintvalue);publicstaticnintReverseElementBits(nintvalue);publicstaticnuintReverseElementBits(nuintvalue)}publicabstractpartialclassAdvSimd{publicabstractpartialclassArm64{publicstaticVector128<nint>AddPairwise(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>AddPairwise(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>AddSaturate(Vector64<nint>left,Vector64<nuint>right);publicstaticVector64<nuint>AddSaturate(Vector64<nuint>left,Vector64<nint>right);publicstaticVector128<nint>AddSaturate(Vector128<nint>left,Vector128<nuint>right);publicstaticVector128<nuint>AddSaturate(Vector128<nuint>left,Vector128<nint>right);publicstaticVector64<nint>InsertSelectedScalar(Vector64<nint>result,byteresultIndex,Vector64<nint>value,bytevalueIndex);publicstaticVector64<nuint>InsertSelectedScalar(Vector64<nuint>result,byteresultIndex,Vector64<nuint>value,bytevalueIndex);publicstaticVector128<nint>InsertSelectedScalar(Vector128<nint>result,byteresultIndex,Vector128<nint>value,bytevalueIndex);publicstaticVector128<nuint>InsertSelectedScalar(Vector128<nuint>result,byteresultIndex,Vector128<nuint>value,bytevalueIndex);publicstaticunsafevoidStorePair(nint*address,Vector64<nint>value1,Vector64<nint>value2);publicstaticunsafevoidStorePair(nuint*address,Vector64<nuint>value1,Vector64<nuint>value2);publicstaticunsafevoidStorePair(nint*address,Vector128<nint>value1,Vector128<nint>value2);publicstaticunsafevoidStorePair(nuint*address,Vector128<nuint>value1,Vector128<nuint>value2);publicstaticunsafevoidStorePairNonTemporal(nint*address,Vector64<nint>value1,Vector64<nint>value2);publicstaticunsafevoidStorePairNonTemporal(nuint*address,Vector64<nuint>value1,Vector64<nuint>value2);publicstaticunsafevoidStorePairNonTemporal(nint*address,Vector128<nint>value1,Vector128<nint>value2);publicstaticunsafevoidStorePairNonTemporal(nuint*address,Vector128<nuint>value1,Vector128<nuint>value2);publicstaticVector64<nint>TransposeEven(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>TransposeEven(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>TransposeEven(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>TransposeEven(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>TransposeOdd(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>TransposeOdd(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>TransposeOdd(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>TransposeOdd(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>UnzipEven(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>UnzipEven(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>UnzipEven(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>UnzipEven(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>UnzipOdd(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>UnzipOdd(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>UnzipOdd(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>UnzipOdd(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>ZipHigh(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>ZipHigh(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>ZipHigh(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>ZipHigh(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>ZipLow(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>ZipLow(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>ZipLow(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>ZipLow(Vector128<nuint>left,Vector128<nuint>right);}publicstaticVector64<nuint>Abs(Vector64<nint>value);publicstaticVector128<nuint>Abs(Vector128<nint>value);publicstaticVector64<nint>AbsSaturate(Vector64<nint>value);publicstaticVector128<nint>AbsSaturate(Vector128<nint>value);publicstaticVector64<nint>Add(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>Add(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>Add(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>Add(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>AddPairwiseScalar(Vector128<nint>value);publicstaticVector64<nuint>AddPairwiseScalar(Vector128<nuint>value);publicstaticVector64<nint>AddSaturate(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>AddSaturate(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>AddSaturate(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>AddSaturate(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>And(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>And(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>And(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>And(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>BitwiseClear(Vector64<nint>value,Vector64<nint>mask);publicstaticVector64<nuint>BitwiseClear(Vector64<nuint>value,Vector64<nuint>mask);publicstaticVector128<nint>BitwiseClear(Vector128<nint>value,Vector128<nint>mask);publicstaticVector128<nuint>BitwiseClear(Vector128<nuint>value,Vector128<nuint>mask);publicstaticVector64<nint>BitwiseSelect(Vector64<nint>select,Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>BitwiseSelect(Vector64<nuint>select,Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>BitwiseSelect(Vector128<nint>select,Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>BitwiseSelect(Vector128<nuint>select,Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>CompareEqual(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>CompareEqual(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>CompareEqual(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>CompareEqual(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>CompareGreaterThan(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>CompareGreaterThan(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>CompareGreaterThan(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>CompareGreaterThan(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>CompareGreaterThanOrEqual(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>CompareGreaterThanOrEqual(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>CompareGreaterThanOrEqual(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>CompareGreaterThanOrEqual(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>CompareLessThan(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>CompareLessThan(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>CompareLessThan(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>CompareLessThan(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>CompareLessThanOrEqual(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>CompareLessThanOrEqual(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>CompareLessThanOrEqual(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>CompareLessThanOrEqual(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>CompareTest(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>CompareTest(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>CompareTest(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>CompareTest(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>DuplicateSelectedScalarToVector64(Vector128<nint>value,byteindex);publicstaticVector64<nuint>DuplicateSelectedScalarToVector64(Vector128<nuint>value,byteindex);publicstaticVector128<nint>DuplicateSelectedScalarToVector128(Vector128<nint>value,byteindex);publicstaticVector128<nuint>DuplicateSelectedScalarToVector128(Vector128<nuint>value,byteindex);publicstaticVector64<nint>DuplicateToVector64(nintvalue);publicstaticVector64<nuint>DuplicateToVector64(nuintvalue);publicstaticVector128<nint>DuplicateToVector128(nintvalue);publicstaticVector128<nuint>DuplicateToVector128(nuintvalue);publicstaticnintExtract(Vector64<nint>vector,byteindex);publicstaticnuintExtract(Vector64<nuint>vector,byteindex);publicstaticnintExtract(Vector128<nint>vector,byteindex);publicstaticnuintExtract(Vector128<nuint>vector,byteindex);publicstaticVector64<nint>ExtractVector64(Vector64<nint>upper,Vector64<nint>lower,byteindex);publicstaticVector64<nuint>ExtractVector64(Vector64<nuint>upper,Vector64<nuint>lower,byteindex);publicstaticVector128<nint>ExtractVector128(Vector128<nint>upper,Vector128<nint>lower,byteindex);publicstaticVector128<nuint>ExtractVector128(Vector128<nuint>upper,Vector128<nuint>lower,byteindex);publicstaticVector64<nint>Insert(Vector64<nint>vector,byteindex,nintdata);publicstaticVector64<nuint>Insert(Vector64<nuint>vector,byteindex,nuintdata);publicstaticVector128<nint>Insert(Vector128<nint>vector,byteindex,nintdata);publicstaticVector128<nuint>Insert(Vector128<nuint>vector,byteindex,nuintdata);publicstaticunsafeVector64<nint>LoadAndInsertScalar(Vector64<nint>value,byteindex,nint*address);publicstaticunsafeVector64<nuint>LoadAndInsertScalar(Vector64<nuint>value,byteindex,nuint*address);publicstaticunsafeVector128<nint>LoadAndInsertScalar(Vector128<nint>value,byteindex,nint*address);publicstaticunsafeVector128<nuint>LoadAndInsertScalar(Vector128<nuint>value,byteindex,nuint*address);publicstaticunsafeVector64<nint>LoadAndReplicateToVector64(nint*address);publicstaticunsafeVector64<nuint>LoadAndReplicateToVector64(nuint*address);publicstaticunsafeVector128<nint>LoadAndReplicateToVector128(nint*address);publicstaticunsafeVector128<nuint>LoadAndReplicateToVector128(nuint*address);publicstaticunsafeVector64<nint>LoadVector64(nint*address);publicstaticunsafeVector64<nuint>LoadVector64(nuint*address);publicstaticunsafeVector128<nint>LoadVector128(nint*address);publicstaticunsafeVector128<nuint>LoadVector128(nuint*address);publicstaticVector64<nint>Negate(Vector64<nint>value);publicstaticVector128<nint>Negate(Vector128<nint>value);publicstaticVector64<nint>NegateSaturate(Vector64<nint>value);publicstaticVector128<nint>NegateSaturate(Vector128<nint>value);publicstaticVector64<nint>Not(Vector64<nint>value);publicstaticVector64<nuint>Not(Vector64<nuint>value);publicstaticVector128<nint>Not(Vector128<nint>value);publicstaticVector128<nuint>Not(Vector128<nuint>value);publicstaticVector64<nint>Or(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>Or(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>Or(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>Or(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>OrNot(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>OrNot(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>OrNot(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>OrNot(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>ReverseElement8(Vector64<nint>value);publicstaticVector64<nuint>ReverseElement8(Vector64<nuint>value);publicstaticVector128<nint>ReverseElement8(Vector128<nint>value);publicstaticVector128<nuint>ReverseElement8(Vector128<nuint>value);publicstaticVector64<nint>ReverseElement16(Vector64<nint>value);publicstaticVector64<nuint>ReverseElement16(Vector64<nuint>value);publicstaticVector128<nint>ReverseElement16(Vector128<nint>value);publicstaticVector128<nuint>ReverseElement16(Vector128<nuint>value);publicstaticVector64<nint>ReverseElement32(Vector64<nint>value);publicstaticVector64<nuint>ReverseElement32(Vector64<nuint>value);publicstaticVector128<nint>ReverseElement32(Vector128<nint>value);publicstaticVector128<nuint>ReverseElement32(Vector128<nuint>value);publicstaticVector64<nint>ShiftArithmetic(Vector64<nint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftArithmetic(Vector128<nint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftArithmeticRounded(Vector64<nint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftArithmeticRounded(Vector128<nint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftArithmeticRoundedSaturate(Vector64<nint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftArithmeticRoundedSaturate(Vector128<nint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftArithmeticSaturate(Vector64<nint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftArithmeticSaturate(Vector128<nint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftLeftAndInsert(Vector64<nint>left,Vector64<nint>right,byteshift);publicstaticVector64<nuint>ShiftLeftAndInsert(Vector64<nuint>left,Vector64<nuint>right,byteshift);publicstaticVector128<nint>ShiftLeftAndInsert(Vector128<nint>left,Vector128<nint>right,byteshift);publicstaticVector128<nuint>ShiftLeftAndInsert(Vector128<nuint>left,Vector128<nuint>right,byteshift);publicstaticVector64<nint>ShiftLeftLogical(Vector64<nint>value,bytecount);publicstaticVector64<nuint>ShiftLeftLogical(Vector64<nuint>value,bytecount);publicstaticVector128<nint>ShiftLeftLogical(Vector128<nint>value,bytecount);publicstaticVector128<nuint>ShiftLeftLogical(Vector128<nuint>value,bytecount);publicstaticVector64<nint>ShiftLeftLogicalSaturate(Vector64<nint>value,bytecount);publicstaticVector64<nuint>ShiftLeftLogicalSaturate(Vector64<nuint>value,bytecount);publicstaticVector128<nint>ShiftLeftLogicalSaturate(Vector128<nint>value,bytecount);publicstaticVector128<nuint>ShiftLeftLogicalSaturate(Vector128<nuint>value,bytecount);publicstaticVector64<nuint>ShiftLeftLogicalSaturateUnsigned(Vector64<nint>value,bytecount);publicstaticVector128<nuint>ShiftLeftLogicalSaturateUnsigned(Vector128<nint>value,bytecount);publicstaticVector64<nint>ShiftLogical(Vector64<nint>value,Vector64<nint>count);publicstaticVector64<nuint>ShiftLogical(Vector64<nuint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftLogical(Vector128<nint>value,Vector128<nint>count);publicstaticVector128<nuint>ShiftLogical(Vector128<nuint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftLogicalRounded(Vector64<nint>value,Vector64<nint>count);publicstaticVector64<nuint>ShiftLogicalRounded(Vector64<nuint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftLogicalRounded(Vector128<nint>value,Vector128<nint>count);publicstaticVector128<nuint>ShiftLogicalRounded(Vector128<nuint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftLogicalRoundedSaturate(Vector64<nint>value,Vector64<nint>count);publicstaticVector64<nuint>ShiftLogicalRoundedSaturate(Vector64<nuint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftLogicalRoundedSaturate(Vector128<nint>value,Vector128<nint>count);publicstaticVector128<nuint>ShiftLogicalRoundedSaturate(Vector128<nuint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftLogicalSaturate(Vector64<nint>value,Vector64<nint>count);publicstaticVector64<nuint>ShiftLogicalSaturate(Vector64<nuint>value,Vector64<nint>count);publicstaticVector128<nint>ShiftLogicalSaturate(Vector128<nint>value,Vector128<nint>count);publicstaticVector128<nuint>ShiftLogicalSaturate(Vector128<nuint>value,Vector128<nint>count);publicstaticVector64<nint>ShiftRightAndInsert(Vector64<nint>left,Vector64<nint>right,byteshift);publicstaticVector64<nuint>ShiftRightAndInsert(Vector64<nuint>left,Vector64<nuint>right,byteshift);publicstaticVector128<nint>ShiftRightAndInsert(Vector128<nint>left,Vector128<nint>right,byteshift);publicstaticVector128<nuint>ShiftRightAndInsert(Vector128<nuint>left,Vector128<nuint>right,byteshift);publicstaticVector64<nint>ShiftRightArithmetic(Vector64<nint>value,bytecount);publicstaticVector128<nint>ShiftRightArithmetic(Vector128<nint>value,bytecount);publicstaticVector64<nint>ShiftRightArithmeticAdd(Vector64<nint>addend,Vector64<nint>value,bytecount);publicstaticVector128<nint>ShiftRightArithmeticAdd(Vector128<nint>addend,Vector128<nint>value,bytecount);publicstaticVector64<nint>ShiftRightArithmeticRounded(Vector64<nint>value,bytecount);publicstaticVector128<nint>ShiftRightArithmeticRounded(Vector128<nint>value,bytecount);publicstaticVector64<nint>ShiftRightArithmeticRoundedAdd(Vector64<nint>addend,Vector64<nint>value,bytecount);publicstaticVector128<nint>ShiftRightArithmeticRoundedAdd(Vector128<nint>addend,Vector128<nint>value,bytecount);publicstaticVector64<nint>ShiftRightLogical(Vector64<nint>value,bytecount);publicstaticVector64<nuint>ShiftRightLogical(Vector64<nuint>value,bytecount);publicstaticVector128<nint>ShiftRightLogical(Vector128<nint>value,bytecount);publicstaticVector128<nuint>ShiftRightLogical(Vector128<nuint>value,bytecount);publicstaticVector64<nint>ShiftRightLogicalAdd(Vector64<nint>addend,Vector64<nint>value,bytecount);publicstaticVector64<nuint>ShiftRightLogicalAdd(Vector64<nuint>addend,Vector64<nuint>value,bytecount);publicstaticVector128<nint>ShiftRightLogicalAdd(Vector128<nint>addend,Vector128<nint>value,bytecount);publicstaticVector128<nuint>ShiftRightLogicalAdd(Vector128<nuint>addend,Vector128<nuint>value,bytecount);publicstaticVector64<nint>ShiftRightLogicalRounded(Vector64<nint>value,bytecount);publicstaticVector64<nuint>ShiftRightLogicalRounded(Vector64<nuint>value,bytecount);publicstaticVector128<nint>ShiftRightLogicalRounded(Vector128<nint>value,bytecount);publicstaticVector128<nuint>ShiftRightLogicalRounded(Vector128<nuint>value,bytecount);publicstaticVector64<nint>ShiftRightLogicalRoundedAddScalar(Vector64<nint>addend,Vector64<nint>value,bytecount);publicstaticVector64<nuint>ShiftRightLogicalRoundedAddScalar(Vector64<nuint>addend,Vector64<nuint>value,bytecount);publicstaticVector128<nint>ShiftRightLogicalRoundedAdd(Vector128<nint>addend,Vector128<nint>value,bytecount);publicstaticVector128<nuint>ShiftRightLogicalRoundedAdd(Vector128<nuint>addend,Vector128<nuint>value,bytecount);publicstaticunsafevoidStore(nint*address,Vector64<nint>source);publicstaticunsafevoidStore(nuint*address,Vector64<nuint>source);publicstaticunsafevoidStore(nint*address,Vector128<nint>source);publicstaticunsafevoidStore(nuint*address,Vector128<nuint>source);publicstaticunsafevoidStoreSelectedScalar(nint*address,Vector128<nint>value,byteindex);publicstaticunsafevoidStoreSelectedScalar(nuint*address,Vector128<nuint>value,byteindex);publicstaticunsafevoidStoreSelectedScalar(nint*address,Vector128<nint>value,byteindex);publicstaticunsafevoidStoreSelectedScalar(nuint*address,Vector128<nuint>value,byteindex);publicstaticVector64<nint>Subtract(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>Subtract(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>Subtract(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>Subtract(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>SubtractSaturate(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>SubtractSaturate(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>SubtractSaturate(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>SubtractSaturate(Vector128<nuint>left,Vector128<nuint>right);publicstaticVector64<nint>Xor(Vector64<nint>left,Vector64<nint>right);publicstaticVector64<nuint>Xor(Vector64<nuint>left,Vector64<nuint>right);publicstaticVector128<nint>Xor(Vector128<nint>left,Vector128<nint>right);publicstaticVector128<nuint>Xor(Vector128<nuint>left,Vector128<nuint>right);}publicabstractpartialclassCrc32{publicstaticuintComputeCrc32(uintcrc,nuintdata);publicstaticuintComputeCrc32C(uintcrc,nuintdata);}
Proposal
Extend ISAs in
System.Runtime.Intrinsics.Armto supportnintandnuintas valid primitive types. This will expose a number of new APIs to take the new types. Several of these APIs exist inBasevsBase.AdvSimdsplits. Others represent cases where eitherintorlongare possible inputs today.