Check in generated VM opcode table (#4092)

* Add generated VM opcode table to java bindings

* Remove unused gentbl symbol

* Move generated file to iree/vm/

* Update CMakeLists.txt and file paths in BUILD file

* Update BUILD file paths

* Move bytecode_op_table.h to a new subdirectory for generated files

* Move generated file to srcs and remove unnecessary copt
diff --git a/iree/vm/BUILD b/iree/vm/BUILD
index f69b517..e613f40 100644
--- a/iree/vm/BUILD
+++ b/iree/vm/BUILD
@@ -13,7 +13,6 @@
 # limitations under the License.
 
 load("//iree/tools:compilation.bzl", "iree_bytecode_module")
-load("//build_tools/bazel:tblgen.bzl", "gentbl")
 
 package(
     default_visibility = ["//visibility:public"],
@@ -179,13 +178,12 @@
         "bytecode_dispatch_util.h",
         "bytecode_module.c",
         "bytecode_module_impl.h",
-        "bytecode_op_table.h",
+        "generated/bytecode_op_table.h",
     ],
     hdrs = [
         "bytecode_module.h",
     ],
     deps = [
-        ":bytecode_op_table_gen",
         ":vm",
         "//iree/base:api",
         "//iree/base:core_headers",
@@ -195,24 +193,24 @@
     ],
 )
 
-# TODO(benvanik): see if we can remove this; not good to have this dep.
-gentbl(
-    name = "bytecode_op_table_gen",
-    tbl_outs = [
-        ("-gen-iree-vm-op-table-defs", "bytecode_op_table.h"),
-    ],
-    tblgen = "//iree/tools:iree-tblgen",
-    td_file = "//iree/compiler/Dialect/VM/IR:VMOps.td",
-    td_srcs = [
-        "//iree/compiler/Dialect/IREE/IR:td_files",
-        "//iree/compiler/Dialect/VM/IR:td_files",
-        "@llvm-project//mlir:OpBaseTdFiles",
-        "@llvm-project//mlir:include/mlir/IR/SymbolInterfaces.td",
-        "@llvm-project//mlir:include/mlir/Interfaces/CallInterfaces.td",
-        "@llvm-project//mlir:include/mlir/Interfaces/ControlFlowInterfaces.td",
-        "@llvm-project//mlir:SideEffectTdFiles",
-    ],
-)
+# TODO(#357): Add a script to update bytecode_op_table.h.
+# gentbl(
+#     name = "bytecode_op_table_gen",
+#     tbl_outs = [
+#         ("-gen-iree-vm-op-table-defs", "bytecode_op_table.h"),
+#     ],
+#     tblgen = "//iree/tools:iree-tblgen",
+#     td_file = "//iree/compiler/Dialect/VM/IR:VMOps.td",
+#     td_srcs = [
+#         "//iree/compiler/Dialect/IREE/IR:td_files",
+#         "//iree/compiler/Dialect/VM/IR:td_files",
+#         "@llvm-project//mlir:OpBaseTdFiles",
+#         "@llvm-project//mlir:include/mlir/IR/SymbolInterfaces.td",
+#         "@llvm-project//mlir:include/mlir/Interfaces/CallInterfaces.td",
+#         "@llvm-project//mlir:include/mlir/Interfaces/ControlFlowInterfaces.td",
+#         "@llvm-project//mlir:SideEffectTdFiles",
+#     ],
+# )
 
 cc_test(
     name = "bytecode_module_test",
diff --git a/iree/vm/CMakeLists.txt b/iree/vm/CMakeLists.txt
index 2546732..dd6d63e 100644
--- a/iree/vm/CMakeLists.txt
+++ b/iree/vm/CMakeLists.txt
@@ -166,7 +166,7 @@
     "bytecode_dispatch_util.h"
     "bytecode_module.c"
     "bytecode_module_impl.h"
-    "bytecode_op_table.h"
+    "generated/bytecode_op_table.h"
   DEPS
     ::vm
     iree::base::api
@@ -177,17 +177,6 @@
   PUBLIC
 )
 
