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 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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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 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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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 |
|---|---|
|
qubit reference |
Results:¶
Result |
Description |
|---|---|
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
index | ::mlir::IntegerAttr | 64-bit signless integer attribute whose value is non-negative |
Results:¶
Result |
Description |
|---|---|
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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 |
|---|---|
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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:¶
| Attribute | MLIR Type | Description |
|---|---|---|
static_params | ::mlir::DenseF64ArrayAttr | f64 dense array attribute |
params_mask | ::mlir::DenseBoolArrayAttr | i1 dense array attribute |
Operands:¶
Operand |
Description |
|---|---|
|
variadic of 64-bit float |
|
variadic of qubit reference |
|
variadic of qubit reference |
|
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.