Evidence collection
Release notes
Adds leftHermite to ISLMatrix
Evidence collection
Release notes
2.5.0 adds isl binding support for Mac arm64 hosts as well as some missing functions to ISLBasicSet and ISLMatrix
Evidence collection
Release notes
2.4.0 adds methods related to wrap/curry and methods that were missing in ISLMultiPWAff
Release notes
v2.0.2 adds some methods to ISLMatrix
Release notes
v2.0.1 fixes renameDims, which apparently was broken since it was introduced in 1.4.0.
In addition, getDimName now returns null when the names are not available in ISL representation.
Release notes
There were many inconsistencies in the older versions of JNIISL due to lack of coordination on what to put as user-defined code (in protected regions). This release adds some consistency across the main ISL objects (sets, maps, and affs) and removes deprecated methods.
The release consists in two major parts:
- use of interfaces to standardize user code
- renaming of existing methods to follow a convention
Interfaces
The JNI mapper has been extended to support interfaces that are used to enforce consistency. There are several interfaces that define commonly seen operations as default methods (using generics) so that the implementation of these operations are no longer repeated in each class.
ISLStandardMethods
A first set of interfaces are called ISLStandardMethods
that standardize
how the number of dimensions are queried.
ISLStanderdMethods
defines:
- toString(ISLFormat)
- dim(ISLDimType)
and implements the following default methods:
- getNbParams()
- getNbIndices()
- getNbInputs()
- getNbOutputs()
The default methods are implemented in three different sub-interfaces,
one for sets, one for maps, and one that is common across the two.
ISLAff
related classes also implement ISLStandardMapMethods. In
particular, ISLMultiAff.getNbAffs
has been replaced by getNbOutputs.
ISLSingleSpaceReadOnlyMethods
The second set of interfaces are called ISLSingleSpaceReadOnlyMethods
that provide accessors to dimension names. Some ISL objects only support
get_dim_name
but not set_dim_name
, hence the accessors are separated
out. These methods are called 'SingleSpace' since they are not
applicable to union maps and union sets that have multiple spaces.
ISLSingleSpaceReadOnlyMethods
defines:
- getDimName(ISLDimType, int)
that is used to implement the following default methods:
- getParamNames()
- getParamName(int)
- getIndexNames()
- getIndexName(int)
- getInputNames()
- getInputName(int)
- getOutputNames()
- getOutputName(int)
The default methods are again separated into three sub-interfaces.
The third set of interfaces are called ISLSingleSpaceMethods
that
provide methods for manipulating dimensions.
ISLSingleSpaceMethods
ISLSingleSpaceMethods
defines:
- setDimName(ISLDimType, int, String)
- moveDims(ISLDimType, int, ISLDimType int, int)
- addDims(ISLDimType, int)
that are used to implement the following default methods:
- renameDims(Iterable, ISLDimType)
- renameParams(Iterable)
- renameIndices(Iterable)
- renameInputs(Iterable)
- renameOutputs(Iterable)
- addDims(Iterable, ISLDimType)
- addParams(Iterable)
- addIndices(Iterable)
- addInputs(Iterable)
- addOutputs(Iterable)
- moveAllDims(DimType, DimType)
- moveParamsToIndices()
- moveIndicesToParams()
- moveParamsToInputs()
- moveInputsToParams()
- moveParamsToOutputs()
- moveOutputsToParams()
In addition, ISLSingleSpaceMapMethods
defines:
- getTupleName(ISLDimType)
- setTupleName(ISLDimType, String)
and implements two default methods:
- getInputTupleName()
- getOutputTupleName()
- setInputTupleName(String)
- setOutputTupleName(String)
ISLProjectionMethods
Lastly, there is another interface named ISLProjectionMethods
that
define:
- projectOut(ISLDimType, int, int)
and implements a default method:
- projectOnto(ISLDimType, int)
The method projectOnto
corresponds to projectOutAllBut
and projectIn
methods in the old version. Since it was seen in multiple classes, it is
centralized in its own interface.
Conventions
The default convention for an operation over some ISL struct isl_xxx
,
which has the function name isl_xxx_yyy_zzz
=> yyyZzz
in class of isl_xxx
- Some methods have postfixes such as
_val
to differentiate between multiple possible input types. These postfixes are remove in the Java methods. -
getXXX
methods should not consume input ISL objects -
plain_is_xxx
methods are namedisPlainXxx
so that it shows up in content assist with 'is'
Abbreviations
Most words remain unabbreviated. The exceptions are:
- number_of -> Nb; anything after Nb should be plural
- parameter -> param;
- dimension -> dim
- affine -> aff
Creating a new object.
- Constructors are not allowed.
- Creating a new object of a different type using a single argument => toXXX in the class of the argument type. (e.g., toSet in ISLBasicSet)
- Creating a new object using two or more arguments => static buildXXX in the class of the new object. (e.g., buildFromDomainAndRange in ISLMap)
- All static methods that create a new object instance should be called buildXXX.
List of Other Changes
Notable changes include:
- buildFromString methods are removed. Use ISLFactory instead.
- ISLContext.getCtx -> getInstance
- getNbDim(ISLDimType) - > dim(ISLDimType)
- ISL(Basic)Set.getNbDim() -> getNbIndices()
- ISL(Local)Space.getName/setName -> getDimName/setDimName
- equivalent -> isEqual
- paramSet -> params
- buildUniverseLike -> buildUniverse (have to call getSpace)
- getNameList -> getDimNames
- fromDomain -> toMapSpaceFromSetSpaceAsDomain (the ISL name is quite confusing)
- ISLSpace.lexXX -> ISLSpace.toLexXXMap
- fixedPower -> power
Release notes
release version 1.8.0
Release notes
release version 1.4.0