The id Windows gives a graphics adapter. It changes on restart, so it has no serialization or
text form: a stored key wants PhysicalDevice::pci_address.
The id of the GPU’s entry in the macOS I/O Registry, which Metal reports as registryID. Like
AdapterLuid it is not promised to survive a restart, so it has no serialization or text
form.
The scope represents the region currently being parsed, as well as the current insertion point.
It is created from scratch for the initial codegen phase, or rebuilt from an existing scope and
a rewriter for passes/conversions.
Hacky solution for getting comptime properties into the scope.
Allows querying certain target-specific properties at compile time, rather than at runtime.
Review on how to better solve this and delegate to the compiler if possible.
Class of a pointer. For Global, the ID contains the underlying buffer ID.
The ID can be used to determine more detailed buffer properties, i.e. for Metal where readability
is part of the pointer class.
For CubeCL semantics, pointers classes to different buffer IDs should be treated as entirely
separate types.
The type used for addressing storage types in a kernel.
This is the type usize maps to when used in a kernel, with isize being mapped to the signed
equivalent.
The scalars are stored with the highest precision possible, but they might get reduced during
compilation. For constant propagation, casts are always executed before converting back to the
larger type to ensure deterministic output.
Version of pliron_op that automatically derives shape ops, accessors, and a constructor from
struct fields. Also enables format by default, and sets the verifier to "succ" unless
overridden.
Implements NamedRewrite::name on the annotated struct, returning the short name of
the rewrite struct (e.g. "InsertEntrypointPass") instead of the fully-qualified type path.