Types:
Old type | New type | Remarks |
---|---|---|
void | none | |
time | !llhd.time | |
iN | MLIR signless integer | |
nN | enumeration not yet implemented | |
lN | nine-valued logic not yet implemented | |
T* | pointers not yet implemented | |
T$ | !llhd.sig<T> | only integers for now |
Array [N x T] | MLIR Vector | |
Struct {T0, T1, ...} | MLIR Tuple |
Instructions:
Old instruction | New instruction | Remarks |
---|---|---|
Values | ||
const | llhd.const , constant | not stable, might switch to std dialect constant for integers |
alias | removed | |
Array construction | constant | stable, look here for the three possible attributes to create a vector, e.g. %vec = constant dense<[1,2,3]> : vector<3xi32> |
Struct/Tuple construction, insf , inss , extf | not yet implemented | |
exts | llhd.exts | not stable |
mux | vector.extractelement | stable |
Bitwise | ||
not , and , or , xor | llhd.not , llhd.and , llhd.or , llhd.xor | stable, nine-valued logic will be added later |
shl , shr | llhd.shl , llhd.shr | only integer and signal supported for now |
Arithmetic | ||
neg , add , sub | llhd.neg , addi , subi | stable |
smul , umul | muli | stable |
sdiv , udiv | divi_signed , divi_unsigned | stable |
srem | remi_signed | stable |
urem , umod | remi_unsigned | stable |
smod | llhd.smod | stable |
Comparison | ||
eq , neq , slt , sle , sgt , sge , ult , ule , ugt , uge | cmpi | stable, use predicates accordingly, integers only |
Control flow | ||
phi | MLIR block argument | stable, MLIR uses block arguments instead |
br | br | stable, unconditional variant |
br | cond_br | stable, conditional variant |
call , ret , wait , halt | call , return , llhd.wait , llhd.halt | stable |
Memory | ||
var , ld , st | not yet implemented | |
Signals | ||
sig , prb , drv | llhd.sig , llhd.prb , llhd.drv | stable |
Structural | ||
reg | llhd.reg | not quite stable |
del , con | not yet implemented | |
inst | llhd.inst | stable |
Units | ||
func , proc , entity | func , llhd.proc , llhd.entity | stable |