Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update LLVM Version to 16.0.0 #9985

Merged
merged 36 commits into from
Apr 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
13b79e2
update
howin98 Mar 14, 2023
fd458ad
auto format by CI
oneflow-ci-bot Mar 14, 2023
cd2b16b
fix
howin98 Mar 14, 2023
a74dd7f
Merge branch 'update-to-llvm16.0.0' of github.com:Oneflow-Inc/oneflow…
howin98 Mar 14, 2023
f3c4c64
stash
howin98 Mar 16, 2023
8d7740a
fix some
howin98 Mar 16, 2023
5463c9b
fix more
howin98 Mar 16, 2023
3b21f1a
up to 16
howin98 Mar 22, 2023
b5c3e23
fix some
howin98 Mar 23, 2023
1990dd8
fix some
howin98 Mar 23, 2023
fc6b9b0
remove magic string
howin98 Mar 23, 2023
2885229
pass 39/52
howin98 Mar 23, 2023
9c8fe5b
fix alot
howin98 Mar 24, 2023
9ae217e
Merge branch 'master' of github.com:Oneflow-Inc/oneflow into update-t…
howin98 Mar 27, 2023
75dc272
only 4 fail
howin98 Mar 27, 2023
91d6d76
2 test failed left
howin98 Mar 27, 2023
01b82db
auto format by CI
oneflow-ci-bot Mar 27, 2023
672be9d
only left one fail
howin98 Mar 27, 2023
c72d756
auto format by CI
oneflow-ci-bot Mar 27, 2023
c3ac5c9
fix and pass all
howin98 Mar 28, 2023
07036d3
Merge branch 'update-to-llvm16.0.0' of github.com:Oneflow-Inc/oneflow…
howin98 Mar 28, 2023
b663b3e
Merge branch 'master' of github.com:Oneflow-Inc/oneflow into update-t…
howin98 Mar 28, 2023
a1740c9
Merge branch 'master' into update-to-llvm16.0.0
howin98 Mar 31, 2023
65827b4
fix
howin98 Mar 31, 2023
fab0170
try to amend cache
howin98 Apr 4, 2023
a3b6225
try disable error on weak-tables
howin98 Apr 4, 2023
276ddce
fix
howin98 Apr 4, 2023
82c96b7
try again
howin98 Apr 6, 2023
90b56ff
fix
howin98 Apr 6, 2023
afcb30d
try
howin98 Apr 6, 2023
3576dd4
update
howin98 Apr 6, 2023
5e6d3a8
try
howin98 Apr 6, 2023
78178c7
try
howin98 Apr 6, 2023
112f1bb
fix
howin98 Apr 7, 2023
43e5e38
Merge branch 'master' into update-to-llvm16.0.0
jackalcooper Apr 7, 2023
b3eaf20
fix
howin98 Apr 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ env:
ONEFLOW_FACE_SRC: oneflow_face
ONEFLOW_FACE_COMMIT: 110a97e8d5737a1f1856281a7df556a5ac8f06de
ONEFLOW_IREE_SRC: oneflow_iree
ONEFLOW_IREE_COMMIT: 30e7dec07ca11287d1317296e08b12d815a013fe
ONEFLOW_IREE_COMMIT: 65c3c249a6d8e39483ed1a7c08b1d624d3103ffa
ONE_FX_SRC: one-fx
ONE_FX_COMMIT: da4051c7f1ace7a20b3f54395b580cd102fc99da
TEST_WITH_TORCH_IMG_TAG: registry.cn-beijing.aliyuncs.com/oneflow/test-with-pytorch-1.10.0-cuda11.3-cudnn8-runtime:67505df94022a6b4b979f013e2cbd3e0cdac3828
Expand Down
10 changes: 8 additions & 2 deletions cmake/oneflow.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -255,20 +255,26 @@ if("${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/32805e60c9de1f82887cd2af30d247dcabd2e1d3.zip"
OR "${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/6d6268dcbf0f48e43f6f9fe46b3a28c29ba63c7d.zip"
OR "${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-16.0.0-rc4.zip"
OR "${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-15.0.6.zip"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "f2f17229cf21049663b8ef4f2b6b8062"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "6b7c6506d5922de9632c8ff012b2f945"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "e0ea669a9f0872d35bffda5ec6c5ac6f"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "241a333828bba1efa35aff4c4fc2ce87"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "075fbfdf06cb3f02373ea44971af7b03"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "e412dc61159b5e929b0c94e44b11feb2"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "1ccc00accc87a1a5d42a275d6e31cd8c"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "b64481eaca658a2ff4e3e193440d0f68"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "334997b4879aba15d9323a732356cf2a")
unset(LLVM_MONO_REPO_URL CACHE)
unset(LLVM_MONO_REPO_MD5 CACHE)
endif()
set(LLVM_MONO_REPO_URL "https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-15.0.6.zip"
set(LLVM_MONO_REPO_URL "https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-16.0.0.zip"
CACHE STRING "")
use_mirror(VARIABLE LLVM_MONO_REPO_URL URL ${LLVM_MONO_REPO_URL})
set(LLVM_MONO_REPO_MD5 "1ccc00accc87a1a5d42a275d6e31cd8c" CACHE STRING "")
set(LLVM_MONO_REPO_MD5 "78172b0f67282e28956cd310612091fd" CACHE STRING "")
set(ONEFLOW_BUILD_ROOT_DIR "${PROJECT_BINARY_DIR}")
add_subdirectory(${PROJECT_SOURCE_DIR}/oneflow/ir)
if(WITH_MLIR)
Expand Down
4 changes: 4 additions & 0 deletions cmake/util.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ function(target_treat_warnings_as_errors target)

# disable visibility warnings related to https://github.com/Oneflow-Inc/oneflow/pull/3676.
target_try_compile_options(${target} -Wno-error=attributes)

# disable error about XXX has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit
target_try_compile_options(${target} -Wno-error=weak-vtables)

endif()
endfunction()

Expand Down
4 changes: 2 additions & 2 deletions oneflow/ir/include/OneFlow/OKL/Kernel/LauncherState.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ limitations under the License.
#include "OneFlow/OKL/Kernel/JITEngine.h"
#include "OneFlow/OKL/Kernel/LauncherContext.h"
#include "OneFlow/OKL/Conversion/Conversion.h"
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/IR/DialectRegistry.h"
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"

Expand All @@ -31,7 +31,7 @@ namespace okl {
inline mlir::DialectRegistry GetRegistry() {
mlir::DialectRegistry registry;
registry.insert<mlir::oneflow::OneFlowDialect, mlir::okl::OKLDialect, mlir::func::FuncDialect,
mlir::arith::ArithmeticDialect, mlir::LLVM::LLVMDialect>();
mlir::arith::ArithDialect, mlir::LLVM::LLVMDialect>();
mlir::registerLLVMDialectTranslation(registry);
return registry;
}
Expand Down
38 changes: 19 additions & 19 deletions oneflow/ir/include/OneFlow/OneFlowBase.td
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ class OneFlow_Op<string mnemonic, list<Trait> traits = []> :
let ctrl_input = (ins Variadic<AnyType>:$ctrl_inputs);
let ctrl_output = (outs Optional<AnyType>:$ctrl_output);
let trait_attrs = (ins
I32ElementsAttr:$operand_segment_sizes,
I32ElementsAttr:$result_segment_sizes
DenseI32ArrayAttr:$operand_segment_sizes,
DenseI32ArrayAttr:$result_segment_sizes
);
}

Expand All @@ -126,14 +126,14 @@ class OneFlow_UserBaseWithCtrlOp<string mnemonic, list<Trait> traits = []> :
let ctrl_input = (ins Variadic<AnyType>:$ctrl_inputs);
let ctrl_output = (outs Optional<AnyType>:$ctrl_output);
let trait_attrs = (ins
I32ElementsAttr:$operand_segment_sizes,
I32ElementsAttr:$result_segment_sizes
DenseI32ArrayAttr:$operand_segment_sizes,
DenseI32ArrayAttr:$result_segment_sizes
);
}


