lib/choir/src/dialects/arith/root.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const ir = @import("../../core/root.zig");
 2 const rewrite = ir.rewrite;
 3 const egraph = @import("../../egraph/root.zig");
 4 
 5 pub const types = @import("types.zig");
 6 pub const folds = @import("folds.zig");
 7 pub const patterns = @import("patterns.zig");
 8 pub const rules = @import("rules.zig");
 9 pub const scalar = @import("scalar.zig");
10 pub const eval = @import("eval.zig");
11 pub const effects = @import("effects.zig");
12 pub const predicate = @import("predicate.zig");
13 const ops = @import("ops.zig");
14 
15 pub const ScalarKind = types.ScalarKind;
16 pub const ScalarClass = types.ScalarClass;
17 pub const ScalarDescriptor = types.ScalarDescriptor;
18 pub const ScalarSet = types.ScalarSet;
19 pub const VectorTypeInfo = types.VectorTypeInfo;
20 pub const type_names = types.type_names;
21 pub const scalarDescriptor = types.scalarDescriptor;
22 pub const scalarTypeName = types.scalarTypeName;
23 pub const scalarTypeSuffix = types.scalarTypeSuffix;
24 pub const scalarKindFromTypeName = types.scalarKindFromTypeName;
25 pub const scalarKindFromType = types.scalarKindFromType;
26 pub const scalarKindFromSuffix = types.scalarKindFromSuffix;
27 pub const scalarKindIsInteger = types.scalarKindIsInteger;
28 pub const scalarKindIsSignedInteger = types.scalarKindIsSignedInteger;
29 pub const scalarKindIsUnsignedInteger = types.scalarKindIsUnsignedInteger;
30 pub const scalarKindIsFloat = types.scalarKindIsFloat;
31 pub const scalarBitWidth = types.scalarBitWidth;
32 pub const vectorTypeName = types.vectorTypeName;
33 pub const vectorTypeNameForElement = types.vectorTypeNameForElement;
34 pub const parseVectorTypeName = types.parseVectorTypeName;
35 pub const CmpPredicate = predicate.CmpPredicate;
36 pub const ArithDialect = ops.ArithDialect;
37 
38 const pattern_set = patterns.Patterns(ArithDialect);
39 const rule_set = rules.Rules(ArithDialect);
40 pub const canonicalization_patterns = pattern_set.canonicalization_patterns;
41 
42 pub const spec = ir.dialects.dialectSpec(ArithDialect, .{
43     .types = types.registeredTypeSpecs(),
44     .interfaces = &.{
45         rewrite.DialectCanonicalizationInterface.entryFor(
46             ArithDialect.name,
47             &canonicalization_patterns,
48         ),
49     },
50     .op_interface_fallbacks = &.{
51         .{ .id = ir.interfaces.Evaluatable.id, .fallback = eval.fallback },
52     },
53 });
54 
55 pub fn populateEGraphRules(rewrite_set: *egraph.RewriteSet) anyerror!void {
56     try rule_set.populateEGraphRules(rewrite_set);
57 }