public static Vector256 <T> And(Vector256 <T> va, Vector256 <T> vb) { if (typeof(T) == typeof(sbyte)) { return(Avx2.And(va.As <T, sbyte>(), vb.As <T, sbyte>()).As <sbyte, T>()); } if (typeof(T) == typeof(byte)) { return(Avx2.And(va.As <T, byte>(), vb.As <T, byte>()).As <byte, T>()); } if (typeof(T) == typeof(short)) { return(Avx2.And(va.As <T, short>(), vb.As <T, short>()).As <short, T>()); } if (typeof(T) == typeof(ushort)) { return(Avx2.And(va.As <T, ushort>(), vb.As <T, ushort>()).As <ushort, T>()); } if (typeof(T) == typeof(int)) { return(Avx2.And(va.As <T, int>(), vb.As <T, int>()).As <int, T>()); } if (typeof(T) == typeof(uint)) { return(Avx2.And(va.As <T, uint>(), vb.As <T, uint>()).As <uint, T>()); } if (typeof(T) == typeof(long)) { return(Avx2.And(va.As <T, long>(), vb.As <T, long>()).As <long, T>()); } if (typeof(T) == typeof(ulong)) { return(Avx2.And(va.As <T, ulong>(), vb.As <T, ulong>()).As <ulong, T>()); } if (typeof(T) == typeof(float)) { return(Avx.And(va.As <T, float>(), vb.As <T, float>()).As <float, T>()); } if (typeof(T) == typeof(double)) { return(Avx.And(va.As <T, double>(), vb.As <T, double>()).As <double, T>()); } throw new NotSupportedException(); }