picceler
A compiled DSL for image processing, built on MLIR
Loading...
Searching...
No Matches
picceler_filters_to_conv_pass.cpp File Reference
#include "passes.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/Math/IR/Math.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Transforms/DialectConversion.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/Matchers.h"
#include "mlir/Pass/Pass.h"
#include "mlir/IR/BuiltinOps.h"
#include "spdlog/spdlog.h"
#include "ops.h"
#include "types.h"
#include <error.h>
#include <expected>
#include <format>
#include <numbers>
#include "piccelerPasses.h.inc"

Classes

class  picceler::KernelData
struct  picceler::FixedKernelFilterPattern< OpTy >
struct  picceler::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. More...
struct  picceler::PiccelerFiltersToConvPass
 A pass that converts high-level image filter operations (like sharpen, blur, edge detect) into convolution operations with constant kernels. More...

Namespaces

namespace  picceler

Macros

#define GEN_PASS_DEF_PICCELERFILTERSTOCONV

Functions

Result< KernelData > picceler::calculateSharpenKernel (SharpenOp op, SharpenOpAdaptor adaptor)
Result< KernelData > picceler::calculateBoxBlurKernel (BoxBlurOp op, BoxBlurOpAdaptor adaptor)
Result< KernelData > picceler::calculateGaussianKernel (GaussianBlurOp op, GaussianBlurOpAdaptor adaptor)
Result< KernelData > picceler::calculateEdgeDetectKernel (EdgeDetectOp op, EdgeDetectOpAdaptor adaptor)
Result< KernelData > picceler::calculateEmbossKernel (EmbossOp op, EmbossOpAdaptor adaptor)
void picceler::emitRuntimeRadiusBoundsCheck (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value radius)
Result< mlir::Value > picceler::buildBoxBlurKernelDynamic (BoxBlurOp op, BoxBlurOpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter, mlir::Location loc)
Result< mlir::Value > picceler::buildGaussianKernelDynamic (GaussianBlurOp op, GaussianBlurOpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter, mlir::Location loc)
Result< mlir::Value > picceler::buildSharpenKernelDynamic (SharpenOp op, SharpenOpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter, mlir::Location loc)
The following functions create instances of the various passes used in the compilation process.

Each function corresponds to a specific pass that transforms the IR in a particular way.

std::unique_ptr< mlir::Pass > picceler::createPiccelerFiltersToConvPass ()

Macro Definition Documentation

◆ GEN_PASS_DEF_PICCELERFILTERSTOCONV

#define GEN_PASS_DEF_PICCELERFILTERSTOCONV