Mentions légales du service

Skip to content
Snippets Groups Projects
  • Released date
  • Created date

Evidence collection

Collected 11 months ago

Release notes

Adds leftHermite to ISLMatrix

Evidence collection

Collected 11 months ago

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

Collected 4 years ago

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 named isPlainXxx 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