Renaming util.initializer.return to util.return.

Progress on #16187.
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/link_executables.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/link_executables.mlir
index 7812df7..25afd64 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/link_executables.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/link_executables.mlir
@@ -100,7 +100,7 @@
   hal.command_buffer.dispatch.symbol<%cmd : !hal.command_buffer> target(@dispatch_0::@spirv::@dispatch_0) workgroups([%c1, %c1, %c1])
   hal.command_buffer.dispatch.symbol<%cmd : !hal.command_buffer> target(@dispatch_1::@spirv::@dispatch_1) workgroups([%c1, %c1, %c1])
   hal.command_buffer.dispatch.symbol<%cmd : !hal.command_buffer> target(@dispatch_2::@spirv::@dispatch_2) workgroups([%c1, %c1, %c1])
-  util.initializer.return
+  util.return
 }
 
 //  CHECK-NOT: hal.executable private @dispatch_0
diff --git a/compiler/src/iree/compiler/Codegen/VMVX/test/link_executables.mlir b/compiler/src/iree/compiler/Codegen/VMVX/test/link_executables.mlir
index 93425d8..eb679d4 100644
--- a/compiler/src/iree/compiler/Codegen/VMVX/test/link_executables.mlir
+++ b/compiler/src/iree/compiler/Codegen/VMVX/test/link_executables.mlir
@@ -93,7 +93,7 @@
   hal.command_buffer.dispatch.symbol<%cmd : !hal.command_buffer> target(@dispatch_0::@vmvx::@dispatch_0) workgroups([%c1, %c1, %c1])
   hal.command_buffer.dispatch.symbol<%cmd : !hal.command_buffer> target(@dispatch_1::@vmvx::@dispatch_1) workgroups([%c1, %c1, %c1])
   hal.command_buffer.dispatch.symbol<%cmd : !hal.command_buffer> target(@dispatch_2::@vmvx::@dispatch_2) workgroups([%c1, %c1, %c1])
-  util.initializer.return
+  util.return
 }
 
 // All executables (including their interfaces and entry points) should be
diff --git a/compiler/src/iree/compiler/ConstEval/test/compile_regressions.mlir b/compiler/src/iree/compiler/ConstEval/test/compile_regressions.mlir
index 903ed6c..72064e4 100644
--- a/compiler/src/iree/compiler/ConstEval/test/compile_regressions.mlir
+++ b/compiler/src/iree/compiler/ConstEval/test/compile_regressions.mlir
@@ -42,7 +42,7 @@
       linalg.yield %2 : i32
     } -> tensor<4xi32>
     util.global.store %1, @hoisted : tensor<4xi32>
-    util.initializer.return
+    util.return
   }
 }
 
diff --git a/compiler/src/iree/compiler/ConstEval/test/failing.mlir b/compiler/src/iree/compiler/ConstEval/test/failing.mlir
index 71edad7..c2fb16c 100644
--- a/compiler/src/iree/compiler/ConstEval/test/failing.mlir
+++ b/compiler/src/iree/compiler/ConstEval/test/failing.mlir
@@ -15,6 +15,6 @@
     %offset = util.global.load @offset : f64
     %sum = arith.addf %cst, %offset : f64
     util.global.store %sum, @hoisted : f64
-    util.initializer.return
+    util.return
   }
 }
diff --git a/compiler/src/iree/compiler/ConstEval/test/jit_globals.mlir b/compiler/src/iree/compiler/ConstEval/test/jit_globals.mlir
index 23be518..f662751 100644
--- a/compiler/src/iree/compiler/ConstEval/test/jit_globals.mlir
+++ b/compiler/src/iree/compiler/ConstEval/test/jit_globals.mlir
@@ -36,7 +36,7 @@
       linalg.yield %4 : f32
     } -> tensor<5x6xf32>
     util.global.store %3, @hoisted : tensor<5x6xf32>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -52,7 +52,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2, 2]> : tensor<2xi32>
     util.global.store %cst, @hoisted : tensor<2xi32>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -69,7 +69,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<2.0e+2> : tensor<5x6xf16>
     util.global.store %cst, @hoisted : tensor<5x6xf16>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -86,7 +86,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<2.0e+2> : tensor<5x6xbf16>
     util.global.store %cst, @hoisted : tensor<5x6xbf16>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -102,7 +102,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2.0e+2, 3.2e+3]> : tensor<2xf32>
     util.global.store %cst, @hoisted : tensor<2xf32>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -118,7 +118,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2.0e+2, 3.2e+3]> : tensor<2xf64>
     util.global.store %cst, @hoisted : tensor<2xf64>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -137,7 +137,7 @@
     %cst = arith.constant dense<[0, 1, 0, 1, 1, 0]> : tensor<6xi8>
     %casted = arith.trunci %cst : tensor<6xi8> to tensor<6xi1>
     util.global.store %casted, @hoisted : tensor<6xi1>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -153,7 +153,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<3> : tensor<5x6xi4>
     util.global.store %cst, @hoisted : tensor<5x6xi4>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -169,7 +169,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2, 3]> : tensor<2xi8>
     util.global.store %cst, @hoisted : tensor<2xi8>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -185,7 +185,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2, 3]> : tensor<2xi16>
     util.global.store %cst, @hoisted : tensor<2xi16>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -201,7 +201,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2, 3]> : tensor<2xi32>
     util.global.store %cst, @hoisted : tensor<2xi32>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -217,7 +217,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<[2, 3]> : tensor<2xi64>
     util.global.store %cst, @hoisted : tensor<2xi64>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -234,7 +234,7 @@
   util.initializer attributes {iree.compiler.consteval} {
     %cst = arith.constant dense<2> : tensor<2xi64>
     util.global.store %cst, @hoisted : tensor<2xi64>
-    util.initializer.return
+    util.return
   }
 }
 
@@ -260,6 +260,6 @@
       linalg.yield %2 : i8
     } -> tensor<5x6xi8>
     util.global.store %1, @hoisted : tensor<5x6xi8>
-    util.initializer.return
+    util.return
   }
 }
