예제 #1
0
        static PcgAvx32Rng CreatPcgAvx()
        {
            var seed = Vec256.FromParts(Seed64.Seed00, Seed64.Seed01, Seed64.Seed02, Seed64.Seed03);
            var inc  = Vec256.FromParts(0xFFFFul, 0xFFFFul + 128, 0xFFFFul + 256, 0xFFFFul + 512);

            return(PcgAvx32Rng.Create(seed, inc));
        }
예제 #2
0
        static Vec256 <ushort> MergeLanesU16()
        {
            ushort i = 0, j = 1;

            return(Vec256.FromParts(
                       i, i += 2, i += 2, i += 2, i += 2, i += 2, i += 2, i += 2,
                       j, j += 2, j += 2, j += 2, j += 2, j += 2, j += 2, j += 2
                       ));
        }
예제 #3
0
        public void mulnew()
        {
            var v1 = Random.CpuVec128 <int>();
            var v2 = Random.CpuVec128 <int>();
            // var v3 = dinx.insert(v1, Vec256<int>.Zero,0);
            // var v4 = dinx.insert(v2, Vec256<int>.Zero,0);
            var v3 = Vec256.FromParts(1, 0, 2, 0, 3, 0, 4, 0);
            var v4 = Vec256.FromParts(5, 0, 6, 0, 7, 0, 8, 0);
            var v5 = dinx.mul(v3, v4);

            Trace(() => v3);
            Trace(() => v4);
            Trace(() => v5);

            // var lhs = v1.ToSpan();
            // var rhs = v2.ToSpan();
            // var dst = new long[4];
            // for(var i=0; i<dst.Length; i++)
            //     dst[i] = ((long)lhs[i]) * ((long)rhs[i]);

            // var v4 = Vec256.Load(dst);
            // Claim.eq(v3,v4);
        }
예제 #4
0
파일: __m256.cs 프로젝트: 0xCM/arrows
 public Vec256 <float> ToVec256()
 => Vec256.FromParts(x00s, x01s, x02s, x03s, x04s, x05s, x06s, x07s);
예제 #5
0
 public Vec256 <double> ToVec256()
 => Vec256.FromParts(x0d, x1d, x2d, x3d);