MQTRef Dialect

‘mqtref’ Dialect

The MQT reference semantics (mqtref) dialect.

This dialect uses memory semantics to represent and work with qubits. Similar to many existing quantum programming languages, operations can just be applied to qubits without needing to track state updates.

This dialect is designed as a “compatibility” dialect that simplifies translations from and to existing languages such as QASM or QIR. Its optimization capabilities are more limited compared to the mqtopt dialect, which is designed for optimization.

The mqtref dialect supports dynamic as well as static qubit addressing.

Operations

mqtref.allocQubit (::mqt::ir::ref::AllocQubitOp)

Allocates a single qubit

Syntax:

operation ::= `mqtref.allocQubit` attr-dict

Allocates a single qubit in the “0” state. The qubit can be used in operations after allocation. It must be deallocated with the deallocQubit operation.

Example:

%q = mqtref.allocQubit

Interfaces: InferTypeOpInterface

Results:

Result

Description

qubit

qubit reference

mqtref.barrier (::mqt::ir::ref::BarrierOp)

Barrier operation

Syntax:

operation ::= `mqtref.barrier` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents the barrier operation. It has a variadic number of input qubits and no control qubits.

Traits: AttrSizedOperandSegments, NoControl, NoParameter

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.dcx (::mqt::ir::ref::DCXOp)

DCX operation

Syntax:

operation ::= `mqtref.dcx` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a DCX gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.deallocQubit (::mqt::ir::ref::DeallocQubitOp)

Deallocates a single qubit

Syntax:

operation ::= `mqtref.deallocQubit` $qubit attr-dict

Deallocates a single qubit that was previously allocated with the allocQubit operation. After this operation, the qubit is no longer valid and cannot be used in further operations.

Example:

mqtref.deallocQubit %q

Operands:

Operand

Description

qubit

qubit reference

mqtref.ecr (::mqt::ir::ref::ECROp)

DCX operation

Syntax:

operation ::= `mqtref.ecr` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an ECR gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.gphase (::mqt::ir::ref::GPhaseOp)

GPhase operation

Syntax:

operation ::= `mqtref.gphase` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a global phase gate. It accepts a parameter indicating the degree of the rotation angle. The global phase gate does not have any input and output qubits. It might still be controlled by arbitrarily many qubits.

Traits: AttrSizedOperandSegments, NoTarget, OneParameter

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.h (::mqt::ir::ref::HOp)

H operation

Syntax:

operation ::= `mqtref.h` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a Hadamard gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.i (::mqt::ir::ref::IOp)

I operation

Syntax:

operation ::= `mqtref.i` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an identity gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.iswap (::mqt::ir::ref::iSWAPOp)

ISWAP operation

Syntax:

operation ::= `mqtref.iswap` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an iSWAP gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.iswapdg (::mqt::ir::ref::iSWAPdgOp)

ISWAPdg operation

Syntax:

operation ::= `mqtref.iswapdg` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an inverse iSWAP gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.measure (::mqt::ir::ref::MeasureOp)

A measure operation

Syntax:

operation ::= `mqtref.measure` $in_qubit attr-dict

This class represents a measure operation. It takes a single qubit as input and returns a bit. After the measurement, the referenced qubit is in state “0” or “1”. The value of the state is indicated by the returned bit.

Example:

%1 = mqtref.measure %0

Interfaces: InferTypeOpInterface

Operands:

Operand

Description

in_qubit

qubit reference

Results:

Result

Description

out_bit

1-bit signless integer

mqtref.p (::mqt::ir::ref::POp)

P operation

Syntax:

operation ::= `mqtref.p` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a phase gate. It takes a qubit and a variadic list of positive/negative controls as an input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.peres (::mqt::ir::ref::PeresOp)

Peres operation

Syntax:

operation ::= `mqtref.peres` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a Peres gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.peresdg (::mqt::ir::ref::PeresdgOp)

Peresdg operation

Syntax:

operation ::= `mqtref.peresdg` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an inverse Peres gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.qubit (::mqt::ir::ref::QubitOp)