diff --git a/compiler/src/iree/compiler/ConstEval/test/scalar_values.mlir b/compiler/src/iree/compiler/ConstEval/test/scalar_values.mlir
index 513d0e9..633c639 100644
--- a/compiler/src/iree/compiler/ConstEval/test/scalar_values.mlir
+++ b/compiler/src/iree/compiler/ConstEval/test/scalar_values.mlir
@@ -14,7 +14,7 @@
     %offset = util.global.load @offset : i8
     %sum = arith.addi %cst, %offset : i8
     util.global.store %sum, @hoisted : i8
-    util.initializer.return
+    util.return
   }
 }
 
@@ -33,7 +33,7 @@
     %offset = util.global.load @offset : i16
     %sum = arith.addi %cst, %offset : i16
     util.global.store %sum, @hoisted : i16
-    util.initializer.return
+    util.return
   }
 }
 
@@ -52,7 +52,7 @@
     %offset = util.global.load @offset : i32
     %sum = arith.addi %cst, %offset : i32
     util.global.store %sum, @hoisted : i32
-    util.initializer.return
+    util.return
   }
 }
 
@@ -71,7 +71,7 @@
     %offset = util.global.load @offset : i64
     %sum = arith.addi %cst, %offset : i64
     util.global.store %sum, @hoisted : i64
-    util.initializer.return
+    util.return
   }
 }
 
@@ -90,6 +90,6 @@
     %offset = util.global.load @offset : f32
     %sum = arith.addf %cst, %offset : f32
     util.global.store %sum, @hoisted : f32
-    util.initializer.return
+    util.return
   }
 }
diff --git a/compiler/src/iree/compiler/Dialect/Flow/Transforms/ExportBenchmarkFuncs.cpp b/compiler/src/iree/compiler/Dialect/Flow/Transforms/ExportBenchmarkFuncs.cpp
index 71e83f4..ec66bed 100644
--- a/compiler/src/iree/compiler/Dialect/Flow/Transforms/ExportBenchmarkFuncs.cpp
+++ b/compiler/src/iree/compiler/Dialect/Flow/Transforms/ExportBenchmarkFuncs.cpp
@@ -85,7 +85,7 @@
   // util.global.store
   initializerBuilder.create<IREE::Util::GlobalStoreOp>(
       loc, barrierOp.getResult(0), globalOp.getName());
-  initializerBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+  initializerBuilder.create<IREE::Util::ReturnOp>(loc);
 
   return globalOp;
 }
diff --git a/compiler/src/iree/compiler/Dialect/Flow/Transforms/test/deduplicate_executables.mlir b/compiler/src/iree/compiler/Dialect/Flow/Transforms/test/deduplicate_executables.mlir
index c36afc9..c28ffef 100644
--- a/compiler/src/iree/compiler/Dialect/Flow/Transforms/test/deduplicate_executables.mlir
+++ b/compiler/src/iree/compiler/Dialect/Flow/Transforms/test/deduplicate_executables.mlir
@@ -72,7 +72,7 @@
   // CHECK: {{.*}} = flow.dispatch @duplicate_executables_ex_0::@duplicate_executables_entry_0(%[[CST]]) : (tensor<4xf32>) -> tensor<4xf32>
   %0 = flow.dispatch @duplicate_executables_ex_1::@duplicate_executables_entry_1(%cst) : (tensor<4xf32>) -> tensor<4xf32>
   util.optimization_barrier %0 : tensor<4xf32>
-  util.initializer.return
+  util.return
 }
 
 // -----
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/DumpExecutableBenchmarks.cpp b/compiler/src/iree/compiler/Dialect/HAL/Transforms/DumpExecutableBenchmarks.cpp
index 473c392..ec7ec71 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/DumpExecutableBenchmarks.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/DumpExecutableBenchmarks.cpp
@@ -194,7 +194,7 @@
 
   initBuilder.create<IREE::Util::GlobalStoreOp>(loc, allocateOp.getResult(),
                                                 globalOp.getNameAttr());
-  initBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+  initBuilder.create<IREE::Util::ReturnOp>(loc);
 
   return globalOp;
 }
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeDispatchInstrumentation.cpp b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeDispatchInstrumentation.cpp
index b48f7c9..e2c6089 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeDispatchInstrumentation.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeDispatchInstrumentation.cpp
@@ -152,7 +152,7 @@
           /*uninitialized=*/true, /*affinity=*/nullptr);
       initializerBuilder.create<IREE::Util::GlobalStoreOp>(loc, buffer,
                                                            globalOp);
-      initializerBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+      initializerBuilder.create<IREE::Util::ReturnOp>(loc);
     }
 
     FlatbufferBuilder metadataBuilder;
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp
index 3620e52..f48183e 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeResourceCaches.cpp
@@ -131,7 +131,7 @@
         loc, layoutType, device, flags, bindingAttrs);
     blockBuilder.create<IREE::Util::GlobalStoreOp>(loc, layout,
                                                    globalOp.getName());
-    blockBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+    blockBuilder.create<IREE::Util::ReturnOp>(loc);
 
     return globalOp;
   }
@@ -186,7 +186,7 @@
         setLayoutValues);
     blockBuilder.create<IREE::Util::GlobalStoreOp>(loc, layout,
                                                    globalOp.getName());
-    blockBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+    blockBuilder.create<IREE::Util::ReturnOp>(loc);
 
     return globalOp;
   }
@@ -283,7 +283,7 @@
     auto executableValue = switchOp.getResult(0);
     blockBuilder.create<IREE::Util::GlobalStoreOp>(loc, executableValue,
                                                    globalOp.getName());
-    blockBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+    blockBuilder.create<IREE::Util::ReturnOp>(loc);
   }
 
   // Inlines a constant block as a function in |moduleBuilder| and then inserts
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MemoizeDeviceQueries.cpp b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MemoizeDeviceQueries.cpp
index 1bc5ae0..c4184b2 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/MemoizeDeviceQueries.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/MemoizeDeviceQueries.cpp
@@ -101,7 +101,7 @@
                                                     okGlobalOp.getName());
       funcBuilder.create<IREE::Util::GlobalStoreOp>(
           fusedLoc, queryOp.getValue(), valueGlobalOp.getName());
