forked from OSchip/llvm-project
[fir][NFC] Removed unused declaration from td file
Remove unused code from FIROps.td file after latest patches. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D110814
This commit is contained in:
parent
38ec2292f0
commit
0781461959
|
@ -35,34 +35,6 @@ class fir_SimpleOp<string mnemonic, list<OpTrait> traits>
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Base builder for allocate operations
|
|
||||||
def fir_AllocateOpBuilder : OpBuilder<(ins
|
|
||||||
"mlir::Type":$inType,
|
|
||||||
CArg<"mlir::ValueRange", "{}">:$lenParams,
|
|
||||||
CArg<"mlir::ValueRange", "{}">:$sizes,
|
|
||||||
CArg<"llvm::ArrayRef<mlir::NamedAttribute>", "{}">:$attributes),
|
|
||||||
[{
|
|
||||||
$_state.addTypes(getRefTy(inType));
|
|
||||||
$_state.addAttribute("in_type", TypeAttr::get(inType));
|
|
||||||
$_state.addOperands(sizes);
|
|
||||||
$_state.addAttributes(attributes);
|
|
||||||
}]>;
|
|
||||||
|
|
||||||
def fir_NamedAllocateOpBuilder : OpBuilder<(ins
|
|
||||||
"mlir::Type":$inType,
|
|
||||||
"llvm::StringRef":$name,
|
|
||||||
CArg<"mlir::ValueRange", "{}">:$lenParams,
|
|
||||||
CArg<"mlir::ValueRange","{}">:$sizes,
|
|
||||||
CArg<"llvm::ArrayRef<mlir::NamedAttribute>", "{}">:$attributes),
|
|
||||||
[{
|
|
||||||
$_state.addTypes(getRefTy(inType));
|
|
||||||
$_state.addAttribute("in_type", TypeAttr::get(inType));
|
|
||||||
if (!name.empty())
|
|
||||||
$_state.addAttribute("name", $_builder.getStringAttr(name));
|
|
||||||
$_state.addOperands(sizes);
|
|
||||||
$_state.addAttributes(attributes);
|
|
||||||
}]>;
|
|
||||||
|
|
||||||
def fir_OneResultOpBuilder : OpBuilder<(ins
|
def fir_OneResultOpBuilder : OpBuilder<(ins
|
||||||
"mlir::Type":$resultType,
|
"mlir::Type":$resultType,
|
||||||
"mlir::ValueRange":$operands,
|
"mlir::ValueRange":$operands,
|
||||||
|
@ -86,128 +58,6 @@ class fir_SimpleOneResultOp<string mnemonic, list<OpTrait> traits = []> :
|
||||||
let builders = [fir_OneResultOpBuilder];
|
let builders = [fir_OneResultOpBuilder];
|
||||||
}
|
}
|
||||||
|
|
||||||
class fir_TwoBuilders<OpBuilder b1, OpBuilder b2> {
|
|
||||||
list<OpBuilder> builders = [b1, b2];
|
|
||||||
}
|
|
||||||
|
|
||||||
class fir_AllocatableBaseOp<string mnemonic, list<OpTrait> traits = []> :
|
|
||||||
fir_Op<mnemonic, traits>, Results<(outs fir_Type:$res)> {
|
|
||||||
let arguments = (ins
|
|
||||||
OptionalAttr<StrAttr>:$name,
|
|
||||||
OptionalAttr<BoolAttr>:$target
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
class fir_AllocatableOp<string mnemonic, Resource resource,
|
|
||||||
list<OpTrait> traits = []> :
|
|
||||||
fir_AllocatableBaseOp<mnemonic,
|
|
||||||
!listconcat(traits, [MemoryEffects<[MemAlloc<resource>]>])>,
|
|
||||||
fir_TwoBuilders<fir_AllocateOpBuilder, fir_NamedAllocateOpBuilder>,
|
|
||||||
Arguments<(ins TypeAttr:$in_type, Variadic<AnyIntegerType>:$args)> {
|
|
||||||
|
|
||||||
let parser = [{
|
|
||||||
mlir::Type intype;
|
|
||||||
if (parser.parseType(intype))
|
|
||||||
return mlir::failure();
|
|
||||||
auto &builder = parser.getBuilder();
|
|
||||||
result.addAttribute(inType(), mlir::TypeAttr::get(intype));
|
|
||||||
llvm::SmallVector<mlir::OpAsmParser::OperandType, 8> operands;
|
|
||||||
llvm::SmallVector<mlir::Type, 8> typeVec;
|
|
||||||
bool hasOperands = false;
|
|
||||||
if (!parser.parseOptionalLParen()) {
|
|
||||||
// parse the LEN params of the derived type. (<params> : <types>)
|
|
||||||
if (parser.parseOperandList(operands,
|
|
||||||
mlir::OpAsmParser::Delimiter::None) ||
|
|
||||||
parser.parseColonTypeList(typeVec) ||
|
|
||||||
parser.parseRParen())
|
|
||||||
return mlir::failure();
|
|
||||||
auto lens = builder.getI32IntegerAttr(operands.size());
|
|
||||||
result.addAttribute(lenpName(), lens);
|
|
||||||
hasOperands = true;
|
|
||||||
}
|
|
||||||
if (!parser.parseOptionalComma()) {
|
|
||||||
// parse size to scale by, vector of n dimensions of type index
|
|
||||||
auto opSize = operands.size();
|
|
||||||
if (parser.parseOperandList(operands, mlir::OpAsmParser::Delimiter::None))
|
|
||||||
return mlir::failure();
|
|
||||||
for (auto i = opSize, end = operands.size(); i != end; ++i)
|
|
||||||
typeVec.push_back(builder.getIndexType());
|
|
||||||
hasOperands = true;
|
|
||||||
}
|
|
||||||
if (hasOperands &&
|
|
||||||
parser.resolveOperands(operands, typeVec, parser.getNameLoc(),
|
|
||||||
result.operands))
|
|
||||||
return mlir::failure();
|
|
||||||
mlir::Type restype = wrapResultType(intype);
|
|
||||||
if (!restype) {
|
|
||||||
parser.emitError(parser.getNameLoc(), "invalid allocate type: ")
|
|
||||||
<< intype;
|
|
||||||
return mlir::failure();
|
|
||||||
}
|
|
||||||
if (parser.parseOptionalAttrDict(result.attributes) ||
|
|
||||||
parser.addTypeToList(restype, result.types))
|
|
||||||
return mlir::failure();
|
|
||||||
return mlir::success();
|
|
||||||
}];
|
|
||||||
|
|
||||||
let printer = [{
|
|
||||||
p << ' ' << (*this)->getAttr(inType());
|
|
||||||
if (hasLenParams()) {
|
|
||||||
// print the LEN parameters to a derived type in parens
|
|
||||||
p << '(' << getLenParams() << " : " << getLenParams().getTypes() << ')';
|
|
||||||
}
|
|
||||||
// print the shape of the allocation (if any); all must be index type
|
|
||||||
for (auto sh : getShapeOperands()) {
|
|
||||||
p << ", ";
|
|
||||||
p.printOperand(sh);
|
|
||||||
}
|
|
||||||
p.printOptionalAttrDict((*this)->getAttrs(), {inType(), lenpName()});
|
|
||||||
}];
|
|
||||||
|
|
||||||
string extraAllocClassDeclaration = [{
|
|
||||||
static constexpr llvm::StringRef inType() { return "in_type"; }
|
|
||||||
static constexpr llvm::StringRef lenpName() { return "len_param_count"; }
|
|
||||||
mlir::Type getAllocatedType();
|
|
||||||
|
|
||||||
bool hasLenParams() { return bool{(*this)->getAttr(lenpName())}; }
|
|
||||||
bool hasShapeOperands() { return numShapeOperands() > 0; }
|
|
||||||
|
|
||||||
unsigned numLenParams() {
|
|
||||||
if (auto val = (*this)->getAttrOfType<mlir::IntegerAttr>(lenpName()))
|
|
||||||
return val.getInt();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
operand_range getLenParams() {
|
|
||||||
return {operand_begin(), operand_begin() + numLenParams()};
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned numShapeOperands() {
|
|
||||||
return operand_end() - operand_begin() + numLenParams();
|
|
||||||
}
|
|
||||||
|
|
||||||
operand_range getShapeOperands() {
|
|
||||||
return {operand_begin() + numLenParams(), operand_end()};
|
|
||||||
}
|
|
||||||
|
|
||||||
static mlir::Type getRefTy(mlir::Type ty);
|
|
||||||
|
|
||||||
/// Get the input type of the allocation
|
|
||||||
mlir::Type getInType() {
|
|
||||||
return (*this)->getAttrOfType<mlir::TypeAttr>(inType()).getValue();
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
|
|
||||||
// Verify checks common to all allocation operations
|
|
||||||
string allocVerify = [{
|
|
||||||
llvm::SmallVector<llvm::StringRef, 8> visited;
|
|
||||||
if (verifyInType(getInType(), visited, numShapeOperands()))
|
|
||||||
return emitOpError("invalid type for allocation");
|
|
||||||
if (verifyRecordLenParams(getInType(), numLenParams()))
|
|
||||||
return emitOpError("LEN params do not correspond to type");
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Memory SSA operations
|
// Memory SSA operations
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
Loading…
Reference in New Issue