Assign static qubit reference

Syntax:

operation ::= `mqtref.qubit` $index attr-dict

The mqtref.qubit operation produces an SSA value from the given index to a static (hardware) qubit.

Example:

%q = mqtref.qubit 0

Interfaces: InferTypeOpInterface

Attributes:

AttributeMLIR TypeDescription
index::mlir::IntegerAttr64-bit signless integer attribute whose value is non-negative

Results:

Result

Description

qubit

qubit reference

mqtref.r (::mqt::ir::ref::ROp)

R operation

Syntax:

operation ::= `mqtref.r` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a R gate. It takes a qubit and a variadic list of positive/negative controls as an input. Additionally, it accepts two parameters indicating the degree of the rotation angles.

Traits: AttrSizedOperandSegments, OneTarget, TwoParameters

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.reset (::mqt::ir::ref::ResetOp)

A reset operation

Syntax:

operation ::= `mqtref.reset` $in_qubit attr-dict

This class represents a reset operation. It takes a single qubit as input and and resets its state to “0”.

Example:

mqtref.reset %0

Operands:

Operand

Description

in_qubit

qubit reference

mqtref.rx (::mqt::ir::ref::RXOp)

RX operation

Syntax:

operation ::= `mqtref.rx` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RX gate. It takes a qubit and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.rxx (::mqt::ir::ref::RXXOp)

RXX operation

Syntax:

operation ::= `mqtref.rxx` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RXX gate. It takes two qubits and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.ry (::mqt::ir::ref::RYOp)

RY operation

Syntax:

operation ::= `mqtref.ry` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RY gate. It takes a qubit and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.ryy (::mqt::ir::ref::RYYOp)

RYY operation

Syntax:

operation ::= `mqtref.ryy` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RYY gate. It takes two qubits and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.rz (::mqt::ir::ref::RZOp)

RZ operation

Syntax:

operation ::= `mqtref.rz` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RZ gate. It takes a qubit and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.rzx (::mqt::ir::ref::RZXOp)

RZX operation

Syntax:

operation ::= `mqtref.rzx` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RZX gate. It takes two qubits and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.rzz (::mqt::ir::ref::RZZOp)

RZZ operation

Syntax:

operation ::= `mqtref.rzz` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an RZZ gate. It takes two qubits and a variadic list of positive/negative controls as input. Additionally, it accepts a parameter indicating the degree of the rotation angle.

Traits: AttrSizedOperandSegments, OneParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.s (::mqt::ir::ref::SOp)

S operation

Syntax:

operation ::= `mqtref.s` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an S gate. It takes a qubit as an input and a variadic list of positive/negative controls.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.sdg (::mqt::ir::ref::SdgOp)

Sdg operation

Syntax:

operation ::= `mqtref.sdg` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an inverse S gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.swap (::mqt::ir::ref::SWAPOp)

SWAP operation

Syntax:

operation ::= `mqtref.swap` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a SWAP gate. It takes two qubits and a variadic list of positive/negative controls as input.

Traits: AttrSizedOperandSegments, NoParameter, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.sx (::mqt::ir::ref::SXOp)

SX operation

Syntax:

operation ::= `mqtref.sx` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an SX gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.sxdg (::mqt::ir::ref::SXdgOp)

SXdg operation

Syntax:

operation ::= `mqtref.sxdg` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an inverse SX gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.t (::mqt::ir::ref::TOp)

T operation

Syntax:

operation ::= `mqtref.t` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a T gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.tdg (::mqt::ir::ref::TdgOp)

Tdg operation

Syntax:

operation ::= `mqtref.tdg` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an inverse T gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.u (::mqt::ir::ref::UOp)

U operation

Syntax:

operation ::= `mqtref.u` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a U gate. It takes a qubit and a variadic list of positive/negative controls as an input. Additionally, it accepts three parameters indicating the degree of the rotation angles.

Traits: AttrSizedOperandSegments, OneTarget, ThreeParameters

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.u2 (::mqt::ir::ref::U2Op)

U2 operation

Syntax:

