[NFC] add nicer builders to chirtl mems

This commit is contained in:
Andrew Lenharth 2021-12-01 14:40:56 -06:00
parent f646974aa6
commit 729d521b7f
2 changed files with 31 additions and 0 deletions

View File

@ -96,6 +96,12 @@ def CombMemOp : FIRRTLOp<"combmem"> {
let results = (outs CMemoryType:$result);
let assemblyFormat = "custom<ImplicitSSAName>(attr-dict) `:` type($result)";
let hasCanonicalizer = true;
let builders = [
OpBuilder<(ins "FIRRTLType":$elementType,
"unsigned":$numElements, "mlir::StringRef":$name,
CArg<"ArrayRef<Attribute>","{}">:$annotations)>
];
}
def SeqMemOp : FIRRTLOp<"seqmem"> {
@ -109,6 +115,11 @@ def SeqMemOp : FIRRTLOp<"seqmem"> {
let results = (outs CMemoryType:$result);
let assemblyFormat = "$ruw custom<SeqMemOp>(attr-dict) `:` type($result)";
let hasCanonicalizer = true;
let builders = [
OpBuilder<(ins "FIRRTLType":$elementType,
"unsigned":$numElements, "RUWAttr":$ruw, "mlir::StringRef":$name,
CArg<"ArrayRef<Attribute>","{}">:$annotations)>
];
}
def MemoryPortOp : FIRRTLOp<"memoryport", [InferTypeOpInterface,

View File

@ -2863,6 +2863,26 @@ static void printSeqMemOp(OpAsmPrinter &p, Operation *op, DictionaryAttr attr) {
printImplicitSSAName(p, op, attr, {"ruw"});
}
void SeqMemOp::build(OpBuilder &builder, OperationState &result,
FIRRTLType elementType, unsigned numElements, RUWAttr ruw,
StringRef name, ArrayRef<Attribute> annotations) {
build(builder, result,
CMemoryType::get(builder.getContext(), elementType, numElements), ruw,
name, builder.getArrayAttr(annotations));
}
//===----------------------------------------------------------------------===//
// CombMemOp Custom attr-dict Directive
//===----------------------------------------------------------------------===//
void CombMemOp::build(OpBuilder &builder, OperationState &result,
FIRRTLType elementType, unsigned numElements,
StringRef name, ArrayRef<Attribute> annotations) {
build(builder, result,
CMemoryType::get(builder.getContext(), elementType, numElements), name,
builder.getArrayAttr(annotations));
}
//===----------------------------------------------------------------------===//
// MemOp Custom attr-dict Directive
//===----------------------------------------------------------------------===//