-      funcBuilder.create<IREE::Util::InitializerReturnOp>(fusedLoc);
+      funcBuilder.create<IREE::Util::ReturnOp>(fusedLoc);
 
       for (auto queryOp : queryOps) {
         OpBuilder replaceBuilder(queryOp);
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir b/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir
index ce67b16..3701456 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir
+++ b/compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_resource_caches.mlir
@@ -250,7 +250,7 @@
   %device = hal.devices.get %c0 : !hal.device
   %descriptor_set_layout = hal.descriptor_set_layout.create device(%device : !hal.device) flags("None") bindings([#hal.descriptor_set.binding<0, storage_buffer>, #hal.descriptor_set.binding<1, storage_buffer>]) : !hal.descriptor_set_layout
   util.global.store %descriptor_set_layout, @_descriptor_set_layout_0 : !hal.descriptor_set_layout
-  util.initializer.return
+  util.return
 }
 
 util.global private @_pipeline_layout_0 : !hal.pipeline_layout
@@ -260,7 +260,7 @@
   %device = hal.devices.get %c0 : !hal.device
   %pipeline_layout = hal.pipeline_layout.create device(%device : !hal.device) push_constants(0) layouts([%_descriptor_set_layout_0]) : !hal.pipeline_layout
   util.global.store %pipeline_layout, @_pipeline_layout_0 : !hal.pipeline_layout
-  util.initializer.return
+  util.return
 }
 
 util.global private @_executable_exe : !hal.executable
@@ -281,7 +281,7 @@
     scf.yield %null : !hal.executable
   }
   util.global.store %selected, @_executable_exe : !hal.executable
-  util.initializer.return
+  util.return
 }
 
 hal.executable @exe {
diff --git a/compiler/src/iree/compiler/Dialect/Stream/Conversion/UtilToStream/Patterns.cpp b/compiler/src/iree/compiler/Dialect/Stream/Conversion/UtilToStream/Patterns.cpp
index dcab2a0..a9b45b7 100644
--- a/compiler/src/iree/compiler/Dialect/Stream/Conversion/UtilToStream/Patterns.cpp
+++ b/compiler/src/iree/compiler/Dialect/Stream/Conversion/UtilToStream/Patterns.cpp
@@ -142,7 +142,7 @@
           globalOp.getLoc(), initialValue, resourceOp.getSymName());
       rewriter.create<IREE::Util::GlobalStoreOp>(
           globalOp.getLoc(), initialValueSize, resourceSizeOp.getSymName());
-      rewriter.create<IREE::Util::InitializerReturnOp>(globalOp.getLoc());
+      rewriter.create<IREE::Util::ReturnOp>(globalOp.getLoc());
     }
 
     expansionState->globalMap[globalOp.getSymName()] = ExpandedGlobalResource{
@@ -256,7 +256,7 @@
       });
 
   conversionTarget
-      .addLegalOp<IREE::Util::InitializerOp, IREE::Util::InitializerReturnOp>();
+      .addLegalOp<IREE::Util::InitializerOp, IREE::Util::ReturnOp>();
   conversionTarget.addDynamicallyLegalOp<IREE::Util::GlobalOp>(
       [&](IREE::Util::GlobalOp op) {
         return typeConverter.isLegal(op.getType()) &&
diff --git a/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/dump_statistics.mlir b/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/dump_statistics.mlir
index e7c7aa0..1e960f8 100644
--- a/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/dump_statistics.mlir
+++ b/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/dump_statistics.mlir
@@ -43,7 +43,7 @@
   %did_map, %result = stream.resource.try_map %1[%c0] : !util.buffer -> i1, !stream.resource<constant>{%c192}
   util.global.store %result, @_constant : !stream.resource<constant>
   util.global.store %0, @_constant__timepoint : !stream.timepoint
-  util.initializer.return
+  util.return
 }
 
 stream.executable private @func_a_ex_0 {
diff --git a/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/elide_timepoints_coverage.mlir b/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/elide_timepoints_coverage.mlir
index 48280db..c21c390 100644
--- a/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/elide_timepoints_coverage.mlir
+++ b/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/elide_timepoints_coverage.mlir
@@ -12,7 +12,7 @@
   util.global.store %t0, @global0 : !stream.timepoint
   %t1 = stream.cmd.execute await(%t0) => with() {} => !stream.timepoint
   util.global.store %t1, @global1 : !stream.timepoint
-  util.initializer.return
+  util.return
 }
 
 // CHECK-LABEL: @initializedGlobals
diff --git a/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/materialize_builtins.mlir b/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/materialize_builtins.mlir
index 3f8c39e..92a0627 100644
--- a/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/materialize_builtins.mlir
+++ b/compiler/src/iree/compiler/Dialect/Stream/Transforms/test/materialize_builtins.mlir
@@ -82,7 +82,7 @@
   %c0_i64 = arith.constant 0 : i64
   // CHECK: = stream.async.dispatch @__builtin_splat_i64::@__builtin_splat_i64
   %0 = stream.async.splat %c0_i64 : i64 -> !stream.resource<*>{%c128}
-  util.initializer.return
+  util.return
 }
 
 // CHECK: stream.executable private @__builtin_splat_i64
diff --git a/compiler/src/iree/compiler/Dialect/Util/Conversion/MemRefToUtil/Patterns.cpp b/compiler/src/iree/compiler/Dialect/Util/Conversion/MemRefToUtil/Patterns.cpp
index 16a4c85..7b870e6 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Conversion/MemRefToUtil/Patterns.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/Conversion/MemRefToUtil/Patterns.cpp
@@ -148,8 +148,7 @@
         alignmentAttr, /*mimeType=*/nullptr);
     initializerBuilder.create<IREE::Util::GlobalStoreOp>(
         globalOp.getLoc(), constantOp.getResult(), newOp.getName());
-    initializerBuilder.create<IREE::Util::InitializerReturnOp>(
-        globalOp.getLoc());
+    initializerBuilder.create<IREE::Util::ReturnOp>(globalOp.getLoc());
 
     return success();
   }
