void GetInfo_throws_if_invalid_value(MemorySize memorySize) { Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetInfo()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetSize()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetElementSize()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetElementType()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.IsSigned()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.IsPacked()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetElementCount()); memorySize.IsBroadcast(); // Does not throw }
void VerifyMemorySizeProperties(MemorySize memorySize, int size, int elementSize, MemorySize elementType, int elementCount, MemorySizeFlags flags) { var info = memorySize.GetInfo(); Assert.Equal(memorySize, info.MemorySize); Assert.Equal(size, info.Size); Assert.Equal(elementSize, info.ElementSize); Assert.Equal(elementType, info.ElementType); Assert.Equal((flags & MemorySizeFlags.Signed) != 0, info.IsSigned); Assert.Equal((flags & MemorySizeFlags.Broadcast) != 0, info.IsBroadcast); Assert.Equal((flags & MemorySizeFlags.Packed) != 0, info.IsPacked); Assert.Equal(elementCount, info.ElementCount); Assert.Equal(size, memorySize.GetSize()); Assert.Equal(elementSize, memorySize.GetElementSize()); Assert.Equal(elementType, memorySize.GetElementType()); Assert.Equal((flags & MemorySizeFlags.Signed) != 0, memorySize.IsSigned()); Assert.Equal((flags & MemorySizeFlags.Packed) != 0, memorySize.IsPacked()); Assert.Equal((flags & MemorySizeFlags.Broadcast) != 0, memorySize.IsBroadcast()); Assert.Equal(elementCount, memorySize.GetElementCount()); }
/// <summary> /// Gets the number of elements in the packed data type or 1 if it's not packed data (<see cref="IsPacked"/>) /// </summary> /// <param name="memorySize">Memory size</param> /// <returns></returns> public static int GetElementCount(this MemorySize memorySize) => memorySize.GetInfo().ElementCount;
/// <summary> /// <see langword="true"/> if this is a packed data type, eg. <see cref="MemorySize.Packed128_Float32"/> /// </summary> /// <param name="memorySize">Memory size</param> /// <returns></returns> public static bool IsPacked(this MemorySize memorySize) => memorySize.GetInfo().IsPacked;
/// <summary> /// Gets the element type info if it's packed data or <paramref name="memorySize"/> if it's not packed data /// </summary> /// <param name="memorySize">Memory size</param> /// <returns></returns> public static MemorySizeInfo GetElementTypeInfo(this MemorySize memorySize) => memorySize.GetInfo().ElementType.GetInfo();
/// <summary> /// Gets the size in bytes of the memory location or 0 if it's not accessed by the instruction or unknown or variable sized /// </summary> /// <param name="memorySize">Memory size</param> /// <returns></returns> public static int GetSize(this MemorySize memorySize) => memorySize.GetInfo().Size;
void Verify_FirstBroadcastMemorySize_value(MemorySize memorySize) { Assert.Equal(memorySize.IsBroadcast(), memorySize.GetInfo().IsBroadcast); }