ion.ion (::catalyst::ion::IonOp)

A class to represent an ion.

Syntax:

operation ::= `ion.ion` attr-dict `:` type($out_ion)

Attributes:

AttributeMLIR TypeDescription
name::mlir::StringAttr
An Attribute containing a string{{% markdown %}} Syntax: ``` string-attribute ::= string-literal (`:` type)? ``` A string attribute is an attribute that represents a string literal value. Examples: ```mlir "An important string" "string with a type" : !dialect.string ``` {{% /markdown %}}
mass::mlir::FloatAttr
An Attribute containing a floating-point value{{% markdown %}} Syntax: ``` float-attribute ::= (float-literal (`:` float-type)?) | (hexadecimal-literal `:` float-type) ``` A float attribute is a literal attribute that represents a floating point value of the specified [float type](#floating-point-types). It can be represented in the hexadecimal form where the hexadecimal value is interpreted as bits of the underlying binary representation. This form is useful for representing infinity and NaN floating point values. To avoid confusion with integer attributes, hexadecimal literals _must_ be followed by a float type to define a float attribute. Examples: ``` 42.0 // float attribute defaults to f64 type 42.0 : f32 // float attribute of f32 type 0x7C00 : f16 // positive infinity 0x7CFF : f16 // NaN (one of possible values) 42 : f32 // Error: expected integer type ``` {{% /markdown %}}
charge::mlir::FloatAttr
An Attribute containing a floating-point value{{% markdown %}} Syntax: ``` float-attribute ::= (float-literal (`:` float-type)?) | (hexadecimal-literal `:` float-type) ``` A float attribute is a literal attribute that represents a floating point value of the specified [float type](#floating-point-types). It can be represented in the hexadecimal form where the hexadecimal value is interpreted as bits of the underlying binary representation. This form is useful for representing infinity and NaN floating point values. To avoid confusion with integer attributes, hexadecimal literals _must_ be followed by a float type to define a float attribute. Examples: ``` 42.0 // float attribute defaults to f64 type 42.0 : f32 // float attribute of f32 type 0x7C00 : f16 // positive infinity 0x7CFF : f16 // NaN (one of possible values) 42 : f32 // Error: expected integer type ``` {{% /markdown %}}
position::mlir::DenseF64ArrayAttrf64 dense array attribute
levels::mlir::ArrayAttrA class to represent an atomic level. array
transitions::mlir::ArrayAttrA class to represent a atomic transition between two levels. array

Results:

Result

Description

out_ion

A value-semantic ion.

ion.mode (::catalyst::ion::ModesOp)

A class to represent an Phonon modes of the system.

Syntax:

operation ::= `ion.mode` attr-dict

Attributes:

AttributeMLIR TypeDescription
modes::mlir::ArrayAttrA class to represent a Phonon mode. array

ion.parallelprotocol (::catalyst::ion::ParallelProtocolOp)

Represent a parallel protocol of pulses.

Syntax:

operation ::= `ion.parallelprotocol` `(` $in_qubits `)` attr-dict `:` type($out_qubits) $region

Traits: SingleBlockImplicitTerminator<YieldOp>, SingleBlock

Operands:

Operand

Description

in_qubits

variadic of A value-semantic qubit (state).

Results:

Result

Description

out_qubits

variadic of A value-semantic qubit (state).

ion.pulse (::catalyst::ion::PulseOp)

Represent a pulse (a laser beam and some time).

Syntax:

operation ::= `ion.pulse` `(` $time `:` type($time) `)` $in_qubit attr-dict `:` type($out_pulse)

Attributes:

AttributeMLIR TypeDescription
beam::catalyst::ion::BeamAttrA class to represent a laser beam.
phase::mlir::FloatAttr
An Attribute containing a floating-point value{{% markdown %}} Syntax: ``` float-attribute ::= (float-literal (`:` float-type)?) | (hexadecimal-literal `:` float-type) ``` A float attribute is a literal attribute that represents a floating point value of the specified [float type](#floating-point-types). It can be represented in the hexadecimal form where the hexadecimal value is interpreted as bits of the underlying binary representation. This form is useful for representing infinity and NaN floating point values. To avoid confusion with integer attributes, hexadecimal literals _must_ be followed by a float type to define a float attribute. Examples: ``` 42.0 // float attribute defaults to f64 type 42.0 : f32 // float attribute of f32 type 0x7C00 : f16 // positive infinity 0x7CFF : f16 // NaN (one of possible values) 42 : f32 // Error: expected integer type ``` {{% /markdown %}}

Operands:

Operand

Description

time

floating-point

in_qubit

A value-semantic qubit (state).

Results:

Result

Description

out_pulse

A type representing a pulse specifications.

ion.yield (::catalyst::ion::YieldOp)

Return results from parallel protocol regions

Syntax:

operation ::= `ion.yield` attr-dict ($results^ `:` type($results))?

Traits: AlwaysSpeculatableImplTrait, HasParent<ParallelProtocolOp>, ReturnLike, Terminator

Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), RegionBranchTerminatorOpInterface

Effects: MemoryEffects::Effect{}

Operands:

Operand

Description

results

variadic of A value-semantic qubit (state).