diff --git a/compiler/src/iree/compiler/Dialect/Util/Conversion/test/structural_ops.mlir b/compiler/src/iree/compiler/Dialect/Util/Conversion/test/structural_ops.mlir
index b6d910b..357d55f 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Conversion/test/structural_ops.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Conversion/test/structural_ops.mlir
@@ -11,7 +11,7 @@
   cf.br ^bb1(%value : memref<?xi8>)
 // CHECK: ^bb1(%[[ARG:.+]]: !util.buffer)
 ^bb1(%block_arg: memref<?xi8>):
-  util.initializer.return
+  util.return
 }
 func.func private @extern() -> memref<?xi8>
 
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/UtilDialect.cpp b/compiler/src/iree/compiler/Dialect/Util/IR/UtilDialect.cpp
index e7f9be2..217dcac 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/UtilDialect.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/UtilDialect.cpp
@@ -65,7 +65,7 @@
   }
 
   void handleTerminator(Operation *op, Block *newDest) const final {
-    auto returnOp = dyn_cast<IREE::Util::InitializerReturnOp>(op);
+    auto returnOp = dyn_cast<IREE::Util::ReturnOp>(op);
     if (!returnOp)
       return;
     // util.initialize.return takes no args - just branch to the new block.
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/UtilOpFolders.cpp b/compiler/src/iree/compiler/Dialect/Util/IR/UtilOpFolders.cpp
index f76c1ff..4588d03 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/UtilOpFolders.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/UtilOpFolders.cpp
@@ -538,7 +538,7 @@
     if (op.getBody().getBlocks().size() != 1)
       return failure();
     auto &block = op.getBody().front();
-    if (block.empty() || isa<InitializerReturnOp>(block.front())) {
+    if (block.empty() || isa<IREE::Util::ReturnOp>(block.front())) {
       rewriter.eraseOp(op);
       return success();
     }
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.cpp b/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.cpp
index 0ef4383..880a57d 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.cpp
@@ -1014,6 +1014,32 @@
 }
 
 //===----------------------------------------------------------------------===//
+// util.return
+//===----------------------------------------------------------------------===//
+
+LogicalResult ReturnOp::verify() {
+  Operation *op = getOperation();
+  auto parentOp = cast<FunctionOpInterface>(op->getParentOp());
+  auto expectedTypes = parentOp.getResultTypes();
+  if (getNumOperands() != expectedTypes.size()) {
+    return emitOpError("has ")
+           << getNumOperands()
+           << " operands, but enclosing function-like op returns "
+           << expectedTypes.size();
+  }
+  for (auto [i, expectedType, actualType] :
+       llvm::enumerate(expectedTypes, getOperandTypes())) {
+    if (expectedType != actualType) {
+      return emitOpError() << "type of return operand " << i << " ("
+                           << actualType
+                           << ") doesn't match function result type ("
+                           << expectedType << ")";
+    }
+  }
+  return success();
+}
+
+//===----------------------------------------------------------------------===//
 // util.global
 //===----------------------------------------------------------------------===//
 
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.td b/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.td
index ab2c669..5260c0d 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.td
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/UtilOps.td
@@ -63,10 +63,10 @@
 def Util_CastOp : Util_PureOp<"cast", [
   DeclareOpInterfaceMethods<CastOpInterface>,
   DeclareOpInterfaceMethods<Util_TiedOpInterface, [
-      "getTiedResult",
-      "getTiedResultOperand",
-      "getTiedResultOperandIndex",
-      "getTiedResultOperandIndices",
+    "getTiedResult",
+    "getTiedResultOperand",
+    "getTiedResultOperandIndex",
+    "getTiedResultOperandIndices",
   ]>,
 ]> {
   let summary = [{casts one util type to another ala static_cast/dynamic_cast}];
@@ -294,7 +294,7 @@
 } // OpGroupRangeArithmeticOps
 
 //===----------------------------------------------------------------------===//
-// Address/offset Arithmetic
+// Address/offset arithmetic
 //===----------------------------------------------------------------------===//
 
 def OpGroupAddressOffsetArithmeticOps : OpDocGroup {
@@ -306,7 +306,7 @@
 
 def Util_AlignOp : Util_PureOp<"align", [
   SameOperandsAndResultType
-  ]> {
+]> {
   let summary = "Aligns up to a power-of-two alignment if required";
   let description = [{
      Aligns |value| up to the given power-of-two |alignment| if required.
@@ -474,10 +474,10 @@
 }
 
 def Util_UnreachableOp : Util_Op<"unreachable", [
-    NoMemoryEffect,
-    ReturnLike,
-    Terminator
-  ]> {
+  NoMemoryEffect,
+  ReturnLike,
+  Terminator
+]> {
   let summary = [{unreachable assertion op}];
   let description = [{
     Signals to the compiler that the parent block should not be reachable.
@@ -516,11 +516,11 @@
 let opDocGroup = OpGroupStructuralOps in {
 
 def Util_InitializerOp : Util_Op<"initializer", [
-    IsolatedFromAbove,
-    FunctionOpInterface,
-    CallableOpInterface,
-    Util_InitializerOpInterface,
-  ]> {
+  IsolatedFromAbove,
+  FunctionOpInterface,
+  CallableOpInterface,
+  Util_InitializerOpInterface,
+]> {
   let summary = [{global initialization function}];
   let description = [{
     A function that is called in definition order upon module initialization.
@@ -579,8 +579,10 @@
   let hasCanonicalizer = 1;
 }
 
-def Util_InitializerReturnOp : Util_Op<"initializer.return", [
-  HasParent<"IREE::Util::InitializerOp">,
+def Util_ReturnOp : Util_Op<"return", [
+  ParentOneOf<[
+    "IREE::Util::InitializerOp",
+  ]>,
   Pure,
   ReturnLike,
   Terminator,
@@ -590,9 +592,22 @@
     Returns control from an initializer function.
   }];
 
-  let arguments = (ins);
+  let arguments = (ins
+    Variadic<AnyType>:$operands
+  );
 
-  let assemblyFormat = "attr-dict";
+  let builders = [
+    OpBuilder<(ins), [{
+      build($_builder, $_state, std::nullopt);
+    }]>,
+  ];
+
+  let assemblyFormat = [{
+    attr-dict
+    ($operands^ `:` type($operands))?
+  }];
+
+  let hasVerifier = 1;
 }
 
 } // OpGroupStructuralOps
@@ -821,8 +836,9 @@
 
 let opDocGroup = OpGroupListOps in {
 
-def Util_ListCreateOp : Util_PureOp<
-    "list.create", [MemoryEffects<[MemAlloc]>]> {
+def Util_ListCreateOp : Util_PureOp<"list.create", [
+  MemoryEffects<[MemAlloc]>,
+]> {
   let summary = [{creates a new empty list}];
   let description = [{
     Creates a new empty list with an optional initial capacity.
@@ -838,7 +854,9 @@
   let assemblyFormat = "($initial_capacity^)? attr-dict `:` qualified(type($result))";
 }
 
-def Util_ListSizeOp : Util_Op<"list.size", [MemoryEffects<[MemRead]>]> {
+def Util_ListSizeOp : Util_Op<"list.size", [
+  MemoryEffects<[MemRead]>,
+]> {
   let summary = [{the size of the list in elements}];
   let description = [{
     Returns the current size of the list in elements.
@@ -854,7 +872,9 @@
   let assemblyFormat = "operands attr-dict `:` qualified(type($list))";
 }
 
-def Util_ListResizeOp : Util_Op<"list.resize", [MemoryEffects<[MemWrite]>]> {
+def Util_ListResizeOp : Util_Op<"list.resize", [
+  MemoryEffects<[MemWrite]>,
+]> {
   let summary = [{resizes the list to a new count in elements}];
   let description = [{
     Resizes the list to contain `new_size` elements. This will either truncate
@@ -870,7 +890,9 @@
   let assemblyFormat = "operands attr-dict `:` qualified(type($list))";
 }
 
-def Util_ListGetOp : Util_Op<"list.get", [MemoryEffects<[MemRead]>]> {
+def Util_ListGetOp : Util_Op<"list.get", [
+  MemoryEffects<[MemRead]>,
+]> {
   let summary = [{element accessor}];
   let description = [{
     Returns the value of the element at the given index. Note that the value
@@ -890,7 +912,9 @@
   let hasVerifier = 1;
 }
 
-def Util_ListSetOp : Util_Op<"list.set", [MemoryEffects<[MemWrite]>]> {
+def Util_ListSetOp : Util_Op<"list.set", [
+  MemoryEffects<[MemWrite]>,
+]> {
   let summary = [{element mutator}];
   let description = [{
     Sets the element at the given index to the new value.
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/test/global_folding.mlir b/compiler/src/iree/compiler/Dialect/Util/IR/test/global_folding.mlir
index 331a0ae..5edef3c 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/test/global_folding.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/test/global_folding.mlir
@@ -6,7 +6,7 @@
 util.initializer {
   %0 = arith.constant dense<4> : tensor<4xi32>
   util.global.store %0, @v_initialized : tensor<4xi32>
-  util.initializer.return
+  util.return
 }
 
 // -----
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/test/global_ops.mlir b/compiler/src/iree/compiler/Dialect/Util/IR/test/global_ops.mlir
index 551f4fe..b19b1b0 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/test/global_ops.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/test/global_ops.mlir
@@ -35,7 +35,7 @@
   %0 = func.call @initializer() : () -> tensor<4xi32>
   // CHECK-NEXT: util.global.store %[[VALUE]], @v_initialized : tensor<4xi32>
   util.global.store %0, @v_initialized : tensor<4xi32>
-  util.initializer.return
+  util.return
 }
 func.func private @initializer() -> tensor<4xi32>
 
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_folding.mlir b/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_folding.mlir
index 8eeaec5..875b771 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_folding.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_folding.mlir
@@ -2,5 +2,5 @@
 
 // CHECK-NOT: util.initializer
 util.initializer {
-  util.initializer.return
+  util.return
 }
diff --git a/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_ops.mlir b/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_ops.mlir
index ec45966..3de5a58 100644
--- a/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_ops.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/IR/test/structural_ops.mlir
@@ -1,19 +1,19 @@
 // RUN: iree-opt --split-input-file %s | iree-opt --split-input-file | FileCheck %s
 
 //      CHECK: util.initializer {
-// CHECK-NEXT:   util.initializer.return
+// CHECK-NEXT:   util.return
 // CHECK-NEXT: }
 util.initializer {
-  util.initializer.return
+  util.return
 }
 
 // -----
 
 //      CHECK: util.initializer attributes {foo} {
-// CHECK-NEXT:   util.initializer.return
+// CHECK-NEXT:   util.return
 // CHECK-NEXT: }
 util.initializer attributes {foo} {
-  util.initializer.return
+  util.return
 }
 
 // -----
@@ -26,6 +26,6 @@
   cf.br ^bb1(%zero: i32)
   // CHECK-NEXT: ^bb1(%0: i32):
 ^bb1(%0: i32):
-  // CHECK-NEXT:   util.initializer.return
-  util.initializer.return
+  // CHECK-NEXT:   util.return
+  util.return
 }
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/CombineInitializers.cpp b/compiler/src/iree/compiler/Dialect/Util/Transforms/CombineInitializers.cpp
index 48e9f04..e8768d0 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/CombineInitializers.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/CombineInitializers.cpp
@@ -70,7 +70,7 @@
       builder.setInsertionPointToEnd(&newOp.back());
       initializerOp.erase();
     }
-    builder.create<IREE::Util::InitializerReturnOp>(fusedLoc);
+    builder.create<IREE::Util::ReturnOp>(fusedLoc);
   }
 };
 
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/HoistIntoGlobals.cpp b/compiler/src/iree/compiler/Dialect/Util/Transforms/HoistIntoGlobals.cpp
index b489e7f..b999a83 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/HoistIntoGlobals.cpp
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/HoistIntoGlobals.cpp
@@ -267,7 +267,7 @@
       builder.create<GlobalStoreOp>(loc, clonedResult, globalSymbol);
     }
 
-    builder.create<InitializerReturnOp>(loc);
+    builder.create<IREE::Util::ReturnOp>(loc);
     return success();
   }
 
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/annotate_op_ordinals.mlir b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/annotate_op_ordinals.mlir
index 37b613c..4236330 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/annotate_op_ordinals.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/annotate_op_ordinals.mlir
@@ -15,8 +15,8 @@
   // CHECK-NEXT: cf.br {{.+}} {util.ordinal = 5 : index}
   cf.br ^bb2
 ^bb2:
-  // CHECK: util.initializer.return {util.ordinal = 6 : index}
-  util.initializer.return
+  // CHECK: util.return {util.ordinal = 6 : index}
+  util.return
 }
 
 // CHECK: util.global private mutable @globalB {util.ordinal = 7 : index}
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/combine_initializers.mlir b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/combine_initializers.mlir
index da526d1..a69a09d 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/combine_initializers.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/combine_initializers.mlir
@@ -9,7 +9,7 @@
 util.initializer {
   %value0 = func.call @extern() : () -> index
   util.global.store %value0, @global0 : index
-  util.initializer.return
+  util.return
 }
 // CHECK-NEXT: util.global private @global1 : index
 util.global private @global1 : index
@@ -20,7 +20,7 @@
   util.global.store %value1, @global1 : index
   %value2 = func.call @extern() : () -> index
   util.global.store %value2, @global2 : index
-  util.initializer.return
+  util.return
 }
 // CHECK-NEXT: util.initializer {
 // CHECK-NEXT: %[[VALUE0:.+]] = func.call @extern()
@@ -29,7 +29,7 @@
 // CHECK-NEXT: util.global.store %[[VALUE1]], @global1
 // CHECK-NEXT: %[[VALUE2:.+]] = func.call @extern()
 // CHECK-NEXT: util.global.store %[[VALUE2]], @global2
-// CHECK-NEXT: util.initializer.return
+// CHECK-NEXT: util.return
 
 // CHECK-LABEL: @orderedCombining
 func.func @orderedCombining(%arg0: index) -> (index, index, index) {
@@ -59,14 +59,14 @@
   util.global.store %c200, @globalA : index
   cf.br ^bb3
 ^bb3:
-  util.initializer.return
+  util.return
 }
 // CHECK-NEXT: util.global private @globalB : index
 util.global private @globalB : index
 util.initializer {
   %c300 = arith.constant 300 : index
   util.global.store %c300, @globalB : index
-  util.initializer.return
+  util.return
 }
 // CHECK: util.initializer {
 // CHECK: ^bb1:
@@ -76,5 +76,5 @@
 // CHECK: ^bb3:
 // CHECK:   cf.br ^bb4
 // CHECK: ^bb4:
-// CHECK:   util.initializer.return
+// CHECK:   util.return
 // CHECK: }
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/demote_i64_to_i32.mlir b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/demote_i64_to_i32.mlir
index ad9116c..1aa3b54 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/demote_i64_to_i32.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/demote_i64_to_i32.mlir
@@ -162,7 +162,7 @@
   %0 = func.call @initializer() : () -> tensor<4xi64>
   // CHECK: util.global.store %[[VALUE]], @v_initializer : tensor<4xi32>
   util.global.store %0, @v_initializer : tensor<4xi64>
-  util.initializer.return
+  util.return
 }
 // CHECK: func.func private @initializer() -> tensor<4xi32>
 func.func private @initializer() -> tensor<4xi64>
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fold_globals.mlir b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fold_globals.mlir
index 40451a2..d222ff2 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fold_globals.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fold_globals.mlir
@@ -81,7 +81,7 @@
 util.initializer {
   %c6 = arith.constant 6 : index
   util.global.store %c6, @immutable1 : index
-  util.initializer.return
+  util.return
 }
 func.func @foo(%arg0: index) -> (index, index, index) {
   // CHECK-DAG: %[[C5:.+]] = arith.constant 5
@@ -125,7 +125,7 @@
   %c6 = arith.constant 6 : index
   // CHECK-NOT: util.global.store %c6, @unused1 : index
   util.global.store %c6, @unused1 : index
-  util.initializer.return
+  util.return
 }
 
 // -----
@@ -153,7 +153,7 @@
 util.initializer {
   %c7 = arith.constant 7 : index
   util.global.store %c7, @nondupeCst1 : index
-  util.initializer.return
+  util.return
 }
 func.func @foo() -> (index, index) {
   // CHECK-DAG: %[[C6:.+]] = arith.constant 6 : index
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fuse_globals.mlir b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fuse_globals.mlir
index 8d54bb1..e77f49d 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fuse_globals.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/fuse_globals.mlir
@@ -43,7 +43,7 @@
 util.initializer {
   %0 = "some.op"() : () -> index
   util.global.store %0, @unfusable1 : index
-  util.initializer.return
+  util.return
 }
 
 // -----
@@ -101,7 +101,7 @@
   util.global.store %v, @fusableSubset1 : index
   // CHECK-NEXT: util.global.store %[[V]], @unfusableSubset2
   util.global.store %v, @unfusableSubset2 : index
-  util.initializer.return
+  util.return
 }
 // CHECK: func.func @mutate_unfusable(%[[ARG0:.+]]: index)
 func.func @mutate_unfusable(%arg0: index) {
diff --git a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/hoist_into_globals.mlir b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/hoist_into_globals.mlir
index 74e2a9e..4d8a2aa 100644
--- a/compiler/src/iree/compiler/Dialect/Util/Transforms/test/hoist_into_globals.mlir
+++ b/compiler/src/iree/compiler/Dialect/Util/Transforms/test/hoist_into_globals.mlir
@@ -19,7 +19,7 @@
   // CHECK:   %[[C1:.*]] = arith.constant 1 : i32
   // CHECK:   %[[CE0:.*]] = "iree_unregistered.const_expr"(%[[C0]], %[[C1]])
   // CHECK:   util.global.store %[[CE0]], @[[HOISTED_SYM]] : i32
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
 }
 
@@ -131,14 +131,14 @@
   // CHECK:   %[[C1:.*]] = arith.constant 1 : i32
   // CHECK:   %[[CE0:.*]] = "iree_unregistered.const_expr"(%[[C0]], %[[C1]])
   // CHECK:   util.global.store %[[CE0]], @[[HOISTED_0]] : i32
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
   // CHECK: util.initializer attributes {iree.compiler.consteval} {
   // CHECK:   %[[LOAD_HOISTED_0:.*]] = util.global.load @[[HOISTED_0]] : i32
   // CHECK:   %[[LOAD_LATENT_GLOBAL:.*]] = util.global.load @latent_global : i32
   // CHECK:   %[[CE1:.*]] = "iree_unregistered.const_expr"(%[[LOAD_HOISTED_0]], %[[LOAD_LATENT_GLOBAL]])
   // CHECK:   util.global.store %[[CE1]], @[[HOISTED_1]] : i32
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
 }
 
@@ -163,7 +163,7 @@
   // CHECK:   %[[C1:.*]] = arith.constant 1 : i32
   // CHECK:   %[[CE0:.*]] = "iree_unregistered.const_expr"(%[[C0]], %[[C1]])
   // CHECK:   util.global.store %[[CE0]], @[[HOISTED_0]] : i32
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
 }
 
@@ -192,7 +192,7 @@
   // CHECK:   %[[CE0:.*]] = "iree_unregistered.non_leaf_const_expr"(%[[C0]], %[[C1]])
   // CHECK:   %[[CE1:.*]] = "iree_unregistered.const_expr"(%[[CE0]])
   // CHECK:   util.global.store %[[CE1]], @[[HOISTED]] : i32
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
 }
 
@@ -224,7 +224,7 @@
   // CHECK:         ^bb0(%[[B0:.*]]: i32):
   // CHECK:         arith.addi %[[B0]], %[[C1]]
   // CHECK:       util.global.store %[[CE0]], @[[HOISTED_SYM]] : i32
-  // CHECK:       util.initializer.return
+  // CHECK:       util.return
   // CHECK: }
 }
 
diff --git a/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/ConvertGlobalOps.cpp b/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/ConvertGlobalOps.cpp
index 0c57535..2aacef3 100644
--- a/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/ConvertGlobalOps.cpp
+++ b/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/ConvertGlobalOps.cpp
@@ -38,12 +38,11 @@
   }
 };
 
-struct InitializerReturnOpConversion
-    : public OpConversionPattern<IREE::Util::InitializerReturnOp> {
+struct ReturnOpConversion : public OpConversionPattern<IREE::Util::ReturnOp> {
   using OpConversionPattern::OpConversionPattern;
 
   LogicalResult
-  matchAndRewrite(IREE::Util::InitializerReturnOp op, OpAdaptor adaptor,
+  matchAndRewrite(IREE::Util::ReturnOp op, OpAdaptor adaptor,
                   ConversionPatternRewriter &rewriter) const override {
     rewriter.replaceOpWithNewOp<IREE::VM::ReturnOp>(op);
     return success();
@@ -282,10 +281,10 @@
                                     ConversionTarget &conversionTarget,
                                     TypeConverter &typeConverter,
                                     RewritePatternSet &patterns) {
-  conversionTarget.addIllegalOp<IREE::Util::InitializerOp,
-                                IREE::Util::InitializerReturnOp>();
-  patterns.insert<InitializerOpConversion, InitializerReturnOpConversion>(
-      typeConverter, context);
+  conversionTarget
+      .addIllegalOp<IREE::Util::InitializerOp, IREE::Util::ReturnOp>();
+  patterns.insert<InitializerOpConversion, ReturnOpConversion>(typeConverter,
+                                                               context);
 
   conversionTarget.addIllegalOp<
       IREE::Util::GlobalOp, IREE::Util::GlobalAddressOp,
diff --git a/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/test/global_ops.mlir b/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/test/global_ops.mlir
index eb3618c..f772f94 100644
--- a/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/test/global_ops.mlir
+++ b/compiler/src/iree/compiler/Dialect/VM/Conversion/UtilToVM/test/global_ops.mlir
@@ -24,7 +24,7 @@
 util.initializer {
   %0 = func.call @initializer() : () -> !hal.buffer
   util.global.store %0, @v_initialized : !hal.buffer
-  util.initializer.return
+  util.return
 }
 // CHECK-NEXT: vm.import private @initializer() -> !vm.ref<!hal.buffer>
 func.func private @initializer() -> !hal.buffer
diff --git a/compiler/src/iree/compiler/GlobalOptimization/test/flow_hoist_into_globals.mlir b/compiler/src/iree/compiler/GlobalOptimization/test/flow_hoist_into_globals.mlir
index e8656bf..d02826b 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/test/flow_hoist_into_globals.mlir
+++ b/compiler/src/iree/compiler/GlobalOptimization/test/flow_hoist_into_globals.mlir
@@ -19,7 +19,7 @@
 // CHECK:   %[[CEXPR:.+]] = "iree_unregistered.const_expr"
 // CHECK:   %[[CASTED_GLOBAL:.+]] = flow.tensor.bitcast %[[CEXPR]] : tensor<64xi4> -> tensor<32xi8>
 // CHECK:   util.global.store %[[CASTED_GLOBAL]]
-// CHECK:   util.initializer.return
+// CHECK:   util.return
 
 // -----
 
@@ -52,7 +52,7 @@
   // CHECK:   %[[CE0:.*]] = "iree_unregistered.const_expr"(%[[C0]], %[[C1]])
   // CHECK:   %[[BITCAST_2:.*]] = flow.tensor.bitcast %[[CE0]] : tensor<8xi4> -> tensor<4xi8>
   // CHECK:   util.global.store %[[BITCAST_2]], @[[HOISTED_0]] : tensor<4xi8>
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
   // CHECK: util.initializer attributes {iree.compiler.consteval} {
   // CHECK:   %[[LOAD_HOISTED_0:.*]] = util.global.load @[[HOISTED_0]] : tensor<4xi8>
@@ -61,7 +61,7 @@
   // CHECK:   %[[CE1:.*]] = "iree_unregistered.const_expr"(%[[BITCAST_3]], %[[LOAD_LATENT_GLOBAL]])
   // CHECK:   %[[BITCAST_4:.*]] = flow.tensor.bitcast %[[CE1]] : tensor<8xi4> -> tensor<4xi8>
   // CHECK:   util.global.store %[[BITCAST_4]], @[[HOISTED_1]] : tensor<4xi8>
-  // CHECK:   util.initializer.return
+  // CHECK:   util.return
   // CHECK: }
 }
 
diff --git a/compiler/src/iree/compiler/InputConversion/Common/IREEImportPublic.cpp b/compiler/src/iree/compiler/InputConversion/Common/IREEImportPublic.cpp
index d315caf..e288e3b 100644
--- a/compiler/src/iree/compiler/InputConversion/Common/IREEImportPublic.cpp
+++ b/compiler/src/iree/compiler/InputConversion/Common/IREEImportPublic.cpp
@@ -376,7 +376,7 @@
           srcOp.getLoc(), srcOp.getInitializerAttr(), TypeRange{newType});
       rewriter.create<IREE::Util::GlobalStoreOp>(
           srcOp.getLoc(), callOp.getResult(0), srcOp.getName());
-      rewriter.create<IREE::Util::InitializerReturnOp>(srcOp.getLoc());
+      rewriter.create<IREE::Util::ReturnOp>(srcOp.getLoc());
       rewriter.restoreInsertionPoint(ip);
     }
     return success();
diff --git a/compiler/src/iree/compiler/InputConversion/Common/test/iree_import_public.mlir b/compiler/src/iree/compiler/InputConversion/Common/test/iree_import_public.mlir
index 5aa7bbf..31ad781 100644
--- a/compiler/src/iree/compiler/InputConversion/Common/test/iree_import_public.mlir
+++ b/compiler/src/iree/compiler/InputConversion/Common/test/iree_import_public.mlir
@@ -304,7 +304,7 @@
   // CHECK-NEXT: util.initializer {
   // CHECK-NEXT:   %[[VALUE:.+]] = func.call @initializer() : () -> tensor<4xi32>
   // CHECK-NEXT:   util.global.store %[[VALUE]], @global5 : tensor<4xi32>
-  // CHECK-NEXT:   util.initializer.return
+  // CHECK-NEXT:   util.return
   // CHECK-NEXT: }
   // CHECK: func.func private @initializer() -> tensor<4xi32>
   func.func private @initializer() -> tensor<4xi32>
diff --git a/compiler/src/iree/compiler/Modules/HAL/Inline/Transforms/test/inline_executables.mlir b/compiler/src/iree/compiler/Modules/HAL/Inline/Transforms/test/inline_executables.mlir
index e6dfb34..14f4d28 100644
--- a/compiler/src/iree/compiler/Modules/HAL/Inline/Transforms/test/inline_executables.mlir
+++ b/compiler/src/iree/compiler/Modules/HAL/Inline/Transforms/test/inline_executables.mlir
@@ -27,7 +27,7 @@
       util.initializer {
         %buffer_cst = util.buffer.constant : !util.buffer = dense<[1, 2, 3, 4, 5]> : tensor<5xi32>
         util.global.store %buffer_cst, @global_constant : !util.buffer
-        util.initializer.return
+        util.return
       }
       func.func @dispatch_0(
           %local_memory: !util.buffer,
diff --git a/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/MaterializeExecutables.cpp b/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/MaterializeExecutables.cpp
index abeb574..fb4a603 100644
--- a/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/MaterializeExecutables.cpp
+++ b/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/MaterializeExecutables.cpp
@@ -57,7 +57,7 @@
         loc, status,
         "none of the executable binaries in the module are supported by the "
         "runtime");
-    failBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+    failBuilder.create<IREE::Util::ReturnOp>(loc);
   }
 
   // Exit block takes the loaded executable and stores it.
@@ -67,7 +67,7 @@
     auto executableArg = exitBlock->addArgument(executableType, loc);
     exitBuilder.create<IREE::Util::GlobalStoreOp>(loc, executableArg,
                                                   globalOp.getName());
-    exitBuilder.create<IREE::Util::InitializerReturnOp>(loc);
+    exitBuilder.create<IREE::Util::ReturnOp>(loc);
   }
 
   // Start with the first try.
diff --git a/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/test/materialize_executables.mlir b/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/test/materialize_executables.mlir
index ce4c6e9..5294d5a 100644
--- a/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/test/materialize_executables.mlir
+++ b/compiler/src/iree/compiler/Modules/HAL/Loader/Transforms/test/materialize_executables.mlir
@@ -14,10 +14,10 @@
 // CHECK:   cf.br ^bb4(%[[EXECUTABLE]] : !hal.executable)
 // CHECK: ^bb3:
 // CHECK:   util.status.check_ok
-// CHECK:   util.initializer.return
+// CHECK:   util.return
 // CHECK: ^bb4(%[[STORE_VALUE:.+]]: !hal.executable):
 // CHECK:   util.global.store %[[STORE_VALUE]], @ex0 : !hal.executable
-// CHECK:   util.initializer.return
+// CHECK:   util.return
 // CHECK: }
 hal.executable private @ex0 {
   hal.executable.binary public @binary attributes {data = dense<123> : vector<64xi8>, format = "embedded-elf-x86_64", mime_type = "application/x-elf"}
diff --git a/samples/py_custom_module/main.mlir b/samples/py_custom_module/main.mlir
index 92067b6..ca8648b 100644
--- a/samples/py_custom_module/main.mlir
+++ b/samples/py_custom_module/main.mlir
@@ -8,7 +8,7 @@
     %capacity = arith.constant 25 : index
     %0 = util.list.create %capacity : !util.list<?>
     util.global.store %0, @tokens_list : !util.list<?>
-    util.initializer.return
+    util.return
   }
 
   func.func public @add_tokens(%ids : tensor<?xi32>) -> i32 {