Let's use this issue to collect ideas for compiler directives in guppy.
I propose using optional arguments to @guppy decorators to collect compiler directives.
Some will be directives for the guppy compiler, some will be passed down. Those passed down can be collected using reserved keys in hugr metadata. We could even opaquely include LLVM directives?
Examples:
@guppy(inline=True)
def foo(...):
pass
# add order edges to preserve ordering between operations (what about nested operations?)
@guppy(preserve_order=True)
def bar(...):
pass
# disallow non-unitary operations
@guppy(unitary=True)
def circ(qs: array<qubit>):
pass
Let's use this issue to collect ideas for compiler directives in guppy.
I propose using optional arguments to @guppy decorators to collect compiler directives.
Some will be directives for the guppy compiler, some will be passed down. Those passed down can be collected using reserved keys in hugr metadata. We could even opaquely include LLVM directives?
Examples:
See #361