class OneFlow_ConvolutionBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow convolution operation";
let description = [{
"The convolution operator consumes an input tensor and a filter, and"
Expand All @@ -157,7 +157,7 @@ class OneFlow_ConvolutionBaseOp<string mnemonic, list<Trait> traits = []> :
DefaultValuedAttr<StrAttr, "\"\"">:$tuning_cache
);
let trait_attrs = (ins
I32ElementsAttr:$operand_segment_sizes
DenseI32ArrayAttr:$operand_segment_sizes
);
let has_check_fn = 1;
let has_logical_tensor_desc_infer_fn = 1;
Expand All @@ -168,7 +168,7 @@ class OneFlow_ConvolutionBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_TFPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow pooling operation, align with TensorFlow";
let input = (ins AnyType:$x);
let output = (outs AnyType:$y);
Expand All @@ -189,7 +189,7 @@ class OneFlow_TFPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_TFPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow pooling grad operation, align with TensorFlow";
let input = (ins
AnyType:$x,
Expand All @@ -215,7 +215,7 @@ class OneFlow_TFPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :


class OneFlow_MaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Pooling operation";
let input = (ins
AnyType:$x
Expand All @@ -241,7 +241,7 @@ class OneFlow_MaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_MaxUnpoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Unpooling operation";
let input = (ins
OneFlow_Tensor:$x,
Expand All @@ -264,7 +264,7 @@ class OneFlow_MaxUnpoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AvgPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Average Pooling operation";
let input = (ins
AnyType:$x
Expand All @@ -289,7 +289,7 @@ class OneFlow_AvgPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_MaxPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Pooling Grad operation";
let input = (ins
AnyType:$x,
Expand All @@ -316,7 +316,7 @@ class OneFlow_MaxPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AvgPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Average Pooling Grad operation";
let input = (ins
AnyType:$x,
Expand All @@ -342,7 +342,7 @@ class OneFlow_AvgPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_MaxUnpoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Unpooling Grad operation";
let input = (ins
OneFlow_Tensor:$x,
Expand All @@ -359,7 +359,7 @@ class OneFlow_MaxUnpoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptivePoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive pool operation";
let input = (ins
AnyType:$x
Expand All @@ -375,7 +375,7 @@ class OneFlow_AdaptivePoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptivePoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive pool operation";
let input = (ins
AnyType:$x,
Expand All @@ -392,7 +392,7 @@ class OneFlow_AdaptivePoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_UnaryBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [SameOperandsAndResultType, NoSideEffect])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [SameOperandsAndResultType, NoMemoryEffect])> {
let summary = "";
let input = (ins AnyType:$x);
let output = (outs AnyType:$y);
Expand All @@ -403,7 +403,7 @@ class OneFlow_UnaryBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptiveMaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive max pool operation";
let input = (ins
AnyType:$x
Expand All @@ -422,7 +422,7 @@ class OneFlow_AdaptiveMaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptiveMaxPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive max pool grad operation";
let input = (ins
AnyType:$dy,
Expand Down
4 changes: 3 additions & 1 deletion oneflow/ir/include/OneFlow/OneFlowOps.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ inline std::string GetOpTypeName(T op) {
if (auto alternative_name = dyn_cast<oneflow::HasAlternativeOpTypeName>(op)) {
op_type_name = alternative_name.getOriginalOpTypeName();
}
if (auto user_op = dyn_cast<oneflow::UserOp>(op)) { op_type_name = user_op.op_type_name().str(); }
if (auto user_op = dyn_cast<oneflow::UserOp>(op)) {
op_type_name = user_op.getOpTypeName().str();
}
return op_type_name;
}
ResultRange GetDataOutputResults(Operation* op);
Expand Down
29 changes: 14 additions & 15 deletions oneflow/ir/include/OneFlow/OneFlowOps.td
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def OneFlow_SystemOp : OneFlow_Op<"system", [OneFlow_IsImportCompatible]> {

def F32ElementsAttr : FloatElementsAttr<32>;

def OneFlow_FrozenVariableOp : OneFlow_IROp<"variable_ir", [ConstantLike, NoSideEffect]> {
def OneFlow_FrozenVariableOp : OneFlow_IROp<"variable_ir", [ConstantLike, NoMemoryEffect]> {
let summary = "Auxiliary variable op for constant folding, only exists in IR.";
let arguments = (ins
F32ElementsAttr:$value,
Expand All @@ -66,7 +66,7 @@ def OneFlow_FrozenVariableOp : OneFlow_IROp<"variable_ir", [ConstantLike, NoSide
let hasFolder = 1;
}

def OneFlow_Add2Op : OneFlow_BaseOp<"add_n2", [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>, DeclareOpInterfaceMethods<AlternativeOpTypeNameInterface>, DeclareOpInterfaceMethods<NCHWCompatibleInterface>]> {
def OneFlow_Add2Op : OneFlow_BaseOp<"add_n2", [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>, DeclareOpInterfaceMethods<AlternativeOpTypeNameInterface>, DeclareOpInterfaceMethods<NCHWCompatibleInterface>]> {
let summary = "";
let input = (ins
AnyType:$in0,
Expand Down Expand Up @@ -100,10 +100,10 @@ def OneFlow_VariableOp : OneFlow_ConcreteSystemOp<"variable", [OneFlow_TensorSou
let custom_attrs = (ins
ShapeAttr:$shape,
OptionalAttr<OneFlow_DataType>:$data_type,
DefaultValuedAttr<StrAttr, "\"weight\"">:$model_name,
DefaultValuedAttr<F32Attr, "0.0f">:$l1_regularization,
DefaultValuedAttr<F32Attr, "0.0f">:$l2_regularization,
DefaultValuedAttr<BoolAttr, "true">:$trainable,
OptionalAttr<StrAttr>:$model_name,
OptionalAttr<F32Attr>:$l1_regularization,
OptionalAttr<F32Attr>:$l2_regularization,
OptionalAttr<BoolAttr>:$trainable,
OptionalAttr<F32Attr>:$float_initializer,
OptionalAttr<SI64Attr>:$integer_initializer,
OptionalAttr<SBP_ParallelSignatureAttr>:$parallel
Expand Down Expand Up @@ -147,28 +147,27 @@ def OneFlow_Job : Op<OneFlow_Dialect, "job", [FunctionOpInterface, IsolatedFromA
let arguments = (ins
SymbolNameAttr:$sym_name,
TypeAttrOf<FunctionType>:$function_type,
OptionalAttr<StrAttr>:$sym_visibility
OptionalAttr<StrAttr>:$sym_visibility,
OptionalAttr<DictArrayAttr>:$arg_attrs,
OptionalAttr<DictArrayAttr>:$res_attrs
);

let builders = [OpBuilder<(ins
"StringRef":$sym_name, "FunctionType":$function_type)
>];
"StringRef":$sym_name, "FunctionType":$function_type,
CArg<"ArrayRef<NamedAttribute>", "{}">:$attrs
)>];

let extraClassDeclaration = [{
bool isDeclaration() { return isExternal(); }

FunctionType getFunctionType() { return function_type(); }

TypeAttr getFunctionTypeAttr() { return function_typeAttr(); }

ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }

ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }

LogicalResult verifyType() {
auto type = getFunctionTypeAttr().getValue();
if (!type.isa<FunctionType>())
return emitOpError("requires '" + getTypeAttrName() +
return emitOpError("requires '" + getFunctionTypeAttrName().str() +
"' attribute of function type");
return success();
}
Expand All @@ -178,7 +177,7 @@ def OneFlow_Job : Op<OneFlow_Dialect, "job", [FunctionOpInterface, IsolatedFromA
let hasVerifier = 1;
}

def OneFlow_ReturnOp : Op<OneFlow_Dialect, "return", [NoSideEffect, HasParent<"Job">,
def OneFlow_ReturnOp : Op<OneFlow_Dialect, "return", [NoMemoryEffect, HasParent<"Job">,
MemRefsNormalizable, ReturnLike, Terminator]> {
let summary = "return operation";
let description = [{
Expand Down
Loading