CIRCT 22.0.0git
Loading...
Searching...
No Matches
Arc.cpp
Go to the documentation of this file.
1//===- Arc.cpp - C interface for the Arc dialect ------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
13#include "mlir/CAPI/IR.h"
14#include "mlir/CAPI/Registration.h"
15#include "mlir/CAPI/Support.h"
16
17using namespace circt::arc;
18
19MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Arc, arc, circt::arc::ArcDialect)
20
21void registerArcPasses() { circt::arc::registerPasses(); }
22
23//===----------------------------------------------------------------------===//
24// Type API.
25//===----------------------------------------------------------------------===//
26
27bool arcTypeIsAState(MlirType type) {
28 return llvm::isa<StateType>(unwrap(type));
29}
30
31MlirType arcStateTypeGet(MlirType innerType) {
32 return wrap(StateType::get(unwrap(innerType)));
33}
34
35MlirType arcStateTypeGetType(MlirType type) {
36 return wrap(llvm::cast<StateType>(unwrap(type)).getType());
37}
38
39bool arcTypeIsAMemory(MlirType type) {
40 return llvm::isa<MemoryType>(unwrap(type));
41}
42
43MlirType arcMemoryTypeGet(unsigned numWords, MlirType wordType,
44 MlirType addressType) {
45 return wrap(
46 MemoryType::get(unwrap(wordType).getContext(), numWords,
47 llvm::cast<mlir::IntegerType>(unwrap(wordType)),
48 llvm::cast<mlir::IntegerType>(unwrap(addressType))));
49}
50
51bool arcTypeIsAStorage(MlirType type) {
52 return llvm::isa<StorageType>(unwrap(type));
53}
54
55MlirType arcStorageTypeGet(MlirContext ctx) {
56 return wrap(StorageType::get(unwrap(ctx), 0));
57}
58
59MlirType arcStorageTypeGetWithSize(MlirContext ctx, unsigned size) {
60 return wrap(StorageType::get(unwrap(ctx), size));
61}
62
63bool arcTypeIsASimModelInstance(MlirType type) {
64 return llvm::isa<SimModelInstanceType>(unwrap(type));
65}
66
67MlirType arcSimModelInstanceTypeGet(MlirAttribute model) {
68 auto attr = llvm::cast<mlir::FlatSymbolRefAttr>(unwrap(model));
69 return wrap(SimModelInstanceType::get(attr.getContext(), attr));
70}
MlirType arcStateTypeGetType(MlirType type)
Definition Arc.cpp:35
MlirType arcStorageTypeGetWithSize(MlirContext ctx, unsigned size)
Definition Arc.cpp:59
MlirType arcStorageTypeGet(MlirContext ctx)
Definition Arc.cpp:55
void registerArcPasses()
Definition Arc.cpp:21
bool arcTypeIsAMemory(MlirType type)
Definition Arc.cpp:39
bool arcTypeIsASimModelInstance(MlirType type)
Definition Arc.cpp:63
bool arcTypeIsAState(MlirType type)
Definition Arc.cpp:27
bool arcTypeIsAStorage(MlirType type)
Definition Arc.cpp:51
MlirType arcStateTypeGet(MlirType innerType)
Definition Arc.cpp:31
MlirType arcMemoryTypeGet(unsigned numWords, MlirType wordType, MlirType addressType)
Definition Arc.cpp:43
MlirType arcSimModelInstanceTypeGet(MlirAttribute model)
Definition Arc.cpp:67
return wrap(CMemoryType::get(unwrap(ctx), baseType, numElements))
MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(CHIRRTL, chirrtl, circt::chirrtl::CHIRRTLDialect) MlirType chirrtlTypeGetCMemory(MlirContext ctx
static EvaluatorValuePtr unwrap(OMEvaluatorValue c)
Definition OM.cpp:111
Definition arc.py:1