using System;
namespace Unity.Burst.CompilerServices
{
///
/// Can be used to specify that a parameter or return has a range assumption.
/// Assumptions feed directly into the optimizer and allow better codegen.
///
/// Only usable on values of type scalar integer.
///
/// The range is a closed interval [min..max] - EG. the attributed value
/// is greater-than-or-equal-to min and less-than-or-equal-to max.
///
[AttributeUsage(AttributeTargets.ReturnValue | AttributeTargets.Parameter)]
public class AssumeRangeAttribute : Attribute
{
///
/// Assume that an integer is in the signed closed interval [min..max].
///
/// The inclusive minimum value.
/// The inclusive maximum value.
public AssumeRangeAttribute(long min, long max) { }
///
/// Assume that an integer is in the unsigned closed interval [min..max].
///
/// The inclusive minimum value.
/// The inclusive maximum value.
public AssumeRangeAttribute(ulong min, ulong max) { }
}
}