midenc_hir/dialects/
builtin.rs1mod builders;
2mod ops;
3
4use alloc::boxed::Box;
5
6pub use self::{
7 builders::{BuiltinOpBuilder, ComponentBuilder, FunctionBuilder, ModuleBuilder, WorldBuilder},
8 ops::*,
9};
10use crate::{
11 AttributeValue, Builder, Dialect, DialectInfo, DialectRegistration, OperationRef, SourceSpan,
12 Type,
13};
14
15#[derive(Debug)]
16pub struct BuiltinDialect {
17 info: DialectInfo,
18}
19
20impl BuiltinDialect {
21 #[inline]
22 pub fn num_registered(&self) -> usize {
23 self.registered_ops().len()
24 }
25}
26
27impl DialectRegistration for BuiltinDialect {
28 const NAMESPACE: &'static str = "builtin";
29
30 #[inline]
31 fn init(info: DialectInfo) -> Self {
32 Self { info }
33 }
34
35 fn register_operations(info: &mut DialectInfo) {
36 info.register_operation::<ops::World>();
37 info.register_operation::<ops::Component>();
38 info.register_operation::<ops::Module>();
39 info.register_operation::<ops::Function>();
40 info.register_operation::<ops::GlobalVariable>();
41 info.register_operation::<ops::GlobalSymbol>();
42 info.register_operation::<ops::Segment>();
43 info.register_operation::<ops::UnrealizedConversionCast>();
44 info.register_operation::<ops::Ret>();
45 info.register_operation::<ops::RetImm>();
46 }
47}
48
49impl Dialect for BuiltinDialect {
50 #[inline]
51 fn info(&self) -> &DialectInfo {
52 &self.info
53 }
54
55 fn materialize_constant(
56 &self,
57 _builder: &mut dyn Builder,
58 _attr: Box<dyn AttributeValue>,
59 _ty: &Type,
60 _span: SourceSpan,
61 ) -> Option<OperationRef> {
62 None
63 }
64}