8.3. Integer
An integer is a signed 32-bit value. An integer can be
represented by an i32 in MLIR.
8.3.1. Declaration
A integer value is declared with the keyword integer.
8.3.2. Literals
An integer literal is specified in base 10. For example:
1234
2
0
An integer literal must be a representable i32 value.
8.3.3. Operations
The following operations are defined between integer values. In all
of the usage examples int-expr means some integer yielding
expression.
Class |
Operation |
Symbol |
Usage |
Associativity |
|---|---|---|---|---|
Grouping |
parentheses |
|
|
N/A |
Arithmetic |
addition |
|
|
left |
subtraction |
|
|
left |
|
multiplication |
|
|
left |
|
division |
|
|
left |
|
remainder |
|
|
left |
|
exponentiation |
|
|
right |
|
unary negation |
|
|
right |
|
unary plus (no-op) |
|
|
right |
|
Comparison |
less than |
|
|
left |
greater than |
|
|
left |
|
less than or equal to |
|
|
left |
|
greater than or equal to |
|
|
left |
|
equals |
|
|
left |
|
not equals |
|
|
left |
Unary negation produces the additive inverse of the integer
expression. Unary plus always produces the same result as the
integer expression it is applied to. Remainder mirrors the behaviour
of remainder in C99.
Exponentiation between integers gives an integer result. This is the same behavior as performing exponentiation on reals then truncating to an integer.
This table specifies integer operator precedence. Operators without
lines between them have the same level of precedence. Note that
parentheses are not included in this list because they are used to
override precedence and create new atoms in an expression.
Precedence |
Operations |
|---|---|
HIGHER |
|
|
|
|
|
|
|
|
|
LOWER |
|
8.3.4. Type Casting and Type Promotion
To see the types that integer may be cast and/or promoted to, see
the sections on Type Casting and Type Promotion
respectively.