diff options
Diffstat (limited to 'src/TosaSerialize.cpp')
-rw-r--r-- | src/TosaSerialize.cpp | 85 |
1 files changed, 41 insertions, 44 deletions
diff --git a/src/TosaSerialize.cpp b/src/TosaSerialize.cpp index 4fd5014..73c84e8 100644 --- a/src/TosaSerialize.cpp +++ b/src/TosaSerialize.cpp @@ -146,13 +146,13 @@ private: class TosaSerializationBlockBuilder { public: // constructor - TosaSerializationBlockBuilder(TosaSerializationBasicBlock* _ser_block, - TosaSerializationRegionBuilder* _region_builder, - mlir::Block* _block) + TosaSerializationBlockBuilder(TosaSerializationBasicBlock *_ser_block, + TosaSerializationRegionBuilder *_region_builder, + mlir::Block *_block) : ser_block(_ser_block), region_builder(_region_builder), block(_block) {} mlir::LogicalResult - BuildAllOpsInBlock(std::vector<mlir::Value>& return_values); + BuildAllOpsInBlock(std::vector<mlir::Value> &return_values); TosaSerializationBasicBlock *GetBlock() const { return ser_block; } TosaSerializationRegionBuilder *GetRegionBuilder() const { return region_builder; @@ -164,13 +164,13 @@ public: private: TosaSerializationOperator *BuildTosaSerializationOperator( - const TosaSerializationOperatorBuilder& op_builder, mlir::Operation& op); - TosaSerializationTensor* + const TosaSerializationOperatorBuilder &op_builder, mlir::Operation &op); + TosaSerializationTensor * BuildTosaSerializationTensor(mlir::Value val, const std::string &name); - TosaSerializationBasicBlock* ser_block; - TosaSerializationRegionBuilder* region_builder; - mlir::Block* block; + TosaSerializationBasicBlock *ser_block; + TosaSerializationRegionBuilder *region_builder; + mlir::Block *block; std::unordered_map<mlir::Value, std::string> tensor_map; std::unordered_map<mlir::Value, std::string> input_tensor_map; }; @@ -195,11 +195,11 @@ public: } private: - TosaSerializationRegion* ser_region; + TosaSerializationRegion *ser_region; mlir::Region *region; TosaSerializationRegionBuilder *parent_value_scope; - TosaSerializationHandler* tsh; - std::vector<TosaSerializationBlockBuilder*> block_builders; + TosaSerializationHandler *tsh; + std::vector<TosaSerializationBlockBuilder *> block_builders; }; TosaSerializationHandler *TosaSerializationOperatorBuilder::GetTsh() const { @@ -290,10 +290,10 @@ TosaSerializationOperatorBuilder::BuildPoolOpFromMlirOp(mlir::Operation &op, DType type = Type2PoolAccumDType(tensor.getElementType()); TosaPoolAttribute attribute(pad, kernel, stride, input_zp, output_zp, type); - TosaSerializationOperator *tyop = new TosaSerializationOperator( - opcode, Attribute_PoolAttribute, &attribute, - std::vector<std::string>{input_name}, - std::vector<std::string>{output_name}); + TosaSerializationOperator *tyop = + new TosaSerializationOperator(opcode, Attribute_PoolAttribute, &attribute, + std::vector<std::string>{input_name}, + std::vector<std::string>{output_name}); return tyop; } @@ -320,8 +320,7 @@ TosaSerializationOperatorBuilder::BuildEwiseUnaryOpFromMlirOp( std::string output_name = GetTensorName(op.getResult(0)); TosaSerializationOperator *tyop = new TosaSerializationOperator( - opcode, Attribute_NONE, nullptr, - std::vector<std::string>{input_name}, + opcode, Attribute_NONE, nullptr, std::vector<std::string>{input_name}, std::vector<std::string>{output_name}); return tyop; @@ -336,10 +335,10 @@ TosaSerializationOperatorBuilder::BuildReductionOpFromMlirOp( int32_t axis = op.getAttr("axis").dyn_cast<mlir::IntegerAttr>().getInt(); TosaAxisAttribute attribute(axis); - TosaSerializationOperator *tyop = new TosaSerializationOperator( - opcode, Attribute_AxisAttribute, &attribute, - std::vector<std::string>{input_name}, - std::vector<std::string>{output_name}); + TosaSerializationOperator *tyop = + new TosaSerializationOperator(opcode, Attribute_AxisAttribute, &attribute, + std::vector<std::string>{input_name}, + std::vector<std::string>{output_name}); return tyop; } @@ -568,8 +567,8 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::ConstOp>( ts->SetData(u8_data); TosaSerializationOperator *tyop = new TosaSerializationOperator( - Op_CONST, Attribute_NONE, nullptr, - std::vector<std::string>{}, std::vector<std::string>{output_name}); + Op_CONST, Attribute_NONE, nullptr, std::vector<std::string>{}, + std::vector<std::string>{output_name}); return tyop; } @@ -592,7 +591,6 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::Conv2DOp>( std::string input2_name = GetTensorName(op.getOperand(2)); std::string output_name = GetTensorName(op.getResult(0)); - auto quant_info = op.getAttrOfType<mlir::tosa::ConvOpQuantizationAttr>("quantization_info"); @@ -709,7 +707,8 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::TransposeConv2DOp>( mlir::RankedTensorType tensor = op.getOperand(0).getType().cast<mlir::RankedTensorType>(); - TosaTransposeConvAttribute attribute(out_pad, stride, out_shape, input_zp, weight_zp); + TosaTransposeConvAttribute attribute(out_pad, stride, out_shape, input_zp, + weight_zp); TosaSerializationOperator *tyop = new TosaSerializationOperator( Op_TRANSPOSE_CONV2D, Attribute_TransposeConvAttribute, &attribute, @@ -855,8 +854,8 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::ConcatOp>( TosaAxisAttribute attribute(axis); TosaSerializationOperator *tyop = new TosaSerializationOperator( - Op_CONCAT, Attribute_AxisAttribute, &attribute, - inputs, std::vector<std::string>{output_name}); + Op_CONCAT, Attribute_AxisAttribute, &attribute, inputs, + std::vector<std::string>{output_name}); return tyop; } @@ -943,10 +942,10 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::PadOp>( TosaPadAttribute attribute(paddings, pad_const_int, pad_const_fp); - TosaSerializationOperator *tyop = new TosaSerializationOperator( - Op_PAD, Attribute_PadAttribute, &attribute, - std::vector<std::string>{input_name}, - std::vector<std::string>{output_name}); + TosaSerializationOperator *tyop = + new TosaSerializationOperator(Op_PAD, Attribute_PadAttribute, &attribute, + std::vector<std::string>{input_name}, + std::vector<std::string>{output_name}); return tyop; } @@ -1131,8 +1130,7 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::ArithmeticRightShiftOp>( TosaSerializationOperator *tyop = new TosaSerializationOperator( Op_ARITHMETIC_RIGHT_SHIFT, Attribute_ArithmeticRightShiftAttribute, - &attribute, - std::vector<std::string>{input0_name, input1_name}, + &attribute, std::vector<std::string>{input0_name, input1_name}, std::vector<std::string>{output_name}); return tyop; @@ -1181,7 +1179,8 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::RescaleOp>( auto multiplier = op.getAttr("multiplier").dyn_cast<mlir::DenseI32ArrayAttr>().asArrayRef(); - auto shift = op.getAttr("shift").dyn_cast<mlir::DenseI32ArrayAttr>().asArrayRef(); + auto shift = + op.getAttr("shift").dyn_cast<mlir::DenseI32ArrayAttr>().asArrayRef(); std::string input_name = GetTensorName(op.getOperand(0)); std::string output_name = GetTensorName(op.getResult(0)); @@ -1383,14 +1382,13 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::RFFT2dOp>( std::string output_imag_name = GetTensorName(op.getResult(1)); TosaSerializationOperator *tyop = new TosaSerializationOperator( - Op_RFFT2D, Attribute_NONE, nullptr, - std::vector<std::string>{input_name}, - std::vector<std::string>{output_real_name, output_imag_name}); + Op_RFFT2D, Attribute_NONE, nullptr, std::vector<std::string>{input_name}, + std::vector<std::string>{output_real_name, output_imag_name}); return tyop; } -template<> +template <> TosaSerializationOperator * TosaSerializationOperatorBuilder::build<mlir::tosa::FFT2dOp>( mlir::Operation &op) const { @@ -1405,9 +1403,9 @@ TosaSerializationOperatorBuilder::build<mlir::tosa::FFT2dOp>( TosaFFTAttribute attribute(inverse); TosaSerializationOperator *tyop = new TosaSerializationOperator( - Op_FFT2D, Attribute_FFTAttribute, &attribute, - std::vector<std::string>{input_real_name, input_imag_name}, - std::vector<std::string>{output_real_name, output_imag_name}); + Op_FFT2D, Attribute_FFTAttribute, &attribute, + std::vector<std::string>{input_real_name, input_imag_name}, + std::vector<std::string>{output_real_name, output_imag_name}); return tyop; } @@ -1417,7 +1415,7 @@ mlir::LogicalResult TosaSerializationRegionBuilder::BuildAllBlocksInRegion( bool is_top, std::vector<mlir::Value> &return_values) { std::string region_name = ser_region->GetName(); int block_index = 0; - for (auto& block : this->region->getBlocks()) { + for (auto &block : this->region->getBlocks()) { // must name first block of top region "main" const std::string block_name = (is_top && block_index == 0) @@ -1519,7 +1517,6 @@ mlir::LogicalResult TosaSerializationBlockBuilder::BuildAllOpsInBlock( for (auto pair : tensor_map) tensor_name_sort[pair.second] = pair.first; - for (auto pair : tensor_name_sort) { ser_tensor = BuildTosaSerializationTensor(pair.second /* val */, pair.first /* name */); |