Example #1
0
 public void bmm_32x32()
 {
     for (var i = 0; i < SampleSize; i++)
     {
         var m1 = Random.BitMatrix32();
         var m2 = m1.Replicate();
         var m3 = Random.BitMatrix32();
         var m4 = m2 * m3;
         var m5 = BitRef.bmm(m1, m3);
         Claim.yea(m4 == m5);
     }
 }
Example #2
0
 void scatter_check <T>()
     where T : unmanaged
 {
     for (var i = 0; i < SampleSize; i++)
     {
         var src  = Random.Next <T>();
         var mask = Random.Next <T>();
         var s1   = BitRef.scatter(src, mask);
         var s2   = gbits.scatter(src, mask);
         Claim.eq(s1, s2);
     }
 }
Example #3
0
        void scatter_bench_ref <T>()
            where T : unmanaged
        {
            var sw      = stopwatch(false);
            var opcount = CycleCount * RoundCount;
            var size    = bitsize <T>();
            var opname  = $"scatter_{size}x{size}_ref";

            for (var i = 0; i < opcount; i++)
            {
                var src  = Random.Next <T>();
                var mask = Random.Next <T>();
                sw.Start();
                var dst = BitRef.scatter(src, mask);
                sw.Stop();
            }

            Collect((opcount, sw, opname));
        }
Example #4
0
        OpTime ShiftLeft256x16uRef(int blocks, int cycles)
        {
            var blocklen   = Vec256 <ushort> .Length;
            var opcount    = blocks * cycles * blocklen;
            var shiftRange = closed <byte>(2, 14);

            var sw      = stopwatch(false);
            var src     = Random.Stream <ushort>();
            var offsets = Random.Stream(shiftRange);

            for (var cycle = 0; cycle < cycles; cycle++)
            {
                for (var block = 0; block < blocks; block++)
                {
                    var x      = src.TakeSpan(blocklen);
                    var offset = offsets.First();

                    sw.Start();
                    BitRef.ShiftL(x, offset);
                    sw.Stop();
                }
            }
            return(OpTime.Define(opcount, snapshot(sw), "slli16uRef"));
        }