Beispiel #1
0
        public static Scalar128 <ulong> clmulr(Scalar128 <ulong> a, Scalar128 <ulong> b, Vec128 <ulong> poly)
        {
            var prod = dinx.clmul(a, b);

            prod = Bits.xor(prod, dinx.clmul(srl(prod, 64), poly, ClMulMask.X00));
            prod = Bits.xor(prod, dinx.clmul(srl(prod, 64), poly, ClMulMask.X00));
            return(prod);
        }
Beispiel #2
0
 public static ref Scalar128 <float> rcp(ref Scalar128 <float> src)
 {
     src = ReciprocalScalar(src);
     return(ref src);
 }
Beispiel #3
0
 public static Scalar128 <float> rcp(Scalar128 <float> src)
 => ReciprocalScalar(src);
Beispiel #4
0
 public static unsafe ref Scalar128 <double> load(double src, out Scalar128 <double> dst)
 {
     dst = LoadScalarVector128(pfloat64(ref src));
     return(ref dst);
 }
Beispiel #5
0
 public static unsafe ref Scalar128 <float> load(float src, out Scalar128 <float> dst)
 {
     dst = LoadScalarVector128(pfloat32(ref src));
     return(ref dst);
 }
Beispiel #6
0
 public static ref Scalar128 <double> ceil(ref Scalar128 <double> src)
 {
     src = CeilingScalar(src);
     return(ref src);
 }
Beispiel #7
0
 public static ref Scalar128 <float> ceil(ref Scalar128 <float> src)
 {
     src = CeilingScalar(src);
     return(ref src);
 }
Beispiel #8
0
 public static Vec128 <ulong> clmul(Scalar128 <ulong> a, Scalar128 <ulong> b)
 => CarrylessMultiply(a, b, 0x00);