Repository navigation
Changes since v1.15, constraints:
- Checked an instruction's attribute constraints when selecting it (#283)
- Passed an instruction's address constraints to the allocator (#287)
- Read a quotient and a remainder in an attribute constraint (#289)
- Passed an address constraint's quotient and remainder to the allocator (#293)
- Read a conjunction or a bracketed condition in a constraint (#295)
- Pinned TAIDL v2.15 and TAIDL-TO v2.11 and dropped a check TAIDL now makes (#296)
This release:
- The version is 1.16 in
pyproject.tomlandact_backend/__init__.py, and the README's install line namesv1.16. The generated crate'sCargo.tomlandCargo.locksay 1.16.0. generate_backendnow accepts a constraint of comparisons over an instruction's attributes and integers, joined byandandorand bracketed to any depth. v1.15 refused any instruction with a constraint.- A constraint that names no address attribute is now checked in the instruction's precondition in
ir2isa_rewrites.rs. So the instruction is selected only where it holds. - A constraint that names an address attribute, such as those
set_apartandset_no_partial_overlapgive, is now pushed to the allocator. So a candidate is placed only where it holds. - Under
set_apartan output is now placed apart from each marked input. Underset_no_partial_overlapit either shares each marked input's start or lies apart from it. - A quotient and a remainder in a constraint are now rounded down as TAIDL-TO rounds them, by any divisor other than zero. That holds over the attributes and over addresses alike.
- An operand's start may now multiply two address attributes, where v1.15 refused it at generation.
- A start may now also divide or take a remainder by an attribute or by a negative integer, which v1.15 refused too. A divisor of addresses is held at 1 or more.
- An address attribute that no operand reads is now accepted.
- A comparison whose arithmetic overflows 64 bits does not hold, and fails the whole constraint where it divides. So do a division by zero and a part of an address constraint that overflows 64 bits, and the instruction is not selected.
- An address variable of a slice or a concatenate now takes its values from 0 up, as an instruction's and every offset do.
- These are still refused at generation, with the message of v1.15:
- a constraint that holds a state variable
- literals alone that compute to a value that overflows 64 bits
- a quotient or a remainder of an address by zero
- A constraint with an integer literal outside the 64-bit range, or a divisor that is the literal
0, now fails as TAIDL v2.15 loads it. - ACT-Backend now pins TAIDL v2.15, as TAIDL-TO v2.11 does. TAIDL v2.15 refuses at load an integer literal outside the signed 64-bit range and a division by the literal
0. - The two examples compile
attention.hloto the same calls and output as in v1.15.