tvm
Loading...
Searching...
No Matches
include
tvm
ir
cow.h
Go to the documentation of this file.
1
/*
2
* Licensed to the Apache Software Foundation (ASF) under one
3
* or more contributor license agreements. See the NOTICE file
4
* distributed with this work for additional information
5
* regarding copyright ownership. The ASF licenses this file
6
* to you under the Apache License, Version 2.0 (the
7
* "License"); you may not use this file except in compliance
8
* with the License. You may obtain a copy of the License at
9
*
10
* http://www.apache.org/licenses/LICENSE-2.0
11
*
12
* Unless required by applicable law or agreed to in writing,
13
* software distributed under the License is distributed on an
14
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
* KIND, either express or implied. See the License for the
16
* specific language governing permissions and limitations
17
* under the License.
18
*/
19
24
#ifndef TVM_IR_COW_H_
25
#define TVM_IR_COW_H_
26
27
#include <tvm/ffi/object.h>
28
29
#include <utility>
30
31
namespace
tvm
{
32
52
#ifndef TVM_DEFINE_OBJECT_REF_COW_METHOD
53
#define TVM_DEFINE_OBJECT_REF_COW_METHOD(ObjectName) \
54
static_assert(ObjectName::_type_final, \
55
"TVM's CopyOnWrite may only be used for " \
56
"Object types that are declared as final, " \
57
"using the TVM_FFI_DECLARE_OBJECT_INFO_FINAL macro."); \
58
ObjectName* CopyOnWrite() { \
59
TVM_FFI_ICHECK(data_ != nullptr); \
60
if (!data_.unique()) { \
61
auto n = ::tvm::ffi::make_object<ObjectName>(*(operator->())); \
62
::tvm::ffi::ObjectPtr<::tvm::ffi::Object>(std::move(n)).swap(data_); \
63
} \
64
return static_cast<ObjectName*>(data_.get()); \
65
}
66
#endif
// TVM_DEFINE_OBJECT_REF_COW_METHOD
67
68
}
// namespace tvm
69
70
#endif
// TVM_IR_COW_H_
tvm
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition
analyzer.h:40
Generated by
1.9.8