Beispiel #1
0
        internal ushort MinSIMD(ushort us0, ushort us1, ushort us2,
                                ushort us3, ushort us4, ushort us5, ushort us6, ushort us7)
        {
            var values = Vector128.Create(us0, us1, us2, us3, us4, us5, us6, us7);

            return(Sse41.MinHorizontal(values).GetElement(0));
        }
Beispiel #2
0
        public void RunFldScenario()
        {
            var result = Sse41.MinHorizontal(_fld);

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(_fld, _dataTable.outArrayPtr);
        }
Beispiel #3
0
        public void RunLclFldScenario()
        {
            var test   = new SimpleUnaryOpTest__MinHorizontal();
            var result = Sse41.MinHorizontal(test._fld);

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(test._fld, _dataTable.outArrayPtr);
        }
Beispiel #4
0
        public void RunLclVarScenario_LoadAligned()
        {
            var firstOp = Sse2.LoadAlignedVector128((UInt16 *)(_dataTable.inArrayPtr));
            var result  = Sse41.MinHorizontal(firstOp);

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(firstOp, _dataTable.outArrayPtr);
        }
Beispiel #5
0
        public void RunLclVarScenario_UnsafeRead()
        {
            var firstOp = Unsafe.Read <Vector128 <UInt16> >(_dataTable.inArrayPtr);
            var result  = Sse41.MinHorizontal(firstOp);

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(firstOp, _dataTable.outArrayPtr);
        }
Beispiel #6
0
        public void RunBasicScenario_LoadAligned()
        {
            var result = Sse41.MinHorizontal(
                Sse2.LoadAlignedVector128((UInt16 *)(_dataTable.inArrayPtr))
                );

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr);
        }
Beispiel #7
0
        public void RunBasicScenario_UnsafeRead()
        {
            var result = Sse41.MinHorizontal(
                Unsafe.Read <Vector128 <UInt16> >(_dataTable.inArrayPtr)
                );

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr);
        }
        public int Shanten()
        {
            var b2 = Ssse3.Shuffle(_b, _reverseBVector);
            var r0 = Sse2.Add(_a, b2);
            var r1 = Sse2.Subtract(_inversionVector, r0);
            var r3 = Sse2.ShiftRightLogical(r1.AsInt16(), 8);
            var r4 = Sse2.Min(r1, r3.AsByte());
            var r5 = Sse41.MinHorizontal(r4.AsUInt16());
            var r6 = (byte)Sse2.ConvertToInt32(r5.AsInt32());

            return(r6 - 1);
        }
Beispiel #9
0
 public static Vector128 <ushort> _mm_minpos_epu16(Vector128 <ushort> value)
 {
     return(Sse41.MinHorizontal(value));
 }