operation ::= `mqtref.u2` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a U2 gate. It takes a qubit and a variadic list of positive/negative controls as an input. Additionally, it accepts two parameters indicating the degree of the rotation angles.

Traits: AttrSizedOperandSegments, OneTarget, TwoParameters

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.v (::mqt::ir::ref::VOp)

V operation

Syntax:

operation ::= `mqtref.v` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a V gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.vdg (::mqt::ir::ref::VdgOp)

Vdg operation

Syntax:

operation ::= `mqtref.vdg` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an inverse V gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.x (::mqt::ir::ref::XOp)

X operation

Syntax:

operation ::= `mqtref.x` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a Pauli-X gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.xx_minus_yy (::mqt::ir::ref::XXminusYYOp)

XX-YY operation

Syntax:

operation ::= `mqtref.xx_minus_yy` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an XX-YY gate. It takes two qubits and a variadic list of positive/negative controls as input. Additionally, it accepts two parameters indicating the degree of the rotation angles.

Traits: AttrSizedOperandSegments, TwoParameters, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.xx_plus_yy (::mqt::ir::ref::XXplusYYOp)

XX+YY operation

Syntax:

operation ::= `mqtref.xx_plus_yy` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents an XX+YY gate. It takes two qubits and a variadic list of positive/negative controls as input. Additionally, it accepts two parameters indicating the degree of the rotation angles.

Traits: AttrSizedOperandSegments, TwoParameters, TwoTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.y (::mqt::ir::ref::YOp)

Y operation

Syntax:

operation ::= `mqtref.y` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a Pauli-Y gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

mqtref.z (::mqt::ir::ref::ZOp)

Z operation

Syntax:

operation ::= `mqtref.z` `(` custom<RefParams>($params, $static_params, $params_mask) `)`
              attr-dict
              $in_qubits ( `ctrl` $pos_ctrl_in_qubits^ )? ( `nctrl` $neg_ctrl_in_qubits^ )?

This class represents a Pauli-Z gate. It takes a qubit and a variadic list of positive/negative controls as an input.

Traits: AttrSizedOperandSegments, NoParameter, OneTarget

Interfaces: UnitaryInterface

Attributes:

AttributeMLIR TypeDescription
static_params::mlir::DenseF64ArrayAttrf64 dense array attribute
params_mask::mlir::DenseBoolArrayAttri1 dense array attribute

Operands:

Operand

Description

params

variadic of 64-bit float

in_qubits

variadic of qubit reference

pos_ctrl_in_qubits

variadic of qubit reference

neg_ctrl_in_qubits

variadic of qubit reference

Types

QubitType

Qubit reference

Syntax: !mqtref.Qubit

Interfaces

OpInterface definitions

UnitaryInterface (UnitaryInterface)

This interface provides a generic way to interact with unitary operations in the MQTRef dialect. Unitary operations are quantum operations that are reversible and can be represented by a unitary matrix. The interface provides methods to access the operands and results of the operation.

Methods:

getInQubits
mlir::OperandRange getInQubits();

Returns all qubits of the operation excl. controlling qubits.

NOTE: This method must be implemented by the user.

getPosCtrlInQubits
mlir::OperandRange getPosCtrlInQubits();

Returns all positively-controlling qubits of the operation.

NOTE: This method must be implemented by the user.

getNegCtrlInQubits
mlir::OperandRange getNegCtrlInQubits();

Returns all negatively-controlling qubits of the operation.

NOTE: This method must be implemented by the user.

getCtrlInQubits
std::vector<mlir::Value> getCtrlInQubits();

Returns all controlling qubits of the operation.

NOTE: This method must be implemented by the user.

isControlled
bool isControlled();

Returns true if the operation has any control qubits, otherwise false.

NOTE: This method must be implemented by the user.

getAllInQubits
std::vector<mlir::Value> getAllInQubits();

Returns all input qubits of the operation incl. all controlling qubits.

NOTE: This method must be implemented by the user.

getIdentifier
llvm::StringRef getIdentifier();

Returns the name of the gate.

NOTE: This method must be implemented by the user.