CIRCT

Circuit IR Compilers and Tools

'comb' Dialect

Types and operations for comb dialect This dialect defines the comb dialect, which is intended to be a generic representation of combinational logic outside of a particular use-case.

Operation definition

comb.add (::circt::comb::AddOp)

Syntax:

operation ::= `comb.add` $inputs attr-dict `:` qualified(type($result))

Traits: Commutative, SameOperandsAndResultType, SameTypeOperands

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.and (::circt::comb::AndOp)

Syntax:

operation ::= `comb.and` $inputs attr-dict `:` qualified(type($result))

Traits: Commutative, SameOperandsAndResultType, SameTypeOperands

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.concat (::circt::comb::ConcatOp)

Concatenate a variadic list of operands together.

Syntax:

operation ::= `comb.concat` $inputs attr-dict `:` qualified(type($inputs))

See the comb rationale document for details on operand ordering.

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.divs (::circt::comb::DivSOp)

Syntax:

operation ::= `comb.divs` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.divu (::circt::comb::DivUOp)

Syntax:

operation ::= `comb.divu` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.extract (::circt::comb::ExtractOp)

Extract a range of bits into a smaller value, lowBit specifies the lowest bit included.

Syntax:

operation ::= `comb.extract` $input `from` $lowBit attr-dict `:` functional-type($input, $result)

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes:

AttributeMLIR TypeDescription
lowBit::mlir::IntegerAttr32-bit signless integer attribute

Operands:

OperandDescription
inputan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.icmp (::circt::comb::ICmpOp)

Compare two integer values

Syntax:

operation ::= `comb.icmp` $predicate $lhs `,` $rhs  attr-dict `:` qualified(type($lhs))

This operation compares two integers using a predicate. If the predicate is true, returns 1, otherwise returns 0. This operation always returns a one bit wide result.

    %r = hw.icmp eq %a, %b : i4

Traits: SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Attributes:

AttributeMLIR TypeDescription
predicatecirct::comb::ICmpPredicateAttrhw.icmp comparison predicate

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
result1-bit signless integer

comb.mods (::circt::comb::ModSOp)

Syntax:

operation ::= `comb.mods` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.modu (::circt::comb::ModUOp)

Syntax:

operation ::= `comb.modu` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.mul (::circt::comb::MulOp)

Syntax:

operation ::= `comb.mul` $inputs attr-dict `:` qualified(type($result))

Traits: Commutative, SameOperandsAndResultType, SameTypeOperands

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.mux (::circt::comb::MuxOp)

Return one or the other operand depending on a selector bit

Syntax:

operation ::= `comb.mux` $cond `,` $trueValue `,` $falseValue attr-dict `:` qualified(type($result))
  %0 = mux %pred, %tvalue, %fvalue : i4

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
cond1-bit signless integer
trueValueany type
falseValueany type

Results:

ResultDescription
resultany type

comb.or (::circt::comb::OrOp)

Syntax:

operation ::= `comb.or` $inputs attr-dict `:` qualified(type($result))

Traits: Commutative, SameOperandsAndResultType, SameTypeOperands

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.parity (::circt::comb::ParityOp)

Syntax:

operation ::= `comb.parity` $input attr-dict `:` qualified(type($input))

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputan integer bitvector of one or more bits

Results:

ResultDescription
result1-bit signless integer

comb.replicate (::circt::comb::ReplicateOp)

Concatenate the operand a constant number of times

Syntax:

operation ::= `comb.replicate` $input attr-dict `:` functional-type($input, $result)

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.shl (::circt::comb::ShlOp)

Syntax:

operation ::= `comb.shl` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.shrs (::circt::comb::ShrSOp)

Syntax:

operation ::= `comb.shrs` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.shru (::circt::comb::ShrUOp)

Syntax:

operation ::= `comb.shru` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.sub (::circt::comb::SubOp)

Syntax:

operation ::= `comb.sub` $lhs `,` $rhs attr-dict `:` qualified(type($result))

Traits: SameOperandsAndResultType, SameTypeOperands

Interfaces: InferTypeOpInterface, NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
lhsan integer bitvector of one or more bits
rhsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

comb.xor (::circt::comb::XorOp)

Syntax:

operation ::= `comb.xor` $inputs attr-dict `:` qualified(type($result))

Traits: Commutative, SameOperandsAndResultType, SameTypeOperands

Interfaces: NoSideEffect (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{}

Operands:

OperandDescription
inputsan integer bitvector of one or more bits

Results:

ResultDescription
resultan integer bitvector of one or more bits

'comb' Dialect Docs