compute-runtime/unit_tests/mocks/mock_builtin_dispatch_info_...

56 lines
1.6 KiB
C++

/*
* Copyright (C) 2017-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "runtime/built_ins/built_ins.h"
#include "runtime/helpers/dispatch_info.h"
using namespace NEO;
class MockBuiltinDispatchInfoBuilder : public BuiltinDispatchInfoBuilder {
public:
MockBuiltinDispatchInfoBuilder(BuiltIns &kernelLib, BuiltinDispatchInfoBuilder *origBuilder)
: BuiltinDispatchInfoBuilder(kernelLib), originalBuilder(origBuilder) {
}
virtual void validateInput(const BuiltinOpParams &conf) const {};
bool buildDispatchInfos(MultiDispatchInfo &mdi, const BuiltinOpParams &conf) const override {
validateInput(conf);
builtinOpParams = conf;
originalBuilder->buildDispatchInfos(mdi, conf);
for (auto &di : mdi) {
multiDispatchInfo.push(di);
}
return true;
}
const BuiltinOpParams *getBuiltinOpParams() const {
return &builtinOpParams;
};
const MultiDispatchInfo *getMultiDispatchInfo() const {
return &multiDispatchInfo;
};
void setFailingArgIndex(uint32_t index) {
withFailureInjection = true;
failingArgIndex = index;
}
virtual bool setExplicitArg(uint32_t argIndex, size_t argSize, const void *argVal, cl_int &err) const override {
err = (withFailureInjection && argIndex == failingArgIndex) ? CL_INVALID_ARG_VALUE : CL_SUCCESS;
return false;
}
protected:
mutable BuiltinOpParams builtinOpParams;
mutable MultiDispatchInfo multiDispatchInfo;
BuiltinDispatchInfoBuilder *originalBuilder;
bool withFailureInjection = false;
uint32_t failingArgIndex = 0;
};