public uint4x3(uint4 c0, uint4 c1, uint4 c2) { this.c0 = c0; this.c1 = c1; this.c2 = c2; }
public uint4x2(sfloat v) { this.c0 = new uint4(v); this.c1 = new uint4(v); }
public uint4x2(float4x2 v) { this.c0 = (uint4)v.c0; this.c1 = (uint4)v.c1; }
public uint4x3(sfloat v) { this.c0 = (uint4)v; this.c1 = (uint4)v; this.c2 = (uint4)v; }
public Hash128(uint4 value) => Value = value;
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); }
public uint4x3(int v) { this.c0 = (uint4)v; this.c1 = (uint4)v; this.c2 = (uint4)v; }
public uint8(uint4 x0123, uint2 x45, uint2 x67) { this = new uint8(x0123, new uint4(x45, x67)); }
public uint8(uint2 x01, uint2 x23, uint4 x4567) { this = new uint8(new uint4(x01, x23), x4567); }
public override int GetHashCode() { uint4 primes = new uint4(863, 5471887, 13143149, 15485291); return((int)math.csum(Value * primes)); }
public static int ConvertToInt(uint4 result) { return((int)(result.x + result.y * 10 + result.z * 100 + result.w * 1000)); }
public uint4x2(float v) { this.c0 = (uint4)v; this.c1 = (uint4)v; }
public uint4x2(double4x2 v) { this.c0 = (uint4)v.c0; this.c1 = (uint4)v.c1; }
public uint4x2(double v) { this.c0 = (uint4)v; this.c1 = (uint4)v; }
public uint4x3(uint v) { this.c0 = v; this.c1 = v; this.c2 = v; }
public uint4x2(uint4 c0, uint4 c1) { this.c0 = c0; this.c1 = c1; }
public static uint4x3 uint4x3(uint4 c0, uint4 c1, uint4 c2) { return(new uint4x3(c0, c1, c2)); }
public uint4x2(uint v) { this.c0 = v; this.c1 = v; }
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); }
public static uint4x2 uint4x2(uint4 c0, uint4 c1) { return(new uint4x2(c0, c1)); }
public uint4x3(int4x3 v) { this.c0 = (uint4)v.c0; this.c1 = (uint4)v.c1; this.c2 = (uint4)v.c2; }
public uint4x2(int v) { this.c0 = (uint4)v; this.c1 = (uint4)v; }
public static extern CUResult cuMemcpyDtoH_v2(ref uint4 dstHost, CUdeviceptr srcDevice, SizeT ByteCount);
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))); } }