Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43e4a63e authored by Xusong Wang's avatar Xusong Wang Committed by android-build-merger
Browse files

Skip OUTPUT_INSUFFICIENT_SIZE test for zero-sized output. am: 0237edd1

am: 384fcd1e

Change-Id: I46925696191753150085968f26b749fe720cd86c
parents 21492d8e 384fcd1e
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -77,6 +77,13 @@ void copy_back(MixedTyped* dst, const std::vector<RequestArgument>& ra, char* sr
                  "Number of types in MixedTyped changed, but copy_back function wasn't updated");
}

static bool isZeroSized(const MixedTyped& example, uint32_t index) {
    for (auto i : example.operandDimensions.at(index)) {
        if (i == 0) return true;
    }
    return false;
}

// Top level driver for models and examples generated by test_generator.py
// Test driver for those generated from ml/nn/runtime/test/spec
static Return<ErrorStatus> ExecutePreparedModel(sp<V1_0::IPreparedModel>& preparedModel,
@@ -178,19 +185,20 @@ void EvaluatePreparedModel(sp<T_IPreparedModel>& preparedModel, std::function<bo
        // Go through all outputs, initialize RequestArgument descriptors
        resize_accordingly(golden, test);
        bool sizeLargerThanOne = true;
        for_all(golden, [&outputs_info, &outputSize, &outputType, &sizeLargerThanOne](
        for_all(golden, [&golden, &outputs_info, &outputSize, &outputType, &sizeLargerThanOne](
                                int index, auto, auto s) {
            if (outputs_info.size() <= static_cast<size_t>(index)) outputs_info.resize(index + 1);
            if (index == 0) {
                // On OutputType::INSUFFICIENT, set the output operand with index 0 with
                // buffer size one byte less than needed.
                if (outputType == OutputType::INSUFFICIENT) {
                    if (s > 1)
                    if (s > 1 && !isZeroSized(golden, index)) {
                        s -= 1;
                    else
                    } else {
                        sizeLargerThanOne = false;
                    }
                }
            }
            RequestArgument arg = {
                .location = {.poolIndex = OUTPUT, .offset = 0, .length = static_cast<uint32_t>(s)},
                .dimensions = {},