-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[API Proposal]: LoongArch64: add Intrinsics' API for LoongArch64 #94445
Comments
The Plans for discussion: Then, some quite different hardware instructions with other CPUs. |
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics Issue DetailsBackground and motivationNow the GCC had merged the LoongArch's SIMD. https://github.com/shushanhf/gcc/blob/master/gcc/config/loongarch/lasxintrin.h Also the LLVM is merging the LoongArch's SIMD. I think it's time to add the LoongArch's SIMD for CoreCLR. API Proposalnamespace System.Runtime.Intrinsics.LoongArch
{
/// <summary>
/// This class provides access to the LA64 base hardware instructions via intrinsics
/// </summary>
[Intrinsic]
[CLSCompliant(false)]
public abstract class LABase
{
internal LABase() { }
public static bool IsSupported { get => IsSupported; }
[Intrinsic]
public abstract class LoongArch64
{
// Some APIs for LoongArch64.
}
// Some APIs for LoongArch32/64 shared.
}
} I will upload these APIs later classified by different types. API Usage if (LABase.IsSupported)
{
return LABase.TrailingZeroCount(value);
} Alternative DesignsNo response RisksNo response
|
liking public abstract class LoongArchBase
|
Where is the spec for the LA64 SIMD ISA? Based on https://loongson.github.io/LoongArch-Documentation/README-EN.html, it looks like it should be |
Click to expand 'public abstract class LoongArchBase'namespace System.Runtime.Intrinsics.LoongArch;
public abstract class LoongArchBase
{
internal LoongArchBase() { }
public static bool IsSupported { get => IsSupported; }
[Intrinsic]
public abstract class LoongArch64
{
internal LoongArch64() { }
public static bool IsSupported { get => IsSupported; }
/// <summary>
/// LA64: CLO.W rd, rj
/// </summary>
public static int LeadingSignCount(int value) => LeadingSignCount(value);
/// <summary>
/// LA64: CLO.W rd, rj
/// </summary>
public static int LeadingSignCount(uint value) => LeadingSignCount(value);
/// <summary>
/// LA64: CLO.D rd, rj
/// </summary>
public static int LeadingSignCount(long value) => LeadingSignCount(value);
/// <summary>
/// LA64: CLO.D rd, rj
/// </summary>
public static int LeadingSignCount(ulong value) => LeadingSignCount(value);
/// <summary>
/// LA64: CLZ.W rd, rj
/// </summary>
public static int LeadingZeroCount(int value) => LeadingZeroCount(value);
/// <summary>
/// LA64: CLZ.W rd, rj
/// </summary>
public static int LeadingZeroCount(uint value) => LeadingZeroCount(value);
/// <summary>
/// LA64: CLZ.D rd, rj
/// </summary>
public static int LeadingZeroCount(long value) => LeadingZeroCount(value);
/// <summary>
/// LA64: CLZ.D rd, rj
/// </summary>
public static int LeadingZeroCount(ulong value) => LeadingZeroCount(value);
/// <summary>
/// LA64: CTO.W rd, rj
/// </summary>
public static int TrailingOneCount(int value) => TrailingOneCount(value);
/// <summary>
/// LA64: CTO.W rd, rj
/// </summary>
public static int TrailingOneCount(uint value) => TrailingOneCount(value);
/// <summary>
/// LA64: CTO.D rd, rj
/// </summary>
public static int TrailingOneCount(long value) => TrailingOneCount(value);
/// <summary>
/// LA64: CTO.D rd, rj
/// </summary>
public static int TrailingOneCount(ulong value) => TrailingOneCount(value);
/// <summary>
/// LA64: CTZ.W rd, rj
/// </summary>
public static int TrailingZeroCount(int value) => TrailingZeroCount(value);
/// <summary>
/// LA64: CTZ.W rd, rj
/// </summary>
public static int TrailingZeroCount(uint value) => TrailingZeroCount(value);
/// <summary>
/// LA64: CTZ.D rd, rj
/// </summary>
public static int TrailingZeroCount(long value) => TrailingZeroCount(value);
/// <summary>
/// LA64: CTZ.D rd, rj
/// </summary>
public static int TrailingZeroCount(ulong value) => TrailingZeroCount(value);
/// <summary>
/// LA64: MULH.D rd, rj, rk
/// </summary>
public static long MultiplyHigh(long left, long right) => MultiplyHigh(left, right);
/// <summary>
/// LA64: MULH.DU rd, rj, rk
/// </summary>
public static ulong MultiplyHigh(ulong left, ulong right) => MultiplyHigh(left, right);
/// <summary>
/// LA64: BITREV.D rd, rj
/// </summary>
public static long ReverseElementBits(long value) => ReverseElementBits(value);
/// <summary>
/// LA64: BITREV.D rd, rj
/// </summary>
public static ulong ReverseElementBits(ulong value) => ReverseElementBits(value);
/// <summary>
/// LA64: BITREV.W rd, rj
/// </summary>
public static long ReverseElementBits(int value) => ReverseElementBits(value);
/// <summary>
/// LA64: BITREV.W rd, rj
/// </summary>
public static ulong ReverseElementBits(uint value) => ReverseElementBits(value);
/// <summary>
/// LA64: REVB.2W rd, rj
/// </summary>
public static int ReverseElementBits(int value) => ReverseElementBits(value);
/// <summary>
/// LA64: REVB.2W rd, rj
/// </summary>
public static uint ReverseElementBits(uint value) => ReverseElementBits(value);
/// <summary>
/// LA64: REVB.D rd, rj
/// </summary>
public static long ReverseElementBits(long value) => ReverseElementBits(value);
/// <summary>
/// LA64: REVB.D rd, rj
/// </summary>
public static ulong ReverseElementBits(ulong value) => ReverseElementBits(value);
/// <summary>
/// LA64: FRECIPE.S fd, fj
/// </summary>
public static float ReciprocalEstimate(float value) => ReciprocalEstimate(value);
/// <summary>
/// LA64: FRECIPE.D fd, fj
/// </summary>
public static double ReciprocalEstimate(double value) => ReciprocalEstimate(value);
/// <summary>
/// LA64: FRSQRTE.S fd, fj
/// </summary>
public static float ReciprocalSqrtEstimate(float value) => ReciprocalSqrtEstimate(value);
/// <summary>
/// LA64: FRSQRTE.D fd, fj
/// </summary>
public static double ReciprocalSqrtEstimate(double value) => ReciprocalSqrtEstimate(value);
/// <summary>
/// LA64: CRC.W.B.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckIEEE8023(int crc, byte checks) => CyclicRedundancyCheckIEEE8023(crc, checks);
/// <summary>
/// LA64: CRC.W.H.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckIEEE8023(int crc, ushort checks) => CyclicRedundancyCheckIEEE8023(crc, checks);
/// <summary>
/// LA64: CRC.W.W.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckIEEE8023(int crc, uint checks) => CyclicRedundancyCheckIEEE8023(crc, checks);
/// <summary>
/// LA64: CRC.W.D.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckIEEE8023(int crc, ulong checks) => CyclicRedundancyCheckIEEE8023(crc, checks);
/// <summary>
/// LA64: CRCC.W.B.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckCastagnoli(int crc, byte checks) => CyclicRedundancyCheckCastagnoli(crc, checks);
/// <summary>
/// LA64: CRCC.W.H.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckCastagnoli(int crc, ushort checks) => CyclicRedundancyCheckCastagnoli(crc, checks);
/// <summary>
/// LA64: CRCC.W.W.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckCastagnoli(int crc, uint checks) => CyclicRedundancyCheckCastagnoli(crc, checks);
/// <summary>
/// LA64: CRCC.W.D.W rd, rj, rk
/// </summary>
public static long CyclicRedundancyCheckCastagnoli(int crc, ulong checks) => CyclicRedundancyCheckCastagnoli(crc, checks);
}
/// <summary>
/// LA32/LA64: MULH.W rd, rj, rk
/// </summary>
public static long MultiplyHigh(int left, int right) => MultiplyHigh(left, right);
/// <summary>
/// LA32/LA64: MULH.WU rd, rj, rk
/// </summary>
public static ulong MultiplyHigh(uint left, uint right) => MultiplyHigh(left, right);
/// <summary>
/// LA32/LA64: FSQRT.S fd, fj
/// </summary>
public static float SquareRoot(float value) => SquareRoot(value);
/// <summary>
/// LA32/LA64: FSQRT.D fd, fj
/// </summary>
public static double SquareRoot(double value) => SquareRoot(value);
/// <summary>
/// LA32/LA64: FRECIP.S fd, fj
/// </summary>
public static float Reciprocal(float value) => Reciprocal(value);
/// <summary>
/// LA32/LA64: FRECIP.D fd, fj
/// </summary>
public static double Reciprocal(double value) => Reciprocal(value);
/// <summary>
/// LA32/LA64: FRSQRT.S fd, fj
/// </summary>
public static float ReciprocalSqrt(float value) => ReciprocalSqrt(value);
/// <summary>
/// LA32/LA64: FRSQRT.D fd, fj
/// </summary>
public static double ReciprocalSqrt(double value) => ReciprocalSqrt(value);
/// <summary>
/// LA32/LA64: FLOGB.S fd, fj
/// </summary>
public static float FloatLogarithm2(float value) => FloatLogarithm2(value);
/// <summary>
/// LA32/LA64: FLOGB.D fd, fj
/// </summary>
public static double FloatLogarithm2(double value) => FloatLogarithm2(value);
/// <summary>
/// LA32/LA64: FSCALEB.S fd, fj, fk
/// </summary>
public static float FloatScaleBinary(float value, int index) => FloatScaleBinary(value, index);
/// <summary>
/// LA32/LA64: FSCALEB.D fd, fj, fk
/// </summary>
public static double FloatScaleBinary(double value, long index) => FloatScaleBinary(value, index);
/// <summary>
/// LA32/LA64: FCOPYSIGN.S fd, fj, fk
/// </summary>
public static float FloatCopySign(float value, float sign) => FloatCopySign(value, sign);
/// <summary>
/// LA32/LA64: FCOPYSIGN.D fd, fj, fk
/// </summary>
public static double FloatCopySign(double value, double sign) => FloatCopySign(value, sign);
/// <summary>
/// LA32/LA64: FCLASS.S fd, fj
/// </summary>
public static float FloatClass(float value) => FloatClass(value);
/// <summary>
/// LA32/LA64: FCLASS.S fd, fj
/// </summary>
public static double FloatClass(double value) => FloatClass(value);
} |
Click to expand 'public abstract class Lsx : LoongArchBase'namespace System.Runtime.Intrinsics.LoongArch;
// SIMD-128bits.
public abstract class Lsx : LoongArchBase
{
internal Lsx() { }
public static new bool IsSupported { get => IsSupported; }
public static Vector64<sbyte> Add(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector64<byte> Add(Vector64<byte> left, Vector64<byte> right);
public static Vector64<short> Add(Vector64<short> left, Vector64<short> right);
public static Vector64<ushort> Add(Vector64<ushort> left, Vector64<ushort> right);
public static Vector64<int> Add(Vector64<int> left, Vector64<int> right);
public static Vector64<uint> Add(Vector64<uint> left, Vector64<uint> right);
public static Vector64<long> Add(Vector64<long> left, Vector64<long> right);
public static Vector64<ulong> Add(Vector64<ulong> left, Vector64<ulong> right);
public static Vector64<float> Add(Vector64<float> left, Vector64<float> right);
public static Vector64<double> Add(Vector64<double> left, Vector64<double> right);
public static Vector128<sbyte> Add(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Add(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Add(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Add(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Add(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Add(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Add(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Add(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Add(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Add(Vector128<double> left, Vector128<double> right);
public static Vector64<sbyte> AddSaturate(Vector64<sbyte> left, Vector64<byte> right);
public static Vector64<byte> AddSaturate(Vector64<byte> left, Vector64<sbyte> right);
public static Vector64<short> AddSaturate(Vector64<short> left, Vector64<ushort> right);
public static Vector64<ushort> AddSaturate(Vector64<ushort> left, Vector64<short> right);
public static Vector64<int> AddSaturate(Vector64<int> left, Vector64<uint> right);
public static Vector64<uint> AddSaturate(Vector64<uint> left, Vector64<int> right);
public static Vector64<long> AddSaturate(Vector64<long> left, Vector64<ulong> right);
public static Vector64<ulong> AddSaturate(Vector64<ulong> left, Vector64<long> right);
public static Vector128<sbyte> AddSaturate(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<short> AddSaturate(Vector128<short> left, Vector128<short> right);
public static Vector128<int> AddSaturate(Vector128<int> left, Vector128<int> right);
public static Vector128<long> AddSaturate(Vector128<long> left, Vector128<long> right);
public static Vector128<byte> AddSaturate(Vector128<byte> left, Vector128<byte> right);
public static Vector128<ushort> AddSaturate(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<uint> AddSaturate(Vector128<uint> left, Vector128<uint> right);
public static Vector128<ulong> AddSaturate(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<short> AddOddEvenElementsWidening(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<ushort> AddOddEvenElementsWidening(Vector128<byte> left, Vector128<byte> right);
public static Vector128<int> AddOddEvenElementsWidening(Vector128<short> left, Vector128<short> right);
public static Vector128<uint> AddOddEvenElementsWidening(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<long> AddOddEvenElementsWidening(Vector128<int> left, Vector128<int> right);
public static Vector128<ulong> AddOddEvenElementsWidening(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> AddOddEvenElementsWidening(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> AddOddEvenElementsWidening(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<short> AddEvenElementsWidening(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<ushort> AddEvenElementsWidening(Vector128<byte> left, Vector128<byte> right);
public static Vector128<int> AddEvenElementsWidening(Vector128<short> left, Vector128<short> right);
public static Vector128<uint> AddEvenElementsWidening(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<long> AddEvenElementsWidening(Vector128<int> left, Vector128<int> right);
public static Vector128<ulong> AddEvenElementsWidening(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> AddEvenElementsWidening(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> AddEvenElementsWidening(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<short> AddOddElementsWidening(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<ushort> AddOddElementsWidening(Vector128<byte> left, Vector128<byte> right);
public static Vector128<int> AddOddElementsWidening(Vector128<short> left, Vector128<short> right);
public static Vector128<uint> AddOddElementsWidening(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<long> AddOddElementsWidening(Vector128<int> left, Vector128<int> right);
public static Vector128<ulong> AddOddElementsWidening(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> AddOddElementsWidening(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> AddOddElementsWidening(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<short> AddEvenElementsWidening(Vector128<byte> left, Vector128<sbyte> right);
public static Vector128<int> AddEvenElementsWidening(Vector128<ushort> left, Vector128<short> right);
public static Vector128<long> AddEvenElementsWidening(Vector128<uint> left, Vector128<int> right);
public static Vector128<long> AddEvenElementsWidening(Vector128<ulong> left, Vector128<long> right);
public static Vector128<short> AddOddElementsWidening(Vector128<byte> left, Vector128<sbyte> right);
public static Vector128<int> AddOddElementsWidening(Vector128<ushort> left, Vector128<short> right);
public static Vector128<long> AddOddElementsWidening(Vector128<uint> left, Vector128<int> right);
public static Vector128<long> AddOddElementsWidening(Vector128<ulong> left, Vector128<long> right);
public static Vector128<long> AddHorizontalElements(Vector128<sbyte> value);
public static Vector128<ulong> AddHorizontalElements(Vector128<byte> value);
public static Vector128<long> AddHorizontalElements(Vector128<short> value);
public static Vector128<ulong> AddHorizontalElements(Vector128<ushort> value);
public static Vector128<long> AddHorizontalElements(Vector128<int> value);
public static Vector128<long> AddHorizontalElements(Vector128<uint> value);
public static Vector128<long> AddHorizontalElements(Vector128<long> value);
public static Vector128<ulong> AddHorizontalElements(Vector128<ulong> value);
public static Vector64<float> AddHorizontalElements(Vector128<float> value);
public static Vector64<double> AddHorizontalElements(Vector128<double> value);
public static Vector64<sbyte> Subtract(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector64<byte> Subtract(Vector64<byte> left, Vector64<byte> right);
public static Vector64<short> Subtract(Vector64<short> left, Vector64<short> right);
public static Vector64<ushort> Subtract(Vector64<ushort> left, Vector64<ushort> right);
public static Vector64<int> Subtract(Vector64<int> left, Vector64<int> right);
public static Vector64<uint> Subtract(Vector64<uint> left, Vector64<uint> right);
public static Vector64<long> Subtract(Vector64<long> left, Vector64<long> right);
public static Vector64<ulong> Subtract(Vector64<ulong> left, Vector64<ulong> right);
public static Vector64<float> Subtract(Vector64<float> left, Vector64<float> right);
public static Vector64<double> Subtract(Vector64<double> left, Vector64<double> right);
public static Vector128<sbyte> Subtract(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Subtract(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Subtract(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Subtract(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Subtract(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Subtract(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Subtract(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Subtract(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Subtract(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Subtract(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> SubtractOddEvenElementsWidening(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> SubtractOddEvenElementsWidening(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> SubtractOddEvenElementsWidening(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> SubtractOddEvenElementsWidening(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> SubtractOddEvenElementsWidening(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> SubtractOddEvenElementsWidening(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> SubtractOddEvenElementsWidening(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> SubtractOddEvenElementsWidening(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> SubtractSaturate(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> SubtractSaturate(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> SubtractSaturate(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> SubtractSaturate(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> SubtractSaturate(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> SubtractSaturate(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> SubtractSaturate(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> SubtractSaturate(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> Multiply(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Multiply(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Multiply(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Multiply(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Multiply(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Multiply(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Multiply(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Multiply(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Multiply(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Multiply(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> MultiplyHight(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> MultiplyHight(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> MultiplyHight(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> MultiplyHight(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> MultiplyHight(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> MultiplyHight(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> MultiplyHight(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> MultiplyHight(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> Divide(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Divide(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Divide(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Divide(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Divide(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Divide(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Divide(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Divide(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Divide(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Divide(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> Modulo(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Modulo(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Modulo(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Modulo(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Modulo(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Modulo(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Modulo(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Modulo(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> FusedMultiplyAdd(Vector128<float> left, Vector128<float> right, Vector128<float> addend);
public static Vector128<double> FusedMultiplyAdd(Vector128<double> left, Vector128<double> right, Vector128<double> addend);
public static Vector128<float> FusedMultiplyAddNegated(Vector128<float> left, Vector128<float> right, Vector128<float> addend);
public static Vector128<double> FusedMultiplyAddNegated(Vector128<double> left, Vector128<double> right, Vector128<double> addend);
public static Vector128<sbyte> MultiplyAdd(Vector128<sbyte> addend, Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> MultiplyAdd(Vector128<byte> addend, Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> MultiplyAdd(Vector128<short> addend, Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> MultiplyAdd(Vector128<ushort> addend, Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> MultiplyAdd(Vector128<int> addend, Vector128<int> left, Vector128<int> right);
public static Vector128<uint> MultiplyAdd(Vector128<uint> addend, Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> MultiplyAdd(Vector128<long> minuend, Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> MultiplyAdd(Vector128<ulong> minuend, Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> FusedMultiplySubtract(Vector128<float> left, Vector128<float> right, Vector128<float> minuend);
public static Vector128<double> FusedMultiplySubtract(Vector128<double> left, Vector128<double> right, Vector128<double> minuend);
public static Vector128<float> FusedMultiplySubtractNegated(Vector128<float> left, Vector128<float> right, Vector128<float> minuend);
public static Vector128<double> FusedMultiplySubtractNegated(Vector128<double> left, Vector128<double> right, Vector128<double> minuend);
public static Vector128<sbyte> MultiplySubtract(Vector128<sbyte> minuend, Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> MultiplySubtract(Vector128<byte> minuend, Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> MultiplySubtract(Vector128<short> minuend, Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> MultiplySubtract(Vector128<ushort> minuend, Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> MultiplySubtract(Vector128<int> minuend, Vector128<int> left, Vector128<int> right);
public static Vector128<uint> MultiplySubtract(Vector128<uint> minuend, Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> MultiplySubtract(Vector128<long> minuend, Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> MultiplySubtract(Vector128<ulong> minuend, Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<short> MultiplyWideningLowerAndAdd(Vector128<short> addend, Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector128<ushort> MultiplyWideningLowerAndAdd(Vector128<ushort> addend, Vector64<byte> left, Vector64<byte> right);
public static Vector128<int> MultiplyWideningLowerAndAdd(Vector128<int> addend, Vector64<short> left, Vector64<short> right);
public static Vector128<uint> MultiplyWideningLowerAndAdd(Vector128<uint> addend, Vector64<ushort> left, Vector64<ushort> right);
public static Vector128<long> MultiplyWideningLowerAndAdd(Vector128<long> addend, Vector64<int> left, Vector64<int> right);
public static Vector128<ulong> MultiplyWideningLowerAndAdd(Vector128<ulong> addend, Vector64<uint> left, Vector64<uint> right);
public static Vector128<short> MultiplyWideningUpperAndAdd(Vector128<short> addend, Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<ushort> MultiplyWideningUpperAndAdd(Vector128<ushort> addend, Vector128<byte> left, Vector128<byte> right);
public static Vector128<int> MultiplyWideningUpperAndAdd(Vector128<int> addend, Vector128<short> left, Vector128<short> right);
public static Vector128<uint> MultiplyWideningUpperAndAdd(Vector128<uint> addend, Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<long> MultiplyWideningUpperAndAdd(Vector128<long> addend, Vector128<int> left, Vector128<int> right);
public static Vector128<ulong> MultiplyWideningUpperAndAdd(Vector128<ulong> addend, Vector128<uint> left, Vector128<uint> right);
public static Vector128<sbyte> CompareNotEqualZero(Vector128<sbyte> value);
public static Vector128<byte> CompareNotEqualZero(Vector128<byte> value);
public static Vector128<sbyte> CompareEqual(Vector128<sbyte> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<short> CompareEqual(Vector128<short> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<int> CompareEqual(Vector128<int> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<long> CompareEqual(Vector128<long> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<sbyte> CompareEqual(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> CompareEqual(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> CompareEqual(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> CompareEqual(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> CompareEqual(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> CompareEqual(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> CompareEqual(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> CompareEqual(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<int> CompareEqual(Vector128<float> left, Vector128<float> right);
public static Vector128<long> CompareEqual(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> CompareLessThanZero(Vector128<sbyte> value);
public static Vector128<short> CompareLessThanZero(Vector128<short> value);
public static Vector128<int> CompareLessThanZero(Vector128<int> value);
public static Vector128<long> CompareLessThanZero(Vector128<long> value);
public static Vector128<sbyte> CompareLessThan(Vector128<sbyte> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<short> CompareLessThan(Vector128<short> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<int> CompareLessThan(Vector128<int> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<long> CompareLessThan(Vector128<long> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<sbyte> CompareLessThan(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> CompareLessThan(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> CompareLessThan(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> CompareLessThan(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> CompareLessThan(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> CompareLessThan(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> CompareLessThan(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> CompareLessThan(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<int> CompareLessThan(Vector128<float> left, Vector128<float> right);
public static Vector128<long> CompareLessThan(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> CompareLessThanOrEqual(Vector128<sbyte> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<short> CompareLessThanOrEqual(Vector128<short> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<int> CompareLessThanOrEqual(Vector128<int> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<long> CompareLessThanOrEqual(Vector128<long> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector128<sbyte> CompareLessThanOrEqual(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<short> CompareLessThanOrEqual(Vector128<short> left, Vector128<short> right);
public static Vector128<int> CompareLessThanOrEqual(Vector128<int> left, Vector128<int> right);
public static Vector128<long> CompareLessThanOrEqual(Vector128<long> left, Vector128<long> right);
public static Vector128<byte> CompareLessThanOrEqual(Vector128<byte> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector128<ushort> CompareLessThanOrEqual(Vector128<ushort> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector128<uint> CompareLessThanOrEqual(Vector128<uint> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector128<long> CompareLessThanOrEqual(Vector128<long> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector128<byte> CompareLessThanOrEqual(Vector128<byte> left, Vector128<byte> right);
public static Vector128<ushort> CompareLessThanOrEqual(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<uint> CompareLessThanOrEqual(Vector128<uint> left, Vector128<uint> right);
public static Vector128<ulong> CompareLessThanOrEqual(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<int> CompareLessThanOrEqual(Vector128<float> left, Vector128<float> right);
public static Vector128<long> CompareLessThanOrEqual(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> CompareGreaterThan(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<short> CompareGreaterThan(Vector128<short> left, Vector128<short> right);
public static Vector128<int> CompareGreaterThan(Vector128<int> left, Vector128<int> right);
public static Vector128<long> CompareGreaterThan(Vector128<long> left, Vector128<long> right);
public static Vector128<byte> CompareGreaterThan(Vector128<byte> left, Vector128<byte> right);
public static Vector128<ushort> CompareGreaterThan(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<uint> CompareGreaterThan(Vector128<uint> left, Vector128<uint> right);
public static Vector128<ulong> CompareGreaterThan(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<int> CompareGreaterThan(Vector128<float> left, Vector128<float> right);
public static Vector128<long> CompareGreaterThan(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> CompareGreaterThanOrEqualZero(Vector128<sbyte> value);
public static Vector128<sbyte> CompareGreaterThanOrEqual(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> CompareGreaterThanOrEqual(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> CompareGreaterThanOrEqual(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> CompareGreaterThanOrEqual(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> CompareGreaterThanOrEqual(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> CompareGreaterThanOrEqual(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> CompareGreaterThanOrEqual(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> CompareGreaterThanOrEqual(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<int> CompareGreaterThanOrEqual(Vector128<float> left, Vector128<float> right);
public static Vector128<long> CompareGreaterThanOrEqual(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> Max(Vector128<sbyte> value, const sbyte si5);
public static Vector128<byte> Max(Vector128<byte> value, const byte ui5);
public static Vector128<short> Max(Vector128<short> value, const sbyte si5);
public static Vector128<ushort> Max(Vector128<ushort> value, const byte ui5);
public static Vector128<int> Max(Vector128<int> value, const sbyte si5);
public static Vector128<uint> Max(Vector128<uint> value, const byte ui5);
public static Vector128<long> Max(Vector128<long> value, const sbyte si5);
public static Vector128<ulong> Max(Vector128<ulong> value, const byte ui5);
public static Vector128<sbyte> Max(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Max(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Max(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Max(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Max(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Max(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Max(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Max(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Max(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Max(Vector128<double> left, Vector128<double> right);
public static Vector128<float> MaxFloatAbsolute(Vector128<float> left, Vector128<float> right);
public static Vector128<double> MaxFloatAbsolute(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> Min(Vector128<sbyte> value, const sbyte si5);
public static Vector128<byte> Min(Vector128<byte> value, const byte ui5);
public static Vector128<short> Min(Vector128<short> value, const sbyte si5);
public static Vector128<ushort> Min(Vector128<ushort> value, const byte ui5);
public static Vector128<int> Min(Vector128<int> value, const sbyte si5);
public static Vector128<uint> Min(Vector128<uint> value, const byte ui5);
public static Vector128<long> Min(Vector128<long> value, const sbyte si5);
public static Vector128<ulong> Min(Vector128<ulong> value, const byte ui5);
public static Vector128<sbyte> Min(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Min(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Min(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Min(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Min(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Min(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Min(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Min(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Min(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Min(Vector128<double> left, Vector128<double> right);
public static Vector128<float> MinFloatAbsolute(Vector128<float> left, Vector128<float> right);
public static Vector128<double> MinFloatAbsolute(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> BitwiseSelect(Vector128<sbyte> select, Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> BitwiseSelect(Vector128<byte> select, Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> BitwiseSelect(Vector128<short> select, Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> BitwiseSelect(Vector128<ushort> select, Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> BitwiseSelect(Vector128<int> select, Vector128<int> left, Vector128<int> right);
public static Vector128<uint> BitwiseSelect(Vector128<uint> select, Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> BitwiseSelect(Vector128<long> select, Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> BitwiseSelect(Vector128<ulong> select, Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> BitwiseSelect(Vector128<float> select, Vector128<float> left, Vector128<float> right);
public static Vector128<double> BitwiseSelect(Vector128<double> select, Vector128<double> left, Vector128<double> right);
public static Vector128<byte> AbsoluteDifference(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> AbsoluteDifference(Vector128<byte> left, Vector128<byte> right);
public static Vector128<ushort> AbsoluteDifference(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> AbsoluteDifference(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<uint> AbsoluteDifference(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> AbsoluteDifference(Vector128<uint> left, Vector128<uint> right);
public static Vector128<ulong> AbsoluteDifference(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> AbsoluteDifference(Vector128<ulong> left, Vector128<ulong> right);
///// <summary>
///// float32x4_t TODO(float32x4_t a, float32x4_t b) multi-instructions.
///// LSX: TODO Vd.4S, Vj.4S, Vk.4S
///// </summary>
//public static Vector128<float> AbsoluteDifference(Vector128<float> left, Vector128<float> right);
///// <summary>
///// float64x2_t TODO(float64x2_t a, float64x2_t b)
///// LSX: TODO Vd.2D, Vj.2D, Vk.2D
///// </summary>
//public static Vector128<double> AbsoluteDifference(Vector128<double> left, Vector128<double> right);
public static unsafe Vector128<sbyte> LoadVector128(sbyte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<byte> LoadVector128(byte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<short> LoadVector128(short* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<ushort> LoadVector128(ushort* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<int> LoadVector128(int* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<uint> LoadVector128(uint* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<long> LoadVector128(long* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<ulong> LoadVector128(ulong* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<float> LoadVector128(float* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<double> LoadVector128(double* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<sbyte> LoadVector128(sbyte* address, long offsetValue);
public static unsafe Vector128<byte> LoadVector128(byte* address, long offsetValue);
public static unsafe Vector128<short> LoadVector128(short* address, long offsetValue);
public static unsafe Vector128<ushort> LoadVector128(ushort* address, long offsetValue);
public static unsafe Vector128<int> LoadVector128(int* address, long offsetValue);
public static unsafe Vector128<uint> LoadVector128(uint* address, long offsetValue);
public static unsafe Vector128<long> LoadVector128(long* address, long offsetValue);
public static unsafe Vector128<ulong> LoadVector128(ulong* address, long offsetValue);
public static unsafe Vector128<float> LoadVector128(float* address, long offsetValue);
public static unsafe Vector128<double> LoadVector128(double* address, long offsetValue);
public static unsafe Vector128<sbyte> LoadElementReplicateVector(sbyte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<byte> LoadElementReplicateVector(byte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<short> LoadElementReplicateVector(short* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<ushort> LoadElementReplicateVector(ushort* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<int> LoadElementReplicateVector(int* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<uint> LoadElementReplicateVector(uint* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<long> LoadElementReplicateVector(long* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<ulong> LoadElementReplicateVector(ulong* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<float> LoadElementReplicateVector(float* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector128<double> LoadElementReplicateVector(double* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static Vector128<float> Reciprocal(Vector128<float> value);
public static Vector128<double> Reciprocal(Vector128<double> value);
public static Vector128<float> ReciprocalSqrt(Vector128<float> value);
public static Vector128<double> ReciprocalSqrt(Vector128<double> value);
public static Vector128<float> Sqrt(Vector128<float> value);
public static Vector128<double> Sqrt(Vector128<double> value);
public static Vector128<float> FloatLogarithm2(Vector128<float> value);
public static Vector128<double> FloatLogarithm2(Vector128<double> value);
public static unsafe void Store(Vector128<sbyte> vector, sbyte* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<byte> vector, byte* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<short> vector, short* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<ushort> vector, ushort* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<int> vector, int* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<uint> vector, uint* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<long> vector, long* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<ulong> vector, ulong* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<float> vector, float* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector128<double> vector, double* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void StoreElement(Vector128<sbyte> vector, sbyte* addr, [ConstantExpected(Min = -128, Max = 127)] short si8, [ConstantExpected(Max = (byte)(15))] byte idx);
public static unsafe void StoreElement(Vector128<byte> vector, byte* addr, [ConstantExpected(Min = -128, Max = 127)] short si8, [ConstantExpected(Max = (byte)(15))] byte idx);
public static unsafe void StoreElement(Vector128<short> vector, short* addr, [ConstantExpected(Min = -256, Max = 254)] short si9, [ConstantExpected(Max = (byte)(7))] byte idx);
public static unsafe void StoreElement(Vector128<ushort> vector, ushort* addr, [ConstantExpected(Min = -256, Max = 254)] short si9, [ConstantExpected(Max = (byte)(7))] byte idx);
public static unsafe void StoreElement(Vector128<int> vector, int* addr, [ConstantExpected(Min = -512, Max = 508)] short si10, [ConstantExpected(Max = (byte)(3))] byte idx);
public static unsafe void StoreElement(Vector128<uint> vector, uint* addr, [ConstantExpected(Min = -512, Max = 508)] short si10, [ConstantExpected(Max = (byte)(3))] byte idx);
public static unsafe void StoreElement(Vector128<long> vector, long* addr, [ConstantExpected(Min = -1024, Max = 1016)] short si11, [ConstantExpected(Max = (byte)(1))] byte idx);
public static unsafe void StoreElement(Vector128<ulong> vector, ulong* addr, [ConstantExpected(Min = -1024, Max = 1016)] short si11, [ConstantExpected(Max = (byte)(1))] byte idx);
public static unsafe void StoreElement(Vector128<float> vector, float* addr, [ConstantExpected(Min = -512, Max = 511)] short si10, [ConstantExpected(Max = (byte)(3))] byte idx);
public static unsafe void StoreElement(Vector128<double> vector, double* addr, [ConstantExpected(Min = -1024, Max = 1016)] short si11, [ConstantExpected(Max = (byte)(1))] byte idx);
public static Vector128<sbyte> Negate(Vector128<sbyte> value);
public static Vector128<short> Negate(Vector128<short> value);
public static Vector128<int> Negate(Vector128<int> value);
public static Vector128<long> Negate(Vector128<long> value);
public static Vector128<float> Negate(Vector128<float> value);
public static Vector128<double> Negate(Vector128<double> value);
public static Vector64<double> NegateScalar(Vector64<double> value);
public static Vector64<float> NegateScalar(Vector64<float> value);
public static Vector128<short> MultiplyWideningOdd(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<int> MultiplyWideningOdd(Vector128<short> left, Vector128<short> right);
public static Vector128<long> MultiplyWideningOdd(Vector128<int> left, Vector128<int> right);
public static Vector128<long> MultiplyWideningOdd(Vector128<long> left, Vector128<long> right);
public static Vector128<short> MultiplyWideningEven(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<int> MultiplyWideningEven(Vector128<short> left, Vector128<short> right);
public static Vector128<long> MultiplyWideningEven(Vector128<int> left, Vector128<int> right);
public static Vector128<long> MultiplyWideningEven(Vector128<long> left, Vector128<long> right);
public static Vector128<ushort> MultiplyWideningOdd(Vector128<byte> left, Vector128<byte> right);
public static Vector128<uint> MultiplyWideningOdd(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<ulong> MultiplyWideningOdd(Vector128<uint> left, Vector128<uint> right);
public static Vector128<ulong> MultiplyWideningOdd(Vector128<ulong> left, Vector128<ulong> right);
// /// <summary>
// /// uint16x8_t vmulwev_hu_bu(uint8x16_t a, uint8x16_t b)
// /// LSX: VMULWEV.H.BU Vd.8H, Vj.16B, Vk.16B
// /// </summary>
// public static Vector128<ushort> MultiplyWideningEven(Vector128<byte> left, Vector128<byte> right);
// /// <summary>
// /// uint32x4_t vmulwev_wu_hu(uint16x8_t a, uint16x8_t b)
// /// LSX: VMULWEV.W.HU Vd.4W, Vj.8H, Vk.8H
// /// </summary>
// public static Vector128<uint> MultiplyWideningEven(Vector128<ushort> left, Vector128<ushort> right);
// /// <summary>
// /// uint64x2_t vmulwev_du_wu(uint32x4_t a, uint32x4_t b)
// /// LSX: VMULWEV.D.WU Vd.2D, Vj.4W, Vk.4W
// /// </summary>
// public static Vector128<ulong> MultiplyWideningEven(Vector128<uint> left, Vector128<uint> right);
// /// <summary>
// /// uint128x1_t vmulwev_qu_du(uint64x2_t a, uint64x2_t b)
// /// LSX: VMULWEV.Q.DU Vd.Q, Vj.2D, Vk.2D
// /// </summary>
// public static Vector128<ulong> MultiplyWideningEven(Vector128<ulong> left, Vector128<ulong> right);
// /// <summary>
// /// int16x8_t vmulwod_h_bu(uint8x16_t a, int8x16_t b)
// /// LSX: VMULWOD.H.BU.B Vd.8H, Vj.16B, Vk.16B
// /// </summary>
// public static Vector128<short> MultiplyWideningOdd(Vector128<byte> left, Vector128<sbyte> right);
// /// <summary>
// /// int32x4_t vmulwod_w_hu(uint16x8_t a, int16x8_t b)
// /// LSX: VMULWOD.W.HU.H Vd.4W, Vj.8H, Vk.8H
// /// </summary>
// public static Vector128<int> MultiplyWideningOdd(Vector128<ushort> left, Vector128<short> right);
// /// <summary>
// /// int64x2_t vmulwod_d_wu(uint32x4_t a, int32x4_t b)
// /// LSX: VMULWOD.D.WU.W Vd.2D, Vj.4W, Vk.4W
// /// </summary>
// public static Vector128<long> MultiplyWideningOdd(Vector128<uint> left, Vector128<int> right);
// /// <summary>
// /// int128x1_t vmulwod_q_du(uint64x2_t a, int64x2_t b)
// /// LSX: VMULWOD.Q.DU.D Vd.Q, Vj.2D, Vk.2D
// /// </summary>
// public static Vector128<long> MultiplyWideningOdd(Vector128<ulong> left, Vector128<long> right);
// /// <summary>
// /// int16x8_t vmulwev_h_bu(uint8x16_t a, int8x16_t b)
// /// LSX: VMULWEV.H.BU.B Vd.8H, Vj.16B, Vk.16B
// /// </summary>
// public static Vector128<short> MultiplyWideningEven(Vector128<byte> unsign, Vector128<sbyte> sign);
// /// <summary>
// /// int32x4_t vmulwev_w_hu(uint16x8_t a, int16x8_t b)
// /// LSX: VMULWEV.W.HU.H Vd.4W, Vj.8H, Vk.8H
// /// </summary>
// public static Vector128<int> MultiplyWideningEven(Vector128<ushort> unsign, Vector128<short> sign);
// /// <summary>
// /// int64x2_t vmulwev_d_wu(uint32x4_t a, int32x4_t b)
// /// LSX: VMULWEV.D.WU.W Vd.2D, Vj.4W, Vk.4W
// /// </summary>
// public static Vector128<long> MultiplyWideningEven(Vector128<uint> unsign, Vector128<int> sign);
// /// <summary>
// /// int128x1_t vmulwev_q_du(uint64x2_t a, int64x2_t b)
// /// LSX: VMULWEV.Q.DU.D Vd.Q, Vj.2D, Vk.2D
// /// </summary>
// public static Vector128<long> MultiplyWideningEven(Vector128<ulong> unsign, Vector128<long> sign);
public static Vector128<sbyte> Average(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Average(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Average(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Average(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Average(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Average(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Average(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Average(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> AverageRounded(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> AverageRounded(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> AverageRounded(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> AverageRounded(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> AverageRounded(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> AverageRounded(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> AverageRounded(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> AverageRounded(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<short> SignExtendWideningLowerAndShiftLeft(Vector64<sbyte> value, byte shift);
public static Vector128<int> SignExtendWideningLowerAndShiftLeft(Vector64<short> value, byte shift);
public static Vector128<long> SignExtendWideningLowerAndShiftLeft(Vector64<int> value, byte shift);
public static Vector128<ushort> ZeroExtendWideningLowerAndShiftLeft(Vector64<byte> value, byte shift);
public static Vector128<short> ZeroExtendWideningLowerAndShiftLeft(Vector64<sbyte> value, byte shift);
public static Vector128<uint> ZeroExtendWideningLowerAndShiftLeft(Vector64<ushort> value, byte shift);
public static Vector128<int> ZeroExtendWideningLowerAndShiftLeft(Vector64<short> value, byte shift);
public static Vector128<ulong> ZeroExtendWideningLowerAndShiftLeft(Vector64<uint> value, byte shift);
public static Vector128<long> ZeroExtendWideningLowerAndShiftLeft(Vector64<int> value, byte shift);
public static Vector128<ulong> ZeroExtendWideningLower(Vector64<long> value);
public static Vector128<ulong> ZeroExtendWideningLower(Vector64<ulong> value);
public static Vector128<short> SignExtendWideningUpper(Vector128<sbyte> value);
public static Vector128<int> SignExtendWideningUpper(Vector128<short> value);
public static Vector128<long> SignExtendWideningUpper(Vector128<int> value);
public static Vector128<long> SignExtendWideningUpper(Vector128<long> value);
public static Vector128<short> ZeroExtendWideningUpper(Vector128<sbyte> value);
public static Vector128<ushort> ZeroExtendWideningUpper(Vector128<byte> value);
public static Vector128<int> ZeroExtendWideningUpper(Vector128<short> value);
public static Vector128<uint> ZeroExtendWideningUpper(Vector128<ushort> value);
public static Vector128<long> ZeroExtendWideningUpper(Vector128<int> value);
public static Vector128<ulong> ZeroExtendWideningUpper(Vector128<uint> value);
public static Vector128<ulong> ZeroExtendWideningUpper(Vector128<long> value);
public static Vector128<ulong> ZeroExtendWideningUpper(Vector128<ulong> value);
public static Vector128<sbyte> And(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> And(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> And(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> And(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> And(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> And(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> And(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> And(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> And(Vector128<float> left, Vector128<float> right);
public static Vector128<double> And(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> AndNot(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> AndNot(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> AndNot(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> AndNot(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> AndNot(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> AndNot(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> AndNot(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> AndNot(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> AndNot(Vector128<float> left, Vector128<float> right);
public static Vector128<double> AndNot(Vector128<double> left, Vector128<double> right);
public static Vector64<byte> Or(Vector64<byte> left, Vector64<byte> right);
public static Vector64<double> Or(Vector64<double> left, Vector64<double> right);
public static Vector64<short> Or(Vector64<short> left, Vector64<short> right);
public static Vector64<int> Or(Vector64<int> left, Vector64<int> right);
public static Vector64<long> Or(Vector64<long> left, Vector64<long> right);
public static Vector64<sbyte> Or(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector64<float> Or(Vector64<float> left, Vector64<float> right);
public static Vector64<ushort> Or(Vector64<ushort> left, Vector64<ushort> right);
public static Vector64<uint> Or(Vector64<uint> left, Vector64<uint> right);
public static Vector64<ulong> Or(Vector64<ulong> left, Vector64<ulong> right);
public static Vector128<sbyte> Or(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Or(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Or(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Or(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Or(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Or(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Or(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Or(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Or(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Or(Vector128<double> left, Vector128<double> right);
public static Vector64<byte> Not(Vector64<byte> value);
public static Vector64<double> Not(Vector64<double> value);
public static Vector64<short> Not(Vector64<short> value);
public static Vector64<int> Not(Vector64<int> value);
public static Vector64<long> Not(Vector64<long> value);
public static Vector64<sbyte> Not(Vector64<sbyte> value);
public static Vector64<float> Not(Vector64<float> value);
public static Vector64<ushort> Not(Vector64<ushort> value);
public static Vector64<uint> Not(Vector64<uint> value);
public static Vector64<ulong> Not(Vector64<ulong> value);
public static Vector128<byte> Not(Vector128<byte> value);
public static Vector128<double> Not(Vector128<double> value);
public static Vector128<short> Not(Vector128<short> value);
public static Vector128<int> Not(Vector128<int> value);
public static Vector128<long> Not(Vector128<long> value);
public static Vector128<sbyte> Not(Vector128<sbyte> value);
public static Vector128<float> Not(Vector128<float> value);
public static Vector128<ushort> Not(Vector128<ushort> value);
public static Vector128<uint> Not(Vector128<uint> value);
public static Vector128<ulong> Not(Vector128<ulong> value);
public static Vector128<sbyte> NotOr(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> NotOr(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> NotOr(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> NotOr(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> NotOr(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> NotOr(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> NotOr(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> NotOr(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> NotOr(Vector128<float> left, Vector128<float> right);
public static Vector128<double> NotOr(Vector128<double> left, Vector128<double> right);
public static Vector64<byte> OrNot(Vector64<byte> left, Vector64<byte> right);
public static Vector64<double> OrNot(Vector64<double> left, Vector64<double> right);
public static Vector64<short> OrNot(Vector64<short> left, Vector64<short> right);
public static Vector64<int> OrNot(Vector64<int> left, Vector64<int> right);
public static Vector64<long> OrNot(Vector64<long> left, Vector64<long> right);
public static Vector64<sbyte> OrNot(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector64<float> OrNot(Vector64<float> left, Vector64<float> right);
public static Vector64<ushort> OrNot(Vector64<ushort> left, Vector64<ushort> right);
public static Vector64<uint> OrNot(Vector64<uint> left, Vector64<uint> right);
public static Vector64<ulong> OrNot(Vector64<ulong> left, Vector64<ulong> right);
public static Vector128<sbyte> OrNot(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> OrNot(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> OrNot(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> OrNot(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> OrNot(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> OrNot(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> OrNot(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> OrNot(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> OrNot(Vector128<float> left, Vector128<float> right);
public static Vector128<double> OrNot(Vector128<double> left, Vector128<double> right);
public static Vector64<byte> Xor(Vector64<byte> left, Vector64<byte> right);
public static Vector64<double> Xor(Vector64<double> left, Vector64<double> right);
public static Vector64<short> Xor(Vector64<short> left, Vector64<short> right);
public static Vector64<int> Xor(Vector64<int> left, Vector64<int> right);
public static Vector64<long> Xor(Vector64<long> left, Vector64<long> right);
public static Vector64<sbyte> Xor(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector64<float> Xor(Vector64<float> left, Vector64<float> right);
public static Vector64<ushort> Xor(Vector64<ushort> left, Vector64<ushort> right);
public static Vector64<uint> Xor(Vector64<uint> left, Vector64<uint> right);
public static Vector64<ulong> Xor(Vector64<ulong> left, Vector64<ulong> right);
public static Vector128<sbyte> Xor(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> Xor(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> Xor(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> Xor(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> Xor(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> Xor(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> Xor(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> Xor(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<float> Xor(Vector128<float> left, Vector128<float> right);
public static Vector128<double> Xor(Vector128<double> left, Vector128<double> right);
public static Vector128<sbyte> ShiftLeftLogical(Vector128<sbyte> value, const byte shift);
public static Vector128<byte> ShiftLeftLogical(Vector128<byte> value, const byte shift);
public static Vector128<short> ShiftLeftLogical(Vector128<short> value, const byte shift);
public static Vector128<ushort> ShiftLeftLogical(Vector128<ushort> value, const byte shift);
public static Vector128<int> ShiftLeftLogical(Vector128<int> value, const byte shift);
public static Vector128<uint> ShiftLeftLogical(Vector128<uint> value, const byte shift);
public static Vector128<long> ShiftLeftLogical(Vector128<long> value, const byte shift);
public static Vector128<ulong> ShiftLeftLogical(Vector128<ulong> value, const byte shift);
public static Vector128<sbyte> ShiftLeftLogicalByByte(Vector128<sbyte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<byte> ShiftLeftLogicalByByte(Vector128<byte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<sbyte> ShiftLeftLogical(Vector128<sbyte> value, Vector128<sbyte> shift);
public static Vector128<byte> ShiftLeftLogical(Vector128<byte> value, Vector128<byte> shift);
public static Vector128<short> ShiftLeftLogical(Vector128<short> value, Vector128<short> shift);
public static Vector128<ushort> ShiftLeftLogical(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector128<int> ShiftLeftLogical(Vector128<int> value, Vector128<int> shift);
public static Vector128<uint> ShiftLeftLogical(Vector128<uint> value, Vector128<uint> shift);
public static Vector128<long> ShiftLeftLogical(Vector128<long> value, Vector128<long> shift);
public static Vector128<ulong> ShiftLeftLogical(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<sbyte> ShiftRightLogical(Vector128<sbyte> value, const byte shift);
public static Vector128<byte> ShiftRightLogical(Vector128<byte> value, const byte shift);
public static Vector128<short> ShiftRightLogical(Vector128<short> value, const byte shift);
public static Vector128<ushort> ShiftRightLogical(Vector128<ushort> value, const byte shift);
public static Vector128<int> ShiftRightLogical(Vector128<int> value, const byte shift);
public static Vector128<uint> ShiftRightLogical(Vector128<uint> value, const byte shift);
public static Vector128<long> ShiftRightLogical(Vector128<long> value, const byte shift);
public static Vector128<ulong> ShiftRightLogical(Vector128<ulong> value, const byte shift);
public static Vector128<sbyte> ShiftRightLogicalByByte(Vector128<sbyte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<byte> ShiftRightLogicalByByte(Vector128<byte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<sbyte> ShiftRightLogical(Vector128<sbyte> value, Vector128<sbyte> shift);
public static Vector128<byte> ShiftRightLogical(Vector128<byte> value, Vector128<byte> shift);
public static Vector128<short> ShiftRightLogical(Vector128<short> value, Vector128<short> shift);
public static Vector128<ushort> ShiftRightLogical(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector128<int> ShiftRightLogical(Vector128<int> value, Vector128<int> shift);
public static Vector128<uint> ShiftRightLogical(Vector128<uint> value, Vector128<uint> shift);
public static Vector128<long> ShiftRightLogical(Vector128<long> value, Vector128<long> shift);
public static Vector128<ulong> ShiftRightLogical(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<sbyte> ShiftRightLogicalRounded(Vector128<sbyte> value, const byte shift);
public static Vector128<byte> ShiftRightLogicalRounded(Vector128<byte> value, const byte shift);
public static Vector128<short> ShiftRightLogicalRounded(Vector128<short> value, const byte shift);
public static Vector128<ushort> ShiftRightLogicalRounded(Vector128<ushort> value, const byte shift);
public static Vector128<int> ShiftRightLogicalRounded(Vector128<int> value, const byte shift);
public static Vector128<uint> ShiftRightLogicalRounded(Vector128<uint> value, const byte shift);
public static Vector128<long> ShiftRightLogicalRounded(Vector128<long> value, const byte shift);
public static Vector128<ulong> ShiftRightLogicalRounded(Vector128<ulong> value, const byte shift);
public static Vector128<sbyte> ShiftRightLogicalRounded(Vector128<sbyte> value, Vector128<sbyte> shift);
public static Vector128<byte> ShiftRightLogicalRounded(Vector128<byte> value, Vector128<byte> shift);
public static Vector128<short> ShiftRightLogicalRounded(Vector128<short> value, Vector128<short> shift);
public static Vector128<ushort> ShiftRightLogicalRounded(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector128<int> ShiftRightLogicalRounded(Vector128<int> value, Vector128<int> shift);
public static Vector128<uint> ShiftRightLogicalRounded(Vector128<uint> value, Vector128<uint> shift);
public static Vector128<long> ShiftRightLogicalRounded(Vector128<long> value, Vector128<long> shift);
public static Vector128<ulong> ShiftRightLogicalRounded(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<byte> ShiftRightLogicalRoundedNarrowingLower(Vector128<ushort> left, Vector128<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<sbyte> ShiftRightLogicalRoundedNarrowingLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<short> ShiftRightLogicalRoundedNarrowingLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<ushort> ShiftRightLogicalRoundedNarrowingLower(Vector128<uint> left, Vector128<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<int> ShiftRightLogicalRoundedNarrowingLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
public static Vector128<uint> ShiftRightLogicalRoundedNarrowingLower(Vector128<ulong> left, Vector128<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x2_t vsrlrni_d_q(int128x1_t left, int128x1_t right, const int n)
///// LSX: VSRLRNI.D.Q Vd, Vj, ui7
///// </summary>
//public static Vector128<long> ShiftRightLogicalRoundedNarrowingLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<sbyte> ShiftRightLogicalRoundedNarrowingLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<byte> ShiftRightLogicalRoundedNarrowingLower(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector64<short> ShiftRightLogicalRoundedNarrowingLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<ushort> ShiftRightLogicalRoundedNarrowingLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<int> ShiftRightLogicalRoundedNarrowingLower(Vector128<long> value, Vector128<long> shift);
public static Vector64<uint> ShiftRightLogicalRoundedNarrowingLower(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<sbyte> ShiftRightArithmetic(Vector128<sbyte> value, const byte shift);
public static Vector128<short> ShiftRightArithmetic(Vector128<short> value, const byte shift);
public static Vector128<int> ShiftRightArithmetic(Vector128<int> value, const byte shift);
public static Vector128<long> ShiftRightArithmetic(Vector128<long> value, const byte shift);
public static Vector128<byte> ShiftRightArithmetic(Vector128<byte> value, Vector128<byte> shift);
public static Vector128<short> ShiftRightArithmetic(Vector128<short> value, Vector128<short> shift);
public static Vector128<int> ShiftRightArithmetic(Vector128<int> value, Vector128<int> shift);
public static Vector128<long> ShiftRightArithmetic(Vector128<long> value, Vector128<long> shift);
public static Vector128<sbyte> ShiftRightArithmeticRounded(Vector128<sbyte> value, const byte shift);
public static Vector128<short> ShiftRightArithmeticRounded(Vector128<short> value, const byte shift);
public static Vector128<int> ShiftRightArithmeticRounded(Vector128<int> value, const byte shift);
public static Vector128<long> ShiftRightArithmeticRounded(Vector128<long> value, const byte shift);
public static Vector128<sbyte> ShiftRightArithmeticRounded(Vector128<sbyte> value, Vector128<sbyte> shift);
public static Vector128<short> ShiftRightArithmeticRounded(Vector128<short> value, Vector128<short> shift);
public static Vector128<int> ShiftRightArithmeticRounded(Vector128<int> value, Vector128<int> shift);
public static Vector128<long> ShiftRightArithmeticRounded(Vector128<long> value, Vector128<long> shift);
public static Vector128<sbyte> ShiftRightArithmeticRoundedNarrowingLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<short> ShiftRightArithmeticRoundedNarrowingLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<int> ShiftRightArithmeticRoundedNarrowingLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x2_t vsrarni_d_q(int128x1_t left, int128x1_t right, const int n)
///// LSX: VSRARNI.D.Q Vd, Vj, ui7
///// </summary>
//public static Vector128<long> ShiftRightArithmeticRoundedNarrowingLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<sbyte> ShiftRightArithmeticRoundedNarrowingLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<short> ShiftRightArithmeticRoundedNarrowingLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<ushort> ShiftRightArithmeticRoundedNarrowingLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<int> ShiftRightArithmeticRoundedNarrowingLower(Vector128<long> value, Vector128<long> shift);
public static Vector128<sbyte> RotateRight(Vector128<sbyte> value, const byte shift);
public static Vector128<byte> RotateRight(Vector128<byte> value, const byte shift);
public static Vector128<short> RotateRight(Vector128<short> value, const byte shift);
public static Vector128<ushort> RotateRight(Vector128<ushort> value, const byte shift);
public static Vector128<int> RotateRight(Vector128<int> value, const byte shift);
public static Vector128<uint> RotateRight(Vector128<uint> value, const byte shift);
public static Vector128<long> RotateRight(Vector128<long> value, const byte shift);
public static Vector128<ulong> RotateRight(Vector128<ulong> value, const byte shift);
public static Vector128<sbyte> RotateRight(Vector128<sbyte> value, Vector128<sbyte> shift);
public static Vector128<byte> RotateRight(Vector128<byte> value, Vector128<byte> shift);
public static Vector128<short> RotateRight(Vector128<short> value, Vector128<short> shift);
public static Vector128<ushort> RotateRight(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector128<int> RotateRight(Vector128<int> value, Vector128<int> shift);
public static Vector128<uint> RotateRight(Vector128<uint> value, Vector128<uint> shift);
public static Vector128<long> RotateRight(Vector128<long> value, Vector128<long> shift);
public static Vector128<ulong> RotateRight(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<byte> Abs(Vector128<sbyte> value);
public static Vector128<ushort> Abs(Vector128<short> value);
public static Vector128<uint> Abs(Vector128<int> value);
public static Vector128<ulong> Abs(Vector128<long> value);
public static Vector128<float> Abs(Vector128<float> value);
public static Vector128<double> Abs(Vector128<double> value);
public static Vector128<float> Floor(Vector128<float> value);
public static Vector128<double> Floor(Vector128<double> value);
public static Vector128<float> Ceiling(Vector128<float> value);
public static Vector128<double> Ceiling(Vector128<double> value);
public static Vector128<float> RoundToZero(Vector128<float> value);
public static Vector128<double> RoundToZero(Vector128<double> value);
public static Vector128<float> RoundToNegativeInfinity(Vector128<float> value);
public static Vector128<double> RoundToNegativeInfinity(Vector128<double> value);
public static Vector128<float> RoundToPositiveInfinity(Vector128<float> value);
public static Vector128<double> RoundToPositiveInfinity(Vector128<double> value);
public static Vector128<sbyte> Insert(Vector128<sbyte> vector, sbyte data, const byte index);
public static Vector128<byte> Insert(Vector128<byte> vector, byte data, const byte index);
public static Vector128<short> Insert(Vector128<short> vector, short data, const byte index);
public static Vector128<ushort> Insert(Vector128<ushort> vector, ushort data, const byte index);
public static Vector128<int> Insert(Vector128<int> vector, int data, const byte index);
public static Vector128<uint> Insert(Vector128<uint> vector, uint data, const byte index);
public static Vector128<long> Insert(Vector128<long> vector, long data, const byte index);
public static Vector128<ulong> Insert(Vector128<ulong> vector, ulong data, const byte index);
public static Vector128<float> Insert(Vector128<float> vector, float data, const byte index);
public static Vector128<double> Insert(Vector128<double> vector, double data, const byte index);
public static Vector128<sbyte> DuplicateToVector128(sbyte value);
public static Vector128<byte> DuplicateToVector128(byte value);
public static Vector128<short> DuplicateToVector128(short value);
public static Vector128<ushort> DuplicateToVector128(ushort value);
public static Vector128<int> DuplicateToVector128(int value);
public static Vector128<uint> DuplicateToVector128(uint value);
public static Vector128<long> DuplicateToVector128(long value);
public static Vector128<ulong> DuplicateToVector128(ulong value);
public static Vector128<float> DuplicateToVector128(float value);
public static Vector128<double> DuplicateToVector128(double value);
public static Vector128<float> ConvertToSingle(Vector128<int> value);
public static Vector128<float> ConvertToSingle(Vector128<uint> value);
public static Vector128<double> ConvertToDouble(Vector128<long> value);
public static Vector128<double> ConvertToDouble(Vector128<ulong> value);
public static byte FirstNegativeInteger(Vector128<byte> value);
public static ushort FirstNegativeInteger(Vector128<ushort> value);
public static bool HasElementsNotZero(Vector128<byte> value);
public static bool AllElementsIsZero(Vector128<byte> value);
public static bool AllElementsNotZero(Vector128<sbyte> value);
public static bool AllElementsNotZero(Vector128<byte> value);
public static bool AllElementsNotZero(Vector128<short> value);
public static bool AllElementsNotZero(Vector128<ushort> value);
public static bool AllElementsNotZero(Vector128<int> value);
public static bool AllElementsNotZero(Vector128<uint> value);
public static bool AllElementsNotZero(Vector128<long> value);
public static bool AllElementsNotZero(Vector128<ulong> value);
public static bool HasElementsIsZero(Vector128<sbyte> value);
public static bool HasElementsIsZero(Vector128<byte> value);
public static bool HasElementsIsZero(Vector128<short> value);
public static bool HasElementsIsZero(Vector128<ushort> value);
public static bool HasElementsIsZero(Vector128<int> value);
public static bool HasElementsIsZero(Vector128<uint> value);
public static bool HasElementsIsZero(Vector128<long> value);
public static bool HasElementsIsZero(Vector128<ulong> value);
public static Vector128<byte> ShiftRightLogicalNarrowingLower(Vector128<ushort> left, Vector128<ushort> right, byte shift);
public static Vector128<short> ShiftRightLogicalNarrowingLower(Vector128<int> left, Vector128<int> right, byte shift);
public static Vector128<ushort> ShiftRightLogicalNarrowingLower(Vector128<uint> left, Vector128<uint> right, byte shift);
public static Vector128<int> ShiftRightLogicalNarrowingLower(Vector128<long> left, Vector128<long> right, byte shift);
public static Vector128<uint> ShiftRightLogicalNarrowingLower(Vector128<ulong> left, Vector128<ulong> right, byte shift);
///// <summary>
///// uint64x2_t vsrlni_d_q(uint128x1_t left, uint128x1_t right, shift)
///// LSX: VSRLNI.D.Q Vd.Q, Vj.Q, ui7
///// </summary>
//public static Vector128<ulong> ShiftRightLogicalNarrowingLower(Vector128<ulonglong> left, Vector128<ulonglong> right, byte shift);
public static Vector64<sbyte> ShiftRightLogicalNarrowingLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<byte> ShiftRightLogicalNarrowingLower(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector64<short> ShiftRightLogicalNarrowingLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<ushort> ShiftRightLogicalNarrowingLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<int> ShiftRightLogicalNarrowingLower(Vector128<long> value, Vector128<long> shift);
public static Vector64<uint> ShiftRightLogicalNarrowingLower(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<sbyte> ShiftRightLogicalNarrowingSaturateLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<byte> ShiftRightLogicalNarrowingSaturateLower(Vector128<ushort> left, Vector128<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<short> ShiftRightLogicalNarrowingSaturateLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<ushort> ShiftRightLogicalNarrowingSaturateLower(Vector128<uint> left, Vector128<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<int> ShiftRightLogicalNarrowingSaturateLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
public static Vector128<uint> ShiftRightLogicalNarrowingSaturateLower(Vector128<ulong> left, Vector128<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x2_t vssrlni_d_q(int128x1_t left, int128x1_t right, const byte n)
///// LSX: VSSRLNI.D.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<long> ShiftRightLogicalNarrowingSaturateLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<sbyte> ShiftRightLogicalNarrowingSaturateLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<byte> ShiftRightLogicalNarrowingSaturateLower(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector64<short> ShiftRightLogicalNarrowingSaturateLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<ushort> ShiftRightLogicalNarrowingSaturateLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<int> ShiftRightLogicalNarrowingSaturateLower(Vector128<long> value, Vector128<long> shift);
public static Vector64<uint> ShiftRightLogicalNarrowingSaturateLower(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<byte> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<ushort> left, Vector128<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<ushort> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<uint> left, Vector128<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<uint> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<ulong> left, Vector128<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x2_t vssrlni_du_q(uint128x1_t left, uint128x1_t right, const byte n)
///// LSX: VSSRLNI.DU.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<ulong> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<ulonglong> left, Vector128<ulonglong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<byte> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector64<ushort> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<uint> ShiftRightLogicalNarrowingSaturateUnsignedLower(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<sbyte> ShiftRightArithmeticNarrowingSaturateLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<short> ShiftRightArithmeticNarrowingSaturateLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<int> ShiftRightArithmeticNarrowingSaturateLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x2_t vssran_d_q(int128x1_t left, int128x1_t right, const byte n)
///// LSX: VSSRANI.D.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<long> ShiftRightArithmeticNarrowingSaturateLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<sbyte> ShiftRightArithmeticNarrowingSaturateLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<short> ShiftRightArithmeticNarrowingSaturateLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<int> ShiftRightArithmeticNarrowingSaturateLower(Vector128<long> value, Vector128<long> shift);
public static Vector128<byte> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<ushort> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<uint> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x2_t vssrani_du_q(int128x1_t left, int128x1_t right, const byte n)
///// LSX: VSSRANI.DU.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<ulong> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<byte> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<ushort> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<uint> ShiftRightArithmeticNarrowingSaturateUnsignedLower(Vector128<long> value, Vector128<long> shift);
public static Vector128<sbyte> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<byte> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<ushort> left, Vector128<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<short> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<ushort> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<uint> left, Vector128<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<int> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
public static Vector128<uint> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<ulong> left, Vector128<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x2_t vssrlrni_d_q(int128x1_t left, int128x1_t right, const byte n)
///// LSX: VSSRLRNI.D.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<long> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<sbyte> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<byte> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector64<short> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<ushort> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<int> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<long> value, Vector128<long> shift);
public static Vector64<uint> ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<byte> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<ushort> left, Vector128<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<ushort> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<uint> left, Vector128<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<uint> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<ulong> left, Vector128<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x2_t vssrlrni_du_q(uint128x1_t left, uint128x1_t right, const byte n)
///// LSX: VSSRLRNI.DU.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<ulong> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<ulonglong> left, Vector128<ulonglong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<byte> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<ushort> value, Vector128<ushort> shift);
public static Vector64<ushort> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<uint> value, Vector128<uint> shift);
public static Vector64<uint> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLower(Vector128<ulong> value, Vector128<ulong> shift);
public static Vector128<sbyte> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<short> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<int> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x2_t vssrarn_d_q(int128x1_t left, int128x1_t right, const byte n)
///// LSX: VSSRARNI.D.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<long> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<sbyte> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<short> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<int> ShiftRightArithmeticRoundedNarrowingSaturateLower(Vector128<long> value, Vector128<long> shift);
public static Vector128<byte> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<short> left, Vector128<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector128<ushort> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<int> left, Vector128<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector128<uint> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<long> left, Vector128<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x2_t vssrarni_du_q(int128x1_t left, int128x1_t right, const byte n)
///// LSX: VSSRARNI.DU.Q Vd.2D, Vj.Q, ui7
///// </summary>
//public static Vector128<ulong> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<longlong> left, Vector128<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector64<byte> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<short> value, Vector128<short> shift);
public static Vector64<ushort> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<int> value, Vector128<int> shift);
public static Vector64<uint> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(Vector128<long> value, Vector128<long> shift);
public static Vector64<sbyte> LeadingSignCount(Vector64<sbyte> value);
public static Vector64<short> LeadingSignCount(Vector64<short> value);
public static Vector64<int> LeadingSignCount(Vector64<int> value);
public static Vector64<long> LeadingSignCount(Vector64<long> value);
public static Vector128<sbyte> LeadingSignCount(Vector128<sbyte> value);
public static Vector128<short> LeadingSignCount(Vector128<short> value);
public static Vector128<int> LeadingSignCount(Vector128<int> value);
public static Vector128<long> LeadingSignCount(Vector128<long> value);
public static Vector64<byte> LeadingZeroCount(Vector64<byte> value);
public static Vector64<sbyte> LeadingZeroCount(Vector64<sbyte> value);
public static Vector64<short> LeadingZeroCount(Vector64<short> value);
public static Vector64<ushort> LeadingZeroCount(Vector64<ushort> value);
public static Vector64<int> LeadingZeroCount(Vector64<int> value);
public static Vector64<uint> LeadingZeroCount(Vector64<uint> value);
public static Vector64<long> LeadingZeroCount(Vector64<long> value);
public static Vector64<ulong> LeadingZeroCount(Vector64<ulong> value);
public static Vector128<sbyte> LeadingZeroCount(Vector128<sbyte> value);
public static Vector128<byte> LeadingZeroCount(Vector128<byte> value);
public static Vector128<short> LeadingZeroCount(Vector128<short> value);
public static Vector128<ushort> LeadingZeroCount(Vector128<ushort> value);
public static Vector128<int> LeadingZeroCount(Vector128<int> value);
public static Vector128<uint> LeadingZeroCount(Vector128<uint> value);
public static Vector128<long> LeadingZeroCount(Vector128<long> value);
public static Vector128<ulong> LeadingZeroCount(Vector128<ulong> value);
public static Vector128<sbyte> PopCount(Vector128<sbyte> value);
public static Vector128<byte> PopCount(Vector128<byte> value);
public static Vector128<short> PopCount(Vector128<short> value);
public static Vector128<ushort> PopCount(Vector128<ushort> value);
public static Vector128<int> PopCount(Vector128<int> value);
public static Vector128<uint> PopCount(Vector128<uint> value);
public static Vector128<long> PopCount(Vector128<long> value);
public static Vector128<ulong> PopCount(Vector128<ulong> value);
public static Vector128<byte> VectorShuffle(Vector128<byte> vector, Vector128<byte> indexs);
public static Vector128<sbyte> VectorShuffle(Vector128<sbyte> vector, Vector128<sbyte> indexs);
public static Vector128<byte> VectorShuffle(Vector128<byte> vector0, Vector128<byte> vector1, Vector128<byte> indexs);
public static Vector128<sbyte> VectorShuffle(Vector128<sbyte> vector0, Vector128<sbyte> vector1, Vector128<sbyte> indexs);
public static Vector128<short> VectorShuffle(Vector128<short> vector0, Vector128<short> vector1, Vector128<short> indexs);
public static Vector128<ushort> VectorShuffle(Vector128<ushort> vector0, Vector128<ushort> vector1, Vector128<ushort> indexs);
public static Vector128<int> VectorShuffle(Vector128<int> vector, const byte indexs);
public static Vector128<uint> VectorShuffle(Vector128<uint> vector, const byte indexs);
public static Vector128<int> VectorShuffle(Vector128<int> vector0, Vector128<int> vector1, Vector128<int> indexs);
public static Vector128<uint> VectorShuffle(Vector128<uint> vector0, Vector128<uint> vector1, Vector128<uint> indexs);
public static Vector128<long> VectorShuffle(Vector128<long> vector0, Vector128<long> vector1, Vector128<long> indexs);
public static Vector128<ulong> VectorShuffle(Vector128<ulong> vector0, Vector128<ulong> vector1, Vector128<ulong> indexs);
public static Vector128<sbyte> VectorShuffleBy4Elements(Vector128<sbyte> vector, byte indexs);
public static Vector128<byte> VectorShuffleBy4Elements(Vector128<byte> vector, byte indexs);
public static Vector128<short> VectorShuffleBy4Elements(Vector128<short> vector, byte indexs);
public static Vector128<ushort> VectorShuffleBy4Elements(Vector128<ushort> vector, byte indexs);
public static Vector128<int> VectorShuffleBy4Elements(Vector128<int> vector, byte indexs);
public static Vector128<uint> VectorShuffleBy4Elements(Vector128<uint> vector, byte indexs);
public static Vector128<long> VectorShuffleBy4Elements(Vector128<long> vector0, Vector128<long> vector1, byte indexs);
public static Vector128<ulong> VectorShuffleBy4Elements(Vector128<ulong> vector0, Vector128<ulong> vector1, byte indexs);
public static Vector128<sbyte> VectorElementsFusionLower(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> VectorElementsFusionLower(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> VectorElementsFusionLower(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> VectorElementsFusionLower(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> VectorElementsFusionLower(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> VectorElementsFusionLower(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> VectorElementsFusionLower(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> VectorElementsFusionLower(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> VectorElementsFusionHight(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> VectorElementsFusionHight(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> VectorElementsFusionHight(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> VectorElementsFusionHight(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> VectorElementsFusionHight(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> VectorElementsFusionHight(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> VectorElementsFusionHight(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> VectorElementsFusionHight(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> VectorElementsFusionEven(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> VectorElementsFusionEven(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> VectorElementsFusionEven(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> VectorElementsFusionEven(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> VectorElementsFusionEven(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> VectorElementsFusionEven(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> VectorElementsFusionEven(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> VectorElementsFusionEven(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> VectorElementsFusionOdd(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> VectorElementsFusionOdd(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> VectorElementsFusionOdd(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> VectorElementsFusionOdd(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> VectorElementsFusionOdd(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> VectorElementsFusionOdd(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> VectorElementsFusionOdd(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> VectorElementsFusionOdd(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> VectorEvenElementsJoin(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> VectorEvenElementsJoin(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> VectorEvenElementsJoin(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> VectorEvenElementsJoin(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> VectorEvenElementsJoin(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> VectorEvenElementsJoin(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> VectorEvenElementsJoin(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> VectorEvenElementsJoin(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<sbyte> VectorOddElementsJoin(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> VectorOddElementsJoin(Vector128<byte> left, Vector128<byte> right);
public static Vector128<short> VectorOddElementsJoin(Vector128<short> left, Vector128<short> right);
public static Vector128<ushort> VectorOddElementsJoin(Vector128<ushort> left, Vector128<ushort> right);
public static Vector128<int> VectorOddElementsJoin(Vector128<int> left, Vector128<int> right);
public static Vector128<uint> VectorOddElementsJoin(Vector128<uint> left, Vector128<uint> right);
public static Vector128<long> VectorOddElementsJoin(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> VectorOddElementsJoin(Vector128<ulong> left, Vector128<ulong> right);
public static Vector128<byte> VectorElementReplicate(Vector128<byte> vector, byte elementIndexe);
public static Vector128<sbyte> VectorElementReplicate(Vector128<sbyte> vector, byte elementIndexe);
public static Vector128<short> VectorElementReplicate(Vector128<short> vector, byte elementIndexe);
public static Vector128<ushort> VectorElementReplicate(Vector128<ushort> vector, byte elementIndexe);
public static Vector128<int> VectorElementReplicate(Vector128<int> vector, byte elementIndexe);
public static Vector128<uint> VectorElementReplicate(Vector128<uint> vector, byte elementIndexe);
public static Vector128<long> VectorElementReplicate(Vector128<long> vector, byte elementIndexe);
public static Vector128<ulong> VectorElementReplicate(Vector128<ulong> vector, byte elementIndexe);
public static Vector128<sbyte> UpdateOneVectorElement(Vector128<sbyte> vector, const byte indexs);
public static Vector128<byte> UpdateOneVectorElement(Vector128<byte> vector, const byte indexs);
public static Vector128<short> UpdateOneVectorElement(Vector128<short> vector, const byte indexs);
public static Vector128<ushort> UpdateOneVectorElement(Vector128<ushort> vector, const byte indexs);
public static Vector128<int> UpdateOneVectorElement(Vector128<int> vector, const byte indexs);
public static Vector128<uint> UpdateOneVectorElement(Vector128<uint> vector, const byte indexs);
public static Vector128<long> UpdateOneVectorElement(Vector128<long> vector, const byte indexs);
public static Vector128<ulong> UpdateOneVectorElement(Vector128<ulong> vector, const byte indexs);
public static Vector128<sbyte> VectorElementNegatedBySign(Vector128<sbyte> sign, Vector128<sbyte> data);
public static Vector128<short> VectorElementNegatedBySign(Vector128<short> sign, Vector128<short> data);
public static Vector128<int> VectorElementNegatedBySign(Vector128<int> sign, Vector128<int> data);
public static Vector128<long> VectorElementNegatedBySign(Vector128<long> sign, Vector128<long> data);
public static Vector128<sbyte> VectorElementBitClear(Vector128<sbyte> value, const byte index);
public static Vector128<byte> VectorElementBitClear(Vector128<byte> value, const byte index);
public static Vector128<short> VectorElementBitClear(Vector128<short> value, const byte index);
public static Vector128<ushort> VectorElementBitClear(Vector128<ushort> value, const byte index);
public static Vector128<int> VectorElementBitClear(Vector128<int> value, const byte index);
public static Vector128<uint> VectorElementBitClear(Vector128<uint> value, const byte index);
public static Vector128<long> VectorElementBitClear(Vector128<long> value, const byte index);
public static Vector128<ulong> VectorElementBitClear(Vector128<ulong> value, const byte index);
public static Vector128<sbyte> VectorElementBitClear(Vector128<sbyte> value, Vector128<sbyte> index);
public static Vector128<byte> VectorElementBitClear(Vector128<byte> value, Vector128<byte> index);
public static Vector128<short> VectorElementBitClear(Vector128<short> value, Vector128<short> index);
public static Vector128<ushort> VectorElementBitClear(Vector128<ushort> value, Vector128<ushort> index);
public static Vector128<int> VectorElementBitClear(Vector128<int> value, Vector128<int> index);
public static Vector128<uint> VectorElementBitClear(Vector128<uint> value, Vector128<uint> index);
public static Vector128<long> VectorElementBitClear(Vector128<long> value, Vector128<long> index);
public static Vector128<ulong> VectorElementBitClear(Vector128<ulong> value, Vector128<ulong> index);
public static Vector128<sbyte> VectorElementBitSet(Vector128<sbyte> value, const byte index);
public static Vector128<byte> VectorElementBitSet(Vector128<byte> value, const byte index);
public static Vector128<short> VectorElementBitSet(Vector128<short> value, const byte index);
public static Vector128<ushort> VectorElementBitSet(Vector128<ushort> value, const byte index);
public static Vector128<int> VectorElementBitSet(Vector128<int> value, const byte index);
public static Vector128<uint> VectorElementBitSet(Vector128<uint> value, const byte index);
public static Vector128<long> VectorElementBitSet(Vector128<long> value, const byte index);
public static Vector128<ulong> VectorElementBitSet(Vector128<ulong> value, const byte index);
public static Vector128<sbyte> VectorElementBitSet(Vector128<sbyte> value, Vector128<sbyte> index);
public static Vector128<byte> VectorElementBitSet(Vector128<byte> value, Vector128<byte> index);
public static Vector128<short> VectorElementBitSet(Vector128<short> value, Vector128<short> index);
public static Vector128<ushort> VectorElementBitSet(Vector128<ushort> value, Vector128<ushort> index);
public static Vector128<int> VectorElementBitSet(Vector128<int> value, Vector128<int> index);
public static Vector128<uint> VectorElementBitSet(Vector128<uint> value, Vector128<uint> index);
public static Vector128<long> VectorElementBitSet(Vector128<long> value, Vector128<long> index);
public static Vector128<ulong> VectorElementBitSet(Vector128<ulong> value, Vector128<ulong> index);
public static Vector128<sbyte> VectorElementBitRevert(Vector128<sbyte> value, const byte index);
public static Vector128<byte> VectorElementBitRevert(Vector128<byte> value, const byte index);
public static Vector128<short> VectorElementBitRevert(Vector128<short> value, const byte index);
public static Vector128<ushort> VectorElementBitRevert(Vector128<ushort> value, const byte index);
public static Vector128<int> VectorElementBitRevert(Vector128<int> value, const byte index);
public static Vector128<uint> VectorElementBitRevert(Vector128<uint> value, const byte index);
public static Vector128<long> VectorElementBitRevert(Vector128<long> value, const byte index);
public static Vector128<ulong> VectorElementBitRevert(Vector128<ulong> value, const byte index);
public static Vector128<sbyte> VectorElementBitRevert(Vector128<sbyte> value, Vector128<sbyte> index);
public static Vector128<byte> VectorElementBitRevert(Vector128<byte> value, Vector128<byte> index);
public static Vector128<short> VectorElementBitRevert(Vector128<short> value, Vector128<short> index);
public static Vector128<ushort> VectorElementBitRevert(Vector128<ushort> value, Vector128<ushort> index);
public static Vector128<int> VectorElementBitRevert(Vector128<int> value, Vector128<int> index);
public static Vector128<uint> VectorElementBitRevert(Vector128<uint> value, Vector128<uint> index);
public static Vector128<long> VectorElementBitRevert(Vector128<long> value, Vector128<long> index);
public static Vector128<ulong> VectorElementBitRevert(Vector128<ulong> value, Vector128<ulong> index);
public static Vector128<sbyte> IndexOfFirstNegativeElement(Vector128<sbyte> value, Vector128<sbyte> save);
public static Vector128<short> IndexOfFirstNegativeElement(Vector128<short> value, Vector128<short> save);
public static Vector128<sbyte> IndexOfFirstNegativeElement(Vector128<sbyte> value, const byte save);
public static Vector128<short> IndexOfFirstNegativeElement(Vector128<short> value, const byte save);
public static Vector128<sbyte> VectorSaturate(Vector128<sbyte> value, [ConstantExpected(Max = (byte)(7))] byte bits);
public static Vector128<short> VectorSaturate(Vector128<short> value, [ConstantExpected(Max = (byte)(15))] byte bits);
public static Vector128<int> VectorSaturate(Vector128<int> value, [ConstantExpected(Max = (byte)(31))] byte bits);
public static Vector128<long> VectorSaturate(Vector128<long> value, [ConstantExpected(Max = (byte)(63))] byte bits);
public static Vector128<byte> VectorSaturateUnsigned(Vector128<byte> value, [ConstantExpected(Max = (byte)(7))] byte bits);
public static Vector128<ushort> VectorSaturateUnsigned(Vector128<ushort> value, [ConstantExpected(Max = (byte)(15))] byte bits);
public static Vector128<uint> VectorSaturateUnsigned(Vector128<uint> value, [ConstantExpected(Max = (byte)(31))] byte bits);
public static Vector128<ulong> VectorSaturateUnsigned(Vector128<ulong> value, [ConstantExpected(Max = (byte)(63))] byte bits);
public static Vector128<int> FloatClass(Vector128<float> value);
public static Vector128<long> FloatClass(Vector128<double> value);
} |
Click to expand 'public abstract class Lasx : Lsx'namespace System.Runtime.Intrinsics.LoongArch;
// SIMD-256bits.
public abstract class Lasx : Lsx
{
internal Lasx() { }
public static new bool IsSupported { get => IsSupported; }
public static Vector256<sbyte> Add(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Add(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Add(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Add(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Add(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Add(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Add(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Add(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Add(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Add(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> AddSaturate(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<short> AddSaturate(Vector256<short> left, Vector256<short> right);
public static Vector256<int> AddSaturate(Vector256<int> left, Vector256<int> right);
public static Vector256<long> AddSaturate(Vector256<long> left, Vector256<long> right);
public static Vector256<byte> AddSaturate(Vector256<byte> left, Vector256<byte> right);
public static Vector256<ushort> AddSaturate(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<uint> AddSaturate(Vector256<uint> left, Vector256<uint> right);
public static Vector256<ulong> AddSaturate(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> AddOddEvenElementsWidening(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> AddOddEvenElementsWidening(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> AddOddEvenElementsWidening(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> AddOddEvenElementsWidening(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> AddOddEvenElementsWidening(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> AddOddEvenElementsWidening(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> AddOddEvenElementsWidening(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> AddOddEvenElementsWidening(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<short> AddEvenElementsWidening(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<ushort> AddEvenElementsWidening(Vector256<byte> left, Vector256<byte> right);
public static Vector256<int> AddEvenElementsWidening(Vector256<short> left, Vector256<short> right);
public static Vector256<uint> AddEvenElementsWidening(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<long> AddEvenElementsWidening(Vector256<int> left, Vector256<int> right);
public static Vector256<ulong> AddEvenElementsWidening(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> AddEvenElementsWidening(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> AddEvenElementsWidening(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<short> AddOddElementsWidening(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<ushort> AddOddElementsWidening(Vector256<byte> left, Vector256<byte> right);
public static Vector256<int> AddOddElementsWidening(Vector256<short> left, Vector256<short> right);
public static Vector256<uint> AddOddElementsWidening(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<long> AddOddElementsWidening(Vector256<int> left, Vector256<int> right);
public static Vector256<ulong> AddOddElementsWidening(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> AddOddElementsWidening(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> AddOddElementsWidening(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<short> AddEvenElementsWidening(Vector256<byte> left, Vector256<sbyte> right);
public static Vector256<int> AddEvenElementsWidening(Vector256<ushort> left, Vector256<short> right);
public static Vector256<long> AddEvenElementsWidening(Vector256<uint> left, Vector256<int> right);
public static Vector256<long> AddEvenElementsWidening(Vector256<ulong> left, Vector256<long> right);
public static Vector256<short> AddOddElementsWidening(Vector256<byte> left, Vector256<sbyte> right);
public static Vector256<int> AddOddElementsWidening(Vector256<ushort> left, Vector256<short> right);
public static Vector256<long> AddOddElementsWidening(Vector256<uint> left, Vector256<int> right);
public static Vector256<long> AddOddElementsWidening(Vector256<ulong> left, Vector256<long> right);
public static Vector128<long> AddHorizontalElements(Vector256<sbyte> value);
public static Vector128<ulong> AddHorizontalElements(Vector256<byte> value);
public static Vector128<long> AddHorizontalElements(Vector256<short> value);
public static Vector128<ulong> AddHorizontalElements(Vector256<ushort> value);
public static Vector128<long> AddHorizontalElements(Vector256<int> value);
public static Vector128<long> AddHorizontalElements(Vector256<uint> value);
public static Vector128<long> AddHorizontalElements(Vector256<long> value);
public static Vector128<ulong> AddHorizontalElements(Vector256<ulong> value);
public static Vector64<float> AddHorizontalElements(Vector256<float> value);
public static Vector64<double> AddHorizontalElements(Vector256<double> value);
public static Vector256<sbyte> Subtract(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Subtract(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Subtract(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Subtract(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Subtract(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Subtract(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Subtract(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Subtract(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Subtract(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Subtract(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> SubtractOddEvenElementsWidening(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> SubtractOddEvenElementsWidening(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> SubtractOddEvenElementsWidening(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> SubtractOddEvenElementsWidening(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> SubtractOddEvenElementsWidening(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> SubtractOddEvenElementsWidening(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> SubtractOddEvenElementsWidening(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> SubtractOddEvenElementsWidening(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> SubtractSaturate(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> SubtractSaturate(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> SubtractSaturate(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> SubtractSaturate(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> SubtractSaturate(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> SubtractSaturate(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> SubtractSaturate(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> SubtractSaturate(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> Multiply(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Multiply(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Multiply(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Multiply(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Multiply(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Multiply(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Multiply(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Multiply(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Multiply(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Multiply(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> MultiplyHight(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> MultiplyHight(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> MultiplyHight(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> MultiplyHight(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> MultiplyHight(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> MultiplyHight(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> MultiplyHight(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> MultiplyHight(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> Divide(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Divide(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Divide(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Divide(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Divide(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Divide(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Divide(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Divide(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Divide(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Divide(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> Modulo(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Modulo(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Modulo(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Modulo(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Modulo(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Modulo(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Modulo(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Modulo(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> FusedMultiplyAdd(Vector256<float> left, Vector256<float> right, Vector256<float> addend);
public static Vector256<double> FusedMultiplyAdd(Vector256<double> left, Vector256<double> right, Vector256<double> addend);
public static Vector256<float> FusedMultiplyAddNegated(Vector256<float> left, Vector256<float> right, Vector256<float> addend);
public static Vector256<double> FusedMultiplyAddNegated(Vector256<double> left, Vector256<double> right, Vector256<double> addend);
public static Vector256<sbyte> MultiplyAdd(Vector256<sbyte> addend, Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> MultiplyAdd(Vector256<byte> addend, Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> MultiplyAdd(Vector256<short> addend, Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> MultiplyAdd(Vector256<ushort> addend, Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> MultiplyAdd(Vector256<int> addend, Vector256<int> left, Vector256<int> right);
public static Vector256<uint> MultiplyAdd(Vector256<uint> addend, Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> MultiplyAdd(Vector256<long> addend, Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> MultiplyAdd(Vector256<ulong> addend, Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> FusedMultiplySubtract(Vector256<float> left, Vector256<float> right, Vector256<float> minuend);
public static Vector256<double> FusedMultiplySubtract(Vector256<double> left, Vector256<double> right, Vector256<double> minuend);
public static Vector256<float> FusedMultiplySubtractNegated(Vector256<float> left, Vector256<float> right, Vector256<float> minuend);
public static Vector256<double> FusedMultiplySubtractNegated(Vector256<double> left, Vector256<double> right, Vector256<double> minuend);
public static Vector256<sbyte> MultiplySubtract(Vector256<sbyte> minuend, Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> MultiplySubtract(Vector256<byte> minuend, Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> MultiplySubtract(Vector256<short> minuend, Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> MultiplySubtract(Vector256<ushort> minuend, Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> MultiplySubtract(Vector256<int> minuend, Vector256<int> left, Vector256<int> right);
public static Vector256<uint> MultiplySubtract(Vector256<uint> minuend, Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> MultiplySubtract(Vector256<long> addend, Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> MultiplySubtract(Vector256<ulong> addend, Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<short> MultiplyWideningLowerAndAdd(Vector256<short> addend, Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector256<ushort> MultiplyWideningLowerAndAdd(Vector256<ushort> addend, Vector128<byte> left, Vector128<byte> right);
public static Vector256<int> MultiplyWideningLowerAndAdd(Vector256<int> addend, Vector128<short> left, Vector128<short> right);
public static Vector256<uint> MultiplyWideningLowerAndAdd(Vector256<uint> addend, Vector128<ushort> left, Vector128<ushort> right);
public static Vector256<long> MultiplyWideningLowerAndAdd(Vector256<long> addend, Vector128<int> left, Vector128<int> right);
public static Vector256<ulong> MultiplyWideningLowerAndAdd(Vector256<ulong> addend, Vector128<uint> left, Vector128<uint> right);
public static Vector256<short> MultiplyWideningUpperAndAdd(Vector256<short> addend, Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<ushort> MultiplyWideningUpperAndAdd(Vector256<ushort> addend, Vector256<byte> left, Vector256<byte> right);
public static Vector256<int> MultiplyWideningUpperAndAdd(Vector256<int> addend, Vector256<short> left, Vector256<short> right);
public static Vector256<uint> MultiplyWideningUpperAndAdd(Vector256<uint> addend, Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<long> MultiplyWideningUpperAndAdd(Vector256<long> addend, Vector256<int> left, Vector256<int> right);
public static Vector256<ulong> MultiplyWideningUpperAndAdd(Vector256<ulong> addend, Vector256<uint> left, Vector256<uint> right);
public static Vector256<sbyte> CompareNotEqualZeroEach128(Vector256<sbyte> value);
public static Vector256<byte> CompareNotEqualZeroEach128(Vector256<byte> value);
public static Vector256<sbyte> CompareEqual(Vector256<sbyte> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<short> CompareEqual(Vector256<short> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<int> CompareEqual(Vector256<int> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<long> CompareEqual(Vector256<long> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<sbyte> CompareEqual(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> CompareEqual(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> CompareEqual(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> CompareEqual(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> CompareEqual(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> CompareEqual(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> CompareEqual(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> CompareEqual(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> CompareEqual(Vector256<float> left, Vector256<float> right);
public static Vector256<double> CompareEqual(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> CompareLessThanZeroEach128(Vector256<sbyte> value);
public static Vector256<short> CompareLessThanZeroEach128(Vector256<short> value);
public static Vector256<int> CompareLessThanZeroEach128(Vector256<int> value);
public static Vector256<long> CompareLessThanZeroEach128(Vector256<long> value);
public static Vector256<sbyte> CompareLessThan(Vector256<sbyte> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<short> CompareLessThan(Vector256<short> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<int> CompareLessThan(Vector256<int> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<long> CompareLessThan(Vector256<long> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<sbyte> CompareLessThan(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> CompareLessThan(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> CompareLessThan(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> CompareLessThan(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> CompareLessThan(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> CompareLessThan(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> CompareLessThan(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> CompareLessThan(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> CompareLessThan(Vector256<float> left, Vector256<float> right);
public static Vector256<double> CompareLessThan(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> CompareLessThanOrEqual(Vector256<sbyte> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<short> CompareLessThanOrEqual(Vector256<short> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<int> CompareLessThanOrEqual(Vector256<int> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<long> CompareLessThanOrEqual(Vector256<long> value, [ConstantExpected(Min = -16, Max = (byte)(15))] sbyte si5);
public static Vector256<sbyte> CompareLessThanOrEqual(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<short> CompareLessThanOrEqual(Vector256<short> left, Vector256<short> right);
public static Vector256<int> CompareLessThanOrEqual(Vector256<int> left, Vector256<int> right);
public static Vector256<long> CompareLessThanOrEqual(Vector256<long> left, Vector256<long> right);
public static Vector256<byte> CompareLessThanOrEqual(Vector256<byte> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector256<ushort> CompareLessThanOrEqual(Vector256<ushort> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector256<uint> CompareLessThanOrEqual(Vector256<uint> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector256<ulong> CompareLessThanOrEqual(Vector256<ulong> value, [ConstantExpected(Max = (byte)(31))] byte ui5);
public static Vector256<byte> CompareLessThanOrEqual(Vector256<byte> left, Vector256<byte> right);
public static Vector256<ushort> CompareLessThanOrEqual(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<uint> CompareLessThanOrEqual(Vector256<uint> left, Vector256<uint> right);
public static Vector256<ulong> CompareLessThanOrEqual(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<int> CompareLessThanOrEqual(Vector256<float> left, Vector256<float> right);
public static Vector256<long> CompareLessThanOrEqual(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> CompareGreaterThan(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> CompareGreaterThan(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> CompareGreaterThan(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> CompareGreaterThan(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> CompareGreaterThan(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> CompareGreaterThan(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> CompareGreaterThan(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> CompareGreaterThan(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> CompareGreaterThan(Vector256<float> left, Vector256<float> right);
public static Vector256<double> CompareGreaterThan(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> CompareGreaterThanOrEqualZeroEach128(Vector256<sbyte> value);
public static Vector256<sbyte> CompareGreaterThanOrEqual(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> CompareGreaterThanOrEqual(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> CompareGreaterThanOrEqual(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> CompareGreaterThanOrEqual(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> CompareGreaterThanOrEqual(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> CompareGreaterThanOrEqual(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> CompareGreaterThanOrEqual(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> CompareGreaterThanOrEqual(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> CompareGreaterThanOrEqual(Vector256<float> left, Vector256<float> right);
public static Vector256<double> CompareGreaterThanOrEqual(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> Max(Vector256<sbyte> value, const sbyte si5);
public static Vector256<byte> Max(Vector256<byte> value, const byte ui5);
public static Vector256<short> Max(Vector256<short> value, const sbyte si5);
public static Vector256<ushort> Max(Vector256<ushort> value, const byte ui5);
public static Vector256<int> Max(Vector256<int> value, const sbyte si5);
public static Vector256<uint> Max(Vector256<uint> value, const byte ui5);
public static Vector256<long> Max(Vector256<long> value, const sbyte si5);
public static Vector256<ulong> Max(Vector256<ulong> value, const byte ui5);
public static Vector256<sbyte> Max(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Max(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Max(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Max(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Max(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Max(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Max(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Max(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Max(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Max(Vector256<double> left, Vector256<double> right);
public static Vector256<float> MaxFloatAbsolute(Vector256<float> left, Vector256<float> right);
public static Vector256<double> MaxFloatAbsolute(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> Min(Vector256<sbyte> value, const sbyte si5);
public static Vector256<byte> Min(Vector256<byte> value, const byte ui5);
public static Vector256<short> Min(Vector256<short> value, const sbyte si5);
public static Vector256<ushort> Min(Vector256<ushort> value, const byte ui5);
public static Vector256<int> Min(Vector256<int> value, const sbyte si5);
public static Vector256<uint> Min(Vector256<uint> value, const byte ui5);
public static Vector256<long> Min(Vector256<long> value, const sbyte si5);
public static Vector256<ulong> Min(Vector256<ulong> value, const byte ui5);
public static Vector256<sbyte> Min(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Min(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Min(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Min(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Min(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Min(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Min(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Min(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Min(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Min(Vector256<double> left, Vector256<double> right);
public static Vector256<float> MinFloatAbsolute(Vector256<float> left, Vector256<float> right);
public static Vector256<double> MinFloatAbsolute(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> BitwiseSelect(Vector256<sbyte> select, Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> BitwiseSelect(Vector256<byte> select, Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> BitwiseSelect(Vector256<short> select, Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> BitwiseSelect(Vector256<ushort> select, Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> BitwiseSelect(Vector256<int> select, Vector256<int> left, Vector256<int> right);
public static Vector256<uint> BitwiseSelect(Vector256<uint> select, Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> BitwiseSelect(Vector256<long> select, Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> BitwiseSelect(Vector256<ulong> select, Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> BitwiseSelect(Vector256<float> select, Vector256<float> left, Vector256<float> right);
public static Vector256<double> BitwiseSelect(Vector256<double> select, Vector256<double> left, Vector256<double> right);
public static Vector256<byte> AbsoluteDifference(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> AbsoluteDifference(Vector256<byte> left, Vector256<byte> right);
public static Vector256<ushort> AbsoluteDifference(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> AbsoluteDifference(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<uint> AbsoluteDifference(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> AbsoluteDifference(Vector256<uint> left, Vector256<uint> right);
public static Vector256<ulong> AbsoluteDifference(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> AbsoluteDifference(Vector256<ulong> left, Vector256<ulong> right);
///// <summary>
///// float32x8_t TODO(float32x8_t a, float32x8_t b) multi-instructions.
///// LASX: TODO Xd.8S, Xj.8S, Xk.8S
///// </summary>
//public static Vector256<float> AbsoluteDifference(Vector256<float> left, Vector256<float> right);
///// <summary>
///// float64x4_t TODO(float64x4_t a, float64x4_t b)
///// LASX: TODO Xd.4D, Xj.4D, Xk.4D
///// </summary>
//public static Vector256<double> AbsoluteDifference(Vector256<double> left, Vector256<double> right);
public static unsafe Vector256<sbyte> LoadVector256(sbyte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<byte> LoadVector256(byte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<short> LoadVector256(short* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<ushort> LoadVector256(ushort* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<int> LoadVector256(int* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<uint> LoadVector256(uint* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<long> LoadVector256(long* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<ulong> LoadVector256(ulong* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<float> LoadVector256(float* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<double> LoadVector256(double* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<sbyte> LoadVector256(sbyte* address, long offsetValue);
public static unsafe Vector256<byte> LoadVector256(byte* address, long offsetValue);
public static unsafe Vector256<short> LoadVector256(short* address, long offsetValue);
public static unsafe Vector256<ushort> LoadVector256(ushort* address, long offsetValue);
public static unsafe Vector256<int> LoadVector256(int* address, long offsetValue);
public static unsafe Vector256<uint> LoadVector256(uint* address, long offsetValue);
public static unsafe Vector256<long> LoadVector256(long* address, long offsetValue);
public static unsafe Vector256<ulong> LoadVector256(ulong* address, long offsetValue);
public static unsafe Vector256<float> LoadVector256(float* address, long offsetValue);
public static unsafe Vector256<double> LoadVector256(double* address, long offsetValue);
public static unsafe Vector256<sbyte> LoadElementReplicateVector(sbyte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<byte> LoadElementReplicateVector(byte* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<short> LoadElementReplicateVector(short* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<ushort> LoadElementReplicateVector(ushort* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<int> LoadElementReplicateVector(int* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<uint> LoadElementReplicateVector(uint* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<long> LoadElementReplicateVector(long* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<ulong> LoadElementReplicateVector(ulong* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<float> LoadElementReplicateVector(float* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe Vector256<double> LoadElementReplicateVector(double* address, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static Vector256<float> Reciprocal(Vector256<float> value);
public static Vector256<double> Reciprocal(Vector256<double> value);
public static Vector256<float> ReciprocalSqrt(Vector256<float> value);
public static Vector256<double> ReciprocalSqrt(Vector256<double> value);
public static Vector256<float> Sqrt(Vector256<float> value);
public static Vector256<double> Sqrt(Vector256<double> value);
public static Vector256<float> FloatLogarithm2(Vector256<float> value);
public static Vector256<double> FloatLogarithm2(Vector256<double> value);
public static unsafe void Store(Vector256<sbyte> vector, sbyte* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<byte> vector, byte* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<short> vector, short* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<ushort> vector, ushort* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<int> vector, int* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<uint> vector, uint* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<long> vector, long* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<ulong> vector, ulong* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<float> vector, float* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<double> vector, double* addr, [ConstantExpected(Min = -2048, Max = 2047)] short si12);
public static unsafe void Store(Vector256<sbyte> vector, sbyte* addr, long offsetValue);
public static unsafe void Store(Vector256<byte> vector, byte* addr, long offsetValue);
public static unsafe void Store(Vector256<short> vector, short* addr, long offsetValue);
public static unsafe void Store(Vector256<ushort> vector, ushort* addr, long offsetValue);
public static unsafe void Store(Vector256<int> vector, int* addr, long offsetValue);
public static unsafe void Store(Vector256<uint> vector, uint* addr, long offsetValue);
public static unsafe void Store(Vector256<long> vector, long* addr, long offsetValue);
public static unsafe void Store(Vector256<ulong> vector, ulong* addr, long offsetValue);
public static unsafe void Store(Vector256<float> vector, float* addr, long offsetValue);
public static unsafe void Store(Vector256<double> vector, double* addr, long offsetValue);
public static unsafe void StoreElement(Vector256<sbyte> vector, sbyte* addr, [ConstantExpected(Min = -128, Max = 127)] short si8, [ConstantExpected(Max = (byte)(31))] byte idx);
public static unsafe void StoreElement(Vector256<byte> vector, byte* addr, [ConstantExpected(Min = -128, Max = 127)] short si8, [ConstantExpected(Max = (byte)(31))] byte idx);
public static unsafe void StoreElement(Vector256<short> vector, short* addr, [ConstantExpected(Min = -256, Max = 254)] short si9, [ConstantExpected(Max = (byte)(15))] byte idx);
public static unsafe void StoreElement(Vector256<ushort> vector, ushort* addr, [ConstantExpected(Min = -256, Max = 254)] short si9, [ConstantExpected(Max = (byte)(15))] byte idx);
public static unsafe void StoreElement(Vector256<int> vector, int* addr, [ConstantExpected(Min = -512, Max = 508)] short si10, [ConstantExpected(Max = (byte)(7))] byte idx);
public static unsafe void StoreElement(Vector256<uint> vector, uint* addr, [ConstantExpected(Min = -512, Max = 508)] short si10, [ConstantExpected(Max = (byte)(7))] byte idx);
const /// void xvstelm_d(int64x4_t val, int64_t* addr, const short si11, const byte idx) // Note: si11 is 8byte aligned.
public static unsafe void StoreElement(Vector256<long> vector, long* addr, [ConstantExpected(Min = -1024, Max = 1016)] short si11, [ConstantExpected(Max = (byte)(3))] byte idx);
public static unsafe void StoreElement(Vector256<ulong> vector, ulong* addr, [ConstantExpected(Min = -1024, Max = 1016)] short si11, [ConstantExpected(Max = (byte)(3))] byte idx);
public static unsafe void StoreElement(Vector256<float> vector, float* addr, [ConstantExpected(Min = -512, Max = 511)] short si10, [ConstantExpected(Max = (byte)(7))] byte idx);
public static unsafe void StoreElement(Vector256<double> vector, double* addr, [ConstantExpected(Min = -1024, Max = 1016)] short si11, [ConstantExpected(Max = (byte)(3))] byte idx);
public static Vector256<sbyte> Negate(Vector256<sbyte> value);
public static Vector256<short> Negate(Vector256<short> value);
public static Vector256<int> Negate(Vector256<int> value);
public static Vector256<long> Negate(Vector256<long> value);
public static Vector256<float> Negate(Vector256<float> value);
public static Vector256<double> Negate(Vector256<double> value);
public static Vector256<short> MultiplyWideningOdd(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<int> MultiplyWideningOdd(Vector256<short> left, Vector256<short> right);
public static Vector256<long> MultiplyWideningOdd(Vector256<int> left, Vector256<int> right);
public static Vector256<long> MultiplyWideningOdd(Vector256<long> left, Vector256<long> right);
public static Vector256<short> MultiplyWideningEven(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<int> MultiplyWideningEven(Vector256<short> left, Vector256<short> right);
public static Vector256<long> MultiplyWideningEven(Vector256<int> left, Vector256<int> right);
public static Vector256<long> MultiplyWideningEven(Vector256<long> left, Vector256<long> right);
public static Vector256<ushort> MultiplyWideningOdd(Vector256<byte> left, Vector256<byte> right);
public static Vector256<uint> MultiplyWideningOdd(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<ulong> MultiplyWideningOdd(Vector256<uint> left, Vector256<uint> right);
public static Vector256<ulong> MultiplyWideningOdd(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<ushort> MultiplyWideningEven(Vector256<byte> left, Vector256<byte> right);
public static Vector256<uint> MultiplyWideningEven(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<ulong> MultiplyWideningEven(Vector256<uint> left, Vector256<uint> right);
public static Vector256<ulong> MultiplyWideningEven(Vector256<ulong> left, Vector256<ulong> right);
// /// <summary>
// /// int16x16_t xvmulwod_h_bu(uint8x32_t a, int8x32_t b)
// /// LASX: XVMULWOD.H.BU.B Xd.16H, Xj.32B, Xk.32B
// /// </summary>
// public static Vector256<short> MultiplyWideningOdd(Vector256<byte> left, Vector256<sbyte> right);
// /// <summary>
// /// int32x8_t xvmulwod_w_hu(uint16x16_t a, int16x16_t b)
// /// LASX: XVMULWOD.W.HU.H Xd.8W, Xj.16H, Xk.16H
// /// </summary>
// public static Vector256<int> MultiplyWideningOdd(Vector256<ushort> left, Vector256<short> right);
// /// <summary>
// /// int64x4_t xvmulwod_d_wu(uint32x8_t a, int32x8_t b)
// /// LASX: XVMULWOD.D.WU.W Xd.4D, Xj.8W, Xk.8W
// /// </summary>
// public static Vector256<long> MultiplyWideningOdd(Vector256<uint> left, Vector256<int> right);
// /// <summary>
// /// int128x2_t xvmulwod_q_du(uint64x4_t a, int64x4_t b)
// /// LASX: XVMULWOD.Q.DU.D Xd.2Q, Xj.4D, Xk.4D
// /// </summary>
// public static Vector256<long> MultiplyWideningOdd(Vector256<ulong> left, Vector256<long> right);
// /// <summary>
// /// int16x16_t xvmulwev_h_bu(uint8x32_t a, int8x32_t b)
// /// LASX: XVMULWEV.H.BU.B Xd.16H, Xj.32B, Xk.32B
// /// </summary>
// public static Vector256<short> MultiplyWideningEven(Vector256<byte> left, Vector256<sbyte> right);
// /// <summary>
// /// int32x8_t xvmulwev_w_hu(uint16x16_t a, int16x16_t b)
// /// LASX: XVMULWEV.W.HU.H Xd.8W, Xj.16H, Xk.16H
// /// </summary>
// public static Vector256<int> MultiplyWideningEven(Vector256<ushort> left, Vector256<short> right);
// /// <summary>
// /// int64x4_t xvmulwev_d_wu(uint32x8_t a, int32x8_t b)
// /// LASX: XVMULWEV.D.WU.W Xd.4D, Xj.8W, Xk.8W
// /// </summary>
// public static Vector256<long> MultiplyWideningEven(Vector256<uint> left, Vector256<int> right);
// /// <summary>
// /// int128x2_t xvmulwev_q_du(uint64x4_t a, int64x4_t b)
// /// LASX: XVMULWEV.Q.DU.D Xd.2Q, Xj.4D, Xk.4D
// /// </summary>
// public static Vector256<long> MultiplyWideningEven(Vector256<ulong> left, Vector256<long> right);
public static Vector256<sbyte> Average(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Average(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Average(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Average(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Average(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Average(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Average(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Average(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> AverageRounded(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> AverageRounded(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> AverageRounded(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> AverageRounded(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> AverageRounded(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> AverageRounded(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> AverageRounded(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> AverageRounded(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<short> SignExtendWideningLowerAndShiftLeftEach128(Vector256<sbyte> value, byte shift);
public static Vector256<short> SignExtendWideningLowerAndShiftLeftEach128(Vector256<byte> value, byte shift);
public static Vector256<int> SignExtendWideningLowerAndShiftLeftEach128(Vector256<short> value, byte shift);
public static Vector256<int> SignExtendWideningLowerAndShiftLeftEach128(Vector256<ushort> value, byte shift);
public static Vector256<long> SignExtendWideningLowerAndShiftLeftEach128(Vector256<int> value, byte shift);
public static Vector256<long> SignExtendWideningLowerAndShiftLeftEach128(Vector256<uint> value, byte shift);
public static Vector256<ushort> ZeroExtendWideningLowerAndShiftLeftEach128(Vector256<byte> value, byte shift);
public static Vector256<short> ZeroExtendWideningLowerAndShiftLeftEach128(Vector256<sbyte> value, byte shift);
public static Vector256<uint> ZeroExtendWideningLowerAndShiftLeftEach128(Vector256<ushort> value, byte shift);
public static Vector256<int> ZeroExtendWideningLowerAndShiftLeftEach128(Vector256<short> value, byte shift);
public static Vector256<ulong> ZeroExtendWideningLowerAndShiftLeftEach128(Vector256<uint> value, byte shift);
public static Vector256<long> ZeroExtendWideningLowerAndShiftLeftEach128(Vector256<int> value, byte shift);
public static Vector256<ulong> ZeroExtendWideningLowerEach128(Vector256<long> value);
public static Vector256<ulong> ZeroExtendWideningLowerEach128(Vector256<ulong> value);
public static Vector256<short> SignExtendWideningLower(Vector128<sbyte> value, byte shift);
public static Vector256<short> SignExtendWideningLower(Vector128<byte> value, byte shift);
public static Vector256<int> SignExtendWideningLower(Vector64<sbyte> value, byte shift);
//public static Vector256<int> SignExtendWideningLower(Vector128<sbyte> value, byte shift);
public static Vector256<int> SignExtendWideningLower(Vector64<byte> value, byte shift);
//public static Vector256<int> SignExtendWideningLower(Vector128<byte> value, byte shift);
public static Vector256<long> SignExtendWideningLower(Vector64<sbyte> value, byte shift);
public static Vector256<long> SignExtendWideningLower(Vector64<byte> value, byte shift);
public static Vector256<int> SignExtendWideningLower(Vector128<short> value, byte shift);
public static Vector256<int> SignExtendWideningLower(Vector128<ushort> value, byte shift);
public static Vector256<long> SignExtendWideningLower(Vector64<short> value, byte shift);
//public static Vector256<long> SignExtendWideningLower(Vector128<short> value, byte shift);
public static Vector256<long> SignExtendWideningLower(Vector64<ushort> value, byte shift);
//public static Vector256<long> SignExtendWideningLower(Vector128<ushort> value, byte shift);
public static Vector256<long> SignExtendWideningLower(Vector128<int> value, byte shift);
public static Vector256<long> SignExtendWideningLower(Vector128<uint> value, byte shift);
public static Vector256<ushort> ZeroExtendWideningLower(Vector128<byte> value, byte shift);
public static Vector256<short> ZeroExtendWideningLower(Vector128<sbyte> value, byte shift);
public static Vector256<uint> ZeroExtendWideningLower(Vector64<byte> value, byte shift);
public static Vector256<int> ZeroExtendWideningLower(Vector64<sbyte> value, byte shift);
public static Vector256<ulong> ZeroExtendWideningLower(Vector64<byte> value, byte shift);
public static Vector256<long> ZeroExtendWideningLower(Vector64<sbyte> value, byte shift);
public static Vector256<uint> ZeroExtendWideningLower(Vector128<ushort> value, byte shift);
public static Vector256<int> ZeroExtendWideningLower(Vector128<short> value, byte shift);
public static Vector256<ulong> ZeroExtendWideningLower(Vector64<ushort> value, byte shift);
public static Vector256<long> ZeroExtendWideningLower(Vector64<short> value, byte shift);
public static Vector256<ulong> ZeroExtendWideningLower(Vector128<uint> value, byte shift);
public static Vector256<long> ZeroExtendWideningLower(Vector128<int> value, byte shift);
public static Vector256<short> SignExtendWideningUpperEach128(Vector256<sbyte> value);
public static Vector256<int> SignExtendWideningUpperEach128(Vector256<short> value);
public static Vector256<long> SignExtendWideningUpperEach128(Vector256<int> value);
public static Vector256<long> SignExtendWideningUpperEach128(Vector256<long> value);
public static Vector256<short> ZeroExtendWideningUpperEach128(Vector256<sbyte> value);
public static Vector256<ushort> ZeroExtendWideningUpperEach128(Vector256<byte> value);
public static Vector256<int> ZeroExtendWideningUpperEach128(Vector256<short> value);
public static Vector256<uint> ZeroExtendWideningUpperEach128(Vector256<ushort> value);
public static Vector256<long> ZeroExtendWideningUpperEach128(Vector256<int> value);
public static Vector256<ulong> ZeroExtendWideningUpperEach128(Vector256<uint> value);
public static Vector256<ulong> ZeroExtendWideningUpperEach128(Vector256<long> value);
public static Vector256<ulong> ZeroExtendWideningUpperEach128(Vector256<ulong> value);
public static Vector256<sbyte> And(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> And(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> And(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> And(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> And(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> And(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> And(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> And(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> And(Vector256<float> left, Vector256<float> right);
public static Vector256<double> And(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> AndNot(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> AndNot(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> AndNot(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> AndNot(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> AndNot(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> AndNot(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> AndNot(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> AndNot(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> AndNot(Vector256<float> left, Vector256<float> right);
public static Vector256<double> AndNot(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> Or(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Or(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Or(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Or(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Or(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Or(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Or(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Or(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Or(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Or(Vector256<double> left, Vector256<double> right);
public static Vector256<byte> Not(Vector256<byte> value);
public static Vector256<double> Not(Vector256<double> value);
public static Vector256<short> Not(Vector256<short> value);
public static Vector256<int> Not(Vector256<int> value);
public static Vector256<long> Not(Vector256<long> value);
public static Vector256<sbyte> Not(Vector256<sbyte> value);
public static Vector256<float> Not(Vector256<float> value);
public static Vector256<ushort> Not(Vector256<ushort> value);
public static Vector256<uint> Not(Vector256<uint> value);
public static Vector256<ulong> Not(Vector256<ulong> value);
public static Vector256<sbyte> NotOr(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> NotOr(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> NotOr(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> NotOr(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> NotOr(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> NotOr(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> NotOr(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> NotOr(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> NotOr(Vector256<float> left, Vector256<float> right);
public static Vector256<double> NotOr(Vector256<double> left, Vector256<double> right);
public static Vector64<byte> OrNot(Vector64<byte> left, Vector64<byte> right);
public static Vector64<double> OrNot(Vector64<double> left, Vector64<double> right);
public static Vector64<short> OrNot(Vector64<short> left, Vector64<short> right);
public static Vector64<int> OrNot(Vector64<int> left, Vector64<int> right);
public static Vector64<long> OrNot(Vector64<long> left, Vector64<long> right);
public static Vector64<sbyte> OrNot(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector64<float> OrNot(Vector64<float> left, Vector64<float> right);
public static Vector64<ushort> OrNot(Vector64<ushort> left, Vector64<ushort> right);
public static Vector64<uint> OrNot(Vector64<uint> left, Vector64<uint> right);
public static Vector64<ulong> OrNot(Vector64<ulong> left, Vector64<ulong> right);
public static Vector256<sbyte> OrNot(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> OrNot(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> OrNot(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> OrNot(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> OrNot(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> OrNot(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> OrNot(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> OrNot(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> OrNot(Vector256<float> left, Vector256<float> right);
public static Vector256<double> OrNot(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> Xor(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> Xor(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> Xor(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> Xor(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> Xor(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> Xor(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> Xor(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> Xor(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<float> Xor(Vector256<float> left, Vector256<float> right);
public static Vector256<double> Xor(Vector256<double> left, Vector256<double> right);
public static Vector256<sbyte> ShiftLeftLogical(Vector256<sbyte> value, const byte shift);
public static Vector256<byte> ShiftLeftLogical(Vector256<byte> value, const byte shift);
public static Vector256<short> ShiftLeftLogical(Vector256<short> value, const byte shift);
public static Vector256<ushort> ShiftLeftLogical(Vector256<ushort> value, const byte shift);
public static Vector256<int> ShiftLeftLogical(Vector256<int> value, const byte shift);
public static Vector256<uint> ShiftLeftLogical(Vector256<uint> value, const byte shift);
public static Vector256<long> ShiftLeftLogical(Vector256<long> value, const byte shift);
public static Vector256<ulong> ShiftLeftLogical(Vector256<ulong> value, const byte shift);
public static Vector256<sbyte> ShiftLeftLogicalByByteEach128(Vector256<sbyte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<byte> ShiftLeftLogicalByByteEach128(Vector256<byte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<sbyte> ShiftLeftLogical(Vector256<sbyte> value, Vector256<sbyte> shift);
public static Vector256<byte> ShiftLeftLogical(Vector256<byte> value, Vector256<byte> shift);
public static Vector256<short> ShiftLeftLogical(Vector256<short> value, Vector256<short> shift);
public static Vector256<ushort> ShiftLeftLogical(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector256<int> ShiftLeftLogical(Vector256<int> value, Vector256<int> shift);
public static Vector256<uint> ShiftLeftLogical(Vector256<uint> value, Vector256<uint> shift);
public static Vector256<long> ShiftLeftLogical(Vector256<long> value, Vector256<long> shift);
public static Vector256<ulong> ShiftLeftLogical(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<sbyte> ShiftRightLogical(Vector256<sbyte> value, const byte shift);
public static Vector256<byte> ShiftRightLogical(Vector256<byte> value, const byte shift);
public static Vector256<short> ShiftRightLogical(Vector256<short> value, const byte shift);
public static Vector256<ushort> ShiftRightLogical(Vector256<ushort> value, const byte shift);
public static Vector256<int> ShiftRightLogical(Vector256<int> value, const byte shift);
public static Vector256<uint> ShiftRightLogical(Vector256<uint> value, const byte shift);
public static Vector256<long> ShiftRightLogical(Vector256<long> value, const byte shift);
public static Vector256<ulong> ShiftRightLogical(Vector256<ulong> value, const byte shift);
public static Vector256<sbyte> ShiftRightLogicalByByteEach128(Vector256<sbyte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<byte> ShiftRightLogicalByByteEach128(Vector256<byte> value, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<sbyte> ShiftRightLogical(Vector256<sbyte> value, Vector256<sbyte> shift);
public static Vector256<byte> ShiftRightLogical(Vector256<byte> value, Vector256<byte> shift);
public static Vector256<short> ShiftRightLogical(Vector256<short> value, Vector256<short> shift);
public static Vector256<ushort> ShiftRightLogical(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector256<int> ShiftRightLogical(Vector256<int> value, Vector256<int> shift);
public static Vector256<uint> ShiftRightLogical(Vector256<uint> value, Vector256<uint> shift);
public static Vector256<long> ShiftRightLogical(Vector256<long> value, Vector256<long> shift);
public static Vector256<ulong> ShiftRightLogical(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<sbyte> ShiftRightLogicalRounded(Vector256<sbyte> value, const byte shift);
public static Vector256<byte> ShiftRightLogicalRounded(Vector256<byte> value, const byte shift);
public static Vector256<short> ShiftRightLogicalRounded(Vector256<short> value, const byte shift);
public static Vector256<ushort> ShiftRightLogicalRounded(Vector256<ushort> value, const byte shift);
public static Vector256<int> ShiftRightLogicalRounded(Vector256<int> value, const byte shift);
public static Vector256<uint> ShiftRightLogicalRounded(Vector256<uint> value, const byte shift);
public static Vector256<long> ShiftRightLogicalRounded(Vector256<long> value, const byte shift);
public static Vector256<ulong> ShiftRightLogicalRounded(Vector256<ulong> value, const byte shift);
public static Vector256<sbyte> ShiftRightLogicalRounded(Vector256<sbyte> value, Vector256<sbyte> shift);
public static Vector256<byte> ShiftRightLogicalRounded(Vector256<byte> value, Vector256<byte> shift);
public static Vector256<short> ShiftRightLogicalRounded(Vector256<short> value, Vector256<short> shift);
public static Vector256<ushort> ShiftRightLogicalRounded(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector256<int> ShiftRightLogicalRounded(Vector256<int> value, Vector256<int> shift);
public static Vector256<uint> ShiftRightLogicalRounded(Vector256<uint> value, Vector256<uint> shift);
public static Vector256<long> ShiftRightLogicalRounded(Vector256<long> value, Vector256<long> shift);
public static Vector256<ulong> ShiftRightLogicalRounded(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<byte> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<ushort> left, Vector256<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<sbyte> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<short> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<ushort> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<uint> left, Vector256<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<int> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
public static Vector256<uint> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<ulong> left, Vector256<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x4_t xvsrlrni_d_q(int128x2_t left, int128x2_t right, const int n)
///// LASX: XVSRLRNI.D.Q Xd, Xj, ui7
///// </summary>
//public static Vector256<long> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<sbyte> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<byte> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector128<short> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<ushort> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<int> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector128<uint> ShiftRightLogicalRoundedNarrowingLowerEach128(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<sbyte> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<short> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<int> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x4_t xvsrarni_d_q(int128x2_t left, int128x2_t right, const int n)
///// LASX: XVSRARNI.D.Q Xd, Xj, ui7
///// </summary>
//public static Vector256<long> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<sbyte> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<short> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<ushort> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<int> ShiftRightArithmeticRoundedNarrowingLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector256<sbyte> ShiftRightArithmetic(Vector256<sbyte> value, const byte shift);
public static Vector256<short> ShiftRightArithmetic(Vector256<short> value, const byte shift);
public static Vector256<int> ShiftRightArithmetic(Vector256<int> value, const byte shift);
public static Vector256<long> ShiftRightArithmetic(Vector256<long> value, const byte shift);
public static Vector256<sbyte> ShiftRightArithmetic(Vector256<sbyte> value, Vector256<sbyte> shift);
public static Vector256<short> ShiftRightArithmetic(Vector256<short> value, Vector256<short> shift);
public static Vector256<int> ShiftRightArithmetic(Vector256<int> value, Vector256<int> shift);
public static Vector256<long> ShiftRightArithmetic(Vector256<long> value, Vector256<long> shift);
public static Vector256<sbyte> ShiftRightArithmeticRounded(Vector256<sbyte> value, const byte shift);
public static Vector256<short> ShiftRightArithmeticRounded(Vector256<short> value, const byte shift);
public static Vector256<int> ShiftRightArithmeticRounded(Vector256<int> value, const byte shift);
public static Vector256<long> ShiftRightArithmeticRounded(Vector256<long> value, const byte shift);
public static Vector256<sbyte> ShiftRightArithmeticRounded(Vector256<sbyte> value, Vector256<sbyte> shift);
public static Vector256<short> ShiftRightArithmeticRounded(Vector256<short> value, Vector256<short> shift);
public static Vector256<int> ShiftRightArithmeticRounded(Vector256<int> value, Vector256<int> shift);
public static Vector256<long> ShiftRightArithmeticRounded(Vector256<long> value, Vector256<long> shift);
public static Vector256<sbyte> RotateRight(Vector256<sbyte> value, const byte shift);
public static Vector256<byte> RotateRight(Vector256<byte> value, const byte shift);
public static Vector256<short> RotateRight(Vector256<short> value, const byte shift);
public static Vector256<ushort> RotateRight(Vector256<ushort> value, const byte shift);
public static Vector256<int> RotateRight(Vector256<int> value, const byte shift);
public static Vector256<uint> RotateRight(Vector256<uint> value, const byte shift);
public static Vector256<long> RotateRight(Vector256<long> value, const byte shift);
public static Vector256<ulong> RotateRight(Vector256<ulong> value, const byte shift);
public static Vector256<sbyte> RotateRight(Vector256<sbyte> value, Vector256<sbyte> shift);
public static Vector256<byte> RotateRight(Vector256<byte> value, Vector256<byte> shift);
public static Vector256<short> RotateRight(Vector256<short> value, Vector256<short> shift);
public static Vector256<ushort> RotateRight(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector256<int> RotateRight(Vector256<int> value, Vector256<int> shift);
public static Vector256<uint> RotateRight(Vector256<uint> value, Vector256<uint> shift);
public static Vector256<long> RotateRight(Vector256<long> value, Vector256<long> shift);
public static Vector256<ulong> RotateRight(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<byte> Abs(Vector256<sbyte> value);
public static Vector256<ushort> Abs(Vector256<short> value);
public static Vector256<uint> Abs(Vector256<int> value);
public static Vector256<ulong> Abs(Vector256<long> value);
public static Vector256<float> Abs(Vector256<float> value);
public static Vector256<double> Abs(Vector256<double> value);
public static Vector256<float> Floor(Vector256<float> value);
public static Vector256<double> Floor(Vector256<double> value);
public static Vector256<float> Ceiling(Vector256<float> value);
public static Vector256<double> Ceiling(Vector256<double> value);
public static Vector256<float> RoundToZero(Vector256<float> value);
public static Vector256<double> RoundToZero(Vector256<double> value);
public static Vector256<float> RoundToNegativeInfinity(Vector256<float> value);
public static Vector256<double> RoundToNegativeInfinity(Vector256<double> value);
public static Vector256<float> RoundToPositiveInfinity(Vector256<float> value);
public static Vector256<double> RoundToPositiveInfinity(Vector256<double> value);
// /// <summary>
// /// int8x32_t TODO(int8x32_t v, int8_t data, const int index) NOTE: maybe implemented by two instructions.
// /// LASX: TODO Xd.B, Rj, imm
// /// </summary>
// public static Vector256<sbyte> Insert(Vector256<sbyte> vector, sbyte data, const byte index);
// /// <summary>
// /// uint8x32_t TODO(uint8x32_t v, uint8_t data, const int index) NOTE: maybe implemented by two instructions.
// /// LASX: TODO Xd.B, Rj, imm
// /// </summary>
// public static Vector256<byte> Insert(Vector256<byte> vector, byte data, const byte index);
// /// <summary>
// /// int16x16_t TODO(int16x16_t v, int16_t data, const int index) NOTE: maybe implemented by two instructions.
// /// LASX: TODO Xd.H, Rj, imm
// /// </summary>
// public static Vector256<short> Insert(Vector256<short> vector, short data, const byte index);
// /// <summary>
// /// uint16x16_t TODO(uint16x16_t v, uint16_t data, const int index) NOTE: maybe implemented by two instructions.
// /// LASX: TODO Xd.H, Rj, imm
// /// </summary>
// public static Vector256<ushort> Insert(Vector256<ushort> vector, ushort data, const byte index);
public static Vector256<int> Insert(Vector256<int> vector, int data, const byte index);
public static Vector256<uint> Insert(Vector256<uint> vector, uint data, const byte index);
public static Vector256<long> Insert(Vector256<long> vector, long data, const byte index);
public static Vector256<ulong> Insert(Vector256<ulong> vector, ulong data, const byte index);
public static Vector256<float> Insert(Vector256<float> vector, float data, const byte index);
public static Vector256<double> Insert(Vector256<double> vector, double data, const byte index);
public static Vector256<sbyte> DuplicateToVector256(sbyte value);
public static Vector256<byte> DuplicateToVector256(byte value);
public static Vector256<short> DuplicateToVector256(short value);
public static Vector256<ushort> DuplicateToVector256(ushort value);
public static Vector256<int> DuplicateToVector256(int value);
public static Vector256<uint> DuplicateToVector256(uint value);
public static Vector256<long> DuplicateToVector256(long value);
public static Vector256<ulong> DuplicateToVector256(ulong value);
public static Vector256<float> DuplicateToVector256(float value);
public static Vector256<double> DuplicateToVector256(double value);
public static Vector256<float> ConvertToSingle(Vector256<int> value);
public static Vector256<float> ConvertToSingle(Vector256<uint> value);
public static Vector256<double> ConvertToDouble(Vector256<long> value);
public static Vector256<double> ConvertToDouble(Vector256<ulong> value);
public static bool HasElementsNotZero(Vector256<byte> value);
public static bool AllElementsIsZero(Vector256<byte> value);
public static bool AllElementsNotZero(Vector256<sbyte> value);
public static bool AllElementsNotZero(Vector256<byte> value);
public static bool AllElementsNotZero(Vector256<short> value);
public static bool AllElementsNotZero(Vector256<ushort> value);
public static bool AllElementsNotZero(Vector256<int> value);
public static bool AllElementsNotZero(Vector256<uint> value);
public static bool AllElementsNotZero(Vector256<long> value);
public static bool AllElementsNotZero(Vector256<ulong> value);
public static bool HasElementsIsZero(Vector256<sbyte> value);
public static bool HasElementsIsZero(Vector256<byte> value);
public static bool HasElementsIsZero(Vector256<short> value);
public static bool HasElementsIsZero(Vector256<ushort> value);
public static bool HasElementsIsZero(Vector256<int> value);
public static bool HasElementsIsZero(Vector256<uint> value);
public static bool HasElementsIsZero(Vector256<long> value);
public static bool HasElementsIsZero(Vector256<ulong> value);
public static Vector256<sbyte> ShiftRightLogicalNarrowingLowerEach128(Vector256<short> left, Vector256<short> right, byte shift);
public static Vector256<byte> ShiftRightLogicalNarrowingLowerEach128(Vector256<ushort> left, Vector256<ushort> right, byte shift);
public static Vector256<short> ShiftRightLogicalNarrowingLowerEach128(Vector256<int> left, Vector256<int> right, byte shift);
public static Vector256<ushort> ShiftRightLogicalNarrowingLowerEach128(Vector256<uint> left, Vector256<uint> right, byte shift);
public static Vector256<int> ShiftRightLogicalNarrowingLowerEach128(Vector256<long> left, Vector256<long> right, byte shift);
public static Vector256<uint> ShiftRightLogicalNarrowingLowerEach128(Vector256<ulong> left, Vector256<ulong> right, byte shift);
///// <summary>
///// uint64x4 xvsrlni_d_q(uint128x2_t left, uint128x2_t right, shift)
///// LASX: XVSRLNI.D.Q Xd.2Q, Xj.2Q, ui7
///// </summary>
//public static Vector256<ulong> ShiftRightLogicalNarrowingLowerEach128(Vector256<ulonglong> left, Vector256<ulonglong> right, byte shift);
public static Vector128<byte> ShiftRightLogicalNarrowingLowerEach128(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector128<short> ShiftRightLogicalNarrowingLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<ushort> ShiftRightLogicalNarrowingLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<int> ShiftRightLogicalNarrowingLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector128<uint> ShiftRightLogicalNarrowingLowerEach128(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<sbyte> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<byte> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<ushort> left, Vector256<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<short> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<ushort> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<uint> left, Vector256<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<int> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
public static Vector256<uint> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<ulong> left, Vector256<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x4_t xvssrlni_d_q(int128x2_t left, int128x2_t right, const byte n)
///// LASX: XVSSRLNI.D.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<long> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<sbyte> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<byte> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector128<short> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<ushort> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<int> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector128<uint> ShiftRightLogicalNarrowingSaturateLowerEach128(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<byte> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<ushort> left, Vector256<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<ushort> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<uint> left, Vector256<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<uint> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<ulong> left, Vector256<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x4_t xvssrlni_du_q(uint128x2_t left, uint128x2_t right, const byte n)
///// LASX: XVSSRLNI.DU.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<ulong> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<ulonglong> left, Vector256<ulonglong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<byte> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector128<ushort> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<uint> ShiftRightLogicalNarrowingSaturateUnsignedLowerEach128(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<sbyte> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<short> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<int> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x4_t xvssran_d_q(int128x2_t left, int128x2_t right, const byte n)
///// LASX: XVSSRANI.D.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<long> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<sbyte> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<short> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<int> ShiftRightArithmeticNarrowingSaturateLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector256<byte> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<ushort> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<uint> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x4_t xvssrani_du_q(int128x2_t left, int128x2_t right, const byte n)
///// LASX: XVSSRANI.DU.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<ulong> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<byte> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<ushort> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<uint> ShiftRightArithmeticNarrowingSaturateUnsignedLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector256<sbyte> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<byte> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<ushort> left, Vector256<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<short> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<ushort> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<uint> left, Vector256<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<int> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
public static Vector256<uint> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<ulong> left, Vector256<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x4_t xvssrlrni_d_q(int128x2_t left, int128x2_t right, const byte n)
///// LASX: XVSSRLRNI.D.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<long> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<sbyte> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<byte> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector128<short> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<ushort> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<int> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector128<uint> ShiftRightLogicalRoundedNarrowingSaturateLowerEach128(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<byte> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<ushort> left, Vector256<ushort> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<ushort> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<uint> left, Vector256<uint> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<uint> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<ulong> left, Vector256<ulong> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x4_t xvssrlrni_du_q(uint128x2_t left, uint128x2_t right, const byte n)
///// LASX: XVSSRLRNI.DU.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<ulong> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<ulonglong> left, Vector256<ulonglong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<byte> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<ushort> value, Vector256<ushort> shift);
public static Vector128<ushort> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<uint> value, Vector256<uint> shift);
public static Vector128<uint> ShiftRightLogicalRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<ulong> value, Vector256<ulong> shift);
public static Vector256<sbyte> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<short> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<int> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// int64x4_t xvssrarn_d_q(int128x2_t left, int128x2_t right, const byte n)
///// LASX: XVSSRARNI.D.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<long> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<sbyte> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<short> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<int> ShiftRightArithmeticRoundedNarrowingSaturateLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector256<byte> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<short> left, Vector256<short> right, [ConstantExpected(Max = (byte)(15))] byte shift);
public static Vector256<ushort> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<int> left, Vector256<int> right, [ConstantExpected(Max = (byte)(31))] byte shift);
public static Vector256<uint> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<long> left, Vector256<long> right, [ConstantExpected(Max = (byte)(63))] byte shift);
///// <summary>
///// uint64x4_t xvssrarni_du_q(int128x2_t left, int128x2_t right, const byte n)
///// LASX: XVSSRARNI.DU.Q Xd.4D, Xj.2Q, ui7
///// </summary>
//public static Vector256<ulong> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<longlong> left, Vector256<longlong> right, [ConstantExpected(Max = (byte)(127))] byte shift);
public static Vector128<byte> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<short> value, Vector256<short> shift);
public static Vector128<ushort> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<int> value, Vector256<int> shift);
public static Vector128<uint> ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLowerEach128(Vector256<long> value, Vector256<long> shift);
public static Vector256<sbyte> LeadingSignCount(Vector256<sbyte> value);
public static Vector256<short> LeadingSignCount(Vector256<short> value);
public static Vector256<int> LeadingSignCount(Vector256<int> value);
public static Vector256<long> LeadingSignCount(Vector256<long> value);
public static Vector256<sbyte> LeadingZeroCount(Vector256<sbyte> value);
public static Vector256<byte> LeadingZeroCount(Vector256<byte> value);
public static Vector256<short> LeadingZeroCount(Vector256<short> value);
public static Vector256<ushort> LeadingZeroCount(Vector256<ushort> value);
public static Vector256<int> LeadingZeroCount(Vector256<int> value);
public static Vector256<uint> LeadingZeroCount(Vector256<uint> value);
public static Vector256<long> LeadingZeroCount(Vector256<long> value);
public static Vector256<ulong> LeadingZeroCount(Vector256<ulong> value);
public static Vector256<sbyte> PopCount(Vector256<sbyte> value);
public static Vector256<byte> PopCount(Vector256<byte> value);
public static Vector256<short> PopCount(Vector256<short> value);
public static Vector256<ushort> PopCount(Vector256<ushort> value);
public static Vector256<int> PopCount(Vector256<int> value);
public static Vector256<uint> PopCount(Vector256<uint> value);
public static Vector256<long> PopCount(Vector256<long> value);
public static Vector256<ulong> PopCount(Vector256<ulong> value);
public static Vector256<int> VectorShuffle(Vector256<int> vector, Vector256<int> indexs);
public static Vector256<uint> VectorShuffle(Vector256<uint> vector, Vector256<uint> indexs);
public static Vector256<long> VectorShuffle(Vector256<long> vector, const byte indexs);
public static Vector256<ulong> VectorShuffle(Vector256<ulong> vector, const byte indexs);
public static Vector256<long> VectorShuffle(Vector256<long> vector0, Vector256<long> vector1, const byte indexs);
///// <summary>
///// uint8x32_t xvshuf_b(uint8x32_t vec, uint8x32_t idx)
///// LASX: XVSHUF.B Xd.32B, Xj.32B, Xk.32B, Xa.32B
///// </summary>
//public static Vector256<byte> VectorShuffleEach128(Vector256<byte> vector, Vector256<byte> indexs);
///// <summary>
///// int8x32_t xvshuf_b(int8x32_t vec, int8x32_t idx)
///// LASX: XVSHUF.B Xd.32B, Xj.32B, Xk.32B, Xa.32B
///// </summary>
//public static Vector256<sbyte> VectorShuffleEach128(Vector256<sbyte> vector, Vector256<sbyte> indexs);
public static Vector256<byte> VectorShuffleEach128(Vector256<byte> vector0, Vector256<byte> vector1, Vector256<byte> indexs);
public static Vector256<sbyte> VectorShuffleEach128(Vector256<sbyte> vector0, Vector256<sbyte> vector1, Vector256<sbyte> indexs);
///// <summary>
///// int16x16_t xvshuf_h(int16x16_t vec, int16x16_t idx)
///// LASX: XVSHUF.H Xd.16H, Xj.16H, Xk.16H //NOTE: Xd is both input and output while input as index.
///// </summary>
//public static Vector256<short> VectorShuffleEach128(Vector256<short> vector, Vector256<short> indexs);
///// <summary>
///// uint16x16_t xvshuf_h(uint16x16_t vec, uint16x16_t idx)
///// LASX: XVSHUF.H Xd.16H, Xj.16H, Xk.16H //NOTE: Xd is both input and output while input as index.
///// </summary>
//public static Vector256<ushort> VectorShuffleEach128(Vector256<ushort> vector, Vector256<ushort> indexs);
public static Vector256<short> VectorShuffleEach128(Vector256<short> vector0, Vector256<short> vector1, Vector256<short> indexs);
public static Vector256<ushort> VectorShuffleEach128(Vector256<ushort> vector0, Vector256<ushort> vector1, Vector256<ushort> indexs);
public static Vector256<int> VectorShuffleEach128(Vector256<int> vector, const byte indexs);
public static Vector256<uint> VectorShuffleEach128(Vector256<uint> vector, const byte indexs);
public static Vector256<int> VectorShuffleEach128(Vector256<int> vector0, Vector256<int> vector1, Vector256<int> indexs);
public static Vector256<uint> VectorShuffleEach128(Vector256<uint> vector0, Vector256<uint> vector1, Vector256<uint> indexs);
public static Vector256<long> VectorShuffleEach128(Vector256<long> vector0, Vector256<long> vector1, Vector256<long> indexs);
public static Vector256<ulong> VectorShuffleEach128(Vector256<ulong> vector0, Vector256<ulong> vector1, Vector256<ulong> indexs);
public static Vector256<sbyte> VectorShuffleBy4Elements(Vector256<sbyte> vector, byte indexs);
public static Vector256<byte> VectorShuffleBy4Elements(Vector256<byte> vector, byte indexs);
public static Vector256<short> VectorShuffleBy4Elements(Vector256<short> vector, byte indexs);
public static Vector256<ushort> VectorShuffleBy4Elements(Vector256<ushort> vector, byte indexs);
public static Vector256<int> VectorShuffleBy4Elements(Vector256<int> vector, byte indexs);
public static Vector256<uint> VectorShuffleBy4Elements(Vector256<uint> vector, byte indexs);
public static Vector256<long> VectorShuffleBy4Elements(Vector256<long> vector0, Vector256<long> vector1, byte indexs);
public static Vector256<ulong> VectorShuffleBy4Elements(Vector256<ulong> vector0, Vector256<ulong> vector1, byte indexs);
public static Vector256<sbyte> VectorElementsFusionLowerEach128(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> VectorElementsFusionLowerEach128(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> VectorElementsFusionLowerEach128(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> VectorElementsFusionLowerEach128(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> VectorElementsFusionLowerEach128(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> VectorElementsFusionLowerEach128(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> VectorElementsFusionLowerEach128(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> VectorElementsFusionLowerEach128(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> VectorElementsFusionHightEach128(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> VectorElementsFusionHightEach128(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> VectorElementsFusionHightEach128(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> VectorElementsFusionHightEach128(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> VectorElementsFusionHightEach128(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> VectorElementsFusionHightEach128(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> VectorElementsFusionHightEach128(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> VectorElementsFusionHightEach128(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> VectorElementsFusionEven(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> VectorElementsFusionEven(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> VectorElementsFusionEven(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> VectorElementsFusionEven(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> VectorElementsFusionEven(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> VectorElementsFusionEven(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> VectorElementsFusionEven(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> VectorElementsFusionEven(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> VectorElementsFusionOdd(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> VectorElementsFusionOdd(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> VectorElementsFusionOdd(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> VectorElementsFusionOdd(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> VectorElementsFusionOdd(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> VectorElementsFusionOdd(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> VectorElementsFusionOdd(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> VectorElementsFusionOdd(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> VectorEvenElementsJoinEach128(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> VectorEvenElementsJoinEach128(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> VectorEvenElementsJoinEach128(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> VectorEvenElementsJoinEach128(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> VectorEvenElementsJoinEach128(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> VectorEvenElementsJoinEach128(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> VectorEvenElementsJoinEach128(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> VectorEvenElementsJoinEach128(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<sbyte> VectorOddElementsJoinEach128(Vector256<sbyte> left, Vector256<sbyte> right);
public static Vector256<byte> VectorOddElementsJoinEach128(Vector256<byte> left, Vector256<byte> right);
public static Vector256<short> VectorOddElementsJoinEach128(Vector256<short> left, Vector256<short> right);
public static Vector256<ushort> VectorOddElementsJoinEach128(Vector256<ushort> left, Vector256<ushort> right);
public static Vector256<int> VectorOddElementsJoinEach128(Vector256<int> left, Vector256<int> right);
public static Vector256<uint> VectorOddElementsJoinEach128(Vector256<uint> left, Vector256<uint> right);
public static Vector256<long> VectorOddElementsJoinEach128(Vector256<long> left, Vector256<long> right);
public static Vector256<ulong> VectorOddElementsJoinEach128(Vector256<ulong> left, Vector256<ulong> right);
public static Vector256<byte> VectorElementReplicateEach128(Vector256<byte> vector, const byte elementIndexe);
public static Vector256<sbyte> VectorElementReplicateEach128(Vector256<sbyte> vector, const byte elementIndexe);
public static Vector256<short> VectorElementReplicateEach128(Vector256<short> vector, const byte elementIndexe);
public static Vector256<ushort> VectorElementReplicateEach128(Vector256<ushort> vector, const byte elementIndexe);
public static Vector256<int> VectorElementReplicateEach128(Vector256<int> vector, const byte elementIndexe);
public static Vector256<uint> VectorElementReplicateEach128(Vector256<uint> vector, const byte elementIndexe);
public static Vector256<long> VectorElementReplicateEach128(Vector256<long> vector, const byte elementIndexe);
public static Vector256<ulong> VectorElementReplicateEach128(Vector256<ulong> vector, const byte elementIndexe);
public static Vector258<sbyte> UpdateOneVectorElementEach128(Vector258<sbyte> vector, const byte indexs);
public static Vector258<byte> UpdateOneVectorElementEach128(Vector258<byte> vector, const byte indexs);
public static Vector258<short> UpdateOneVectorElementEach128(Vector258<short> vector, const byte indexs);
public static Vector258<ushort> UpdateOneVectorElementEach128(Vector258<ushort> vector, const byte indexs);
public static Vector258<int> UpdateOneVectorElementEach128(Vector258<int> vector, const byte indexs);
public static Vector258<uint> UpdateOneVectorElementEach128(Vector258<uint> vector, const byte indexs);
public static Vector258<long> UpdateOneVectorElementEach128(Vector258<long> vector, const byte indexs);
public static Vector258<ulong> UpdateOneVectorElementEach128(Vector258<ulong> vector, const byte indexs);
public static Vector258<sbyte> VectorElementNegatedBySign(Vector258<sbyte> sign, Vector258<sbyte> data);
public static Vector258<short> VectorElementNegatedBySign(Vector258<short> sign, Vector258<short> data);
public static Vector258<int> VectorElementNegatedBySign(Vector258<int> sign, Vector258<int> data);
public static Vector258<long> VectorElementNegatedBySign(Vector258<long> sign, Vector258<long> data);
public static Vector256<sbyte> VectorElementBitClear(Vector256<sbyte> value, const byte index);
public static Vector256<byte> VectorElementBitClear(Vector256<byte> value, const byte index);
public static Vector256<short> VectorElementBitClear(Vector256<short> value, const byte index);
public static Vector256<ushort> VectorElementBitClear(Vector256<ushort> value, const byte index);
public static Vector256<int> VectorElementBitClear(Vector256<int> value, const byte index);
public static Vector256<uint> VectorElementBitClear(Vector256<uint> value, const byte index);
public static Vector256<long> VectorElementBitClear(Vector256<long> value, const byte index);
public static Vector256<ulong> VectorElementBitClear(Vector256<ulong> value, const byte index);
public static Vector256<sbyte> VectorElementBitClear(Vector256<sbyte> value, Vector256<sbyte> index);
public static Vector256<byte> VectorElementBitClear(Vector256<byte> value, Vector256<byte> index);
public static Vector256<short> VectorElementBitClear(Vector256<short> value, Vector256<short> index);
public static Vector256<ushort> VectorElementBitClear(Vector256<ushort> value, Vector256<ushort> index);
public static Vector256<int> VectorElementBitClear(Vector256<int> value, Vector256<int> index);
public static Vector256<uint> VectorElementBitClear(Vector256<uint> value, Vector256<uint> index);
public static Vector256<long> VectorElementBitClear(Vector256<long> value, Vector256<long> index);
public static Vector256<ulong> VectorElementBitClear(Vector256<ulong> value, Vector256<ulong> index);
public static Vector256<sbyte> VectorElementBitSet(Vector256<sbyte> value, const byte index);
public static Vector256<byte> VectorElementBitSet(Vector256<byte> value, const byte index);
public static Vector256<short> VectorElementBitSet(Vector256<short> value, const byte index);
public static Vector256<ushort> VectorElementBitSet(Vector256<ushort> value, const byte index);
public static Vector256<int> VectorElementBitSet(Vector256<int> value, const byte index);
public static Vector256<uint> VectorElementBitSet(Vector256<uint> value, const byte index);
public static Vector256<long> VectorElementBitSet(Vector256<long> value, const byte index);
public static Vector256<ulong> VectorElementBitSet(Vector256<ulong> value, const byte index);
public static Vector256<sbyte> VectorElementBitSet(Vector256<sbyte> value, Vector256<sbyte> index);
public static Vector256<byte> VectorElementBitSet(Vector256<byte> value, Vector256<byte> index);
public static Vector256<short> VectorElementBitSet(Vector256<short> value, Vector256<short> index);
public static Vector256<ushort> VectorElementBitSet(Vector256<ushort> value, Vector256<ushort> index);
public static Vector256<int> VectorElementBitSet(Vector256<int> value, Vector256<int> index);
public static Vector256<uint> VectorElementBitSet(Vector256<uint> value, Vector256<uint> index);
public static Vector256<long> VectorElementBitSet(Vector256<long> value, Vector256<long> index);
public static Vector256<ulong> VectorElementBitSet(Vector256<ulong> value, Vector256<ulong> index);
public static Vector256<sbyte> VectorElementBitRevert(Vector256<sbyte> value, const byte index);
public static Vector256<byte> VectorElementBitRevert(Vector256<byte> value, const byte index);
public static Vector256<short> VectorElementBitRevert(Vector256<short> value, const byte index);
public static Vector256<ushort> VectorElementBitRevert(Vector256<ushort> value, const byte index);
public static Vector256<int> VectorElementBitRevert(Vector256<int> value, const byte index);
public static Vector256<uint> VectorElementBitRevert(Vector256<uint> value, const byte index);
public static Vector256<long> VectorElementBitRevert(Vector256<long> value, const byte index);
public static Vector256<ulong> VectorElementBitRevert(Vector256<ulong> value, const byte index);
public static Vector256<sbyte> VectorElementBitRevert(Vector256<sbyte> value, Vector256<sbyte> index);
public static Vector256<byte> VectorElementBitRevert(Vector256<byte> value, Vector256<byte> index);
public static Vector256<short> VectorElementBitRevert(Vector256<short> value, Vector256<short> index);
public static Vector256<ushort> VectorElementBitRevert(Vector256<ushort> value, Vector256<ushort> index);
public static Vector256<int> VectorElementBitRevert(Vector256<int> value, Vector256<int> index);
public static Vector256<uint> VectorElementBitRevert(Vector256<uint> value, Vector256<uint> index);
public static Vector256<long> VectorElementBitRevert(Vector256<long> value, Vector256<long> index);
public static Vector256<ulong> VectorElementBitRevert(Vector256<ulong> value, Vector256<ulong> index);
public static Vector256<sbyte> IndexOfFirstNegativeElementEach128(Vector256<sbyte> value, Vector256<sbyte> save);
public static Vector256<short> IndexOfFirstNegativeElementEach128(Vector256<short> value, Vector256<short> save);
public static Vector256<sbyte> IndexOfFirstNegativeElementEach128(Vector256<sbyte> value, const byte save);
public static Vector256<short> IndexOfFirstNegativeElementEach128(Vector256<short> value, const byte save);
public static Vector256<sbyte> VectorSaturate(Vector256<sbyte> value, [ConstantExpected(Max = (byte)(7))] byte bits);
public static Vector256<short> VectorSaturate(Vector256<short> value, [ConstantExpected(Max = (byte)(15))] byte bits);
public static Vector256<int> VectorSaturate(Vector256<int> value, [ConstantExpected(Max = (byte)(31))] byte bits);
public static Vector256<long> VectorSaturate(Vector256<long> value, [ConstantExpected(Max = (byte)(63))] byte bits);
public static Vector256<byte> VectorSaturateUnsigned(Vector256<byte> value, [ConstantExpected(Max = (byte)(7))] byte bits);
public static Vector256<ushort> VectorSaturateUnsigned(Vector256<ushort> value, [ConstantExpected(Max = (byte)(15))] byte bits);
public static Vector256<uint> VectorSaturateUnsigned(Vector256<uint> value, [ConstantExpected(Max = (byte)(31))] byte bits);
public static Vector256<ulong> VectorSaturateUnsigned(Vector256<ulong> value, [ConstantExpected(Max = (byte)(63))] byte bits);
public static Vector256<int> FloatClass(Vector256<float> value);
public static Vector256<long> FloatClass(Vector256<double> value);
} |
Hi, @tannergooding The GCC had merged the LoongArch's SIMD feature. And the LLVM is same. There is an unofficial LoongArch SIMD-intrinsics manual: BTW, maybe we can review the API interfaces by different types, for example, the |
Background and motivation
Now the GCC had merged the LoongArch's SIMD.
https://github.com/gcc-mirror/gcc/blob/master/gcc/config/loongarch/lsxintrin.h
https://github.com/gcc-mirror/gcc/blob/master/gcc/config/loongarch/lasxintrin.h
Also the LLVM is merging the LoongArch's SIMD.
I think it's time to add the LoongArch's SIMD for CoreCLR.
There is a draft PR #94400 for the LoongArch's SIMD for CoreCLR.
API Proposal
I will upload these APIs later classified by different types.
API Usage
Alternative Designs
No response
Risks
No response
The text was updated successfully, but these errors were encountered: