Exemplo n.º 1
0
        public void perm256u8()
        {
            var x = Vec256Pattern.Increasing <byte>();
            var y = Vec256Pattern.Decreasing <byte>();
            var z = dinx.permute(x, y);

            for (var i = 0; i < 31; i++)
            {
                Claim.eq(x[31 - i], z[i]);
            }
        }
Exemplo n.º 2
0
        public void reverse_256_u8()
        {
            var inc = Vec256Pattern.Increments((byte)0);

            for (var i = 0; i < inc.Length(); i++)
            {
                Claim.eq((int)inc[i], i);
            }

            var dec = Vec256Pattern.Decrements((byte)31);

            for (var i = 31; i >= 0; i--)
            {
                Claim.eq((int)dec[31 - i], i);
            }

            var v2 = dinx.reverse(inc);

            Claim.eq(dec, v2);
        }
Exemplo n.º 3
0
        public void pattern_clearalt_256x8()
        {
            var tr = Vec256Pattern.ClearAlt <byte>();

            for (var i = 0; i < DefaltCycleCount; i++)
            {
                var x  = Random.CpuVec256 <byte>();
                var y  = dinx.shuffle(x, tr);
                var xs = x.ToSpan256();
                for (var j = 0; j < xs.Length; j++)
                {
                    if (j % 2 != 0)
                    {
                        xs[j] = 0;
                    }
                }

                var xt = xs.ToCpuVec256();

                Claim.eq(xt, y);
            }
        }
Exemplo n.º 4
0
        public void blend_256_u8()
        {
            void Test1()
            {
                var v0   = Random.CpuVec256 <byte>();
                var v1   = Random.CpuVec256 <byte>();
                var bits = Random.BitString <N32>();
                var mask = Vec256.Load(bits.Map(x => x ? (byte)0xFF : (byte)0));
                var v3   = dinx.blendv(v0, v1, mask);

                var selection = Span256.AllocBlocks <byte>(1);

                for (var i = 0; i < selection.Length; i++)
                {
                    selection[i] = bits[i] ? v1[i] : v0[i];
                }
                var v4 = selection.ToCpuVec256();

                Claim.eq(v3, v4);
            }

            Verify(Test1);

            var v1      = Vec256.Fill <byte>(3);
            var v2      = Vec256.Fill <byte>(4);
            var control = Vec256Pattern.Alternate <byte>(0, 0xFF);
            var v3      = dinx.blendv(v1, v2, control);
            var block   = Span256.AllocBlocks <byte>(1);

            for (var i = 0; i < 32; i++)
            {
                block[i] = (byte)(even(i) ? 3 : 4);
            }
            var v4 = block.ToCpuVec256();

            Claim.eq(v3, v4);
        }