-iree_tablegen_library(
-  NAME
-    bytecode_op_table_gen
-  TD_FILE
-    "${IREE_ROOT_DIR}/iree/compiler/Dialect/VM/IR/VMOps.td"
-  OUTS
-    -gen-iree-vm-op-table-defs bytecode_op_table.h
-  TBLGEN
-    IREE
-)
-
 iree_cc_test(
   NAME
     bytecode_module_test
diff --git a/iree/vm/bytecode_dispatch_util.h b/iree/vm/bytecode_dispatch_util.h
index ace3a32..ea3aab3 100644
--- a/iree/vm/bytecode_dispatch_util.h
+++ b/iree/vm/bytecode_dispatch_util.h
@@ -21,7 +21,7 @@
 #include "iree/base/alignment.h"
 #include "iree/base/target_platform.h"
 #include "iree/vm/bytecode_module_impl.h"
-#include "iree/vm/bytecode_op_table.h"
+#include "iree/vm/generated/bytecode_op_table.h"
 
 // TODO(benvanik): make a compiler setting.
 #define IREE_VM_EXT_I64_ENABLE 1
diff --git a/iree/vm/generated/.clang-format b/iree/vm/generated/.clang-format
new file mode 100644
index 0000000..0419c8d
--- /dev/null
+++ b/iree/vm/generated/.clang-format
@@ -0,0 +1,17 @@
+# Copyright 2019 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Disable formatting for generated code.
+DisableFormat: true
+
diff --git a/iree/vm/generated/bytecode_op_table.h b/iree/vm/generated/bytecode_op_table.h
new file mode 100644
index 0000000..b63eb6c
--- /dev/null
+++ b/iree/vm/generated/bytecode_op_table.h
@@ -0,0 +1,1042 @@
+/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
+|*                                                                            *|
+|* IREE VM Operation Tables                                                   *|
+|*                                                                            *|
+|* Automatically generated file, do not edit!                                 *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
+
+typedef enum {
+  IREE_VM_OP_CORE_GlobalLoadI32 = 0x00,
+  IREE_VM_OP_CORE_GlobalStoreI32 = 0x01,
+  IREE_VM_OP_CORE_GlobalLoadIndirectI32 = 0x02,
+  IREE_VM_OP_CORE_GlobalStoreIndirectI32 = 0x03,
+  IREE_VM_OP_CORE_GlobalLoadRef = 0x04,
+  IREE_VM_OP_CORE_GlobalStoreRef = 0x05,
+  IREE_VM_OP_CORE_GlobalLoadIndirectRef = 0x06,
+  IREE_VM_OP_CORE_GlobalStoreIndirectRef = 0x07,
+  IREE_VM_OP_CORE_ConstI32Zero = 0x08,
+  IREE_VM_OP_CORE_ConstI32 = 0x09,
+  IREE_VM_OP_CORE_ConstRefZero = 0x0A,
+  IREE_VM_OP_CORE_ConstRefRodata = 0x0B,
+  IREE_VM_OP_CORE_RSV_0x0C,
+  IREE_VM_OP_CORE_RSV_0x0D,
+  IREE_VM_OP_CORE_RSV_0x0E,
+  IREE_VM_OP_CORE_RSV_0x0F,
+  IREE_VM_OP_CORE_ListAlloc = 0x10,
+  IREE_VM_OP_CORE_ListReserve = 0x11,
+  IREE_VM_OP_CORE_ListSize = 0x12,
+  IREE_VM_OP_CORE_ListResize = 0x13,
+  IREE_VM_OP_CORE_ListGetI32 = 0x14,
+  IREE_VM_OP_CORE_ListSetI32 = 0x15,
+  IREE_VM_OP_CORE_ListGetRef = 0x16,
+  IREE_VM_OP_CORE_ListSetRef = 0x17,
+  IREE_VM_OP_CORE_RSV_0x18,
+  IREE_VM_OP_CORE_RSV_0x19,
+  IREE_VM_OP_CORE_RSV_0x1A,
+  IREE_VM_OP_CORE_RSV_0x1B,
+  IREE_VM_OP_CORE_RSV_0x1C,
+  IREE_VM_OP_CORE_RSV_0x1D,
+  IREE_VM_OP_CORE_SelectI32 = 0x1E,
+  IREE_VM_OP_CORE_SelectRef = 0x1F,
+  IREE_VM_OP_CORE_SwitchI32 = 0x20,
+  IREE_VM_OP_CORE_SwitchRef = 0x21,
+  IREE_VM_OP_CORE_AddI32 = 0x22,
+  IREE_VM_OP_CORE_SubI32 = 0x23,
+  IREE_VM_OP_CORE_MulI32 = 0x24,
+  IREE_VM_OP_CORE_DivI32S = 0x25,
+  IREE_VM_OP_CORE_DivI32U = 0x26,
+  IREE_VM_OP_CORE_RemI32S = 0x27,
+  IREE_VM_OP_CORE_RemI32U = 0x28,
+  IREE_VM_OP_CORE_NotI32 = 0x29,
+  IREE_VM_OP_CORE_AndI32 = 0x2A,
+  IREE_VM_OP_CORE_OrI32 = 0x2B,
+  IREE_VM_OP_CORE_XorI32 = 0x2C,
+  IREE_VM_OP_CORE_ShlI32 = 0x2D,
+  IREE_VM_OP_CORE_ShrI32S = 0x2E,
+  IREE_VM_OP_CORE_ShrI32U = 0x2F,
+  IREE_VM_OP_CORE_RSV_0x30,
+  IREE_VM_OP_CORE_TruncI32I8 = 0x31,
+  IREE_VM_OP_CORE_TruncI32I16 = 0x32,
+  IREE_VM_OP_CORE_ExtI8I32S = 0x33,
+  IREE_VM_OP_CORE_ExtI8I32U = 0x34,
+  IREE_VM_OP_CORE_ExtI16I32S = 0x35,
+  IREE_VM_OP_CORE_ExtI16I32U = 0x36,
+  IREE_VM_OP_CORE_RSV_0x37,
+  IREE_VM_OP_CORE_RSV_0x38,
+  IREE_VM_OP_CORE_RSV_0x39,
+  IREE_VM_OP_CORE_RSV_0x3A,
+  IREE_VM_OP_CORE_RSV_0x3B,
+  IREE_VM_OP_CORE_RSV_0x3C,
+  IREE_VM_OP_CORE_RSV_0x3D,
+  IREE_VM_OP_CORE_RSV_0x3E,
+  IREE_VM_OP_CORE_RSV_0x3F,
+  IREE_VM_OP_CORE_CmpEQI32 = 0x40,
+  IREE_VM_OP_CORE_CmpNEI32 = 0x41,
+  IREE_VM_OP_CORE_CmpLTI32S = 0x42,
+  IREE_VM_OP_CORE_CmpLTI32U = 0x43,
+  IREE_VM_OP_CORE_RSV_0x44,
+  IREE_VM_OP_CORE_RSV_0x45,
+  IREE_VM_OP_CORE_RSV_0x46,
+  IREE_VM_OP_CORE_RSV_0x47,
+  IREE_VM_OP_CORE_RSV_0x48,
+  IREE_VM_OP_CORE_RSV_0x49,
+  IREE_VM_OP_CORE_CmpEQRef = 0x4A,
+  IREE_VM_OP_CORE_CmpNERef = 0x4B,
+  IREE_VM_OP_CORE_CmpNZRef = 0x4C,
+  IREE_VM_OP_CORE_CmpNZI32 = 0x4D,
+  IREE_VM_OP_CORE_RSV_0x4E,
+  IREE_VM_OP_CORE_RSV_0x4F,
+  IREE_VM_OP_CORE_Branch = 0x50,
+  IREE_VM_OP_CORE_CondBranch = 0x51,
+  IREE_VM_OP_CORE_Call = 0x52,
+  IREE_VM_OP_CORE_CallVariadic = 0x53,
+  IREE_VM_OP_CORE_Return = 0x54,
+  IREE_VM_OP_CORE_Fail = 0x55,
+  IREE_VM_OP_CORE_RSV_0x56,
+  IREE_VM_OP_CORE_RSV_0x57,
+  IREE_VM_OP_CORE_RSV_0x58,
+  IREE_VM_OP_CORE_RSV_0x59,
+  IREE_VM_OP_CORE_RSV_0x5A,
+  IREE_VM_OP_CORE_RSV_0x5B,
+  IREE_VM_OP_CORE_RSV_0x5C,
+  IREE_VM_OP_CORE_RSV_0x5D,
+  IREE_VM_OP_CORE_RSV_0x5E,
+  IREE_VM_OP_CORE_RSV_0x5F,
+  IREE_VM_OP_CORE_Yield = 0x60,
+  IREE_VM_OP_CORE_RSV_0x61,
+  IREE_VM_OP_CORE_RSV_0x62,
+  IREE_VM_OP_CORE_RSV_0x63,
+  IREE_VM_OP_CORE_RSV_0x64,
+  IREE_VM_OP_CORE_RSV_0x65,
+  IREE_VM_OP_CORE_RSV_0x66,
+  IREE_VM_OP_CORE_RSV_0x67,
+  IREE_VM_OP_CORE_RSV_0x68,
+  IREE_VM_OP_CORE_RSV_0x69,
+  IREE_VM_OP_CORE_RSV_0x6A,
+  IREE_VM_OP_CORE_RSV_0x6B,
+  IREE_VM_OP_CORE_RSV_0x6C,
+  IREE_VM_OP_CORE_RSV_0x6D,
+  IREE_VM_OP_CORE_RSV_0x6E,
+  IREE_VM_OP_CORE_RSV_0x6F,
+  IREE_VM_OP_CORE_RSV_0x70,
+  IREE_VM_OP_CORE_RSV_0x71,
+  IREE_VM_OP_CORE_RSV_0x72,
+  IREE_VM_OP_CORE_RSV_0x73,
+  IREE_VM_OP_CORE_RSV_0x74,
+  IREE_VM_OP_CORE_RSV_0x75,
+  IREE_VM_OP_CORE_RSV_0x76,
+  IREE_VM_OP_CORE_RSV_0x77,
+  IREE_VM_OP_CORE_RSV_0x78,
+  IREE_VM_OP_CORE_RSV_0x79,
+  IREE_VM_OP_CORE_RSV_0x7A,
+  IREE_VM_OP_CORE_RSV_0x7B,
+  IREE_VM_OP_CORE_Trace = 0x7C,
+  IREE_VM_OP_CORE_Print = 0x7D,
+  IREE_VM_OP_CORE_CondBreak = 0x7E,
+  IREE_VM_OP_CORE_Break = 0x7F,
+  IREE_VM_OP_CORE_RSV_0x80,
+  IREE_VM_OP_CORE_RSV_0x81,
+  IREE_VM_OP_CORE_RSV_0x82,
+  IREE_VM_OP_CORE_RSV_0x83,
+  IREE_VM_OP_CORE_RSV_0x84,
+  IREE_VM_OP_CORE_RSV_0x85,
+  IREE_VM_OP_CORE_RSV_0x86,
+  IREE_VM_OP_CORE_RSV_0x87,
+  IREE_VM_OP_CORE_RSV_0x88,
+  IREE_VM_OP_CORE_RSV_0x89,
+  IREE_VM_OP_CORE_RSV_0x8A,
+  IREE_VM_OP_CORE_RSV_0x8B,
+  IREE_VM_OP_CORE_RSV_0x8C,
+  IREE_VM_OP_CORE_RSV_0x8D,
+  IREE_VM_OP_CORE_RSV_0x8E,
+  IREE_VM_OP_CORE_RSV_0x8F,
+  IREE_VM_OP_CORE_RSV_0x90,
+  IREE_VM_OP_CORE_RSV_0x91,
+  IREE_VM_OP_CORE_RSV_0x92,
+  IREE_VM_OP_CORE_RSV_0x93,
+  IREE_VM_OP_CORE_RSV_0x94,
+  IREE_VM_OP_CORE_RSV_0x95,
+  IREE_VM_OP_CORE_RSV_0x96,
+  IREE_VM_OP_CORE_RSV_0x97,
+  IREE_VM_OP_CORE_RSV_0x98,
+  IREE_VM_OP_CORE_RSV_0x99,
+  IREE_VM_OP_CORE_RSV_0x9A,
+  IREE_VM_OP_CORE_RSV_0x9B,
+  IREE_VM_OP_CORE_RSV_0x9C,
+  IREE_VM_OP_CORE_RSV_0x9D,
+  IREE_VM_OP_CORE_RSV_0x9E,
+  IREE_VM_OP_CORE_RSV_0x9F,
+  IREE_VM_OP_CORE_PrefixExtI64 = 0xA0,
+  IREE_VM_OP_CORE_PrefixExtF32 = 0xA1,
+  IREE_VM_OP_CORE_PrefixExtF64 = 0xA2,
+  IREE_VM_OP_CORE_RSV_0xA3,
+  IREE_VM_OP_CORE_RSV_0xA4,
+  IREE_VM_OP_CORE_RSV_0xA5,
+  IREE_VM_OP_CORE_RSV_0xA6,
+  IREE_VM_OP_CORE_RSV_0xA7,
+  IREE_VM_OP_CORE_RSV_0xA8,
+  IREE_VM_OP_CORE_RSV_0xA9,
+  IREE_VM_OP_CORE_RSV_0xAA,
+  IREE_VM_OP_CORE_RSV_0xAB,
+  IREE_VM_OP_CORE_RSV_0xAC,
+  IREE_VM_OP_CORE_RSV_0xAD,
+  IREE_VM_OP_CORE_RSV_0xAE,
+  IREE_VM_OP_CORE_RSV_0xAF,
+  IREE_VM_OP_CORE_RSV_0xB0,
+  IREE_VM_OP_CORE_RSV_0xB1,
+  IREE_VM_OP_CORE_RSV_0xB2,
+  IREE_VM_OP_CORE_RSV_0xB3,
+  IREE_VM_OP_CORE_RSV_0xB4,
+  IREE_VM_OP_CORE_RSV_0xB5,
+  IREE_VM_OP_CORE_RSV_0xB6,
+  IREE_VM_OP_CORE_RSV_0xB7,
+  IREE_VM_OP_CORE_RSV_0xB8,
+  IREE_VM_OP_CORE_RSV_0xB9,
+  IREE_VM_OP_CORE_RSV_0xBA,
+  IREE_VM_OP_CORE_RSV_0xBB,
+  IREE_VM_OP_CORE_RSV_0xBC,
+  IREE_VM_OP_CORE_RSV_0xBD,
+  IREE_VM_OP_CORE_RSV_0xBE,
+  IREE_VM_OP_CORE_RSV_0xBF,
+  IREE_VM_OP_CORE_RSV_0xC0,
+  IREE_VM_OP_CORE_RSV_0xC1,
+  IREE_VM_OP_CORE_RSV_0xC2,
+  IREE_VM_OP_CORE_RSV_0xC3,
+  IREE_VM_OP_CORE_RSV_0xC4,
+  IREE_VM_OP_CORE_RSV_0xC5,
+  IREE_VM_OP_CORE_RSV_0xC6,
+  IREE_VM_OP_CORE_RSV_0xC7,
+  IREE_VM_OP_CORE_RSV_0xC8,
+  IREE_VM_OP_CORE_RSV_0xC9,
+  IREE_VM_OP_CORE_RSV_0xCA,
+  IREE_VM_OP_CORE_RSV_0xCB,
+  IREE_VM_OP_CORE_RSV_0xCC,
+  IREE_VM_OP_CORE_RSV_0xCD,
+  IREE_VM_OP_CORE_RSV_0xCE,
+  IREE_VM_OP_CORE_RSV_0xCF,
+  IREE_VM_OP_CORE_RSV_0xD0,
+  IREE_VM_OP_CORE_RSV_0xD1,
+  IREE_VM_OP_CORE_RSV_0xD2,
+  IREE_VM_OP_CORE_RSV_0xD3,
+  IREE_VM_OP_CORE_RSV_0xD4,
+  IREE_VM_OP_CORE_RSV_0xD5,
+  IREE_VM_OP_CORE_RSV_0xD6,
+  IREE_VM_OP_CORE_RSV_0xD7,
+  IREE_VM_OP_CORE_RSV_0xD8,
+  IREE_VM_OP_CORE_RSV_0xD9,
+  IREE_VM_OP_CORE_RSV_0xDA,
+  IREE_VM_OP_CORE_RSV_0xDB,
+  IREE_VM_OP_CORE_RSV_0xDC,
+  IREE_VM_OP_CORE_RSV_0xDD,
+  IREE_VM_OP_CORE_RSV_0xDE,
+  IREE_VM_OP_CORE_RSV_0xDF,
+  IREE_VM_OP_CORE_RSV_0xE0,
+  IREE_VM_OP_CORE_RSV_0xE1,
+  IREE_VM_OP_CORE_RSV_0xE2,
+  IREE_VM_OP_CORE_RSV_0xE3,
+  IREE_VM_OP_CORE_RSV_0xE4,
+  IREE_VM_OP_CORE_RSV_0xE5,
+  IREE_VM_OP_CORE_RSV_0xE6,
+  IREE_VM_OP_CORE_RSV_0xE7,
+  IREE_VM_OP_CORE_RSV_0xE8,
+  IREE_VM_OP_CORE_RSV_0xE9,
+  IREE_VM_OP_CORE_RSV_0xEA,
+  IREE_VM_OP_CORE_RSV_0xEB,
+  IREE_VM_OP_CORE_RSV_0xEC,
+  IREE_VM_OP_CORE_RSV_0xED,
+  IREE_VM_OP_CORE_RSV_0xEE,
+  IREE_VM_OP_CORE_RSV_0xEF,
+  IREE_VM_OP_CORE_RSV_0xF0,
+  IREE_VM_OP_CORE_RSV_0xF1,
+  IREE_VM_OP_CORE_RSV_0xF2,
+  IREE_VM_OP_CORE_RSV_0xF3,
+  IREE_VM_OP_CORE_RSV_0xF4,
+  IREE_VM_OP_CORE_RSV_0xF5,
+  IREE_VM_OP_CORE_RSV_0xF6,
+  IREE_VM_OP_CORE_RSV_0xF7,
+  IREE_VM_OP_CORE_RSV_0xF8,
+  IREE_VM_OP_CORE_RSV_0xF9,
+  IREE_VM_OP_CORE_RSV_0xFA,
+  IREE_VM_OP_CORE_RSV_0xFB,
+  IREE_VM_OP_CORE_RSV_0xFC,
+  IREE_VM_OP_CORE_RSV_0xFD,
+  IREE_VM_OP_CORE_RSV_0xFE,
+  IREE_VM_OP_CORE_RSV_0xFF,
+} iree_vm_core_op_t;
+
+#define IREE_VM_OP_CORE_TABLE(OPC, RSV) \
+    OPC(0x00, GlobalLoadI32) \
+    OPC(0x01, GlobalStoreI32) \
+    OPC(0x02, GlobalLoadIndirectI32) \
+    OPC(0x03, GlobalStoreIndirectI32) \
+    OPC(0x04, GlobalLoadRef) \
+    OPC(0x05, GlobalStoreRef) \
+    OPC(0x06, GlobalLoadIndirectRef) \
+    OPC(0x07, GlobalStoreIndirectRef) \
+    OPC(0x08, ConstI32Zero) \
+    OPC(0x09, ConstI32) \
+    OPC(0x0A, ConstRefZero) \
+    OPC(0x0B, ConstRefRodata) \
+    RSV(0x0C) \
+    RSV(0x0D) \
+    RSV(0x0E) \
+    RSV(0x0F) \
+    OPC(0x10, ListAlloc) \
+    OPC(0x11, ListReserve) \
+    OPC(0x12, ListSize) \
+    OPC(0x13, ListResize) \
+    OPC(0x14, ListGetI32) \
+    OPC(0x15, ListSetI32) \
+    OPC(0x16, ListGetRef) \
+    OPC(0x17, ListSetRef) \
+    RSV(0x18) \
+    RSV(0x19) \
+    RSV(0x1A) \
+    RSV(0x1B) \
+    RSV(0x1C) \
+    RSV(0x1D) \
+    OPC(0x1E, SelectI32) \
+    OPC(0x1F, SelectRef) \
+    OPC(0x20, SwitchI32) \
+    OPC(0x21, SwitchRef) \
+    OPC(0x22, AddI32) \
+    OPC(0x23, SubI32) \
+    OPC(0x24, MulI32) \
+    OPC(0x25, DivI32S) \
+    OPC(0x26, DivI32U) \
+    OPC(0x27, RemI32S) \
+    OPC(0x28, RemI32U) \
+    OPC(0x29, NotI32) \
+    OPC(0x2A, AndI32) \
+    OPC(0x2B, OrI32) \
+    OPC(0x2C, XorI32) \
+    OPC(0x2D, ShlI32) \
+    OPC(0x2E, ShrI32S) \
+    OPC(0x2F, ShrI32U) \
+    RSV(0x30) \
+    OPC(0x31, TruncI32I8) \
+    OPC(0x32, TruncI32I16) \
+    OPC(0x33, ExtI8I32S) \
+    OPC(0x34, ExtI8I32U) \
+    OPC(0x35, ExtI16I32S) \
+    OPC(0x36, ExtI16I32U) \
+    RSV(0x37) \
+    RSV(0x38) \
+    RSV(0x39) \
+    RSV(0x3A) \
+    RSV(0x3B) \
+    RSV(0x3C) \
+    RSV(0x3D) \
+    RSV(0x3E) \
+    RSV(0x3F) \
+    OPC(0x40, CmpEQI32) \
+    OPC(0x41, CmpNEI32) \
+    OPC(0x42, CmpLTI32S) \
+    OPC(0x43, CmpLTI32U) \
+    RSV(0x44) \
+    RSV(0x45) \
+    RSV(0x46) \
+    RSV(0x47) \
+    RSV(0x48) \
+    RSV(0x49) \
+    OPC(0x4A, CmpEQRef) \
+    OPC(0x4B, CmpNERef) \
+    OPC(0x4C, CmpNZRef) \
+    OPC(0x4D, CmpNZI32) \
+    RSV(0x4E) \
+    RSV(0x4F) \
+    OPC(0x50, Branch) \
+    OPC(0x51, CondBranch) \
+    OPC(0x52, Call) \
+    OPC(0x53, CallVariadic) \
+    OPC(0x54, Return) \
+    OPC(0x55, Fail) \
+    RSV(0x56) \
+    RSV(0x57) \
+    RSV(0x58) \
+    RSV(0x59) \
+    RSV(0x5A) \
+    RSV(0x5B) \
+    RSV(0x5C) \
+    RSV(0x5D) \
+    RSV(0x5E) \
+    RSV(0x5F) \
+    OPC(0x60, Yield) \
+    RSV(0x61) \
+    RSV(0x62) \
+    RSV(0x63) \
+    RSV(0x64) \
+    RSV(0x65) \
+    RSV(0x66) \
+    RSV(0x67) \
+    RSV(0x68) \
+    RSV(0x69) \
+    RSV(0x6A) \
+    RSV(0x6B) \
+    RSV(0x6C) \
+    RSV(0x6D) \
+    RSV(0x6E) \
+    RSV(0x6F) \
+    RSV(0x70) \
+    RSV(0x71) \
+    RSV(0x72) \
+    RSV(0x73) \
+    RSV(0x74) \
+    RSV(0x75) \
+    RSV(0x76) \
+    RSV(0x77) \
+    RSV(0x78) \
+    RSV(0x79) \
+    RSV(0x7A) \
+    RSV(0x7B) \
+    OPC(0x7C, Trace) \
+    OPC(0x7D, Print) \
+    OPC(0x7E, CondBreak) \
+    OPC(0x7F, Break) \
+    RSV(0x80) \
+    RSV(0x81) \
+    RSV(0x82) \
+    RSV(0x83) \
+    RSV(0x84) \
+    RSV(0x85) \
+    RSV(0x86) \
+    RSV(0x87) \
+    RSV(0x88) \
+    RSV(0x89) \
+    RSV(0x8A) \
+    RSV(0x8B) \
+    RSV(0x8C) \
+    RSV(0x8D) \
+    RSV(0x8E) \
+    RSV(0x8F) \
+    RSV(0x90) \
+    RSV(0x91) \
+    RSV(0x92) \
+    RSV(0x93) \
+    RSV(0x94) \
+    RSV(0x95) \
+    RSV(0x96) \
+    RSV(0x97) \
+    RSV(0x98) \
+    RSV(0x99) \
+    RSV(0x9A) \
+    RSV(0x9B) \
+    RSV(0x9C) \
+    RSV(0x9D) \
+    RSV(0x9E) \
+    RSV(0x9F) \
+    OPC(0xA0, PrefixExtI64) \
+    OPC(0xA1, PrefixExtF32) \
+    OPC(0xA2, PrefixExtF64) \
+    RSV(0xA3) \
+    RSV(0xA4) \
+    RSV(0xA5) \
+    RSV(0xA6) \
+    RSV(0xA7) \
+    RSV(0xA8) \
+    RSV(0xA9) \
+    RSV(0xAA) \
+    RSV(0xAB) \
+    RSV(0xAC) \
+    RSV(0xAD) \
+    RSV(0xAE) \
+    RSV(0xAF) \
+    RSV(0xB0) \
+    RSV(0xB1) \
+    RSV(0xB2) \
+    RSV(0xB3) \
+    RSV(0xB4) \
+    RSV(0xB5) \
+    RSV(0xB6) \
+    RSV(0xB7) \
+    RSV(0xB8) \
+    RSV(0xB9) \
+    RSV(0xBA) \
+    RSV(0xBB) \
+    RSV(0xBC) \
+    RSV(0xBD) \
+    RSV(0xBE) \
+    RSV(0xBF) \
+    RSV(0xC0) \
+    RSV(0xC1) \
+    RSV(0xC2) \
+    RSV(0xC3) \
+    RSV(0xC4) \
+    RSV(0xC5) \
+    RSV(0xC6) \
+    RSV(0xC7) \
+    RSV(0xC8) \
+    RSV(0xC9) \
+    RSV(0xCA) \
+    RSV(0xCB) \
+    RSV(0xCC) \
+    RSV(0xCD) \
+    RSV(0xCE) \
+    RSV(0xCF) \
+    RSV(0xD0) \
+    RSV(0xD1) \
+    RSV(0xD2) \
+    RSV(0xD3) \
+    RSV(0xD4) \
+    RSV(0xD5) \
+    RSV(0xD6) \
+    RSV(0xD7) \
+    RSV(0xD8) \
+    RSV(0xD9) \
+    RSV(0xDA) \
+    RSV(0xDB) \
+    RSV(0xDC) \
+    RSV(0xDD) \
+    RSV(0xDE) \
+    RSV(0xDF) \
+    RSV(0xE0) \
+    RSV(0xE1) \
+    RSV(0xE2) \
+    RSV(0xE3) \
+    RSV(0xE4) \
+    RSV(0xE5) \
+    RSV(0xE6) \
+    RSV(0xE7) \
+    RSV(0xE8) \
+    RSV(0xE9) \
+    RSV(0xEA) \
+    RSV(0xEB) \
+    RSV(0xEC) \
+    RSV(0xED) \
+    RSV(0xEE) \
+    RSV(0xEF) \
+    RSV(0xF0) \
+    RSV(0xF1) \
+    RSV(0xF2) \
+    RSV(0xF3) \
+    RSV(0xF4) \
+    RSV(0xF5) \
+    RSV(0xF6) \
+    RSV(0xF7) \
+    RSV(0xF8) \
+    RSV(0xF9) \
+    RSV(0xFA) \
+    RSV(0xFB) \
+    RSV(0xFC) \
+    RSV(0xFD) \
+    RSV(0xFE) \
+    RSV(0xFF)
+
+typedef enum {
+  IREE_VM_OP_EXT_I64_GlobalLoadI64 = 0x00,
+  IREE_VM_OP_EXT_I64_GlobalStoreI64 = 0x01,
+  IREE_VM_OP_EXT_I64_GlobalLoadIndirectI64 = 0x02,
+  IREE_VM_OP_EXT_I64_GlobalStoreIndirectI64 = 0x03,
+  IREE_VM_OP_EXT_I64_RSV_0x04,
+  IREE_VM_OP_EXT_I64_RSV_0x05,
+  IREE_VM_OP_EXT_I64_RSV_0x06,
+  IREE_VM_OP_EXT_I64_RSV_0x07,
+  IREE_VM_OP_EXT_I64_ConstI64Zero = 0x08,
+  IREE_VM_OP_EXT_I64_ConstI64 = 0x09,
+  IREE_VM_OP_EXT_I64_RSV_0x0A,
+  IREE_VM_OP_EXT_I64_RSV_0x0B,
+  IREE_VM_OP_EXT_I64_RSV_0x0C,
+  IREE_VM_OP_EXT_I64_RSV_0x0D,
+  IREE_VM_OP_EXT_I64_RSV_0x0E,
+  IREE_VM_OP_EXT_I64_RSV_0x0F,
+  IREE_VM_OP_EXT_I64_RSV_0x10,
+  IREE_VM_OP_EXT_I64_RSV_0x11,
+  IREE_VM_OP_EXT_I64_RSV_0x12,
+  IREE_VM_OP_EXT_I64_RSV_0x13,
+  IREE_VM_OP_EXT_I64_ListGetI64 = 0x14,
+  IREE_VM_OP_EXT_I64_ListSetI64 = 0x15,
+  IREE_VM_OP_EXT_I64_RSV_0x16,
+  IREE_VM_OP_EXT_I64_RSV_0x17,
+  IREE_VM_OP_EXT_I64_RSV_0x18,
+  IREE_VM_OP_EXT_I64_RSV_0x19,
+  IREE_VM_OP_EXT_I64_RSV_0x1A,
+  IREE_VM_OP_EXT_I64_RSV_0x1B,
+  IREE_VM_OP_EXT_I64_RSV_0x1C,
+  IREE_VM_OP_EXT_I64_RSV_0x1D,
+  IREE_VM_OP_EXT_I64_SelectI64 = 0x1E,
+  IREE_VM_OP_EXT_I64_RSV_0x1F,
+  IREE_VM_OP_EXT_I64_SwitchI64 = 0x20,
+  IREE_VM_OP_EXT_I64_RSV_0x21,
+  IREE_VM_OP_EXT_I64_AddI64 = 0x22,
+  IREE_VM_OP_EXT_I64_SubI64 = 0x23,
+  IREE_VM_OP_EXT_I64_MulI64 = 0x24,
+  IREE_VM_OP_EXT_I64_DivI64S = 0x25,
+  IREE_VM_OP_EXT_I64_DivI64U = 0x26,
+  IREE_VM_OP_EXT_I64_RemI64S = 0x27,
+  IREE_VM_OP_EXT_I64_RemI64U = 0x28,
+  IREE_VM_OP_EXT_I64_NotI64 = 0x29,
+  IREE_VM_OP_EXT_I64_AndI64 = 0x2A,
+  IREE_VM_OP_EXT_I64_OrI64 = 0x2B,
+  IREE_VM_OP_EXT_I64_XorI64 = 0x2C,
+  IREE_VM_OP_EXT_I64_ShlI64 = 0x2D,
+  IREE_VM_OP_EXT_I64_ShrI64S = 0x2E,
+  IREE_VM_OP_EXT_I64_ShrI64U = 0x2F,
+  IREE_VM_OP_EXT_I64_RSV_0x30,
+  IREE_VM_OP_EXT_I64_RSV_0x31,
+  IREE_VM_OP_EXT_I64_TruncI64I32 = 0x32,
+  IREE_VM_OP_EXT_I64_RSV_0x33,
+  IREE_VM_OP_EXT_I64_RSV_0x34,
+  IREE_VM_OP_EXT_I64_RSV_0x35,
+  IREE_VM_OP_EXT_I64_RSV_0x36,
+  IREE_VM_OP_EXT_I64_ExtI32I64S = 0x37,
+  IREE_VM_OP_EXT_I64_ExtI32I64U = 0x38,
+  IREE_VM_OP_EXT_I64_RSV_0x39,
+  IREE_VM_OP_EXT_I64_RSV_0x3A,
+  IREE_VM_OP_EXT_I64_RSV_0x3B,
+  IREE_VM_OP_EXT_I64_RSV_0x3C,
+  IREE_VM_OP_EXT_I64_RSV_0x3D,
+  IREE_VM_OP_EXT_I64_RSV_0x3E,
+  IREE_VM_OP_EXT_I64_RSV_0x3F,
+  IREE_VM_OP_EXT_I64_CmpEQI64 = 0x40,
+  IREE_VM_OP_EXT_I64_CmpNEI64 = 0x41,
+  IREE_VM_OP_EXT_I64_CmpLTI64S = 0x42,
+  IREE_VM_OP_EXT_I64_CmpLTI64U = 0x43,
+  IREE_VM_OP_EXT_I64_RSV_0x44,
+  IREE_VM_OP_EXT_I64_RSV_0x45,
+  IREE_VM_OP_EXT_I64_RSV_0x46,
+  IREE_VM_OP_EXT_I64_RSV_0x47,
+  IREE_VM_OP_EXT_I64_RSV_0x48,
+  IREE_VM_OP_EXT_I64_RSV_0x49,
+  IREE_VM_OP_EXT_I64_RSV_0x4A,
+  IREE_VM_OP_EXT_I64_RSV_0x4B,
+  IREE_VM_OP_EXT_I64_RSV_0x4C,
+  IREE_VM_OP_EXT_I64_CmpNZI64 = 0x4D,
+  IREE_VM_OP_EXT_I64_RSV_0x4E,
+  IREE_VM_OP_EXT_I64_RSV_0x4F,
+  IREE_VM_OP_EXT_I64_RSV_0x50,
+  IREE_VM_OP_EXT_I64_RSV_0x51,
+  IREE_VM_OP_EXT_I64_RSV_0x52,
+  IREE_VM_OP_EXT_I64_RSV_0x53,
+  IREE_VM_OP_EXT_I64_RSV_0x54,
+  IREE_VM_OP_EXT_I64_RSV_0x55,
+  IREE_VM_OP_EXT_I64_RSV_0x56,
+  IREE_VM_OP_EXT_I64_RSV_0x57,
+  IREE_VM_OP_EXT_I64_RSV_0x58,
+  IREE_VM_OP_EXT_I64_RSV_0x59,
+  IREE_VM_OP_EXT_I64_RSV_0x5A,
+  IREE_VM_OP_EXT_I64_RSV_0x5B,
+  IREE_VM_OP_EXT_I64_RSV_0x5C,
+  IREE_VM_OP_EXT_I64_RSV_0x5D,
+  IREE_VM_OP_EXT_I64_RSV_0x5E,
+  IREE_VM_OP_EXT_I64_RSV_0x5F,
+  IREE_VM_OP_EXT_I64_RSV_0x60,
+  IREE_VM_OP_EXT_I64_RSV_0x61,
+  IREE_VM_OP_EXT_I64_RSV_0x62,
+  IREE_VM_OP_EXT_I64_RSV_0x63,
+  IREE_VM_OP_EXT_I64_RSV_0x64,
+  IREE_VM_OP_EXT_I64_RSV_0x65,
+  IREE_VM_OP_EXT_I64_RSV_0x66,
+  IREE_VM_OP_EXT_I64_RSV_0x67,
+  IREE_VM_OP_EXT_I64_RSV_0x68,
+  IREE_VM_OP_EXT_I64_RSV_0x69,
+  IREE_VM_OP_EXT_I64_RSV_0x6A,
+  IREE_VM_OP_EXT_I64_RSV_0x6B,
+  IREE_VM_OP_EXT_I64_RSV_0x6C,
+  IREE_VM_OP_EXT_I64_RSV_0x6D,
+  IREE_VM_OP_EXT_I64_RSV_0x6E,
+  IREE_VM_OP_EXT_I64_RSV_0x6F,
+  IREE_VM_OP_EXT_I64_RSV_0x70,
+  IREE_VM_OP_EXT_I64_RSV_0x71,
+  IREE_VM_OP_EXT_I64_RSV_0x72,
+  IREE_VM_OP_EXT_I64_RSV_0x73,
+  IREE_VM_OP_EXT_I64_RSV_0x74,
+  IREE_VM_OP_EXT_I64_RSV_0x75,
+  IREE_VM_OP_EXT_I64_RSV_0x76,
+  IREE_VM_OP_EXT_I64_RSV_0x77,
+  IREE_VM_OP_EXT_I64_RSV_0x78,
+  IREE_VM_OP_EXT_I64_RSV_0x79,
+  IREE_VM_OP_EXT_I64_RSV_0x7A,
+  IREE_VM_OP_EXT_I64_RSV_0x7B,
+  IREE_VM_OP_EXT_I64_RSV_0x7C,
+  IREE_VM_OP_EXT_I64_RSV_0x7D,
+  IREE_VM_OP_EXT_I64_RSV_0x7E,
+  IREE_VM_OP_EXT_I64_RSV_0x7F,
+  IREE_VM_OP_EXT_I64_RSV_0x80,
+  IREE_VM_OP_EXT_I64_RSV_0x81,
+  IREE_VM_OP_EXT_I64_RSV_0x82,
+  IREE_VM_OP_EXT_I64_RSV_0x83,
+  IREE_VM_OP_EXT_I64_RSV_0x84,
+  IREE_VM_OP_EXT_I64_RSV_0x85,
+  IREE_VM_OP_EXT_I64_RSV_0x86,
+  IREE_VM_OP_EXT_I64_RSV_0x87,
+  IREE_VM_OP_EXT_I64_RSV_0x88,
+  IREE_VM_OP_EXT_I64_RSV_0x89,
+  IREE_VM_OP_EXT_I64_RSV_0x8A,
+  IREE_VM_OP_EXT_I64_RSV_0x8B,
+  IREE_VM_OP_EXT_I64_RSV_0x8C,
+  IREE_VM_OP_EXT_I64_RSV_0x8D,
+  IREE_VM_OP_EXT_I64_RSV_0x8E,
+  IREE_VM_OP_EXT_I64_RSV_0x8F,
+  IREE_VM_OP_EXT_I64_RSV_0x90,
+  IREE_VM_OP_EXT_I64_RSV_0x91,
+  IREE_VM_OP_EXT_I64_RSV_0x92,
+  IREE_VM_OP_EXT_I64_RSV_0x93,
+  IREE_VM_OP_EXT_I64_RSV_0x94,
+  IREE_VM_OP_EXT_I64_RSV_0x95,
+  IREE_VM_OP_EXT_I64_RSV_0x96,
+  IREE_VM_OP_EXT_I64_RSV_0x97,
+  IREE_VM_OP_EXT_I64_RSV_0x98,
+  IREE_VM_OP_EXT_I64_RSV_0x99,
+  IREE_VM_OP_EXT_I64_RSV_0x9A,
+  IREE_VM_OP_EXT_I64_RSV_0x9B,
+  IREE_VM_OP_EXT_I64_RSV_0x9C,
+  IREE_VM_OP_EXT_I64_RSV_0x9D,
+  IREE_VM_OP_EXT_I64_RSV_0x9E,
+  IREE_VM_OP_EXT_I64_RSV_0x9F,
+  IREE_VM_OP_EXT_I64_RSV_0xA0,
+  IREE_VM_OP_EXT_I64_RSV_0xA1,
+  IREE_VM_OP_EXT_I64_RSV_0xA2,
+  IREE_VM_OP_EXT_I64_RSV_0xA3,
+  IREE_VM_OP_EXT_I64_RSV_0xA4,
+  IREE_VM_OP_EXT_I64_RSV_0xA5,
+  IREE_VM_OP_EXT_I64_RSV_0xA6,
+  IREE_VM_OP_EXT_I64_RSV_0xA7,
+  IREE_VM_OP_EXT_I64_RSV_0xA8,
+  IREE_VM_OP_EXT_I64_RSV_0xA9,
+  IREE_VM_OP_EXT_I64_RSV_0xAA,
+  IREE_VM_OP_EXT_I64_RSV_0xAB,
+  IREE_VM_OP_EXT_I64_RSV_0xAC,
+  IREE_VM_OP_EXT_I64_RSV_0xAD,
+  IREE_VM_OP_EXT_I64_RSV_0xAE,
+  IREE_VM_OP_EXT_I64_RSV_0xAF,
+  IREE_VM_OP_EXT_I64_RSV_0xB0,
+  IREE_VM_OP_EXT_I64_RSV_0xB1,
+  IREE_VM_OP_EXT_I64_RSV_0xB2,
+  IREE_VM_OP_EXT_I64_RSV_0xB3,
+  IREE_VM_OP_EXT_I64_RSV_0xB4,
+  IREE_VM_OP_EXT_I64_RSV_0xB5,
+  IREE_VM_OP_EXT_I64_RSV_0xB6,
+  IREE_VM_OP_EXT_I64_RSV_0xB7,
+  IREE_VM_OP_EXT_I64_RSV_0xB8,
+  IREE_VM_OP_EXT_I64_RSV_0xB9,
+  IREE_VM_OP_EXT_I64_RSV_0xBA,
+  IREE_VM_OP_EXT_I64_RSV_0xBB,
+  IREE_VM_OP_EXT_I64_RSV_0xBC,
+  IREE_VM_OP_EXT_I64_RSV_0xBD,
+  IREE_VM_OP_EXT_I64_RSV_0xBE,
+  IREE_VM_OP_EXT_I64_RSV_0xBF,
+  IREE_VM_OP_EXT_I64_RSV_0xC0,
+  IREE_VM_OP_EXT_I64_RSV_0xC1,
+  IREE_VM_OP_EXT_I64_RSV_0xC2,
+  IREE_VM_OP_EXT_I64_RSV_0xC3,
+  IREE_VM_OP_EXT_I64_RSV_0xC4,
+  IREE_VM_OP_EXT_I64_RSV_0xC5,
+  IREE_VM_OP_EXT_I64_RSV_0xC6,
+  IREE_VM_OP_EXT_I64_RSV_0xC7,
+  IREE_VM_OP_EXT_I64_RSV_0xC8,
+  IREE_VM_OP_EXT_I64_RSV_0xC9,
+  IREE_VM_OP_EXT_I64_RSV_0xCA,
+  IREE_VM_OP_EXT_I64_RSV_0xCB,
+  IREE_VM_OP_EXT_I64_RSV_0xCC,
+  IREE_VM_OP_EXT_I64_RSV_0xCD,
+  IREE_VM_OP_EXT_I64_RSV_0xCE,
+  IREE_VM_OP_EXT_I64_RSV_0xCF,
+  IREE_VM_OP_EXT_I64_RSV_0xD0,
+  IREE_VM_OP_EXT_I64_RSV_0xD1,
+  IREE_VM_OP_EXT_I64_RSV_0xD2,
+  IREE_VM_OP_EXT_I64_RSV_0xD3,
+  IREE_VM_OP_EXT_I64_RSV_0xD4,
+  IREE_VM_OP_EXT_I64_RSV_0xD5,
+  IREE_VM_OP_EXT_I64_RSV_0xD6,
+  IREE_VM_OP_EXT_I64_RSV_0xD7,
+  IREE_VM_OP_EXT_I64_RSV_0xD8,
+  IREE_VM_OP_EXT_I64_RSV_0xD9,
+  IREE_VM_OP_EXT_I64_RSV_0xDA,
+  IREE_VM_OP_EXT_I64_RSV_0xDB,
+  IREE_VM_OP_EXT_I64_RSV_0xDC,
+  IREE_VM_OP_EXT_I64_RSV_0xDD,
+  IREE_VM_OP_EXT_I64_RSV_0xDE,
+  IREE_VM_OP_EXT_I64_RSV_0xDF,
+  IREE_VM_OP_EXT_I64_RSV_0xE0,
+  IREE_VM_OP_EXT_I64_RSV_0xE1,
+  IREE_VM_OP_EXT_I64_RSV_0xE2,
+  IREE_VM_OP_EXT_I64_RSV_0xE3,
+  IREE_VM_OP_EXT_I64_RSV_0xE4,
+  IREE_VM_OP_EXT_I64_RSV_0xE5,
+  IREE_VM_OP_EXT_I64_RSV_0xE6,
+  IREE_VM_OP_EXT_I64_RSV_0xE7,
+  IREE_VM_OP_EXT_I64_RSV_0xE8,
+  IREE_VM_OP_EXT_I64_RSV_0xE9,
+  IREE_VM_OP_EXT_I64_RSV_0xEA,
+  IREE_VM_OP_EXT_I64_RSV_0xEB,
+  IREE_VM_OP_EXT_I64_RSV_0xEC,
+  IREE_VM_OP_EXT_I64_RSV_0xED,
+  IREE_VM_OP_EXT_I64_RSV_0xEE,
+  IREE_VM_OP_EXT_I64_RSV_0xEF,
+  IREE_VM_OP_EXT_I64_RSV_0xF0,
+  IREE_VM_OP_EXT_I64_RSV_0xF1,
+  IREE_VM_OP_EXT_I64_RSV_0xF2,
+  IREE_VM_OP_EXT_I64_RSV_0xF3,
+  IREE_VM_OP_EXT_I64_RSV_0xF4,
+  IREE_VM_OP_EXT_I64_RSV_0xF5,
+  IREE_VM_OP_EXT_I64_RSV_0xF6,
+  IREE_VM_OP_EXT_I64_RSV_0xF7,
+  IREE_VM_OP_EXT_I64_RSV_0xF8,
+  IREE_VM_OP_EXT_I64_RSV_0xF9,
+  IREE_VM_OP_EXT_I64_RSV_0xFA,
+  IREE_VM_OP_EXT_I64_RSV_0xFB,
+  IREE_VM_OP_EXT_I64_RSV_0xFC,
+  IREE_VM_OP_EXT_I64_RSV_0xFD,
+  IREE_VM_OP_EXT_I64_RSV_0xFE,
+  IREE_VM_OP_EXT_I64_RSV_0xFF,
+} iree_vm_ext_i64_op_t;
+
+#define IREE_VM_OP_EXT_I64_TABLE(OPC, RSV) \
+    OPC(0x00, GlobalLoadI64) \
+    OPC(0x01, GlobalStoreI64) \
+    OPC(0x02, GlobalLoadIndirectI64) \
+    OPC(0x03, GlobalStoreIndirectI64) \
+    RSV(0x04) \
+    RSV(0x05) \
+    RSV(0x06) \
+    RSV(0x07) \
+    OPC(0x08, ConstI64Zero) \
+    OPC(0x09, ConstI64) \
+    RSV(0x0A) \
+    RSV(0x0B) \
+    RSV(0x0C) \
+    RSV(0x0D) \
+    RSV(0x0E) \
+    RSV(0x0F) \
+    RSV(0x10) \
+    RSV(0x11) \
+    RSV(0x12) \
+    RSV(0x13) \
+    OPC(0x14, ListGetI64) \
+    OPC(0x15, ListSetI64) \
+    RSV(0x16) \
+    RSV(0x17) \
+    RSV(0x18) \
+    RSV(0x19) \
+    RSV(0x1A) \
+    RSV(0x1B) \
+    RSV(0x1C) \
+    RSV(0x1D) \
+    OPC(0x1E, SelectI64) \
+    RSV(0x1F) \
+    OPC(0x20, SwitchI64) \
+    RSV(0x21) \
+    OPC(0x22, AddI64) \
+    OPC(0x23, SubI64) \
+    OPC(0x24, MulI64) \
+    OPC(0x25, DivI64S) \
+    OPC(0x26, DivI64U) \
+    OPC(0x27, RemI64S) \
+    OPC(0x28, RemI64U) \
+    OPC(0x29, NotI64) \
+    OPC(0x2A, AndI64) \
+    OPC(0x2B, OrI64) \
+    OPC(0x2C, XorI64) \
+    OPC(0x2D, ShlI64) \
+    OPC(0x2E, ShrI64S) \
+    OPC(0x2F, ShrI64U) \
+    RSV(0x30) \
+    RSV(0x31) \
+    OPC(0x32, TruncI64I32) \
+    RSV(0x33) \
+    RSV(0x34) \
+    RSV(0x35) \
+    RSV(0x36) \
+    OPC(0x37, ExtI32I64S) \
+    OPC(0x38, ExtI32I64U) \
+    RSV(0x39) \
+    RSV(0x3A) \
+    RSV(0x3B) \
+    RSV(0x3C) \
+    RSV(0x3D) \
+    RSV(0x3E) \
+    RSV(0x3F) \
+    OPC(0x40, CmpEQI64) \
+    OPC(0x41, CmpNEI64) \
+    OPC(0x42, CmpLTI64S) \
+    OPC(0x43, CmpLTI64U) \
+    RSV(0x44) \
+    RSV(0x45) \
+    RSV(0x46) \
+    RSV(0x47) \
+    RSV(0x48) \
+    RSV(0x49) \
+    RSV(0x4A) \
+    RSV(0x4B) \
+    RSV(0x4C) \
+    OPC(0x4D, CmpNZI64) \
+    RSV(0x4E) \
+    RSV(0x4F) \
+    RSV(0x50) \
+    RSV(0x51) \
+    RSV(0x52) \
+    RSV(0x53) \
+    RSV(0x54) \
+    RSV(0x55) \
+    RSV(0x56) \
+    RSV(0x57) \
+    RSV(0x58) \
+    RSV(0x59) \
+    RSV(0x5A) \
+    RSV(0x5B) \
+    RSV(0x5C) \
+    RSV(0x5D) \
+    RSV(0x5E) \
+    RSV(0x5F) \
+    RSV(0x60) \
+    RSV(0x61) \
+    RSV(0x62) \
+    RSV(0x63) \
+    RSV(0x64) \
+    RSV(0x65) \
+    RSV(0x66) \
+    RSV(0x67) \
+    RSV(0x68) \
+    RSV(0x69) \
+    RSV(0x6A) \
+    RSV(0x6B) \
+    RSV(0x6C) \
+    RSV(0x6D) \
+    RSV(0x6E) \
+    RSV(0x6F) \
+    RSV(0x70) \
+    RSV(0x71) \
+    RSV(0x72) \
+    RSV(0x73) \
+    RSV(0x74) \
+    RSV(0x75) \
+    RSV(0x76) \
+    RSV(0x77) \
+    RSV(0x78) \
+    RSV(0x79) \
+    RSV(0x7A) \
+    RSV(0x7B) \
+    RSV(0x7C) \
+    RSV(0x7D) \
+    RSV(0x7E) \
+    RSV(0x7F) \
+    RSV(0x80) \
+    RSV(0x81) \
+    RSV(0x82) \
+    RSV(0x83) \
+    RSV(0x84) \
+    RSV(0x85) \
+    RSV(0x86) \
+    RSV(0x87) \
+    RSV(0x88) \
+    RSV(0x89) \
+    RSV(0x8A) \
+    RSV(0x8B) \
+    RSV(0x8C) \
+    RSV(0x8D) \
+    RSV(0x8E) \
+    RSV(0x8F) \
+    RSV(0x90) \
+    RSV(0x91) \
+    RSV(0x92) \
+    RSV(0x93) \
+    RSV(0x94) \
+    RSV(0x95) \
+    RSV(0x96) \
+    RSV(0x97) \
+    RSV(0x98) \
+    RSV(0x99) \
+    RSV(0x9A) \
+    RSV(0x9B) \
+    RSV(0x9C) \
+    RSV(0x9D) \
+    RSV(0x9E) \
+    RSV(0x9F) \
+    RSV(0xA0) \
+    RSV(0xA1) \
+    RSV(0xA2) \
+    RSV(0xA3) \
+    RSV(0xA4) \
+    RSV(0xA5) \
+    RSV(0xA6) \
+    RSV(0xA7) \
+    RSV(0xA8) \
+    RSV(0xA9) \
+    RSV(0xAA) \
+    RSV(0xAB) \
+    RSV(0xAC) \
+    RSV(0xAD) \
+    RSV(0xAE) \
+    RSV(0xAF) \
+    RSV(0xB0) \
+    RSV(0xB1) \
+    RSV(0xB2) \
+    RSV(0xB3) \
+    RSV(0xB4) \
+    RSV(0xB5) \
+    RSV(0xB6) \
+    RSV(0xB7) \
+    RSV(0xB8) \
+    RSV(0xB9) \
+    RSV(0xBA) \
+    RSV(0xBB) \
+    RSV(0xBC) \
+    RSV(0xBD) \
+    RSV(0xBE) \
+    RSV(0xBF) \
+    RSV(0xC0) \
+    RSV(0xC1) \
+    RSV(0xC2) \
+    RSV(0xC3) \
+    RSV(0xC4) \
+    RSV(0xC5) \
+    RSV(0xC6) \
+    RSV(0xC7) \
+    RSV(0xC8) \
+    RSV(0xC9) \
+    RSV(0xCA) \
+    RSV(0xCB) \
+    RSV(0xCC) \
+    RSV(0xCD) \
+    RSV(0xCE) \
+    RSV(0xCF) \
+    RSV(0xD0) \
+    RSV(0xD1) \
+    RSV(0xD2) \
+    RSV(0xD3) \
+    RSV(0xD4) \
+    RSV(0xD5) \
+    RSV(0xD6) \
+    RSV(0xD7) \
+    RSV(0xD8) \
+    RSV(0xD9) \
+    RSV(0xDA) \
+    RSV(0xDB) \
+    RSV(0xDC) \
+    RSV(0xDD) \
+    RSV(0xDE) \
+    RSV(0xDF) \
+    RSV(0xE0) \
+    RSV(0xE1) \
+    RSV(0xE2) \
+    RSV(0xE3) \
+    RSV(0xE4) \
+    RSV(0xE5) \
+    RSV(0xE6) \
+    RSV(0xE7) \
+    RSV(0xE8) \
+    RSV(0xE9) \
+    RSV(0xEA) \
+    RSV(0xEB) \
+    RSV(0xEC) \
+    RSV(0xED) \
+    RSV(0xEE) \
+    RSV(0xEF) \
+    RSV(0xF0) \
+    RSV(0xF1) \
+    RSV(0xF2) \
+    RSV(0xF3) \
+    RSV(0xF4) \
+    RSV(0xF5) \
+    RSV(0xF6) \
+    RSV(0xF7) \
+    RSV(0xF8) \
+    RSV(0xF9) \
+    RSV(0xFA) \
+    RSV(0xFB) \
+    RSV(0xFC) \
+    RSV(0xFD) \
+    RSV(0xFE) \
+    RSV(0xFF)
+