示例#1
0
 public uint4x3(uint4 c0, uint4 c1, uint4 c2)
 {
     this.c0 = c0;
     this.c1 = c1;
     this.c2 = c2;
 }
示例#2
0
 public uint4x2(sfloat v)
 {
     this.c0 = new uint4(v);
     this.c1 = new uint4(v);
 }
示例#3
0
 public uint4x2(float4x2 v)
 {
     this.c0 = (uint4)v.c0;
     this.c1 = (uint4)v.c1;
 }
示例#4
0
 public uint4x3(sfloat v)
 {
     this.c0 = (uint4)v;
     this.c1 = (uint4)v;
     this.c2 = (uint4)v;
 }
示例#5
0
 public Hash128(uint4 value) => Value = value;
示例#6
0
 public uint4x3(bool v)
 {
     this.c0 = math.select(new uint4(0u), new uint4(1u), v);
     this.c1 = math.select(new uint4(0u), new uint4(1u), v);
     this.c2 = math.select(new uint4(0u), new uint4(1u), v);
 }
示例#7
0
 public uint4x3(int v)
 {
     this.c0 = (uint4)v;
     this.c1 = (uint4)v;
     this.c2 = (uint4)v;
 }
示例#8
0
文件: uint8.cs 项目: csritter/MaxMath
 public uint8(uint4 x0123, uint2 x45, uint2 x67)
 {
     this = new uint8(x0123, new uint4(x45, x67));
 }
示例#9
0
文件: uint8.cs 项目: csritter/MaxMath
 public uint8(uint2 x01, uint2 x23, uint4 x4567)
 {
     this = new uint8(new uint4(x01, x23), x4567);
 }
示例#10
0
        public override int GetHashCode()
        {
            uint4 primes = new uint4(863, 5471887, 13143149, 15485291);

            return((int)math.csum(Value * primes));
        }
示例#11
0
 public static int ConvertToInt(uint4 result)
 {
     return((int)(result.x + result.y * 10 + result.z * 100 + result.w * 1000));
 }
示例#12
0
 public uint4x2(float v)
 {
     this.c0 = (uint4)v;
     this.c1 = (uint4)v;
 }
示例#13
0
 public uint4x2(double4x2 v)
 {
     this.c0 = (uint4)v.c0;
     this.c1 = (uint4)v.c1;
 }
示例#14
0
 public uint4x2(double v)
 {
     this.c0 = (uint4)v;
     this.c1 = (uint4)v;
 }
示例#15
0
 public uint4x3(uint v)
 {
     this.c0 = v;
     this.c1 = v;
     this.c2 = v;
 }
示例#16
0
 public uint4x2(uint4 c0, uint4 c1)
 {
     this.c0 = c0;
     this.c1 = c1;
 }
示例#17
0
 public static uint4x3 uint4x3(uint4 c0, uint4 c1, uint4 c2)
 {
     return(new uint4x3(c0, c1, c2));
 }
示例#18
0
 public uint4x2(uint v)
 {
     this.c0 = v;
     this.c1 = v;
 }
示例#19
0
 public uint4x3(bool4x3 v)
 {
     this.c0 = math.select(new uint4(0u), new uint4(1u), v.c0);
     this.c1 = math.select(new uint4(0u), new uint4(1u), v.c1);
     this.c2 = math.select(new uint4(0u), new uint4(1u), v.c2);
 }
示例#20
0
 public static uint4x2 uint4x2(uint4 c0, uint4 c1)
 {
     return(new uint4x2(c0, c1));
 }
示例#21
0
 public uint4x3(int4x3 v)
 {
     this.c0 = (uint4)v.c0;
     this.c1 = (uint4)v.c1;
     this.c2 = (uint4)v.c2;
 }
示例#22
0
 public uint4x2(int v)
 {
     this.c0 = (uint4)v;
     this.c1 = (uint4)v;
 }
示例#23
0
 public static extern CUResult cuMemcpyDtoH_v2(ref uint4 dstHost, CUdeviceptr srcDevice, SizeT ByteCount);
示例#24
0
        public static uint4 gcd(uint4 x, uint4 y)
        {
            if (Sse2.IsSse2Supported)
            {
                v128 ZERO = default(v128);

                v128 _x = *(v128 *)&x;
                v128 _y = *(v128 *)&y;

                v128 result             = ZERO;
                v128 result_if_zero_any = ZERO;

                v128 x_is_zero = Sse2.cmpeq_epi32(_x, ZERO);
                v128 y_is_zero = Sse2.cmpeq_epi32(_y, ZERO);
                v128 any_zero  = Sse2.or_si128(x_is_zero, y_is_zero);

                result_if_zero_any = Mask.BlendV(result_if_zero_any, _y, x_is_zero);
                result_if_zero_any = Mask.BlendV(result_if_zero_any, _x, y_is_zero);

                v128 doneMask = any_zero;

                int4 shift = math.tzcnt(x | y);

                x  = shrl(x, math.tzcnt(x));
                _x = *(v128 *)&x;

                do
                {
                    uint4 temp_y = shrl(*(uint4 *)&_y, math.tzcnt(*(uint4 *)&_y));
                    _y = *(v128 *)&temp_y;

                    if (Sse4_1.IsSse41Supported)
                    {
                        v128 tempX = _x;

                        _x = Sse4_1.min_epu32(_x, _y);
                        _y = Sse4_1.max_epu32(_y, tempX);
                    }
                    else
                    {
                        v128 tempX       = _x;
                        v128 x_greater_y = Operator.greater_mask_uint(_x, _y);

                        _x = Mask.BlendV(_x, _y, x_greater_y);
                        _y = Mask.BlendV(_y, tempX, x_greater_y);
                    }

                    _y = Sse2.sub_epi32(_y, _x);

                    v128 loopCheck = Sse2.andnot_si128(doneMask, Sse2.cmpeq_epi32(_y, ZERO));
                    result   = Mask.BlendV(result, _x, loopCheck);
                    doneMask = Sse2.or_si128(doneMask, loopCheck);
                } while (bitmask32(4 * sizeof(uint)) != Sse2.movemask_epi8(doneMask));

                uint4 result_temp = shl(*(uint4 *)&result, shift);
                result = *(v128 *)&result_temp;

                result = Mask.BlendV(result, result_if_zero_any, any_zero);

                return(*(uint4 *)&result);
            }
            else
            {
                return(new uint4(gcd(x.x, y.x), gcd(x.y, y.y), gcd(x.z, y.z), gcd(x.w, y.w)));
            }
        }