qat.experimental.dialect.pulse.ir.traits module

Contains traits that are used to describe properties of operations in the pulse dialect, and to apply canonicalization patterns to operations in the pulse dialect.

class AdvancesTimeTrait

Bases: OpTrait

A trait that signifies an operation advances time on the frame(s) it acts on.

The time does not need to be known at compile time, and in that sense, can be runtime dynamic.

class FrameCanonicalizationPatternsTrait

Bases: HasCanonicalizationPatternsTrait

Applies canonicalization to operations that act on frames.

Including:

  • Phase shifts that are modulo 2pi equal to zero.

  • Waits that are equal to zero.

classmethod get_canonicalization_patterns()
Return type:

tuple[RewritePattern, ...]

class PulseTypesCanonicalizationPatternsTrait

Bases: HasCanonicalizationPatternsTrait

Applied to arithmetic binary operations on types in the pulse dialect that resemble floating point or complex numbers.

classmethod get_canonicalization_patterns()
Return type:

tuple[RewritePattern, ...]