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)); }
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 )); }
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); }
public Vec256 <float> ToVec256() => Vec256.FromParts(x00s, x01s, x02s, x03s, x04s, x05s, x06s, x07s);
public Vec256 <double> ToVec256() => Vec256.FromParts(x0d, x1d, x2d, x3d);