Definition at line 32 of file PALComparisons.h.
-Referenced by nnfw::cker::Abs(), nnfw::cker::optimized::Add(), nnfw::cker::optimized::Add(), tflite::reference_ops::ArgMax(), tflite::reference_ops::ArgMax(), nnfw::cker::ArgMinMax(), luci_interpreter_pal::AveragePool(), luci_interpreter_pal::AveragePool(), nnfw::cker::AveragePool16(), nnfw::cker::AveragePool32(), nnfw::cker::AveragePool< float >(), nnfw::cker::AveragePool< int8_t >(), luci_interpreter_pal::AveragePool< int8_t >(), nnfw::cker::AveragePool< uint8_t >(), luci_interpreter_pal::BatchMatMul(), onert::backend::cpu::ops::BatchMatMulLayer::batchMatMulFloat32(), luci_interpreter_pal::BatchToSpaceND(), nnfw::cker::BatchToSpaceND(), nnfw::cker::reference::BinaryArithmeticOp(), nnfw::cker::BinaryArithmeticOp(), nnfw::cker::reference::BinaryArithmeticOp(), nnfw::cker::BinaryArithmeticOp(), nnfw::cker::reference::BinaryArithmeticOp(), moco::broadcast_shape(), luci_interpreter_pal::BroadcastAdd4DSlow(), onert_micro::execute::pal::BroadcastAdd4DSlow(), nnfw::cker::optimized::BroadcastAddDispatch(), nnfw::cker::optimized::BroadcastAddDispatch(), luci_interpreter_pal::BroadcastArithmeticOp4DSlow(), onert_micro::execute::pal::BroadcastArithmeticOp4DSlow(), nnfw::cker::BroadcastBinaryArithmeticOp(), nnfw::cker::BroadcastBinaryArithmeticOp(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), luci_interpreter_pal::BroadcastBinaryOp4DSlow(), nnfw::cker::BroadcastComparison4DSlow(), nnfw::cker::BroadcastComparison4DSlowImpl(), nnfw::cker::BroadcastComparison4DSlowWithScaling(), luci_interpreter_pal::BroadcastDiv4DSlow(), nnfw::cker::optimized::BroadcastDivDispatch(), luci_interpreter_pal::BroadcastFloorDiv4DSlow(), luci_interpreter_pal::BroadcastFloorMod4DSlow(), luci_interpreter_pal::BroadcastMaximum4DSlow(), luci_interpreter_pal::BroadcastMinimum4DSlow(), luci_interpreter_pal::BroadcastMul4DSlow(), onert_micro::execute::pal::BroadcastMul4DSlow(), nnfw::cker::optimized::BroadcastMulDispatch(), nnfw::cker::optimized::BroadcastMulDispatch(), tflite::reference_ops::BroadcastPow4DSlow(), luci_interpreter_pal::BroadcastPrelu4DSlowFloat(), tflite::reference_ops::BroadcastSelect4DSlow(), nnfw::cker::BroadcastSelect4DSlow(), luci_interpreter_pal::BroadcastSub4DSlow(), onert_micro::execute::pal::BroadcastSub4DSlow(), nnfw::cker::optimized::BroadcastSubDispatch(), luci_interpreter_pal::BroadcastTISO4DSlow(), nnfw::cker::BroadcastTo(), tflimport::SubGraphBuilder::build(), luci_interpreter::kernels::calculateOutputShape(), luci_interpreter::kernels::calculateShapeForBroadcast(), luci_interpreter::kernels::calculateShapeForBroadcast(), nnfw::cker::train::CategoricalCrossEntropy(), luci::change_outputs(), nnfw::cker::checkOutputSize(), nnfw::cker::Comparison(), nnfw::cker::ComparisonImpl(), nnfw::cker::ComparisonWithScaling(), arm_compute::misc::shape_calculator::compute_depth_to_space_shape_ex(), arm_compute::misc::shape_calculator::compute_gather_shape_ex(), arm_compute::misc::shape_calculator::compute_onehot_shape_ex(), arm_compute::misc::shape_calculator::compute_space_to_depth_shape_ex(), luci_interpreter_pal::Concatenation(), nnfw::cker::Concatenation(), onert_micro::execute::pal::Concatenation(), nnfw::cker::ConcatenationWithScaling(), luci_interpreter::kernels::ArgMax::configure(), luci_interpreter::kernels::BatchMatMul::configure(), luci_interpreter::kernels::BatchToSpaceND::configure(), luci_interpreter::kernels::BroadcastTo::configure(), luci_interpreter::kernels::Concatenation::configure(), luci_interpreter::kernels::DepthToSpace::configure(), luci_interpreter::kernels::ExpandDims::configure(), luci_interpreter::kernels::FullyConnected::configure(), luci_interpreter::kernels::Gather::configure(), luci_interpreter::kernels::Mean::configure(), luci_interpreter::kernels::MirrorPad::configure(), luci_interpreter::kernels::OneHot::configure(), luci_interpreter::kernels::Pack::configure(), luci_interpreter::kernels::Pad::configure(), luci_interpreter::kernels::PadV2::configure(), luci_interpreter::kernels::ReduceMax::configure(), luci_interpreter::kernels::ReduceProd::configure(), luci_interpreter::kernels::Reshape::configure(), luci_interpreter::kernels::ResizeBilinear::configure(), luci_interpreter::kernels::ResizeNearestNeighbor::configure(), luci_interpreter::kernels::ShapeKernel::configure(), luci_interpreter::kernels::SpaceToBatchND::configure(), luci_interpreter::kernels::SpaceToDepth::configure(), luci_interpreter::kernels::Split::configure(), luci_interpreter::kernels::SplitV::configure(), luci_interpreter::kernels::Squeeze::configure(), luci_interpreter::kernels::StridedSlice::configure(), luci_interpreter::kernels::Sum::configure(), luci_interpreter::kernels::Tile::configure(), luci_interpreter::kernels::Transpose::configure(), luci_interpreter::kernels::UnidirectionalSequenceLSTM::configure(), luci_interpreter::kernels::Unpack::configure(), arm_compute::CLDirectTransposeConvLayer::configure(), arm_compute::CLArgMinMaxLayerEx::configure(), arm_compute::NEGatherKernelEx::configure(), arm_compute::NETransposeConvLayer::configure(), nnfw::cker::reference::Conv(), nnfw::cker::multithreaded::Conv(), nnfw::cker::reference::Conv(), nnfw::cker::reference::Conv(), nnfw::cker::optimized::Conv(), mir_onnx::convertConvTransposeV1(), mir_onnx::convertConvV1(), mir_onnx::convertShapeV1(), mir_tflite::TFLiteOpCreator::convertTransposeConv(), nnfw::cker::Cos(), onert::backend::xnnpack::ops::FullyConnectedLayer::create(), nnfw::cker::train::Depad(), tflite::reference_ops::DepthConcatenation(), luci_interpreter_pal::DepthToSpace(), nnfw::cker::DepthToSpace(), nnfw::cker::DepthwiseConv(), nnfw::cker::optimized_integer_ops::depthwise_conv::DepthwiseConvGeneral(), nnfw::cker::optimized::depthwise_conv::DepthwiseConvGeneral(), nnfw::cker::reference_integer_ops::DepthwiseConvHybridPerChannel(), nnfw::cker::optimized_integer_ops::DepthwiseConvImpl(), nnfw::cker::optimized::DepthwiseConvImpl(), nnfw::cker::optimized::DepthwiseConvImpl(), nnfw::cker::optimized_integer_ops::DepthwiseConvPerChannel(), nnfw::cker::reference_integer_ops::DepthwiseConvPerChannel(), luci_interpreter_pal::DepthwiseConvPerChannel< int8_t >(), nnfw::cker::optimized_integer_ops::DepthwiseConvWithRounding(), nnfw::cker::optimized::DepthwiseConvWithRounding(), tflite::reference_ops::Dequantize(), nnfw::cker::Dequantize(), nnfw::cker::Dequantize(), nnfw::cker::Dequantize(), nnfw::cker::optimized::DilatedIm2col(), nnfw::ruy::DilatedIm2col(), nnfw::cker::optimized::DilatedIm2col(), nnfw::ruy::DilatedIm2col(), nnfw::cker::optimized::Div(), nnfw::cker::ELU(), nnfw::cker::Erf(), luci_interpreter::kernels::lstm::EvalFloat(), luci_interpreter::kernels::evalTISOInplaceKernel(), luci_interpreter::kernels::evalTISOKernel(), luci_interpreter::execute_kernel_CircleAdd(), luci_interpreter::execute_kernel_CircleDiv(), luci_interpreter::execute_kernel_CircleFloorDiv(), luci_interpreter::execute_kernel_CircleFloorMod(), luci_interpreter::execute_kernel_CircleMaximum(), luci_interpreter::execute_kernel_CircleMinimum(), luci_interpreter::execute_kernel_CircleMul(), luci_interpreter::execute_kernel_CircleSub(), nnfw::cker::Exp(), tflite::reference_ops::FakeQuant(), nnfw::cker::Fill(), luci_interpreter_pal::Floor(), nnfw::cker::Floor(), nnfw::cker::FloorDivBroadcast(), nnfw::cker::FloorModBroadcast(), ConcatSpec::forward(), luci_interpreter_pal::FullyConnected(), luci_interpreter_pal::FullyConnected(), nnfw::ruy::FullyConnected(), nnfw::cker::FullyConnected(), luci_interpreter_pal::FullyConnected(), luci_interpreter_pal::FullyConnected(), luci_interpreter_pal::FullyConnected< int8_t >(), luci_interpreter_pal::FullyConnected< int8_t >(), nnfw::cker::FullyConnectedHybrid(), nnfw::cker::FullyConnectedSparseWeight16x1(), nnfw::cker::FullyConnectedSparseWeightRandom(), nnfw::cker::train::GradientDescent(), nnfw::cker::HowManyConvThreads(), nnfw::cker::optimized_integer_ops::HowManyConvThreads(), nnfw::cker::reference::HybridConvPerChannel(), nnfw::cker::optimized::Im2col(), nnfw::ruy::Im2col(), luci::infer_output_shape(), onert::shape_inference::inferBatchMatMulShape(), mir::ops::SqueezeOp::inferOutputTypes(), nnfw::cker::InstanceNorm(), luci_interpreter_pal::L2Normalization(), nnfw::cker::L2NormalizeFloat32(), nnfw::cker::L2NormalizeQuant8(), luci_interpreter_pal::L2Pool(), nnfw::cker::LeakyReLU(), tflite::reference_ops::LocalResponseNormalization(), nnfw::cker::Log(), nnfw::cker::LogicalAndBroadcast(), nnfw::cker::LogicalNot(), nnfw::cker::LogicalOrBroadcast(), nnfw::cker::Logistic(), luci_interpreter_pal::LogSoftmax(), nnfw::cker::LogSoftmax(), nnfw::cker::LogSoftmax(), main(), nnfw::cker::MatMulBCast::MatMulBCast(), nnfw::cker::MatrixBandPart(), tflite::reference_ops::Maximum(), tflite::reference_ops::Maximum(), nnfw::cker::MaximumMinimumBroadcast4DSlow(), luci_interpreter_pal::MaxPool(), luci_interpreter_pal::MaxPool(), nnfw::cker::train::MaxPool2D(), nnfw::cker::MaxPool< float >(), nnfw::cker::MaxPool< uint8_t >(), luci_interpreter_pal::Mean(), nnfw::cker::Mean(), nnfw::cker::MeanAxis1And2(), nnfw::cker::MeanQ8Asymm(), tflite::reference_ops::Minimum(), tflite::reference_ops::Minimum(), nnfw::cker::train::MSE(), tflite::reference_ops::Mul(), tflite::reference_ops::Mul(), nnfw::cker::optimized::Mul(), nnfw::cker::optimized::Mul(), luci_interpreter_pal::Mul(), nnfw::cker::Neg(), luci_interpreter_pal::Negate(), nnfw::cker::Conv::operator()(), nnfw::ruy::Conv::operator()(), nnfw::cker::Conv::operator()(), nnfw::cker::Conv::operator()(), nnfw::cker::Conv::operator()(), nnfw::cker::functor::BroadcastTo< Device, T >::operator()(), nnfw::cker::BatchMatMul::operator()(), nnfw::cker::FusedBatchNorm::operator()(), nnfw::cker::Einsum::operator()(), tflite::reference_ops::Pack(), nnfw::cker::Pack(), tflite::reference_ops::PackWithScaling(), nnfw::cker::Pad(), luci_interpreter_pal::Pad(), tflite::reference_ops::Pow(), nnfw::cker::powImpl(), nnfw::ruy::Conv::prepare(), nnfw::cker::ReduceMean::PrepareforReduce(), nnfw::cker::Conv::prepareQ8uPerTensor(), nnfw::cker::Quantize(), nnfw::cker::Quantize(), nnfw::cker::Quantize(), nnfw::cker::Quantize(), nnfw::cker::Reduce::QuantizedMeanOrSum(), tflite::reference_ops::RankOneSelect(), nnfw::cker::RankOneSelect(), nnfw::cker::Reduce::ReduceGeneric(), nnfw::cker::ReduceMean::ReduceOp(), nnfw::cker::ReduceMean::ReduceOp(), tflite::reference_ops::Relu(), nnfw::cker::ReLU(), tflite::reference_ops::Relu1(), tflite::reference_ops::Relu6(), nnfw::cker::train::ReLU6Grad(), nnfw::cker::train::ReLUGrad(), tflite::reference_ops::ReluX(), tflite::reference_ops::ReluX(), nnfw::cker::ResizeBilinear(), nnfw::cker::ResizeBilinear(), nnfw::cker::ResizeBilinear(), nnfw::cker::ResizeBilinear2x2(), nnfw::cker::ResizeBilinearKernel2x2(), luci_interpreter_pal::ResizeNearestNeighbor(), nnfw::cker::Round(), nnfw::cker::Rsqrt(), onert::compiler::train::pass::LossInsertionPass::run(), mir_interpreter::AvgPool2DImpl< uint8_t >::run(), mir_interpreter::AvgPool2DImpl< T >::run(), mir_interpreter::MaxPool2DImpl< uint8_t >::run(), mir_interpreter::TransposeImpl< T >::run(), mir_interpreter::MaxPool2DImpl< T >::run(), mir_interpreter::ReduceMeanImpl< T >::run(), mir_interpreter::ConcatImpl< T >::run(), mir_interpreter::ConcatImpl< uint8_t >::run(), mir_interpreter::Conv2DImpl< T >::run(), mir_interpreter::DeConv2DImpl< T >::run(), tflite::reference_ops::ScatterNd(), tflite::reference_ops::SegmentSum(), luci_interpreter_pal::Select(), tflite::reference_ops::Select(), nnfw::cker::Select(), nnkit::support::moco::tf::Backend::setInputOutputFromGraph(), nnfw::cker::Sin(), tflite::reference_ops::Slice(), tflite::reference_ops::Slice(), nnfw::cker::reference::Softmax(), nnfw::cker::Softmax(), nnfw::cker::Softmax(), luci_interpreter_pal::Softmax< int8_t >(), nnfw::cker::train::SoftMaxGrad(), luci_interpreter_pal::SpaceToBatchND(), nnfw::cker::SpaceToBatchND(), luci_interpreter_pal::SpaceToDepth(), nnfw::cker::SpaceToDepth(), tflite::reference_ops::SparseToDense(), nnfw::cker::Split(), nnfw::cker::SqDiff(), nnfw::cker::SqDiffImpl(), nnfw::cker::Sqrt(), nnfw::cker::Square(), nnfw::cker::StatelessRandomUniform(), nnfw::cker::StridedSlice(), nnfw::cker::optimized::Sub(), tflite::reference_ops::Sub16(), nnfw::cker::Tanh(), TEST(), nnfw::cker::Transpose2D(), luci_interpreter_pal::TransposeConv(), nnfw::cker::TransposeConv(), nnfw::cker::TransposeImpl(), nnfw::cker::reference::TransposeImpl(), tflite::reference_ops::Unpack(), nnfw::cker::Unpack(), arm_compute::NEGatherKernelEx::validate(), arm_compute::NETransposeConvLayer::validate(), arm_compute::CLDirectTransposeConvLayer::validate(), enco::validate_output_shape(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), and onert::compiler::pass::PermutationOperationPass::visit().
+Referenced by nnfw::cker::Abs(), nnfw::cker::optimized::Add(), nnfw::cker::optimized::Add(), tflite::reference_ops::ArgMax(), tflite::reference_ops::ArgMax(), nnfw::cker::ArgMinMax(), luci_interpreter_pal::AveragePool(), luci_interpreter_pal::AveragePool(), nnfw::cker::AveragePool16(), nnfw::cker::AveragePool32(), nnfw::cker::AveragePool< float >(), nnfw::cker::AveragePool< int8_t >(), luci_interpreter_pal::AveragePool< int8_t >(), nnfw::cker::AveragePool< uint8_t >(), luci_interpreter_pal::BatchMatMul(), onert::backend::cpu::ops::BatchMatMulLayer::batchMatMulFloat32(), luci_interpreter_pal::BatchToSpaceND(), nnfw::cker::BatchToSpaceND(), nnfw::cker::reference::BinaryArithmeticOp(), nnfw::cker::BinaryArithmeticOp(), nnfw::cker::reference::BinaryArithmeticOp(), nnfw::cker::BinaryArithmeticOp(), nnfw::cker::reference::BinaryArithmeticOp(), moco::broadcast_shape(), luci_interpreter_pal::BroadcastAdd4DSlow(), onert_micro::execute::pal::BroadcastAdd4DSlow(), nnfw::cker::optimized::BroadcastAddDispatch(), nnfw::cker::optimized::BroadcastAddDispatch(), luci_interpreter_pal::BroadcastArithmeticOp4DSlow(), onert_micro::execute::pal::BroadcastArithmeticOp4DSlow(), nnfw::cker::BroadcastBinaryArithmeticOp(), nnfw::cker::BroadcastBinaryArithmeticOp(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), nnfw::cker::reference::BroadcastBinaryArithmeticOpSlow(), luci_interpreter_pal::BroadcastBinaryOp4DSlow(), nnfw::cker::BroadcastComparison4DSlow(), nnfw::cker::BroadcastComparison4DSlowImpl(), nnfw::cker::BroadcastComparison4DSlowWithScaling(), luci_interpreter_pal::BroadcastDiv4DSlow(), nnfw::cker::optimized::BroadcastDivDispatch(), luci_interpreter_pal::BroadcastFloorDiv4DSlow(), luci_interpreter_pal::BroadcastFloorMod4DSlow(), luci_interpreter_pal::BroadcastMaximum4DSlow(), luci_interpreter_pal::BroadcastMinimum4DSlow(), luci_interpreter_pal::BroadcastMul4DSlow(), onert_micro::execute::pal::BroadcastMul4DSlow(), nnfw::cker::optimized::BroadcastMulDispatch(), nnfw::cker::optimized::BroadcastMulDispatch(), tflite::reference_ops::BroadcastPow4DSlow(), luci_interpreter_pal::BroadcastPrelu4DSlowFloat(), tflite::reference_ops::BroadcastSelect4DSlow(), nnfw::cker::BroadcastSelect4DSlow(), luci_interpreter_pal::BroadcastSub4DSlow(), onert_micro::execute::pal::BroadcastSub4DSlow(), nnfw::cker::optimized::BroadcastSubDispatch(), luci_interpreter_pal::BroadcastTISO4DSlow(), nnfw::cker::BroadcastTo(), tflimport::SubGraphBuilder::build(), luci_interpreter::kernels::calculateOutputShape(), luci_interpreter::kernels::calculateShapeForBroadcast(), luci_interpreter::kernels::calculateShapeForBroadcast(), nnfw::cker::train::CategoricalCrossEntropy(), luci::change_outputs(), nnfw::cker::checkOutputSize(), nnfw::cker::Comparison(), nnfw::cker::ComparisonImpl(), nnfw::cker::ComparisonWithScaling(), arm_compute::misc::shape_calculator::compute_depth_to_space_shape_ex(), arm_compute::misc::shape_calculator::compute_gather_shape_ex(), arm_compute::misc::shape_calculator::compute_onehot_shape_ex(), arm_compute::misc::shape_calculator::compute_space_to_depth_shape_ex(), luci_interpreter_pal::Concatenation(), nnfw::cker::Concatenation(), onert_micro::execute::pal::Concatenation(), nnfw::cker::ConcatenationWithScaling(), luci_interpreter::kernels::ArgMax::configure(), luci_interpreter::kernels::BatchMatMul::configure(), luci_interpreter::kernels::BatchToSpaceND::configure(), luci_interpreter::kernels::BroadcastTo::configure(), luci_interpreter::kernels::Concatenation::configure(), luci_interpreter::kernels::DepthToSpace::configure(), luci_interpreter::kernels::ExpandDims::configure(), luci_interpreter::kernels::FullyConnected::configure(), luci_interpreter::kernels::Gather::configure(), luci_interpreter::kernels::Mean::configure(), luci_interpreter::kernels::MirrorPad::configure(), luci_interpreter::kernels::OneHot::configure(), luci_interpreter::kernels::Pack::configure(), luci_interpreter::kernels::Pad::configure(), luci_interpreter::kernels::PadV2::configure(), luci_interpreter::kernels::ReduceMax::configure(), luci_interpreter::kernels::ReduceProd::configure(), luci_interpreter::kernels::Reshape::configure(), luci_interpreter::kernels::ResizeBilinear::configure(), luci_interpreter::kernels::ResizeNearestNeighbor::configure(), luci_interpreter::kernels::ShapeKernel::configure(), luci_interpreter::kernels::SpaceToBatchND::configure(), luci_interpreter::kernels::SpaceToDepth::configure(), luci_interpreter::kernels::Split::configure(), luci_interpreter::kernels::SplitV::configure(), luci_interpreter::kernels::Squeeze::configure(), luci_interpreter::kernels::StridedSlice::configure(), luci_interpreter::kernels::Sum::configure(), luci_interpreter::kernels::Tile::configure(), luci_interpreter::kernels::Transpose::configure(), luci_interpreter::kernels::UnidirectionalSequenceLSTM::configure(), luci_interpreter::kernels::Unpack::configure(), arm_compute::CLDirectTransposeConvLayer::configure(), arm_compute::CLArgMinMaxLayerEx::configure(), arm_compute::NEGatherKernelEx::configure(), arm_compute::NETransposeConvLayer::configure(), nnfw::cker::reference::Conv(), nnfw::cker::multithreaded::Conv(), nnfw::cker::reference::Conv(), nnfw::cker::reference::Conv(), nnfw::cker::optimized::Conv(), mir_onnx::convertConvTransposeV1(), mir_onnx::convertConvV1(), mir_onnx::convertShapeV1(), mir_tflite::TFLiteOpCreator::convertTransposeConv(), nnfw::cker::Cos(), onert::backend::xnnpack::ops::FullyConnectedLayer::create(), nnfw::cker::train::Depad(), tflite::reference_ops::DepthConcatenation(), luci_interpreter_pal::DepthToSpace(), nnfw::cker::DepthToSpace(), nnfw::cker::DepthwiseConv(), nnfw::cker::optimized_integer_ops::depthwise_conv::DepthwiseConvGeneral(), nnfw::cker::optimized::depthwise_conv::DepthwiseConvGeneral(), nnfw::cker::reference_integer_ops::DepthwiseConvHybridPerChannel(), nnfw::cker::optimized_integer_ops::DepthwiseConvImpl(), nnfw::cker::optimized::DepthwiseConvImpl(), nnfw::cker::optimized::DepthwiseConvImpl(), nnfw::cker::optimized_integer_ops::DepthwiseConvPerChannel(), nnfw::cker::reference_integer_ops::DepthwiseConvPerChannel(), luci_interpreter_pal::DepthwiseConvPerChannel< int8_t >(), nnfw::cker::optimized_integer_ops::DepthwiseConvWithRounding(), nnfw::cker::optimized::DepthwiseConvWithRounding(), tflite::reference_ops::Dequantize(), nnfw::cker::Dequantize(), nnfw::cker::Dequantize(), nnfw::cker::Dequantize(), nnfw::cker::optimized::DilatedIm2col(), nnfw::ruy::DilatedIm2col(), nnfw::cker::optimized::DilatedIm2col(), nnfw::ruy::DilatedIm2col(), nnfw::cker::optimized::Div(), nnfw::cker::ELU(), nnfw::cker::Erf(), luci_interpreter::kernels::lstm::EvalFloat(), luci_interpreter::kernels::evalTISOInplaceKernel(), luci_interpreter::kernels::evalTISOKernel(), luci_interpreter::execute_kernel_CircleAdd(), luci_interpreter::execute_kernel_CircleDiv(), luci_interpreter::execute_kernel_CircleFloorDiv(), luci_interpreter::execute_kernel_CircleFloorMod(), luci_interpreter::execute_kernel_CircleMaximum(), luci_interpreter::execute_kernel_CircleMinimum(), luci_interpreter::execute_kernel_CircleMul(), luci_interpreter::execute_kernel_CircleSub(), nnfw::cker::Exp(), tflite::reference_ops::FakeQuant(), nnfw::cker::Fill(), luci_interpreter_pal::Floor(), nnfw::cker::Floor(), nnfw::cker::FloorDivBroadcast(), nnfw::cker::FloorModBroadcast(), ConcatSpec::forward(), luci_interpreter_pal::FullyConnected(), luci_interpreter_pal::FullyConnected(), nnfw::ruy::FullyConnected(), nnfw::cker::FullyConnected(), luci_interpreter_pal::FullyConnected(), luci_interpreter_pal::FullyConnected(), luci_interpreter_pal::FullyConnected< int8_t >(), luci_interpreter_pal::FullyConnected< int8_t >(), nnfw::cker::FullyConnectedHybrid(), nnfw::cker::FullyConnectedSparseWeight16x1(), nnfw::cker::FullyConnectedSparseWeightRandom(), nnfw::cker::train::GradientDescent(), nnfw::cker::HowManyConvThreads(), nnfw::cker::optimized_integer_ops::HowManyConvThreads(), nnfw::cker::reference::HybridConvPerChannel(), nnfw::cker::optimized::Im2col(), nnfw::ruy::Im2col(), luci::infer_output_shape(), onert::shape_inference::inferBatchMatMulShape(), mir::ops::SqueezeOp::inferOutputTypes(), nnfw::cker::InstanceNorm(), luci_interpreter_pal::L2Normalization(), nnfw::cker::L2NormalizeFloat32(), nnfw::cker::L2NormalizeQuant8(), luci_interpreter_pal::L2Pool(), nnfw::cker::LeakyReLU(), tflite::reference_ops::LocalResponseNormalization(), nnfw::cker::Log(), nnfw::cker::LogicalAndBroadcast(), nnfw::cker::LogicalNot(), nnfw::cker::LogicalOrBroadcast(), nnfw::cker::Logistic(), luci_interpreter_pal::LogSoftmax(), nnfw::cker::LogSoftmax(), nnfw::cker::LogSoftmax(), main(), nnfw::cker::MatMulBCast::MatMulBCast(), nnfw::cker::MatrixBandPart(), tflite::reference_ops::Maximum(), tflite::reference_ops::Maximum(), nnfw::cker::MaximumMinimumBroadcast4DSlow(), luci_interpreter_pal::MaxPool(), luci_interpreter_pal::MaxPool(), nnfw::cker::train::MaxPool2D(), nnfw::cker::MaxPool< float >(), nnfw::cker::MaxPool< uint8_t >(), luci_interpreter_pal::Mean(), nnfw::cker::Mean(), nnfw::cker::MeanAxis1And2(), nnfw::cker::MeanQ8Asymm(), tflite::reference_ops::Minimum(), tflite::reference_ops::Minimum(), nnfw::cker::train::MSE(), tflite::reference_ops::Mul(), tflite::reference_ops::Mul(), nnfw::cker::optimized::Mul(), nnfw::cker::optimized::Mul(), luci_interpreter_pal::Mul(), nnfw::cker::Neg(), luci_interpreter_pal::Negate(), nnfw::cker::Conv::operator()(), nnfw::ruy::Conv::operator()(), nnfw::cker::Conv::operator()(), nnfw::cker::Conv::operator()(), nnfw::cker::Conv::operator()(), nnfw::cker::functor::BroadcastTo< Device, T >::operator()(), nnfw::cker::BatchMatMul::operator()(), nnfw::cker::FusedBatchNorm::operator()(), nnfw::cker::Einsum::operator()(), tflite::reference_ops::Pack(), nnfw::cker::Pack(), tflite::reference_ops::PackWithScaling(), nnfw::cker::Pad(), luci_interpreter_pal::Pad(), tflite::reference_ops::Pow(), nnfw::cker::powImpl(), nnfw::ruy::Conv::prepare(), nnfw::cker::ReduceMean::PrepareforReduce(), nnfw::cker::Conv::prepareQ8uPerTensor(), nnfw::cker::Quantize(), nnfw::cker::Quantize(), nnfw::cker::Quantize(), nnfw::cker::Quantize(), nnfw::cker::Reduce::QuantizedMeanOrSum(), tflite::reference_ops::RankOneSelect(), nnfw::cker::RankOneSelect(), nnfw::cker::Reduce::ReduceGeneric(), nnfw::cker::ReduceMean::ReduceOp(), nnfw::cker::ReduceMean::ReduceOp(), tflite::reference_ops::Relu(), nnfw::cker::ReLU(), tflite::reference_ops::Relu1(), tflite::reference_ops::Relu6(), nnfw::cker::train::ReLU6Grad(), nnfw::cker::train::ReLUGrad(), tflite::reference_ops::ReluX(), tflite::reference_ops::ReluX(), nnfw::cker::ResizeBilinear(), nnfw::cker::ResizeBilinear(), nnfw::cker::ResizeBilinear(), nnfw::cker::ResizeBilinear2x2(), nnfw::cker::ResizeBilinearKernel2x2(), luci_interpreter_pal::ResizeNearestNeighbor(), nnfw::cker::Round(), nnfw::cker::Rsqrt(), onert::compiler::train::pass::LossInsertionPass::run(), mir_interpreter::AvgPool2DImpl< uint8_t >::run(), mir_interpreter::AvgPool2DImpl< T >::run(), mir_interpreter::MaxPool2DImpl< uint8_t >::run(), mir_interpreter::TransposeImpl< T >::run(), mir_interpreter::MaxPool2DImpl< T >::run(), mir_interpreter::ReduceMeanImpl< T >::run(), mir_interpreter::ConcatImpl< T >::run(), mir_interpreter::ConcatImpl< uint8_t >::run(), mir_interpreter::Conv2DImpl< T >::run(), mir_interpreter::DeConv2DImpl< T >::run(), tflite::reference_ops::ScatterNd(), tflite::reference_ops::SegmentSum(), luci_interpreter_pal::Select(), tflite::reference_ops::Select(), nnfw::cker::Select(), nnkit::support::moco::tf::Backend::setInputOutputFromGraph(), nnfw::cker::Sin(), tflite::reference_ops::Slice(), tflite::reference_ops::Slice(), nnfw::cker::reference::Softmax(), nnfw::cker::Softmax(), nnfw::cker::Softmax(), luci_interpreter_pal::Softmax< int8_t >(), nnfw::cker::train::SoftMaxGrad(), luci_interpreter_pal::SpaceToBatchND(), nnfw::cker::SpaceToBatchND(), luci_interpreter_pal::SpaceToDepth(), nnfw::cker::SpaceToDepth(), tflite::reference_ops::SparseToDense(), nnfw::cker::Split(), nnfw::cker::SqDiff(), nnfw::cker::SqDiffImpl(), nnfw::cker::Sqrt(), nnfw::cker::Square(), nnfw::cker::StatelessRandomUniform(), nnfw::cker::StridedSlice(), nnfw::cker::optimized::Sub(), tflite::reference_ops::Sub16(), nnfw::cker::Tanh(), TEST(), nnfw::cker::Transpose2D(), luci_interpreter_pal::TransposeConv(), nnfw::cker::TransposeConv(), nnfw::cker::TransposeImpl(), nnfw::cker::reference::TransposeImpl(), tflite::reference_ops::Unpack(), nnfw::cker::Unpack(), arm_compute::NEGatherKernelEx::validate(), arm_compute::NETransposeConvLayer::validate(), arm_compute::CLDirectTransposeConvLayer::validate(), enco::validate_output_shape(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::pass::PermutationOperationPass::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::ShapeValidator::visit(), onert::compiler::ShapeValidator::visit(), onert::exec::DynamicShapeInferer::visit(), onert::exec::DynamicShapeInferer::visit(), onert::compiler::ShapeValidator::visit(), and onert::compiler::pass::PermutationOperationPass::visit().
diff --git a/_partition_i_r_8cpp.html b/_partition_i_r_8cpp.html
index 670b7e882e6..99d6689048c 100644
--- a/_partition_i_r_8cpp.html
+++ b/_partition_i_r_8cpp.html
@@ -95,7 +95,7 @@
#include "PartitionIR.h"
-
#include "CircleOpCode.h"
+
#include "CircleOpCode.h"
#include "luci/Log.h"
#include <cassert>
#include <ostream>
diff --git a/_partition_i_r_8cpp_source.html b/_partition_i_r_8cpp_source.html
index 4b548deda00..2d8267fbef6 100644
--- a/_partition_i_r_8cpp_source.html
+++ b/_partition_i_r_8cpp_source.html
@@ -114,7 +114,7 @@
-
+
@@ -208,7 +208,7 @@
-
+
diff --git a/_partition_i_r_dump_8cpp.html b/_partition_i_r_dump_8cpp.html
index 7b8b95b2271..125df81a4b2 100644
--- a/_partition_i_r_dump_8cpp.html
+++ b/_partition_i_r_dump_8cpp.html
@@ -96,7 +96,7 @@
#include "PartitionIRDump.h"
-
#include "CircleOpCode.h"
+
#include "CircleOpCode.h"
#include <iostream>
Go to the source code of this file.
diff --git a/_partition_i_r_dump_8cpp_source.html b/_partition_i_r_dump_8cpp_source.html
index 2161299c6f6..a7c28240214 100644
--- a/_partition_i_r_dump_8cpp_source.html
+++ b/_partition_i_r_dump_8cpp_source.html
@@ -115,7 +115,7 @@
-
+
@@ -178,7 +178,7 @@
std::ostream & operator<<(std::ostream &os, const luci::PGroups *pgroups)
-
+
std::string opcode_name(const CircleNode *node)
void dump(std::ostream &os, const PNode *pnode)
diff --git a/_partition_p_groups_8cpp.html b/_partition_p_groups_8cpp.html
index 06f4012cda0..3dbac60a759 100644
--- a/_partition_p_groups_8cpp.html
+++ b/_partition_p_groups_8cpp.html
@@ -97,7 +97,7 @@
#include "PartitionPGroups.h"
#include "PartitionIR.h"
-
#include "CircleOpCode.h"
+
#include "CircleOpCode.h"
#include "luci/Partition.h"
#include "luci/Log.h"
#include "luci/LogHelper.h"
diff --git a/_partition_p_groups_8cpp_source.html b/_partition_p_groups_8cpp_source.html
index 55b0e0a8d90..c3baa1311e5 100644
--- a/_partition_p_groups_8cpp_source.html
+++ b/_partition_p_groups_8cpp_source.html
@@ -115,7 +115,7 @@
-
+
@@ -394,7 +394,7 @@
-
+
std::set< Node * > succs(const Node *node)
Enumerate all the successors of a given node.
diff --git a/_propagate_q_param_backward_pass_8cpp_source.html b/_propagate_q_param_backward_pass_8cpp_source.html
index 9a0d02b22e9..53ecf6a4660 100644
--- a/_propagate_q_param_backward_pass_8cpp_source.html
+++ b/_propagate_q_param_backward_pass_8cpp_source.html
@@ -582,7 +582,7 @@
void propagate_pad_v2_quantparam(luci::CirclePadV2 *pad_v2)
void propagate_concat_quantparam(luci::CircleConcatenation *concat)
-
+
void quant_const(luci::CircleConst *node, loco::DataType quant_type)
luci::CircleConst * clone(luci::CircleConst *node)
Return cloned object of CircleConst node.
bool is_quantized(const CircleNode *node)
diff --git a/_q_implant_8cpp_source.html b/_q_implant_8cpp_source.html
index ac0c3171485..02954f9e443 100644
--- a/_q_implant_8cpp_source.html
+++ b/_q_implant_8cpp_source.html
@@ -445,7 +445,7 @@
std::set< loco::Node * > active_nodes(const std::vector< loco::Node * > &roots)
Enumerate all the nodes required to compute "roots".
std::vector< Node * > output_nodes(Graph *)
DataType
"scalar" value type
-
+
CircleQuantParam * quantparam(void) const
diff --git a/_quantization_utils_8cpp_source.html b/_quantization_utils_8cpp_source.html
index 63df3a3837b..ecf6b5f5cca 100644
--- a/_quantization_utils_8cpp_source.html
+++ b/_quantization_utils_8cpp_source.html
@@ -685,7 +685,7 @@
void asymmetric_wquant_with_minmax_per_layer(CircleConst *node, float min, float max, float &scaling_factor, int64_t &zp, float &nudged_min, float &nudged_max)
-
+
ActivationQType activation_qtype(const CircleNode *node)
void quant_const(luci::CircleConst *node, loco::DataType quant_type)
bool get_channel_dim_index(CircleConst *node, loco::TensorShape &dimension, int32_t &channel_dim_index)
diff --git a/_safe_main_8cpp.html b/_safe_main_8cpp.html
index 4206f3a732a..c9395a9d916 100644
--- a/_safe_main_8cpp.html
+++ b/_safe_main_8cpp.html
@@ -320,7 +320,7 @@
diff --git a/_safe_main_8cpp_source.html b/_safe_main_8cpp_source.html
index a355d67652c..9100574231b 100644
--- a/_safe_main_8cpp_source.html
+++ b/_safe_main_8cpp_source.html
@@ -119,7 +119,7 @@
20int entry(
int argc,
char **argv);
-
23int main(
int argc,
char **argv)
+
23int main(
int argc,
char **argv)
@@ -134,7 +134,7 @@
-
37int main(
int argc,
char **argv)
+
37int main(
int argc,
char **argv)
@@ -143,7 +143,7 @@
int entry(int argc, char **argv)
Dump IR for given arguments.
-
+
diff --git a/_shape_inference_rule_8h_source.html b/_shape_inference_rule_8h_source.html
index ac81c720aa0..45f39532e77 100644
--- a/_shape_inference_rule_8h_source.html
+++ b/_shape_inference_rule_8h_source.html
@@ -177,7 +177,7 @@
-
+
@@ -192,7 +192,7 @@
-std::vector< float > infer()
+std::vector< float > infer()
virtual ~Context()=default
virtual bool known(const Node *node) const =0
diff --git a/_shape_validator_8cc_source.html b/_shape_validator_8cc_source.html
index c8b17f98c2f..d3195cc5d49 100644
--- a/_shape_validator_8cc_source.html
+++ b/_shape_validator_8cc_source.html
@@ -227,7 +227,7 @@
120 const auto weight_cluster_index{
-
+
124 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 2);
125 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 2);
@@ -242,7 +242,7 @@
-
+ 137 OP_REQUIRES(!operands.exist(bias_index) || operands.at(bias_index).shape().rank() == 1);
@@ -274,995 +274,1037 @@
-
+
-
-
+
167 const auto &operands = _graph.
operands();
+
+
169 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
174 OP_REQUIRES(operands.at(bias_index).shape().rank() == 1);
+
-
-
-
-
-
172 const auto &operands = _graph.
operands();
-
-
174 if (operands.at(output_index).info().isDynamic())
-
-
-
-
179 OP_REQUIRES(operands.at(output_index).shape().rank() == operands.at(input_index).shape().rank());
+
-
+
184 const auto &operands = _graph.
operands();
186 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
-
193 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
-
194 OP_REQUIRES(operands.at(ifm_index).shape() == operands.at(ofm_index).shape());
-
195 OP_REQUIRES(operands.at(gamma_index).shape().rank() == 1);
-
196 OP_REQUIRES(operands.at(beta_index).shape().rank() == 1);
-
+
+
+
191 OP_REQUIRES(!operands.exist(bias_index) || operands.at(bias_index).shape().rank() == 1);
+
+
+
+
+
+
+
196 const auto &operands = _graph.
operands();
+
+
198 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
203 OP_REQUIRES(!operands.exist(bias_index) || operands.at(bias_index).shape().rank() == 1);
+
-
-
-
-
-
201 const auto &operands = _graph.
operands();
-
-
203 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
208 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
-
+
+
+
+
208 const auto &operands = _graph.
operands();
+
+
210 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
215 OP_REQUIRES(operands.at(output_index).shape().rank() == operands.at(input_index).shape().rank());
+
-
-
-
-
-
213 const auto &operands = _graph.
operands();
-
-
215 if (operands.at(output_index).info().isDynamic())
-
-
-
-
220 OP_REQUIRES(operands.at(output_index).shape().rank() == operands.at(input_index).shape().rank());
-
+
+
+
+
220 const auto &operands = _graph.
operands();
+
+
222 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
+
+
229 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
+
230 OP_REQUIRES(operands.at(ifm_index).shape() == operands.at(ofm_index).shape());
+
231 OP_REQUIRES(operands.at(gamma_index).shape().rank() == 1);
+
232 OP_REQUIRES(operands.at(beta_index).shape().rank() == 1);
+
+
+
+
+
+
+
237 const auto &operands = _graph.
operands();
+
+
239 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
244 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
+
-
-
-
-
-
225 const auto &operands = _graph.
operands();
-
-
227 if (operands.at(output_index).info().isDynamic())
-
-
-
-
231 const auto &input_shape = operands.at(input_index).shape();
-
232 const auto &
output_shape = operands.at(output_index).shape();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
248 if (input_shape.rank() == 4 && input_shape.rank() !=
output_shape.rank())
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
249 const auto &operands = _graph.
operands();
+
+
251 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
256 OP_REQUIRES(operands.at(output_index).shape().rank() == operands.at(input_index).shape().rank());
+
+
+
+
+
+
261 const auto &operands = _graph.
operands();
+
+
263 if (operands.at(output_index).info().isDynamic())
+
+
+
+
267 const auto &input_shape = operands.at(input_index).shape();
+
268 const auto &
output_shape = operands.at(output_index).shape();
-
-
-
-
272 const auto &operands = _graph.
operands();
-
-
274 if (operands.at(output_index).info().isDynamic())
-
-
-
-
-
-
280 const auto &
output_shape = operands.at(output_index).shape();
-
281 const auto &input_shape = operands.at(input_index).shape();
-
-
283 OP_REQUIRES(operands.at(perm_index).shape().num_elements() == 0 ||
-
284 input_shape.rank() ==
-
285 static_cast<int>(operands.at(perm_index).shape().num_elements()));
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
284 if (input_shape.rank() == 4 && input_shape.rank() !=
output_shape.rank())
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
293 const auto &operands = _graph.
operands();
-
-
295 if (operands.at(output_index).info().isDynamic())
-
-
-
298 const auto hidden_state_out_index{
-
-
-
-
-
303 const auto recurrent_weights_index{
-
-
-
-
-
308 const auto batch_size = operands.at(output_index).shape().dim(0);
-
309 const auto num_units = operands.at(output_index).shape().dim(1);
-
-
311 OP_REQUIRES(operands.at(output_index).shape().rank() == 2 &&
-
312 operands.at(hidden_state_out_index).shape().rank() == 2 &&
-
313 operands.at(input_index).shape().rank() == 2 &&
-
314 operands.at(weights_index).shape().rank() == 2 &&
-
315 operands.at(recurrent_weights_index).shape().rank() == 2 &&
-
316 operands.at(hidden_state_in_index).shape().rank() == 2);
-
317 OP_REQUIRES(operands.at(bias_index).shape().rank() == 1);
+
+
+
+
+
308 const auto &operands = _graph.
operands();
+
+
310 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
+
316 const auto &
output_shape = operands.at(output_index).shape();
+
317 const auto &input_shape = operands.at(input_index).shape();
-
319 OP_REQUIRES(batch_size == operands.at(input_index).shape().dim(0) &&
-
320 batch_size == operands.at(hidden_state_in_index).shape().dim(0) &&
-
321 batch_size == operands.at(hidden_state_out_index).shape().dim(0));
-
322 OP_REQUIRES(operands.at(input_index).shape().dim(1) == operands.at(weights_index).shape().dim(1));
-
-
324 OP_REQUIRES(num_units == operands.at(weights_index).shape().dim(0) &&
-
325 num_units == operands.at(recurrent_weights_index).shape().dim(0) &&
-
326 num_units == operands.at(bias_index).shape().dim(0));
-
327 OP_REQUIRES(num_units == operands.at(output_index).shape().dim(1) &&
-
328 num_units == operands.at(recurrent_weights_index).shape().dim(1) &&
-
329 num_units == operands.at(hidden_state_in_index).shape().dim(1) &&
-
330 num_units == operands.at(hidden_state_out_index).shape().dim(1));
-
+
319 OP_REQUIRES(operands.at(perm_index).shape().num_elements() == 0 ||
+
320 input_shape.rank() ==
+
321 static_cast<int>(operands.at(perm_index).shape().num_elements()));
+
+
-
-
-
-
-
335 const auto &operands = _graph.
operands();
-
-
337 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
341 const auto block_size_index{
-
-
-
-
345 const auto frontend_layout = _graph.
layout();
-
346 const auto input_shape = operands.at(ifm_index).shape().asFeature(frontend_layout);
-
347 const auto output_shape = operands.at(ofm_index).shape().asFeature(frontend_layout);
-
-
-
350 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
-
351 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 4);
-
352 OP_REQUIRES(operands.at(block_size_index).shape().rank() == 1);
-
353 OP_REQUIRES(operands.at(paddings_index).shape().rank() == 2);
+
+
+
+
+
+
+
329 const auto &operands = _graph.
operands();
+
+
331 if (operands.at(output_index).info().isDynamic())
+
+
+
334 const auto hidden_state_out_index{
+
+
+
+
+
339 const auto recurrent_weights_index{
+
+
+
+
+
344 const auto batch_size = operands.at(output_index).shape().dim(0);
+
345 const auto num_units = operands.at(output_index).shape().dim(1);
+
+
347 OP_REQUIRES(operands.at(output_index).shape().rank() == 2 &&
+
348 operands.at(hidden_state_out_index).shape().rank() == 2 &&
+
349 operands.at(input_index).shape().rank() == 2 &&
+
350 operands.at(weights_index).shape().rank() == 2 &&
+
351 operands.at(recurrent_weights_index).shape().rank() == 2 &&
+
352 operands.at(hidden_state_in_index).shape().rank() == 2);
+
353 OP_REQUIRES(operands.at(bias_index).shape().rank() == 1);
-
355 OP_REQUIRES(operands.at(block_size_index).shape().dim(0) == 2);
-
356 OP_REQUIRES(operands.at(paddings_index).shape().dim(0) == 2);
-
357 OP_REQUIRES(operands.at(paddings_index).shape().dim(1) == 2);
-
-
-
+
355 OP_REQUIRES(batch_size == operands.at(input_index).shape().dim(0) &&
+
356 batch_size == operands.at(hidden_state_in_index).shape().dim(0) &&
+
357 batch_size == operands.at(hidden_state_out_index).shape().dim(0));
+
358 OP_REQUIRES(operands.at(input_index).shape().dim(1) == operands.at(weights_index).shape().dim(1));
+
+
360 OP_REQUIRES(num_units == operands.at(weights_index).shape().dim(0) &&
+
361 num_units == operands.at(recurrent_weights_index).shape().dim(0) &&
+
362 num_units == operands.at(bias_index).shape().dim(0));
+
363 OP_REQUIRES(num_units == operands.at(output_index).shape().dim(1) &&
+
364 num_units == operands.at(recurrent_weights_index).shape().dim(1) &&
+
365 num_units == operands.at(hidden_state_in_index).shape().dim(1) &&
+
366 num_units == operands.at(hidden_state_out_index).shape().dim(1));
+
-
-
-
-
-
364 const auto &operands = _graph.
operands();
-
-
366 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
371 const auto frontend_layout = _graph.
layout();
-
372 const auto input_shape = operands.at(ifm_index).shape().asFeature(frontend_layout);
-
373 const auto output_shape = operands.at(ofm_index).shape().asFeature(frontend_layout);
-
+
+
+
+
371 const auto &operands = _graph.
operands();
+
+
373 if (operands.at(ofm_index).info().isDynamic())
+
-
-
377 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
-
378 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 4);
-
379 OP_REQUIRES((input_shape.H % block_size == 0) && (input_shape.W % block_size == 0));
-
-
-
-
-
-
-
-
+
+
377 const auto block_size_index{
+
+
+
+
381 const auto frontend_layout = _graph.
layout();
+
382 const auto input_shape = operands.at(ifm_index).shape().asFeature(frontend_layout);
+
383 const auto output_shape = operands.at(ofm_index).shape().asFeature(frontend_layout);
+
+
+
386 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
+
387 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 4);
+
388 OP_REQUIRES(operands.at(block_size_index).shape().rank() == 1);
+
389 OP_REQUIRES(operands.at(paddings_index).shape().rank() == 2);
-
-
-
-
393 const auto &operands = _graph.
operands();
-
-
-
-
397 if (operands.at(output_index).info().isDynamic())
-
-
-
400 OP_REQUIRES(operands.at(output_index).shape() == operands.at(input_index).shape());
-
+
391 OP_REQUIRES(operands.at(block_size_index).shape().dim(0) == 2);
+
392 OP_REQUIRES(operands.at(paddings_index).shape().dim(0) == 2);
+
393 OP_REQUIRES(operands.at(paddings_index).shape().dim(1) == 2);
+
+
+
+
+
+
+
+
+
400 const auto &operands = _graph.
operands();
+
+
402 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
407 const auto frontend_layout = _graph.
layout();
+
408 const auto input_shape = operands.at(ifm_index).shape().asFeature(frontend_layout);
+
409 const auto output_shape = operands.at(ofm_index).shape().asFeature(frontend_layout);
+
+
+
+
413 OP_REQUIRES(operands.at(ifm_index).shape().rank() == 4);
+
414 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 4);
+
415 OP_REQUIRES((input_shape.H % block_size == 0) && (input_shape.W % block_size == 0));
+
+
+
-
-
-
-
-
405 const auto &operands = _graph.
operands();
-
-
-
-
-
410 const auto &output_obj = operands.at(output_index);
-
411 const auto &lookups_obj = operands.at(lookups_index);
-
412 const auto &values_obj = operands.at(values_index);
-
-
-
-
-
417 if (operands.at(output_index).info().isDynamic())
-
-
-
421 const auto &lookups_shape = lookups_obj.shape();
-
422 const auto &values_shape = values_obj.shape();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
440 const auto &operands = _graph.
operands();
-
-
-
443 if (operands.at(axis_index).info().isDynamic())
-
-
445 OP_REQUIRES(operands.at(axis_index).shape().rank() <= 1);
-
+
+
+
+
+
429 const auto &operands = _graph.
operands();
+
+
+
+
433 if (operands.at(output_index).info().isDynamic())
+
+
+
436 OP_REQUIRES(operands.at(output_index).shape() == operands.at(input_index).shape());
+
-
-
-
-
-
450 const auto &operands = _graph.
operands();
-
-
-
-
+
+
+
+
+
441 const auto &operands = _graph.
operands();
+
+
+
+
+
446 const auto &output_obj = operands.at(output_index);
+
447 const auto &lookups_obj = operands.at(lookups_index);
+
448 const auto &values_obj = operands.at(values_index);
+
+
+
+
+
453 if (operands.at(output_index).info().isDynamic())
+
-
456 const auto &output_obj = operands.at(output_index);
-
457 const auto &lookups_obj = operands.at(lookups_index);
-
458 const auto &keys_obj = operands.at(keys_index);
-
459 const auto &values_obj = operands.at(values_index);
-
-
461 if (operands.at(output_index).info().isDynamic())
-
-
-
-
465 const auto &lookups_shape = lookups_obj.shape();
-
466 const auto &keys_shape = keys_obj.shape();
-
467 const auto &values_shape = values_obj.shape();
-
-
-
-
-
472 OP_REQUIRES(values_shape.dim(0) == keys_shape.dim(0));
-
-
+
+
457 const auto &lookups_shape = lookups_obj.shape();
+
458 const auto &values_shape = values_obj.shape();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
479 const auto &operands = _graph.
operands();
-
-
-
482 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
-
-
-
489 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 4);
-
490 OP_REQUIRES(operands.at(ofm_index).shape().rank() == operands.at(ifm_index).shape().rank());
-
491 OP_REQUIRES(operands.at(ofm_index).shape().rank() == operands.at(ker_index).shape().rank());
-
-
493 const auto frontend_layout = _graph.
layout();
-
494 const auto ofm_shape = operands.at(ofm_index).shape().asFeature(frontend_layout);
-
495 const auto ifm_shape = operands.at(ifm_index).shape().asFeature(frontend_layout);
-
-
-
-
-
-
-
502 const auto ker_shape = operands.at(ker_index).shape().asFeature(
ir::Layout::NHWC);
-
-
-
-
-
+
+
+
+
+
476 const auto &operands = _graph.
operands();
+
+
+
479 if (operands.at(axis_index).info().isDynamic())
+
+
481 OP_REQUIRES(operands.at(axis_index).shape().rank() <= 1);
+
-
-
-
-
-
511 const auto &operands = _graph.
operands();
-
-
513 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
-
-
519 const auto &ifm_shape = operands.at(ifm_index).shape();
-
520 const auto &indices_shape = operands.at(indices_index).shape();
-
521 const auto &ofm_shape = operands.at(ofm_index).shape();
-
-
-
-
-
+
+
+
+
+
486 const auto &operands = _graph.
operands();
+
+
+
+
+
+
492 const auto &output_obj = operands.at(output_index);
+
493 const auto &lookups_obj = operands.at(lookups_index);
+
494 const auto &keys_obj = operands.at(keys_index);
+
495 const auto &values_obj = operands.at(values_index);
+
+
497 if (operands.at(output_index).info().isDynamic())
+
+
+
+
501 const auto &lookups_shape = lookups_obj.shape();
+
502 const auto &keys_shape = keys_obj.shape();
+
503 const auto &values_shape = values_obj.shape();
+
+
+
+
+
508 OP_REQUIRES(values_shape.dim(0) == keys_shape.dim(0));
+
+
-
-
-
-
-
530 const auto &operands = _graph.
operands();
-
-
-
-
-
535 if (operands.at(output_index).info().isDynamic())
-
-
-
+
+
+
+
+
+
515 const auto &operands = _graph.
operands();
+
+
+
518 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
+
+
525 OP_REQUIRES(operands.at(ofm_index).shape().rank() == 4);
+
526 OP_REQUIRES(operands.at(ofm_index).shape().rank() == operands.at(ifm_index).shape().rank());
+
527 OP_REQUIRES(operands.at(ofm_index).shape().rank() == operands.at(ker_index).shape().rank());
+
+
529 const auto frontend_layout = _graph.
layout();
+
530 const auto ofm_shape = operands.at(ofm_index).shape().asFeature(frontend_layout);
+
531 const auto ifm_shape = operands.at(ifm_index).shape().asFeature(frontend_layout);
+
+
+
+
+
+
+
538 const auto ker_shape = operands.at(ker_index).shape().asFeature(
ir::Layout::NHWC);
-
540 const auto frontend_layout = _graph.
layout();
-
541 const auto output_shape = operands.at(output_index).shape().asFeature(frontend_layout);
-
542 const auto input_shape = operands.at(input_index).shape().asFeature(frontend_layout);
-
-
544 OP_REQUIRES(operands.at(input_index).shape().rank() == 4);
-
545 OP_REQUIRES(operands.at(output_index).shape().rank() == 4);
-
-
-
-
-
-
551 OP_REQUIRES(input_shape.C % (block_size * block_size) == 0);
-
-
-
+
+
+
+
+
+
+
+
+
+
547 const auto &operands = _graph.
operands();
+
+
549 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
+
555 const auto &ifm_shape = operands.at(ifm_index).shape();
+
556 const auto &indices_shape = operands.at(indices_index).shape();
+
557 const auto &ofm_shape = operands.at(ofm_index).shape();
+
+
+
+
+
-
-
-
-
-
558 const auto &operands = _graph.
operands();
-
-
-
561 if (operands.at(output_index).info().isDynamic())
-
-
-
565 const auto &
output_shape = operands.at(output_index).shape();
-
566 const auto output_rank =
static_cast<int32_t
>(
output_shape.rank());
-
-
-
569 const auto &input_shape = operands.at(input1_index).shape();
-
-
571 OP_REQUIRES(axis >= -output_rank && axis < output_rank);
-
572 for (
const auto &index : node.
getInputs())
-
-
574 OP_REQUIRES(input_shape == operands.at(index).shape());
-
-
+
+
+
+
566 const auto &operands = _graph.
operands();
+
+
+
+
+
571 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
576 const auto frontend_layout = _graph.
layout();
+
577 const auto output_shape = operands.at(output_index).shape().asFeature(frontend_layout);
+
578 const auto input_shape = operands.at(input_index).shape().asFeature(frontend_layout);
+
+
580 OP_REQUIRES(operands.at(input_index).shape().rank() == 4);
+
581 OP_REQUIRES(operands.at(output_index).shape().rank() == 4);
+
+
+
+
+
+
587 OP_REQUIRES(input_shape.C % (block_size * block_size) == 0);
+
+
+
+
+
+
+
+
+
594 const auto &operands = _graph.
operands();
+
+
+
597 if (operands.at(output_index).info().isDynamic())
+
+
+
+
601 const auto &
output_shape = operands.at(output_index).shape();
+
602 const auto output_rank =
static_cast<int32_t
>(
output_shape.rank());
+
+
+
605 const auto &input_shape = operands.at(input1_index).shape();
+
+
607 OP_REQUIRES(axis >= -output_rank && axis < output_rank);
+
608 for (
const auto &index : node.
getInputs())
+
+
610 OP_REQUIRES(input_shape == operands.at(index).shape());
+
+
-
-
-
-
-
-
-
582 const auto &operands = _graph.
operands();
-
-
584 if (operands.at(output_index).info().isDynamic())
-
-
-
587 const auto scratch_buffer_index{
-
-
589 const auto output_state_out_index{
-
-
591 const auto cell_state_out_index{
-
-
-
-
595 const auto input_to_input_weights_index{
-
-
597 const auto input_to_forget_weights_index{
-
-
599 const auto input_to_cell_weights_index{
-
-
601 const auto input_to_output_weights_index{
-
-
603 const auto recurrent_to_input_weights_index{
-
-
605 const auto recurrent_to_forget_weights_index{
-
-
607 const auto recurrent_to_cell_weights_index{
-
-
609 const auto recurrent_to_output_weights_index{
-
-
611 const auto cell_to_input_weights_index{
-
-
613 const auto cell_to_forget_weights_index{
-
-
615 const auto cell_to_output_weights_index{
-
-
617 const auto input_gate_bias_index{
-
-
619 const auto forget_gate_bias_index{
-
-
-
622 const auto output_gate_bias_index{
-
-
624 const auto projection_weights_index{
-
-
626 const auto projection_bias_index{
-
-
628 const auto output_state_in_index{
-
-
-
-
632 OP_REQUIRES(operands.at(input_index).shape().rank() == operands.at(output_index).shape().rank());
-
633 for (
int i = 0; i < operands.at(input_index).shape().rank() - 1; ++i)
-
-
635 OP_REQUIRES(operands.at(input_index).shape().dim(i) ==
-
636 operands.at(output_index).shape().dim(i));
-
-
638 OP_REQUIRES((operands.at(output_index).shape().rank() == 2 ||
-
639 operands.at(output_index).shape().rank() == 3) &&
-
640 (operands.at(input_index).shape().rank() == 2 ||
-
641 operands.at(input_index).shape().rank() == 3) &&
-
642 (!operands.exist(input_to_input_weights_index) ||
-
643 operands.at(input_to_input_weights_index).shape().rank() == 2) &&
-
644 operands.at(input_to_forget_weights_index).shape().rank() == 2 &&
-
645 operands.at(input_to_cell_weights_index).shape().rank() == 2 &&
-
646 operands.at(input_to_output_weights_index).shape().rank() == 2 &&
-
647 (!operands.exist(recurrent_to_input_weights_index) ||
-
648 operands.at(recurrent_to_input_weights_index).shape().rank() == 2) &&
-
649 operands.at(recurrent_to_forget_weights_index).shape().rank() == 2 &&
-
650 operands.at(recurrent_to_cell_weights_index).shape().rank() == 2 &&
-
651 operands.at(recurrent_to_output_weights_index).shape().rank() == 2 &&
-
652 (!operands.exist(projection_weights_index) ||
-
653 operands.at(projection_weights_index).shape().rank() == 2) &&
-
654 operands.at(output_state_in_index).shape().rank() == 2 &&
-
655 operands.at(cell_state_in_index).shape().rank() == 2);
-
-
657 OP_REQUIRES((!operands.exist(cell_to_input_weights_index) ||
-
658 operands.at(cell_to_input_weights_index).shape().rank() == 1) &&
-
659 (!operands.exist(cell_to_forget_weights_index) ||
-
660 operands.at(cell_to_forget_weights_index).shape().rank() == 1) &&
-
661 (!operands.exist(cell_to_output_weights_index) ||
-
662 operands.at(cell_to_output_weights_index).shape().rank() == 1) &&
-
663 (!operands.exist(input_gate_bias_index) ||
-
664 operands.at(input_gate_bias_index).shape().rank() == 1) &&
-
665 operands.at(forget_gate_bias_index).shape().rank() == 1 &&
-
666 operands.at(cell_bias_index).shape().rank() == 1 &&
-
667 operands.at(output_gate_bias_index).shape().rank() == 1 &&
-
668 (!operands.exist(projection_bias_index) ||
-
669 operands.at(projection_bias_index).shape().rank() == 1));
-
-
-
672 OP_REQUIRES(((!operands.exist(input_to_input_weights_index) ||
-
673 (operands.at(input_to_input_weights_index).shape().dim(0) == 0 &&
-
674 operands.at(input_to_input_weights_index).shape().dim(1) == 0)) &&
-
675 (!operands.exist(recurrent_to_input_weights_index) ||
-
676 (operands.at(recurrent_to_input_weights_index).shape().dim(0) == 0 &&
-
677 operands.at(recurrent_to_input_weights_index).shape().dim(1) == 0)) &&
-
678 (!operands.exist(input_gate_bias_index) ||
-
679 operands.at(input_gate_bias_index).shape().dim(0) == 0) &&
-
680 (!operands.exist(cell_to_input_weights_index) ||
-
681 operands.at(cell_to_input_weights_index).shape().dim(0) == 0)) ||
-
682 ((operands.exist(input_to_input_weights_index) &&
-
683 (operands.at(input_to_input_weights_index).shape().dim(0) != 0 &&
-
684 operands.at(input_to_input_weights_index).shape().dim(1) != 0)) &&
-
685 (operands.exist(recurrent_to_input_weights_index) &&
-
686 (operands.at(recurrent_to_input_weights_index).shape().dim(0) != 0 &&
-
687 operands.at(recurrent_to_input_weights_index).shape().dim(1) != 0)) &&
-
688 (operands.exist(input_gate_bias_index) &&
-
689 operands.at(input_gate_bias_index).shape().dim(0) != 0)));
-
-
-
692 OP_REQUIRES(((!operands.exist(cell_to_forget_weights_index) ||
-
693 operands.at(cell_to_forget_weights_index).shape().dim(0) == 0) &&
-
694 (!operands.exist(cell_to_output_weights_index) ||
-
695 operands.at(cell_to_output_weights_index).shape().dim(0) == 0)) ||
-
696 ((operands.exist(cell_to_forget_weights_index) &&
-
697 operands.at(cell_to_forget_weights_index).shape().dim(0) != 0) &&
-
698 (operands.exist(cell_to_output_weights_index) &&
-
699 operands.at(cell_to_output_weights_index).shape().dim(0) != 0)));
-
-
701 bool has_input_to_input_weights =
-
702 operands.exist(input_to_input_weights_index) &&
-
703 (operands.at(input_to_input_weights_index).shape().dim(0) != 0 &&
-
704 operands.at(input_to_input_weights_index).shape().dim(1) != 0);
-
705 bool has_recurrent_to_input_weights =
-
706 operands.exist(recurrent_to_input_weights_index) &&
-
707 (operands.at(recurrent_to_input_weights_index).shape().dim(0) != 0 &&
-
708 operands.at(recurrent_to_input_weights_index).shape().dim(1) != 0);
-
709 bool has_input_gate_bias =
-
710 operands.exist(input_gate_bias_index) && operands.at(input_gate_bias_index).shape().dim(0) != 0;
-
711 bool has_cell_to_input_weights = operands.exist(cell_to_input_weights_index) &&
-
712 operands.at(cell_to_input_weights_index).shape().dim(0) != 0;
-
713 bool has_cell_to_forget_weights = operands.exist(cell_to_forget_weights_index) &&
-
714 operands.at(cell_to_forget_weights_index).shape().dim(0) != 0;
-
715 bool has_cell_to_output_weights = operands.exist(cell_to_output_weights_index) &&
-
716 operands.at(cell_to_output_weights_index).shape().dim(0) != 0;
-
717 bool has_projection_weights = operands.exist(projection_weights_index) &&
-
718 (operands.at(projection_weights_index).shape().dim(0) != 0 &&
-
719 operands.at(projection_weights_index).shape().dim(1) != 0);
-
720 bool has_projection_bias =
-
721 operands.exist(projection_bias_index) && operands.at(projection_bias_index).shape().dim(0) != 0;
-
-
-
-
-
726 bool has_cifg_param = has_input_to_input_weights && has_recurrent_to_input_weights;
-
-
-
-
-
731 bool has_peephole_param = has_cell_to_forget_weights && has_cell_to_output_weights;
-
-
-
734 bool has_projection_param = has_projection_weights;
-
-
736 const auto batch_size = (operands.at(input_index).shape().rank() == 3 && node.
param().
time_major)
-
737 ? operands.at(input_index).shape().dim(1)
-
738 : operands.at(input_index).shape().dim(0);
-
739 OP_REQUIRES(batch_size == operands.at(output_state_in_index).shape().dim(0) &&
-
740 batch_size == operands.at(cell_state_in_index).shape().dim(0));
-
-
742 const auto input_size =
-
743 operands.at(input_index).shape().dim(operands.at(input_index).shape().rank() - 1);
-
744 OP_REQUIRES(input_size == operands.at(input_to_forget_weights_index).shape().dim(1) &&
-
745 input_size == operands.at(input_to_cell_weights_index).shape().dim(1) &&
-
746 input_size == operands.at(input_to_output_weights_index).shape().dim(1));
-
-
748 const auto num_units = operands.at(input_to_output_weights_index).shape().dim(0);
-
749 OP_REQUIRES(num_units == operands.at(input_to_cell_weights_index).shape().dim(0) &&
-
750 num_units == operands.at(input_to_output_weights_index).shape().dim(0) &&
-
751 num_units == operands.at(recurrent_to_forget_weights_index).shape().dim(0) &&
-
752 num_units == operands.at(recurrent_to_cell_weights_index).shape().dim(0) &&
-
753 num_units == operands.at(recurrent_to_output_weights_index).shape().dim(0) &&
-
754 num_units == operands.at(forget_gate_bias_index).shape().dim(0) &&
-
755 num_units == operands.at(cell_bias_index).shape().dim(0) &&
-
756 num_units == operands.at(output_gate_bias_index).shape().dim(0) &&
-
757 num_units == operands.at(cell_state_in_index).shape().dim(1));
+
+
+
+
+
+
+
618 const auto &operands = _graph.
operands();
+
+
620 if (operands.at(output_index).info().isDynamic())
+
+
+
623 const auto scratch_buffer_index{
+
+
625 const auto output_state_out_index{
+
+
627 const auto cell_state_out_index{
+
+
+
+
631 const auto input_to_input_weights_index{
+
+
633 const auto input_to_forget_weights_index{
+
+
635 const auto input_to_cell_weights_index{
+
+
637 const auto input_to_output_weights_index{
+
+
639 const auto recurrent_to_input_weights_index{
+
+
641 const auto recurrent_to_forget_weights_index{
+
+
643 const auto recurrent_to_cell_weights_index{
+
+
645 const auto recurrent_to_output_weights_index{
+
+
647 const auto cell_to_input_weights_index{
+
+
649 const auto cell_to_forget_weights_index{
+
+
651 const auto cell_to_output_weights_index{
+
+
653 const auto input_gate_bias_index{
+
+
655 const auto forget_gate_bias_index{
+
+
+
658 const auto output_gate_bias_index{
+
+
660 const auto projection_weights_index{
+
+
662 const auto projection_bias_index{
+
+
664 const auto output_state_in_index{
+
+
+
+
668 OP_REQUIRES(operands.at(input_index).shape().rank() == operands.at(output_index).shape().rank());
+
669 for (
int i = 0; i < operands.at(input_index).shape().rank() - 1; ++i)
+
+
671 OP_REQUIRES(operands.at(input_index).shape().dim(i) ==
+
672 operands.at(output_index).shape().dim(i));
+
+
674 OP_REQUIRES((operands.at(output_index).shape().rank() == 2 ||
+
675 operands.at(output_index).shape().rank() == 3) &&
+
676 (operands.at(input_index).shape().rank() == 2 ||
+
677 operands.at(input_index).shape().rank() == 3) &&
+
678 (!operands.exist(input_to_input_weights_index) ||
+
679 operands.at(input_to_input_weights_index).shape().rank() == 2) &&
+
680 operands.at(input_to_forget_weights_index).shape().rank() == 2 &&
+
681 operands.at(input_to_cell_weights_index).shape().rank() == 2 &&
+
682 operands.at(input_to_output_weights_index).shape().rank() == 2 &&
+
683 (!operands.exist(recurrent_to_input_weights_index) ||
+
684 operands.at(recurrent_to_input_weights_index).shape().rank() == 2) &&
+
685 operands.at(recurrent_to_forget_weights_index).shape().rank() == 2 &&
+
686 operands.at(recurrent_to_cell_weights_index).shape().rank() == 2 &&
+
687 operands.at(recurrent_to_output_weights_index).shape().rank() == 2 &&
+
688 (!operands.exist(projection_weights_index) ||
+
689 operands.at(projection_weights_index).shape().rank() == 2) &&
+
690 operands.at(output_state_in_index).shape().rank() == 2 &&
+
691 operands.at(cell_state_in_index).shape().rank() == 2);
+
+
693 OP_REQUIRES((!operands.exist(cell_to_input_weights_index) ||
+
694 operands.at(cell_to_input_weights_index).shape().rank() == 1) &&
+
695 (!operands.exist(cell_to_forget_weights_index) ||
+
696 operands.at(cell_to_forget_weights_index).shape().rank() == 1) &&
+
697 (!operands.exist(cell_to_output_weights_index) ||
+
698 operands.at(cell_to_output_weights_index).shape().rank() == 1) &&
+
699 (!operands.exist(input_gate_bias_index) ||
+
700 operands.at(input_gate_bias_index).shape().rank() == 1) &&
+
701 operands.at(forget_gate_bias_index).shape().rank() == 1 &&
+
702 operands.at(cell_bias_index).shape().rank() == 1 &&
+
703 operands.at(output_gate_bias_index).shape().rank() == 1 &&
+
704 (!operands.exist(projection_bias_index) ||
+
705 operands.at(projection_bias_index).shape().rank() == 1));
+
+
+
708 OP_REQUIRES(((!operands.exist(input_to_input_weights_index) ||
+
709 (operands.at(input_to_input_weights_index).shape().dim(0) == 0 &&
+
710 operands.at(input_to_input_weights_index).shape().dim(1) == 0)) &&
+
711 (!operands.exist(recurrent_to_input_weights_index) ||
+
712 (operands.at(recurrent_to_input_weights_index).shape().dim(0) == 0 &&
+
713 operands.at(recurrent_to_input_weights_index).shape().dim(1) == 0)) &&
+
714 (!operands.exist(input_gate_bias_index) ||
+
715 operands.at(input_gate_bias_index).shape().dim(0) == 0) &&
+
716 (!operands.exist(cell_to_input_weights_index) ||
+
717 operands.at(cell_to_input_weights_index).shape().dim(0) == 0)) ||
+
718 ((operands.exist(input_to_input_weights_index) &&
+
719 (operands.at(input_to_input_weights_index).shape().dim(0) != 0 &&
+
720 operands.at(input_to_input_weights_index).shape().dim(1) != 0)) &&
+
721 (operands.exist(recurrent_to_input_weights_index) &&
+
722 (operands.at(recurrent_to_input_weights_index).shape().dim(0) != 0 &&
+
723 operands.at(recurrent_to_input_weights_index).shape().dim(1) != 0)) &&
+
724 (operands.exist(input_gate_bias_index) &&
+
725 operands.at(input_gate_bias_index).shape().dim(0) != 0)));
+
+
+
728 OP_REQUIRES(((!operands.exist(cell_to_forget_weights_index) ||
+
729 operands.at(cell_to_forget_weights_index).shape().dim(0) == 0) &&
+
730 (!operands.exist(cell_to_output_weights_index) ||
+
731 operands.at(cell_to_output_weights_index).shape().dim(0) == 0)) ||
+
732 ((operands.exist(cell_to_forget_weights_index) &&
+
733 operands.at(cell_to_forget_weights_index).shape().dim(0) != 0) &&
+
734 (operands.exist(cell_to_output_weights_index) &&
+
735 operands.at(cell_to_output_weights_index).shape().dim(0) != 0)));
+
+
737 bool has_input_to_input_weights =
+
738 operands.exist(input_to_input_weights_index) &&
+
739 (operands.at(input_to_input_weights_index).shape().dim(0) != 0 &&
+
740 operands.at(input_to_input_weights_index).shape().dim(1) != 0);
+
741 bool has_recurrent_to_input_weights =
+
742 operands.exist(recurrent_to_input_weights_index) &&
+
743 (operands.at(recurrent_to_input_weights_index).shape().dim(0) != 0 &&
+
744 operands.at(recurrent_to_input_weights_index).shape().dim(1) != 0);
+
745 bool has_input_gate_bias =
+
746 operands.exist(input_gate_bias_index) && operands.at(input_gate_bias_index).shape().dim(0) != 0;
+
747 bool has_cell_to_input_weights = operands.exist(cell_to_input_weights_index) &&
+
748 operands.at(cell_to_input_weights_index).shape().dim(0) != 0;
+
749 bool has_cell_to_forget_weights = operands.exist(cell_to_forget_weights_index) &&
+
750 operands.at(cell_to_forget_weights_index).shape().dim(0) != 0;
+
751 bool has_cell_to_output_weights = operands.exist(cell_to_output_weights_index) &&
+
752 operands.at(cell_to_output_weights_index).shape().dim(0) != 0;
+
753 bool has_projection_weights = operands.exist(projection_weights_index) &&
+
754 (operands.at(projection_weights_index).shape().dim(0) != 0 &&
+
755 operands.at(projection_weights_index).shape().dim(1) != 0);
+
756 bool has_projection_bias =
+
757 operands.exist(projection_bias_index) && operands.at(projection_bias_index).shape().dim(0) != 0;
-
759 const auto output_size =
-
760 operands.at(output_index).shape().dim(operands.at(output_index).shape().rank() - 1);
-
761 OP_REQUIRES(output_size == operands.at(recurrent_to_forget_weights_index).shape().dim(1) &&
-
762 output_size == operands.at(recurrent_to_cell_weights_index).shape().dim(1) &&
-
763 output_size == operands.at(recurrent_to_output_weights_index).shape().dim(1) &&
-
764 output_size == operands.at(output_state_in_index).shape().dim(1));
-
-
-
-
768 OP_REQUIRES(input_size == operands.at(input_to_input_weights_index).shape().dim(1));
-
-
770 num_units == operands.at(input_to_input_weights_index).shape().dim(0) &&
-
771 num_units == operands.at(recurrent_to_input_weights_index).shape().dim(0) &&
-
772 ((operands.exist(cell_to_input_weights_index) &&
-
773 num_units == operands.at(cell_to_input_weights_index).shape().dim(0)) ||
-
774 (!operands.exist(cell_to_input_weights_index) ||
-
775 operands.at(cell_to_input_weights_index).shape().dim(0) == 0) ) &&
-
776 num_units == operands.at(input_gate_bias_index).shape().dim(0));
-
777 OP_REQUIRES(output_size == operands.at(recurrent_to_input_weights_index).shape().dim(1));
-
778 OP_REQUIRES(has_input_to_input_weights && has_recurrent_to_input_weights &&
-
779 has_input_gate_bias);
-
780 if (has_cell_to_input_weights)
-
-
-
-
-
785 if (operands.exist(scratch_buffer_index))
-
786 OP_REQUIRES(operands.at(scratch_buffer_index).shape().dim(1) == num_units * 4);
-
-
-
-
790 if (operands.exist(scratch_buffer_index))
-
791 OP_REQUIRES(operands.at(scratch_buffer_index).shape().dim(1) == num_units * 3);
-
-
-
794 if (has_peephole_param)
-
-
796 OP_REQUIRES(num_units == operands.at(cell_to_forget_weights_index).shape().dim(0) &&
-
797 num_units == operands.at(cell_to_output_weights_index).shape().dim(0) &&
-
798 (num_units == operands.at(cell_to_input_weights_index).shape().dim(0) ||
-
799 operands.at(cell_to_input_weights_index).shape().dim(0) == 0 ));
-
+
+
+
+
762 bool has_cifg_param = has_input_to_input_weights && has_recurrent_to_input_weights;
+
+
+
+
+
767 bool has_peephole_param = has_cell_to_forget_weights && has_cell_to_output_weights;
+
+
+
770 bool has_projection_param = has_projection_weights;
+
+
772 const auto batch_size = (operands.at(input_index).shape().rank() == 3 && node.
param().
time_major)
+
773 ? operands.at(input_index).shape().dim(1)
+
774 : operands.at(input_index).shape().dim(0);
+
775 OP_REQUIRES(batch_size == operands.at(output_state_in_index).shape().dim(0) &&
+
776 batch_size == operands.at(cell_state_in_index).shape().dim(0));
+
+
778 const auto input_size =
+
779 operands.at(input_index).shape().dim(operands.at(input_index).shape().rank() - 1);
+
780 OP_REQUIRES(input_size == operands.at(input_to_forget_weights_index).shape().dim(1) &&
+
781 input_size == operands.at(input_to_cell_weights_index).shape().dim(1) &&
+
782 input_size == operands.at(input_to_output_weights_index).shape().dim(1));
+
+
784 const auto num_units = operands.at(input_to_output_weights_index).shape().dim(0);
+
785 OP_REQUIRES(num_units == operands.at(input_to_cell_weights_index).shape().dim(0) &&
+
786 num_units == operands.at(input_to_output_weights_index).shape().dim(0) &&
+
787 num_units == operands.at(recurrent_to_forget_weights_index).shape().dim(0) &&
+
788 num_units == operands.at(recurrent_to_cell_weights_index).shape().dim(0) &&
+
789 num_units == operands.at(recurrent_to_output_weights_index).shape().dim(0) &&
+
790 num_units == operands.at(forget_gate_bias_index).shape().dim(0) &&
+
791 num_units == operands.at(cell_bias_index).shape().dim(0) &&
+
792 num_units == operands.at(output_gate_bias_index).shape().dim(0) &&
+
793 num_units == operands.at(cell_state_in_index).shape().dim(1));
+
+
795 const auto output_size =
+
796 operands.at(output_index).shape().dim(operands.at(output_index).shape().rank() - 1);
+
797 OP_REQUIRES(output_size == operands.at(recurrent_to_forget_weights_index).shape().dim(1) &&
+
798 output_size == operands.at(recurrent_to_cell_weights_index).shape().dim(1) &&
+
799 output_size == operands.at(recurrent_to_output_weights_index).shape().dim(1) &&
+
800 output_size == operands.at(output_state_in_index).shape().dim(1));
-
802 if (has_projection_param)
+
-
804 OP_REQUIRES(num_units == operands.at(projection_weights_index).shape().dim(1));
-
805 OP_REQUIRES(output_size == operands.at(projection_weights_index).shape().dim(0));
-
806 if (has_projection_bias)
-
-
808 OP_REQUIRES(output_size == operands.at(projection_bias_index).shape().dim(0));
-
-
-
-
812 if (operands.exist(scratch_buffer_index))
-
-
814 OP_REQUIRES(operands.at(scratch_buffer_index).shape().rank() == 2);
-
815 OP_REQUIRES(batch_size == operands.at(scratch_buffer_index).shape().dim(0));
-
-
-
818 if (operands.exist(output_state_out_index))
-
-
820 OP_REQUIRES(operands.at(output_state_out_index).shape().rank() == 2);
-
821 OP_REQUIRES(batch_size == operands.at(output_state_out_index).shape().dim(0));
-
822 OP_REQUIRES(output_size == operands.at(output_state_out_index).shape().dim(1));
+
804 OP_REQUIRES(input_size == operands.at(input_to_input_weights_index).shape().dim(1));
+
+
806 num_units == operands.at(input_to_input_weights_index).shape().dim(0) &&
+
807 num_units == operands.at(recurrent_to_input_weights_index).shape().dim(0) &&
+
808 ((operands.exist(cell_to_input_weights_index) &&
+
809 num_units == operands.at(cell_to_input_weights_index).shape().dim(0)) ||
+
810 (!operands.exist(cell_to_input_weights_index) ||
+
811 operands.at(cell_to_input_weights_index).shape().dim(0) == 0) ) &&
+
812 num_units == operands.at(input_gate_bias_index).shape().dim(0));
+
813 OP_REQUIRES(output_size == operands.at(recurrent_to_input_weights_index).shape().dim(1));
+
814 OP_REQUIRES(has_input_to_input_weights && has_recurrent_to_input_weights &&
+
815 has_input_gate_bias);
+
816 if (has_cell_to_input_weights)
+
+
+
+
+
821 if (operands.exist(scratch_buffer_index))
+
822 OP_REQUIRES(operands.at(scratch_buffer_index).shape().dim(1) == num_units * 4);
-
-
825 if (operands.exist(cell_state_out_index))
-
-
827 OP_REQUIRES(operands.at(cell_state_out_index).shape().rank() == 2);
-
828 OP_REQUIRES(batch_size == operands.at(cell_state_out_index).shape().dim(0));
-
829 OP_REQUIRES(num_units == operands.at(cell_state_out_index).shape().dim(1));
-
-
-
-
-
-
-
-
835 const auto &operands = _graph.
operands();
-
-
837 if (operands.at(ofm_index).info().isDynamic())
-
-
-
-
-
842 auto ifm_shape = operands.at(ifm_index).shape();
-
843 auto ofm_shape = operands.at(ofm_index).shape();
-
-
-
-
847 for (
auto i = 0; i < ifm_shape.rank(); i++)
-
-
-
-
-
-
-
-
-
-
855 const auto &operands = _graph.
operands();
-
-
-
858 if (operands.at(output_index).info().isDynamic())
-
+
+
+
826 if (operands.exist(scratch_buffer_index))
+
827 OP_REQUIRES(operands.at(scratch_buffer_index).shape().dim(1) == num_units * 3);
+
+
+
830 if (has_peephole_param)
+
+
832 OP_REQUIRES(num_units == operands.at(cell_to_forget_weights_index).shape().dim(0) &&
+
833 num_units == operands.at(cell_to_output_weights_index).shape().dim(0) &&
+
834 (num_units == operands.at(cell_to_input_weights_index).shape().dim(0) ||
+
835 operands.at(cell_to_input_weights_index).shape().dim(0) == 0 ));
+
+
+
838 if (has_projection_param)
+
+
840 OP_REQUIRES(num_units == operands.at(projection_weights_index).shape().dim(1));
+
841 OP_REQUIRES(output_size == operands.at(projection_weights_index).shape().dim(0));
+
842 if (has_projection_bias)
+
+
844 OP_REQUIRES(output_size == operands.at(projection_bias_index).shape().dim(0));
+
+
+
+
848 if (operands.exist(scratch_buffer_index))
+
+
850 OP_REQUIRES(operands.at(scratch_buffer_index).shape().rank() == 2);
+
851 OP_REQUIRES(batch_size == operands.at(scratch_buffer_index).shape().dim(0));
+
+
+
854 if (operands.exist(output_state_out_index))
+
+
856 OP_REQUIRES(operands.at(output_state_out_index).shape().rank() == 2);
+
857 OP_REQUIRES(batch_size == operands.at(output_state_out_index).shape().dim(0));
+
858 OP_REQUIRES(output_size == operands.at(output_state_out_index).shape().dim(1));
+
-
-
-
863 const auto &input_shape = operands.at(input_index).shape();
-
864 const auto input_rank =
static_cast<int32_t
>(input_shape.rank());
-
-
866 OP_REQUIRES(axis >= -input_rank && axis < input_rank);
+
861 if (operands.exist(cell_state_out_index))
+
+
863 OP_REQUIRES(operands.at(cell_state_out_index).shape().rank() == 2);
+
864 OP_REQUIRES(batch_size == operands.at(cell_state_out_index).shape().dim(0));
+
865 OP_REQUIRES(num_units == operands.at(cell_state_out_index).shape().dim(1));
+
-
+
871 const auto &operands = _graph.
operands();
-
-
873 OP_REQUIRES(operands.at(pad_index).typeInfo().type() == ir::DataType::INT32);
-
-
-
876 if (operands.at(output_index).info().isDynamic())
-
-
-
+
+
873 if (operands.at(ofm_index).info().isDynamic())
+
+
+
+
+
878 auto ifm_shape = operands.at(ifm_index).shape();
+
879 auto ofm_shape = operands.at(ofm_index).shape();
-
881 const auto &pad_shape = operands.at(pad_index).shape();
-
882 const auto input_rank =
static_cast<int32_t
>(operands.at(input_index).shape().rank());
-
-
-
-
-
887 OP_REQUIRES(operands.at(input_index).shape().rank() == operands.at(output_index).shape().rank());
-
+
+
+
883 for (
auto i = 0; i < ifm_shape.rank(); i++)
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
891 const auto &operands = _graph.
operands();
+
+
+
894 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
899 const auto &input_shape = operands.at(input_index).shape();
+
900 const auto input_rank =
static_cast<int32_t
>(input_shape.rank());
+
+
902 OP_REQUIRES(axis >= -input_rank && axis < input_rank);
+
-
-
-
-
-
897 const auto &operands = _graph.
operands();
-
-
-
-
901 if (operands.at(output_index).info().isDynamic())
-
-
-
904 OP_REQUIRES(operands.at(input_index).shape().rank() <= 4);
-
-
-
-
-
-
-
909 const auto &operands = _graph.
operands();
-
-
911 if (operands.at(output_index).info().isDynamic())
-
-
-
-
+
+
+
+
+
907 const auto &operands = _graph.
operands();
+
+
909 OP_REQUIRES(operands.at(pad_index).typeInfo().type() == ir::DataType::INT32);
+
+
+
912 if (operands.at(output_index).info().isDynamic())
+
+
+
-
-
918 const auto input_rank = operands.at(input_index).shape().rank();
-
919 auto axis = *
reinterpret_cast<const int32_t *
>(operands.at(axis_index).data()->base());
-
920 axis = axis < 0 ? axis + input_rank : axis;
-
-
-
923 OP_REQUIRES(operands.at(input_index).shape().dim(axis) % num_splits == 0);
+
917 const auto &pad_shape = operands.at(pad_index).shape();
+
918 const auto input_rank =
static_cast<int32_t
>(operands.at(input_index).shape().rank());
+
+
+
+
+
923 OP_REQUIRES(operands.at(input_index).shape().rank() == operands.at(output_index).shape().rank());
-
+
-
928 const auto &operands = _graph.
operands();
-
-
930 if (operands.at(output_index).info().isDynamic())
-
-
-
-
-
935 OP_REQUIRES(operands.at(output_index).shape().rank() == 1);
-
+
+
-
-
-
-
-
940 const auto &operands = _graph.
operands();
-
-
-
-
944 if (operands.at(output_index).info().isDynamic())
-
-
-
-
948 OP_REQUIRES(operands.at(input_index).shape().rank() == 4);
-
949 OP_REQUIRES(operands.at(output_index).shape().rank() == 4);
-
+
+
+
+
+
933 const auto &operands = _graph.
operands();
+
+
+
+
937 if (operands.at(output_index).info().isDynamic())
+
+
+
940 OP_REQUIRES(operands.at(input_index).shape().rank() <= 4);
+
-
-
-
-
-
954 const auto &operands = _graph.
operands();
-
-
+
+
+
+
+
945 const auto &operands = _graph.
operands();
+
+
947 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
+
+
954 const auto input_rank = operands.at(input_index).shape().rank();
+
955 auto axis = *
reinterpret_cast<const int32_t *
>(operands.at(axis_index).data()->base());
+
956 axis = axis < 0 ? axis + input_rank : axis;
-
958 if (operands.at(output_index).info().isDynamic())
-
-
960 OP_REQUIRES(operands.at(output_index).shape() == operands.at(input_index).shape());
-
-
-
-
-
-
-
-
+
+
959 OP_REQUIRES(operands.at(input_index).shape().dim(axis) % num_splits == 0);
+
-
-
-
-
-
-
+
+
+
+
+
964 const auto &operands = _graph.
operands();
+
+
966 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
971 OP_REQUIRES(operands.at(output_index).shape().rank() == 1);
-
+
976 const auto &operands = _graph.
operands();
-
-
-
-
-
982 if (operands.at(output_index).info().isDynamic())
-
-
-
-
986 auto lhs_shape = operands.at(lhs_index).shape();
-
987 auto rhs_shape = operands.at(rhs_index).shape();
-
-
-
990 auto min_rank = std::min(lhs_shape.rank(), rhs_shape.rank());
-
-
992 for (
int idx = 1; idx <= min_rank; idx++)
-
-
994 int l_idx = lhs_shape.rank() - idx;
-
995 int r_idx = rhs_shape.rank() - idx;
-
-
-
998 OP_REQUIRES((l_idx >= 0) && (r_idx >= 0) && (out_idx >= 0));
-
-
1000 auto l_dims = lhs_shape.dim(l_idx);
-
1001 auto r_dims = rhs_shape.dim(r_idx);
-
-
-
1004 OP_REQUIRES(((l_dims == r_dims) && (out_dims == l_dims)) ||
-
1005 ((l_dims == 1) && (out_dims == r_dims)) || ((r_dims == 1) && (out_dims == l_dims)));
-
-
1007 auto &tmp_shape = (lhs_shape.rank() > rhs_shape.rank()) ? lhs_shape : rhs_shape;
-
1008 for (
int idx = min_rank + 1; idx <=
output_shape.rank(); idx++)
-
-
-
1011 int tmp_idx = tmp_shape.rank() - idx;
-
-
-
1014 (
output_shape.dim(out_idx) == tmp_shape.dim(tmp_idx)));
-
-
+
+
+
980 if (operands.at(output_index).info().isDynamic())
+
+
+
+
984 OP_REQUIRES(operands.at(input_index).shape().rank() == 4);
+
985 OP_REQUIRES(operands.at(output_index).shape().rank() == 4);
+
+
+
+
+
+
+
990 const auto &operands = _graph.
operands();
+
+
+
+
994 if (operands.at(output_index).info().isDynamic())
+
+
996 OP_REQUIRES(operands.at(output_index).shape() == operands.at(input_index).shape());
+
+
+
+
-
-
-
-
1019 const auto &operands = _graph.
operands();
-
-
1021 if (operands.at(output_index).info().isDynamic())
-
-
-
-
1025 const auto multiple_index{node.
getInputs().
at(1)};
-
-
1027 OP_REQUIRES(operands.at(multiple_index).shape().rank() == 1);
-
1028 OP_REQUIRES(operands.at(multiple_index).shape().dim(0) ==
-
1029 operands.at(input_index).shape().rank());
-
1030 OP_REQUIRES(operands.at(input_index).shape().rank() == operands.at(output_index).shape().rank());
-
+
+
-
-
-
-
-
1035 const auto &operands = _graph.
operands();
-
-
-
-
-
-
-
1042 if (operands.at(output_index).info().isDynamic())
-
-
-
1045 OP_REQUIRES(operands.at(start_index).shape().rank() == 0);
-
1046 OP_REQUIRES(operands.at(limit_index).shape().rank() == 0);
-
1047 OP_REQUIRES(operands.at(delta_index).shape().rank() == 0);
-
+
+
+
+
+
1012 const auto &operands = _graph.
operands();
+
+
+
+
+
+
1018 if (operands.at(output_index).info().isDynamic())
+
+
+
+
1022 auto lhs_shape = operands.at(lhs_index).shape();
+
1023 auto rhs_shape = operands.at(rhs_index).shape();
+
+
+
1026 auto min_rank = std::min(lhs_shape.rank(), rhs_shape.rank());
+
+
1028 for (
int idx = 1; idx <= min_rank; idx++)
+
+
1030 int l_idx = lhs_shape.rank() - idx;
+
1031 int r_idx = rhs_shape.rank() - idx;
+
+
+
1034 OP_REQUIRES((l_idx >= 0) && (r_idx >= 0) && (out_idx >= 0));
+
+
1036 auto l_dims = lhs_shape.dim(l_idx);
+
1037 auto r_dims = rhs_shape.dim(r_idx);
+
+
+
1040 OP_REQUIRES(((l_dims == r_dims) && (out_dims == l_dims)) ||
+
1041 ((l_dims == 1) && (out_dims == r_dims)) || ((r_dims == 1) && (out_dims == l_dims)));
+
+
1043 auto &tmp_shape = (lhs_shape.rank() > rhs_shape.rank()) ? lhs_shape : rhs_shape;
+
1044 for (
int idx = min_rank + 1; idx <=
output_shape.rank(); idx++)
+
+
+
1047 int tmp_idx = tmp_shape.rank() - idx;
+
+
+
1050 (
output_shape.dim(out_idx) == tmp_shape.dim(tmp_idx)));
+
+
-
-
-
-
-
1052 const auto &operands = _graph.
operands();
-
-
-
1055 const auto num_lower_index{
-
-
1057 const auto num_upper_index{
-
+
+
+
+
1055 const auto &operands = _graph.
operands();
+
+
1057 if (operands.at(output_index).info().isDynamic())
+
-
-
1061 if (operands.at(output_index).info().isDynamic())
-
-
-
1064 OP_REQUIRES(operands.at(input_index).shape().rank() >= 2);
-
1065 OP_REQUIRES(operands.at(num_upper_index).shape().rank() == 0);
-
1066 OP_REQUIRES(operands.at(num_lower_index).shape().rank() == 0);
+
+
1061 const auto multiple_index{node.
getInputs().
at(1)};
+
+
1063 OP_REQUIRES(operands.at(multiple_index).shape().rank() == 1);
+
1064 OP_REQUIRES(operands.at(multiple_index).shape().dim(0) ==
+
1065 operands.at(input_index).shape().rank());
+
1066 OP_REQUIRES(operands.at(input_index).shape().rank() == operands.at(output_index).shape().rank());
-
+
1071 const auto &operands = _graph.
operands();
-
1073 if (operands.at(output_index).info().isDynamic())
-
-
-
-
-
1078 OP_REQUIRES(operands.at(output_index).shape().rank() == operands.at(input_index).shape().rank());
-
-
+
+
+
+
+
+
1078 if (operands.at(output_index).info().isDynamic())
+
-
-
+
1081 OP_REQUIRES(operands.at(start_index).shape().rank() == 0);
+
1082 OP_REQUIRES(operands.at(limit_index).shape().rank() == 0);
+
1083 OP_REQUIRES(operands.at(delta_index).shape().rank() == 0);
+
+
+
+
+
+
+
1088 const auto &operands = _graph.
operands();
+
+
+
1091 const auto num_lower_index{
+
+
1093 const auto num_upper_index{
+
+
+
+
1097 if (operands.at(output_index).info().isDynamic())
+
+
+
1100 OP_REQUIRES(operands.at(input_index).shape().rank() >= 2);
+
1101 OP_REQUIRES(operands.at(num_upper_index).shape().rank() == 0);
+
1102 OP_REQUIRES(operands.at(num_lower_index).shape().rank() == 0);
+
+
+
+
+
+
+
1107 const auto &operands = _graph.
operands();
+
+
1109 if (operands.at(output_index).info().isDynamic())
+
+
+
+
+
1114 OP_REQUIRES(operands.at(output_index).shape().rank() == operands.at(input_index).shape().rank());
+
+
+
+
+
const luci_interpreter::RuntimeShape output_shape
@@ -1282,6 +1324,7 @@
+
@@ -1296,9 +1339,13 @@
+
+
const Param & param() const
+
+
@@ -1308,6 +1355,8 @@
+
+
diff --git a/_shape_validator_8h_source.html b/_shape_validator_8h_source.html
index 5dade6dd1cd..337b4f7d089 100644
--- a/_shape_validator_8h_source.html
+++ b/_shape_validator_8h_source.html
@@ -153,56 +153,59 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
~ShapeValidator()=default
@@ -220,12 +223,15 @@
+
+
+
diff --git a/_string_utils_8cpp_source.html b/_string_utils_8cpp_source.html
index b64d1a85fc5..f0c5898d7f5 100644
--- a/_string_utils_8cpp_source.html
+++ b/_string_utils_8cpp_source.html
@@ -173,7 +173,7 @@
const std::string toString(luci::CircleOpcode opcode)
-
+
diff --git a/_string_utils_8h.html b/_string_utils_8h.html
index 8a1a1c12f76..25347f3bf56 100644
--- a/_string_utils_8h.html
+++ b/_string_utils_8h.html
@@ -95,7 +95,7 @@
-
#include <luci/IR/CircleOpcode.h>
+
diff --git a/_string_utils_8h_source.html b/_string_utils_8h_source.html
index 91a4f348b30..dee3308f57b 100644
--- a/_string_utils_8h_source.html
+++ b/_string_utils_8h_source.html
@@ -116,7 +116,7 @@
17#ifndef __DALGONA_STRING_UTILS_H__
18#define __DALGONA_STRING_UTILS_H__
-
+
@@ -132,10 +132,10 @@
-
+
const std::string toString(luci::CircleOpcode opcode)
-
+
diff --git a/_subnet_8cpp_source.html b/_subnet_8cpp_source.html
index 89e95430fcb..cea2ac1c6d3 100644
--- a/_subnet_8cpp_source.html
+++ b/_subnet_8cpp_source.html
@@ -545,7 +545,7 @@
void concat(std::ostream &os, const std::string &sep, It beg, It end)
-
Dims< uint32_t > as_dims(const nncc::core::ADT::tensor::Shape &)
+
Dims< uint32_t > as_dims(const nncc::core::ADT::tensor::Shape &)
void Reverse(int axis, const Shape &input_shape, const Scalar *input_data, const Shape &, Scalar *output_data)
diff --git a/_t_f_l_shape_inference_rule_8h_source.html b/_t_f_l_shape_inference_rule_8h_source.html
index 2220a2786ed..4cdf2e88fb3 100644
--- a/_t_f_l_shape_inference_rule_8h_source.html
+++ b/_t_f_l_shape_inference_rule_8h_source.html
@@ -125,7 +125,7 @@
-
+
@@ -137,7 +137,7 @@
-
std::vector< float > infer()
+
std::vector< float > infer()
bool recognize(const loco::Dialect *) const final
Return true if this rule recognizes a given dialect.
diff --git a/_t_f_l_type_inference_rule_8h_source.html b/_t_f_l_type_inference_rule_8h_source.html
index b3e1145c8f6..f5fef7f49e6 100644
--- a/_t_f_l_type_inference_rule_8h_source.html
+++ b/_t_f_l_type_inference_rule_8h_source.html
@@ -126,7 +126,7 @@
-
+
@@ -138,7 +138,7 @@
Logical unit of computation.
DataType
"scalar" value type
-
std::vector< float > infer()
+
std::vector< float > infer()
Type Inference Rule for TFLDialect.
bool recognize(const loco::Dialect *) const final
Return true if this rule recognizes a given dialect.
diff --git a/_t_f_shape_inference_helper_8h_source.html b/_t_f_shape_inference_helper_8h_source.html
index 9d1cd1a0fbb..13e0d1a8df0 100644
--- a/_t_f_shape_inference_helper_8h_source.html
+++ b/_t_f_shape_inference_helper_8h_source.html
@@ -261,7 +261,7 @@
-
+
@@ -288,7 +288,7 @@
-
186 auto output =
infer(p, in);
+
186 auto output =
infer(p, in);
188 int64_t i_height = (int64_t)(output.height.value() - 1) * (int64_t)p.
stride.
height.
value() +
@@ -378,7 +378,7 @@
loco::FeatureShape as_feature_shape(const loco::NodeShape &nodeshape, const TFDataLayout &data_layout)
FeatureShapeUpdater update(loco::FeatureShape &feature_shape)
PlaneShape make_plane_shape(const loco::FeatureShape &feature_shape)
-
std::vector< float > infer()
+
std::vector< float > infer()
PlaneShape effective_window
diff --git a/_t_f_shape_inference_rule_8cpp_source.html b/_t_f_shape_inference_rule_8cpp_source.html
index 53b594af718..21407d240e5 100644
--- a/_t_f_shape_inference_rule_8cpp_source.html
+++ b/_t_f_shape_inference_rule_8cpp_source.html
@@ -963,7 +963,7 @@
859 ::compat::Context ctx;
-
862 infer(&ctx, node, &sink);
+
862 infer(&ctx, node, &sink);
864 assert(sink.status() == ::compat::Sink::Okay or sink.status() == ::compat::Sink::Fail);
@@ -1077,7 +1077,7 @@
loco::FeatureShape as_feature_shape(const loco::NodeShape &nodeshape, const TFDataLayout &data_layout)
FeatureShapeUpdater update(loco::FeatureShape &feature_shape)
PlaneShape make_plane_shape(const loco::FeatureShape &feature_shape)
-
std::vector< float > infer()
+
std::vector< float > infer()
diff --git a/_t_f_shape_inference_rule_8h_source.html b/_t_f_shape_inference_rule_8h_source.html
index 5adbea564e5..2a653a9de59 100644
--- a/_t_f_shape_inference_rule_8h_source.html
+++ b/_t_f_shape_inference_rule_8h_source.html
@@ -126,8 +126,8 @@
-
-
+
+
@@ -139,7 +139,7 @@
Logical unit of computation.
-
std::vector< float > infer()
+
std::vector< float > infer()
diff --git a/_t_f_type_inference_rule_8h_source.html b/_t_f_type_inference_rule_8h_source.html
index 86b7b294c02..135efcb3425 100644
--- a/_t_f_type_inference_rule_8h_source.html
+++ b/_t_f_type_inference_rule_8h_source.html
@@ -125,7 +125,7 @@
-
+
@@ -137,7 +137,7 @@
Logical unit of computation.
DataType
"scalar" value type
-
std::vector< float > infer()
+
std::vector< float > infer()
Type Inference Rule for TFDialect.
bool recognize(const loco::Dialect *) const final
Return true if this rule recognizes a given dialect.
diff --git a/_training_driver_8cpp_source.html b/_training_driver_8cpp_source.html
index 4daf1ed2392..0a621c5a8ac 100644
--- a/_training_driver_8cpp_source.html
+++ b/_training_driver_8cpp_source.html
@@ -319,7 +319,7 @@
218int entry(
int argc,
char **argv);
-
221int main(
int argc,
char **argv)
+
221int main(
int argc,
char **argv)
@@ -334,7 +334,7 @@
-
+
@@ -347,7 +347,7 @@
void writeDataToFile(const std::string &file_path, const std::string &data)
write data to file_path
-
+
diff --git a/_training_onert_micro_8cpp_source.html b/_training_onert_micro_8cpp_source.html
index 9cc92b1d666..b70f9c871d2 100644
--- a/_training_onert_micro_8cpp_source.html
+++ b/_training_onert_micro_8cpp_source.html
@@ -250,7 +250,7 @@
152 for (uint32_t epoch = 0; epoch < epochs; ++epoch)
-
+
156 for (uint32_t batch = 0; batch < batch_size; ++batch)
@@ -348,7 +348,7 @@
-
std::vector< float > infer()
+
std::vector< float > infer()
diff --git a/_type_inference_8h_source.html b/_type_inference_8h_source.html
index 885c7c48a64..52bdf7b6736 100644
--- a/_type_inference_8h_source.html
+++ b/_type_inference_8h_source.html
@@ -142,7 +142,7 @@
-
+
@@ -151,7 +151,7 @@
-
+
@@ -216,7 +216,7 @@
bool dtype_known(const Node *node)
DataType
"scalar" value type
DataType dtype_get(const Node *node)
-
std::vector< float > infer()
+
std::vector< float > infer()
Type Inference Rule for Canonical Dialect.
bool recognize(const Dialect *) const final
Return true if this rule recognizes a given dialect.
diff --git a/_validation_8cpp.html b/_validation_8cpp.html
index 20e64a03588..7d8b11f2368 100644
--- a/_validation_8cpp.html
+++ b/_validation_8cpp.html
@@ -96,7 +96,7 @@
#include "Validation.h"
#include "Macro.h"
-
#include "Assert.h"
+
#include "Assert.h"
Go to the source code of this file.
diff --git a/_validation_8cpp_source.html b/_validation_8cpp_source.html
index 940fcbd6dd4..3aaf1f02e55 100644
--- a/_validation_8cpp_source.html
+++ b/_validation_8cpp_source.html
@@ -116,7 +116,7 @@
-
+
22static inline bool validCode(uint32_t codeCount, uint32_t code)
@@ -396,7 +396,7 @@
-This file contains helper function of assertion.
+This file contains helper function of assertion.
diff --git a/ann-ref_2src_2ops_2_add_8h.html b/ann-ref_2src_2ops_2_add_8h.html
index b7a05589626..2e4fe4b5dfe 100644
--- a/ann-ref_2src_2ops_2_add_8h.html
+++ b/ann-ref_2src_2ops_2_add_8h.html
@@ -138,8 +138,8 @@
Loads Circle file and provides helpers to access attributes.
@@ -283,7 +325,7 @@
Definition at line 38 of file Reader.h.
-
◆ Reader() [1/8]
+
◆ Reader() [1/10]
@@ -325,7 +367,50 @@
-◆ Reader() [2/8]
+◆ Reader() [2/10]
+
+
+
+
+
+
+
+
+ mio::circle::Reader::Reader |
+ ( |
+ | ) |
+ |
+
+
+ |
+
+delete |
+
+
+
+
+
+
+
+◆ Reader() [3/10]
+
+
+
+
+
+ mio::circle::Reader::Reader |
+ ( |
+ const ::circle::Model * |
+ model | ) |
+ |
+
+
+
+
+
+
+
+◆ Reader() [4/10]
@@ -350,7 +435,7 @@
-◆ Reader() [3/8]
+◆ Reader() [5/10]
@@ -368,7 +453,7 @@
-◆ Reader() [4/8]
+◆ Reader() [6/10]
@@ -393,7 +478,7 @@
-◆ Reader() [5/8]
+◆ Reader() [7/10]
@@ -411,7 +496,7 @@
-◆ Reader() [6/8]
+◆ Reader() [8/10]
@@ -436,7 +521,7 @@
-◆ Reader() [7/8]
+◆ Reader() [9/10]
@@ -454,7 +539,7 @@
-◆ Reader() [8/8]
+◆ Reader() [10/10]
@@ -480,7 +565,7 @@
Member Function Documentation
-
◆ buffer_info() [1/4]
+
◆ buffer_info() [1/5]
@@ -541,7 +626,7 @@
-◆ buffer_info() [2/4]
+◆ buffer_info() [2/5]
@@ -569,7 +654,7 @@
-◆ buffer_info() [3/4]
+◆ buffer_info() [3/5]
@@ -597,7 +682,35 @@
-◆ buffer_info() [4/4]
+◆ buffer_info() [4/5]
+
+
+
+
+
+ size_t mio::circle::Reader::buffer_info |
+ ( |
+ uint32_t |
+ buf_idx, |
+
+
+ |
+ |
+ const uint8_t ** |
+ buff_data |
+
+
+ |
+ ) |
+ | |
+
+
+
+
+
+
+
+◆ buffer_info() [5/5]
@@ -625,7 +738,7 @@
-◆ buffers() [1/4]
+◆ buffers() [1/5]
@@ -655,7 +768,7 @@
-◆ buffers() [2/4]
+◆ buffers() [2/5]
@@ -683,7 +796,7 @@
-◆ buffers() [3/4]
+◆ buffers() [3/5]
@@ -711,7 +824,7 @@
-◆ buffers() [4/4]
+◆ buffers() [4/5]
@@ -738,8 +851,36 @@
+◆ buffers() [5/5]
+
+
-◆ builtin_code() [1/4]
+◆ builtin_code() [1/5]
@@ -772,7 +913,7 @@
-◆ builtin_code() [2/4]
+◆ builtin_code() [2/5]
@@ -790,7 +931,7 @@
-◆ builtin_code() [3/4]
+◆ builtin_code() [3/5]
@@ -808,7 +949,25 @@
-◆ builtin_code() [4/4]
+◆ builtin_code() [4/5]
+
+
+
+
+
+ ::circle::BuiltinOperator mio::circle::Reader::builtin_code |
+ ( |
+ const ::circle::Operator * |
+ op | ) |
+ const |
+
+
+
+
+
+
+
+◆ builtin_code() [5/5]
@@ -910,7 +1069,7 @@
-◆ inputs() [1/4]
+◆ inputs() [1/5]
@@ -940,7 +1099,7 @@
-◆ inputs() [2/4]
+◆ inputs() [2/5]
@@ -970,7 +1129,7 @@
-◆ inputs() [3/4]
+◆ inputs() [3/5]
@@ -1000,7 +1159,7 @@
-◆ inputs() [4/4]
+◆ inputs() [4/5]
+
+◆ inputs() [5/5]
+
+
+
+
+
+
+
+
+ const std::vector< int32_t > & mio::circle::Reader::inputs |
+ ( |
+ | ) |
+ const |
+
+
+ |
+
+inline |
+
+
+
-◆ metadata() [1/4]
+◆ metadata() [1/5]
@@ -1060,7 +1249,7 @@
-◆ metadata() [2/4]
+◆ metadata() [2/5]
@@ -1088,7 +1277,7 @@
-◆ metadata() [3/4]
+◆ metadata() [3/5]
@@ -1116,7 +1305,7 @@
-◆ metadata() [4/4]
+◆ metadata() [4/5]
@@ -1143,8 +1332,36 @@
+◆ metadata() [5/5]
+
+
+
+
+
Definition at line 62 of file Reader.h.
+
62{ return _metadata; }
+
+
+
-◆ num_subgraph() [1/4]
+◆ num_subgraph() [1/5]
@@ -1174,7 +1391,7 @@
-◆ num_subgraph() [2/4]
+◆ num_subgraph() [2/5]
@@ -1202,7 +1419,7 @@
-◆ num_subgraph() [3/4]
+◆ num_subgraph() [3/5]
@@ -1230,7 +1447,7 @@
-◆ num_subgraph() [4/4]
+◆ num_subgraph() [4/5]
+
+◆ num_subgraph() [5/5]
+
+
+
+
+
+
+
+
+ uint32_t mio::circle::Reader::num_subgraph |
+ ( |
+ | ) |
+ const |
+
+
+ |
+
+inline |
+
+
+
-◆ opcode_name() [1/4]
+◆ opcode_name() [1/5]
@@ -1301,7 +1548,7 @@
-◆ opcode_name() [2/4]
+◆ opcode_name() [2/5]
@@ -1319,7 +1566,7 @@
-◆ opcode_name() [3/4]
+◆ opcode_name() [3/5]
@@ -1337,7 +1584,7 @@
-◆ opcode_name() [4/4]
+◆ opcode_name() [4/5]
@@ -1352,10 +1599,86 @@
+
+
+
+◆ opcode_name() [5/5]
+
+
+
+
+
+ std::string mio::circle::Reader::opcode_name |
+ ( |
+ const ::circle::Operator * |
+ op | ) |
+ const |
+
+
+
+
+
+
+
+◆ opcodes() [1/5]
+
+
+
+
+
+
+
+
+ const std::vector< const ::circle::OperatorCode * > & mio::circle::Reader::opcodes |
+ ( |
+ | ) |
+ |
+
+
+ |
+
+inline |
+
+
+
+
+
+◆ opcodes() [2/5]
+
+
+
+
+
+
+
+
+ const std::vector< const ::circle::OperatorCode * > & mio::circle::Reader::opcodes |
+ ( |
+ | ) |
+ |
+
+
+ |
+
+inline |
+
+
+
+
+
Definition at line 56 of file Reader.h.
+
56{ return _op_codes; }
+
-◆ opcodes() [1/4]
+◆ opcodes() [3/5]
-◆ opcodes() [2/4]
+◆ opcodes() [4/5]
-◆ opcodes() [3/4]
+◆ opcodes() [5/5]
-
-◆ opcodes() [4/4]
+
+◆ operators() [1/5]
@@ -1450,7 +1771,7 @@
- const std::vector< const ::circle::OperatorCode * > & mio::circle::Reader::opcodes |
+ const CircleOperators_t * mio::circle::Reader::operators |
( |
| ) |
|
@@ -1463,13 +1784,15 @@
-Definition at line 56 of file Reader.h.
-
-◆ operators() [1/4]
+◆ operators() [2/5]
-◆ operators() [2/4]
+◆ operators() [3/5]
-◆ operators() [3/4]
+◆ operators() [4/5]
-◆ operators() [4/4]
+◆ operators() [5/5]
-◆ outputs() [1/8]
+◆ outputs() [1/10]
@@ -1613,7 +1934,7 @@
-◆ outputs() [2/8]
+◆ outputs() [2/10]
@@ -1643,7 +1964,7 @@
-◆ outputs() [3/8]
+◆ outputs() [3/10]
@@ -1673,7 +1994,7 @@
-◆ outputs() [4/8]
+◆ outputs() [4/10]
+
+◆ outputs() [5/10]
+
+
+
+
+
+
+
+
+ const std::vector< int32_t > & mio::circle::Reader::outputs |
+ ( |
+ | ) |
+ const |
+
+
+ |
+
+inline |
+
+
+
-◆ outputs() [5/8]
+◆ outputs() [6/10]
@@ -1731,7 +2082,27 @@
-◆ outputs() [6/8]
+◆ outputs() [7/10]
+
+
+
+
+
+ std::vector< int32_t > mio::circle::Reader::outputs |
+ ( |
+ const ::circle::Operator * |
+ op | ) |
+ const |
+
+
+
+
+
+◆ outputs() [8/10]
@@ -1751,7 +2122,7 @@
-◆ outputs() [7/8]
+◆ outputs() [9/10]
@@ -1771,7 +2142,7 @@
-◆ outputs() [8/8]
+◆ outputs() [10/10]
@@ -1791,7 +2162,7 @@
-◆ select_subgraph() [1/4]
+◆ select_subgraph() [1/5]
@@ -1843,7 +2214,25 @@
-◆ select_subgraph() [2/4]
+◆ select_subgraph() [2/5]
+
+
+
+
+
+ bool mio::circle::Reader::select_subgraph |
+ ( |
+ uint32_t |
+ subgraph | ) |
+ |
+
+
+
+
+
+
+
+◆ select_subgraph() [3/5]
@@ -1861,7 +2250,7 @@
-◆ select_subgraph() [3/4]
+◆ select_subgraph() [4/5]
@@ -1879,7 +2268,7 @@
-◆ select_subgraph() [4/4]
+◆ select_subgraph() [5/5]
@@ -1897,7 +2286,7 @@
-◆ signature_defs() [1/4]
+◆ signature_defs() [1/5]
@@ -1927,7 +2316,7 @@
-◆ signature_defs() [2/4]
+◆ signature_defs() [2/5]
@@ -1955,7 +2344,7 @@
-◆ signature_defs() [3/4]
+◆ signature_defs() [3/5]
@@ -1983,7 +2372,7 @@
-◆ signature_defs() [4/4]
+◆ signature_defs() [4/5]
@@ -2010,8 +2399,36 @@
+◆ signature_defs() [5/5]
+
+
+
+
+
Definition at line 63 of file Reader.h.
+
63{ return _signature_defs; }
+
+
+
-◆ subgraph_index() [1/4]
+◆ subgraph_index() [1/5]
@@ -2042,7 +2459,7 @@
-◆ subgraph_index() [2/4]
+◆ subgraph_index() [2/5]
@@ -2071,7 +2488,7 @@
-◆ subgraph_index() [3/4]
+◆ subgraph_index() [3/5]
@@ -2100,7 +2517,7 @@
-◆ subgraph_index() [4/4]
+◆ subgraph_index() [4/5]
@@ -2128,8 +2545,37 @@
+◆ subgraph_index() [5/5]
+
+
+
+
+
+
+
+
+ uint32_t mio::circle::Reader::subgraph_index |
+ ( |
+ void |
+ | ) |
+ const |
+
+
+ |
+
+inline |
+
+
+
+
+
Definition at line 77 of file Reader.h.
+
77{ return _subgraph_index; }
+
+
+
-◆ subgraph_name() [1/4]
+◆ subgraph_name() [1/5]
@@ -2160,7 +2606,7 @@
-◆ subgraph_name() [2/4]
+◆ subgraph_name() [2/5]
@@ -2189,7 +2635,7 @@
-◆ subgraph_name() [3/4]
+◆ subgraph_name() [3/5]
@@ -2218,7 +2664,7 @@
-◆ subgraph_name() [4/4]
+◆ subgraph_name() [4/5]
@@ -2246,8 +2692,37 @@
+◆ subgraph_name() [5/5]
+
+