1 Star 0 Fork 3

xiongying/Halide

forked from Gitee 极速下载/Halide 
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ImageParam.cpp 2.41 KB
一键复制 编辑 原始数据 按行查看 历史
Steven Johnson 提交于 2022-04-28 09:33 +08:00 . More typed-Func work (#6735)
#include "ImageParam.h"
#include <utility>
namespace Halide {
ImageParam::ImageParam(Type t, int d)
: OutputImageParam(
Internal::Parameter(t, true, d, Internal::make_entity_name(this, "Halide:.*:ImageParam", 'p')),
Argument::InputBuffer,
Func()) {
// We must call create_func() after the super-ctor has completed.
func = create_func();
}
ImageParam::ImageParam(Type t, int d, const std::string &n)
: OutputImageParam(
Internal::Parameter(t, true, d, n),
Argument::InputBuffer,
Func()) {
// We must call create_func() after the super-ctor has completed.
func = create_func();
}
Func ImageParam::create_func() const {
std::vector<Var> args;
std::vector<Expr> args_expr;
for (int i = 0; i < dimensions(); ++i) {
args.push_back(Var::implicit(i));
args_expr.push_back(Var::implicit(i));
}
if (!name().empty()) {
// Discourage future Funcs from having the same name
Internal::unique_name(name());
}
Func f(param.type(), param.dimensions(), name() + "_im");
f(args) = Internal::Call::make(param, args_expr);
return f;
}
void ImageParam::set(const Buffer<> &b) {
if (b.defined()) {
user_assert(b.type() == type())
<< "Can't bind ImageParam " << name()
<< " of type " << type()
<< " to Buffer " << b.name()
<< " of type " << Type(b.type()) << "\n";
}
param.set_buffer(b);
}
Buffer<> ImageParam::get() const {
return param.buffer();
}
void ImageParam::reset() {
set(Buffer<>());
}
Expr ImageParam::operator()(std::vector<Expr> args_passed) const {
return func(std::move(args_passed));
}
Expr ImageParam::operator()(std::vector<Var> args_passed) const {
return func(std::move(args_passed));
}
ImageParam::operator Func() const {
return func;
}
Func ImageParam::in(const Func &f) {
internal_assert(func.defined());
return func.in(f);
}
Func ImageParam::in(const std::vector<Func> &fs) {
internal_assert(func.defined());
return func.in(fs);
}
Func ImageParam::in() {
internal_assert(func.defined());
return func.in();
}
void ImageParam::trace_loads() {
internal_assert(func.defined());
func.trace_loads();
}
ImageParam &ImageParam::add_trace_tag(const std::string &trace_tag) {
internal_assert(func.defined());
func.add_trace_tag(trace_tag);
return *this;
}
} // namespace Halide
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/VisionDeveloper/Halide.git
git@gitee.com:VisionDeveloper/Halide.git
VisionDeveloper
Halide
Halide
main

搜索帮助