|
picceler
A compiled DSL for image processing, built on MLIR
|
| Cpicceler::ASTNode | Abstract Syntax Tree (AST) node base class |
| Cpicceler::AssignmentNode | AST node for assignment statements |
| Cpicceler::BinaryOpNode | AST node for binary operations (arithmetic and relational) |
| Cpicceler::CallNode | AST node for function calls |
| Cpicceler::ForNode | AST node for "for" statements |
| Cpicceler::FunctionNode | AST node for function definitions |
| Cpicceler::IfNode | AST node for if conditional statements |
| Cpicceler::KernelNode | AST node for kernel definitions |
| Cpicceler::ModuleNode | AST node for the entire module |
| Cpicceler::NumberNode | AST node for numeric literals |
| Cpicceler::ReturnNode | AST node for "return" statements |
| Cpicceler::StringNode | AST node for string literals |
| Cpicceler::VariableNode | AST node for variable references |
| Cpicceler::CLIOptions | Struct to hold command-line options for the compiler |
| Cpicceler::CompileError | Struct to hold compilation error information |
| Cpicceler::Compiler | Compiler class that orchestrates the compilation process |
| Cmlir::ConversionPattern | |
| Cpicceler::GenericTypeUpdatePattern | A generic pattern that updates the types of operations based on a provided type converter. Used in KernelToMemref and OpsToFuncCalls passes to ensure that operations have the correct types after type conversion |
| Cpicceler::ImageAccessHelper | Helper class to generate LLVM IR for accessing fields of the Image struct via an opaque pointer. Assumes the following C++ struct layout: struct Image { uint32_t _width; // Offset 0 uint32_t _height; // Offset 4 unsigned char *_data; // Offset 8 }; |
| Cpicceler::IRPassManager | Wrapper around MLIR PassManager to manage and run passes |
| Cpicceler::KernelData | |
| Cpicceler::Lexer | Lexical analyzer for the picceler programming language |
| Cpicceler::Location | Struct to hold location information |
| Cpicceler::MLIRGen | MLIR code generator that converts AST nodes to MLIR constructs. This offers the initial IR generation from the AST |
| Cmlir::OpConversionPattern | |
| Cpicceler::CropToAffine | |
| Cpicceler::FixedKernelFilterPattern< OpTy > | |
| Cpicceler::KernelToMemref | |
| Cpicceler::LoadImageToCall | |
| Cpicceler::ParameterizedFilterPattern< OpTy > | Rewrites a filter op whose kernel depends on a single I64 parameter (sharpen's strength, box_blur/gaussian_blur's radius) into a convolution + kernel pair, using staticCalc when the parameter is a compile-time constant and dynamicBuilder otherwise |
| Cpicceler::PrintToCalls | |
| Cpicceler::ReadNumberToCall | |
| Cpicceler::ReadStringToCall | |
| Cpicceler::RotateToAffine | |
| Cpicceler::SaveImageToCall | Pattern to lower SaveImageOp to a function call |
| Cpicceler::ShowImageToCall | Pattern to lower ShowImageOp to a function call |
| Cpicceler::StringConstConverter | |
| Cmlir::OpInterfaceConversionPattern | |
| Cpicceler::ElementWiseBinaryOpToAffine | |
| Cpicceler::ElementWiseUnaryOpToAffine | |
| Cpicceler::NeighbourhoodOpsToAffine | |
| Cmlir::OpRewritePattern | |
| Cpicceler::ChainRotatePattern | |
| Cpicceler::ChainedBrightnessPattern | |
| Cpicceler::ChainedInvertPattern | |
| Cpicceler::CombineNestedCrops | Canonicalization pattern for the CropOp that combines nested crop operations into a single crop operation. only applicable when both crop operations have constant integer coordinates and dimensions |
| Cpicceler::IdentityConvolutionPattern | |
| Cpicceler::RemoveInvertPattern | |
| Cpicceler::SameOperandPattern | Canonicalization pattern for the BlendOp that replaces blend(img, img, weight) with img if both input images are the same |
| Cpicceler::Parser | That converts tokens into an AST |
| Cmlir::PassInstrumentation | |
| Cpicceler::PassLogger | Custom struct to log pass execution using spdlog. This struct implements the PassInstrumentation interface to hook into the pass execution lifecycle |
| Cimpl::PiccelerAddProfilingBase | |
| Cpicceler::PiccelerAddProfilingPass | A pass that wraps every Picceler compute/IO op with piccelerTraceBegin/piccelerTraceEnd runtime calls. Excludes StringConstOp (instrumentation itself creates these) and ShowImageOp/ ReadNumberOp/ReadStringOp (block on a window/stdin, not compute – one call would swallow every real op's time into invisibility on the timeline), PrintOp (times stdout buffering, not compute), and KernelConstOp (sub-microsecond next to any real op, just adds a row) |
| Cimpl::PiccelerFiltersToConvBase | |
| Cpicceler::PiccelerFiltersToConvPass | A pass that converts high-level image filter operations (like sharpen, blur, edge detect) into convolution operations with constant kernels |
| Cimpl::PiccelerKernelToMemrefBase | |
| Cpicceler::PiccelerKernelToMemrefPass | |
| Cimpl::PiccelerOpsToFuncCallsBase | |
| Cpicceler::PiccelerOpsToFuncCallsPass | A pass that converts image operations (like load, show, save) into function calls |
| Cimpl::PiccelerToAffineBase | |
| Cpicceler::PiccelerToAffinePass | A pass that converts Picceler operations to the Affine dialect. This is the crucial step where we lower from our high-level image processing operations to a more explicit representation that can be further lowered to LLVM IR. Each Picceler operation is matched and rewritten into one or more Affine loops that perform the equivalent computation. This pass also handles type conversions and ensures that necessary runtime functions (like piccelerCreateImage) are declared |
| Cimpl::PiccelerToLLVMIRBase | |
| Cpicceler::PiccelerToLLVMIRPass | A pass that helps convert last pieces of Picceler IR to LLVM IR |
| Cpicceler::Token | Represents a token produced by the lexer |