ion.ion
(::catalyst::ion::IonOp)¶
A class to represent an ion.
Syntax:
operation ::= `ion.ion` attr-dict `:` type($out_ion)
Attributes:¶
Attribute | MLIR Type | Description |
---|---|---|
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::DenseF64ArrayAttr | f64 dense array attribute |
levels | ::mlir::ArrayAttr | A class to represent an atomic level. array |
transitions | ::mlir::ArrayAttr | A class to represent a atomic transition between two levels. array |
Results:¶
Result |
Description |
---|---|
|
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:¶
Attribute | MLIR Type | Description |
---|---|---|
modes | ::mlir::ArrayAttr | A 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 |
---|---|
|
variadic of A value-semantic qubit (state). |
Results:¶
Result |
Description |
---|---|
|
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:¶
Attribute | MLIR Type | Description |
---|---|---|
beam | ::catalyst::ion::BeamAttr | A 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 |
---|---|
|
floating-point |
|
A value-semantic qubit (state). |
Results:¶
Result |
Description |
---|---|
|
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 |
---|---|
|
variadic of A value-semantic qubit (state). |