llvm/mlir/tools/mlir-tblgen/PassCAPIGen.cpp

//===- Pass.cpp - MLIR pass registration generator ------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// PassCAPIGen uses the description of passes to generate C API for the passes.
//
//===----------------------------------------------------------------------===//

#include "mlir/TableGen/GenInfo.h"
#include "mlir/TableGen/Pass.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/TableGen/Error.h"
#include "llvm/TableGen/Record.h"

usingnamespacemlir;
usingnamespacemlir::tblgen;

static llvm::cl::OptionCategory
    passGenCat("Options for -gen-pass-capi-header and -gen-pass-capi-impl");
static llvm::cl::opt<std::string>
    groupName("prefix",
              llvm::cl::desc("The prefix to use for this group of passes. The "
                             "form will be mlirCreate<prefix><passname>, the "
                             "prefix can avoid conflicts across libraries."),
              llvm::cl::cat(passGenCat));

const char *const passDecl =;

const char *const fileHeader =;

const char *const fileFooter =;

/// Emit TODO
static bool emitCAPIHeader(const llvm::RecordKeeper &records, raw_ostream &os) {}

const char *const passCreateDef =;

/// {0}: The name of the pass group.
const char *const passGroupRegistrationCode =;

static bool emitCAPIImpl(const llvm::RecordKeeper &records, raw_ostream &os) {}

static mlir::GenRegistration genCAPIHeader("gen-pass-capi-header",
                                           "Generate pass C API header",
                                           &emitCAPIHeader);

static mlir::GenRegistration genCAPIImpl("gen-pass-capi-impl",
                                         "Generate pass C API implementation",
                                         &emitCAPIImpl);