Remove QUICK bytecodes.

Remove the deprecated unofficial (not part of the spec) bytecodes.
This frees the 16 bytecodes for future use.

Bug: 170086509
Test: m test-art-host-gtest
Test: test.py -r -b --host
Change-Id: I9f6d8a2c21b88f883c8fdc1eb67b24620f313d56
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc
index 146eb1d..ee6113f 100644
--- a/compiler/optimizing/instruction_builder.cc
+++ b/compiler/optimizing/instruction_builder.cc
@@ -3560,37 +3560,10 @@
       break;
     }
 
-    case Instruction::IGET_QUICK:
-    case Instruction::IGET_BOOLEAN_QUICK:
-    case Instruction::IGET_BYTE_QUICK:
-    case Instruction::IGET_SHORT_QUICK:
-    case Instruction::IGET_CHAR_QUICK:
-    case Instruction::IGET_WIDE_QUICK:
-    case Instruction::IGET_OBJECT_QUICK:
-    case Instruction::IPUT_QUICK:
-    case Instruction::IPUT_BOOLEAN_QUICK:
-    case Instruction::IPUT_BYTE_QUICK:
-    case Instruction::IPUT_SHORT_QUICK:
-    case Instruction::IPUT_CHAR_QUICK:
-    case Instruction::IPUT_WIDE_QUICK:
-    case Instruction::IPUT_OBJECT_QUICK:
-    case Instruction::INVOKE_VIRTUAL_QUICK:
-    case Instruction::INVOKE_VIRTUAL_RANGE_QUICK:
-    case Instruction::UNUSED_3E:
-    case Instruction::UNUSED_3F:
-    case Instruction::UNUSED_40:
-    case Instruction::UNUSED_41:
-    case Instruction::UNUSED_42:
-    case Instruction::UNUSED_43:
+    case Instruction::UNUSED_3E ... Instruction::UNUSED_43:
     case Instruction::UNUSED_79:
     case Instruction::UNUSED_7A:
-    case Instruction::UNUSED_F3:
-    case Instruction::UNUSED_F4:
-    case Instruction::UNUSED_F5:
-    case Instruction::UNUSED_F6:
-    case Instruction::UNUSED_F7:
-    case Instruction::UNUSED_F8:
-    case Instruction::UNUSED_F9: {
+    case Instruction::UNUSED_E3 ... Instruction::UNUSED_F9: {
       VLOG(compiler) << "Did not compile "
                      << dex_file_->PrettyMethod(dex_compilation_unit_->GetDexMethodIndex())
                      << " because of unhandled instruction "
diff --git a/libdexfile/dex/dex_instruction.cc b/libdexfile/dex/dex_instruction.cc
index 93270cd..11a2d97 100644
--- a/libdexfile/dex/dex_instruction.cc
+++ b/libdexfile/dex/dex_instruction.cc
@@ -281,15 +281,6 @@
             break;
           }
           FALLTHROUGH_INTENDED;
-        case IGET_QUICK:
-        case IGET_OBJECT_QUICK:
-          if (file != nullptr) {
-            uint32_t field_idx = VRegC_22c();
-            os << opcode << " v" << static_cast<int>(VRegA_22c()) << ", v" << static_cast<int>(VRegB_22c()) << ", "
-               << "// offset@" << field_idx;
-            break;
-          }
-          FALLTHROUGH_INTENDED;
         case IPUT:
         case IPUT_WIDE:
         case IPUT_OBJECT:
@@ -304,15 +295,6 @@
             break;
           }
           FALLTHROUGH_INTENDED;
-        case IPUT_QUICK:
-        case IPUT_OBJECT_QUICK:
-          if (file != nullptr) {
-            uint32_t field_idx = VRegC_22c();
-            os << opcode << " v" << static_cast<int>(VRegA_22c()) << ", v" << static_cast<int>(VRegB_22c()) << ", "
-               << "// offset@" << field_idx;
-            break;
-          }
-          FALLTHROUGH_INTENDED;
         case INSTANCE_OF:
           if (file != nullptr) {
             dex::TypeIndex type_idx(VRegC_22c());
@@ -399,15 +381,6 @@
             break;
           }
           FALLTHROUGH_INTENDED;
-        case INVOKE_VIRTUAL_QUICK:
-          if (file != nullptr) {
-            os << opcode << " {";
-            uint32_t vtable_offset = VRegB_35c();
-            DumpArgs(VRegA_35c());
-            os << "},  // vtable@" << vtable_offset;
-            break;
-          }
-          FALLTHROUGH_INTENDED;
         case INVOKE_CUSTOM:
           if (file != nullptr) {
             os << opcode << " {";
@@ -441,14 +414,6 @@
             break;
           }
           FALLTHROUGH_INTENDED;
-        case INVOKE_VIRTUAL_RANGE_QUICK:
-          if (file != nullptr) {
-            uint32_t method_idx = VRegB_3rc();
-            os << StringPrintf("%s, {v%d .. v%d}, ", opcode, first_reg, last_reg)
-               << "// vtable@" << method_idx;
-            break;
-          }
-          FALLTHROUGH_INTENDED;
         case INVOKE_CUSTOM_RANGE:
           if (file != nullptr) {
             uint32_t call_site_idx = VRegB_3rc();
diff --git a/libdexfile/dex/dex_instruction_list.h b/libdexfile/dex/dex_instruction_list.h
index b9540a6..3672351 100644
--- a/libdexfile/dex/dex_instruction_list.h
+++ b/libdexfile/dex/dex_instruction_list.h
@@ -246,22 +246,22 @@
   V(0xE0, SHL_INT_LIT8, "shl-int/lit8", k22b, kIndexNone, kContinue, kShl | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB) \
   V(0xE1, SHR_INT_LIT8, "shr-int/lit8", k22b, kIndexNone, kContinue, kShr | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB) \
   V(0xE2, USHR_INT_LIT8, "ushr-int/lit8", k22b, kIndexNone, kContinue, kUshr | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB) \
-  V(0xE3, IGET_QUICK, "iget-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xE4, IGET_WIDE_QUICK, "iget-wide-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegAWide | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xE5, IGET_OBJECT_QUICK, "iget-object-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xE6, IPUT_QUICK, "iput-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xE7, IPUT_WIDE_QUICK, "iput-wide-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegAWide | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xE8, IPUT_OBJECT_QUICK, "iput-object-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xE9, INVOKE_VIRTUAL_QUICK, "invoke-virtual-quick", k35c, kIndexVtableOffset, kContinue | kThrow | kInvoke, 0, kVerifyVarArgNonZero | kVerifyRuntimeOnly) \
-  V(0xEA, INVOKE_VIRTUAL_RANGE_QUICK, "invoke-virtual/range-quick", k3rc, kIndexVtableOffset, kContinue | kThrow | kInvoke, 0, kVerifyVarArgRangeNonZero | kVerifyRuntimeOnly) \
-  V(0xEB, IPUT_BOOLEAN_QUICK, "iput-boolean-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xEC, IPUT_BYTE_QUICK, "iput-byte-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xED, IPUT_CHAR_QUICK, "iput-char-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xEE, IPUT_SHORT_QUICK, "iput-short-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xEF, IGET_BOOLEAN_QUICK, "iget-boolean-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xF0, IGET_BYTE_QUICK, "iget-byte-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xF1, IGET_CHAR_QUICK, "iget-char-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
-  V(0xF2, IGET_SHORT_QUICK, "iget-short-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \
+  V(0xE3, UNUSED_E3, "unused-e3", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xE4, UNUSED_E4, "unused-e4", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xE5, UNUSED_E5, "unused-e5", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xE6, UNUSED_E6, "unused-e6", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xE7, UNUSED_E7, "unused-e7", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xE8, UNUSED_E8, "unused-e8", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xE9, UNUSED_E9, "unused-e9", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xEA, UNUSED_EA, "unused-ea", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xEB, UNUSED_EB, "unused-eb", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xEC, UNUSED_EC, "unused-ec", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xED, UNUSED_ED, "unused-ed", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xEE, UNUSED_EE, "unused-ee", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xEF, UNUSED_EF, "unused-ef", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xF0, UNUSED_F0, "unused-f0", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xF1, UNUSED_F1, "unused-f1", k10x, kIndexUnknown, 0, 0, kVerifyError) \
+  V(0xF2, UNUSED_F2, "unused-f2", k10x, kIndexUnknown, 0, 0, kVerifyError) \
   V(0xF3, UNUSED_F3, "unused-f3", k10x, kIndexUnknown, 0, 0, kVerifyError) \
   V(0xF4, UNUSED_F4, "unused-f4", k10x, kIndexUnknown, 0, 0, kVerifyError) \
   V(0xF5, UNUSED_F5, "unused-f5", k10x, kIndexUnknown, 0, 0, kVerifyError) \
diff --git a/libdexfile/dex/dex_instruction_test.cc b/libdexfile/dex/dex_instruction_test.cc
index 3f79abf..b0e3d6e 100644
--- a/libdexfile/dex/dex_instruction_test.cc
+++ b/libdexfile/dex/dex_instruction_test.cc
@@ -169,8 +169,6 @@
             "filled-new-array {v3, v2}, type@1234");
   EXPECT_EQ(DumpInst35c(Instruction::INVOKE_VIRTUAL, 1234, {3, 2, 1, 5, 6}),
             "invoke-virtual {v3, v2, v1, v5, v6}, thing@1234");
-  EXPECT_EQ(DumpInst35c(Instruction::INVOKE_VIRTUAL_QUICK, 1234, {3, 2, 1, 5}),
-            "invoke-virtual-quick {v3, v2, v1, v5}, thing@1234");
   EXPECT_EQ(DumpInst35c(Instruction::INVOKE_CUSTOM, 1234, {3, 2, 1}),
             "invoke-custom {v3, v2, v1}, thing@1234");
 }
diff --git a/libdexfile/dex/dex_instruction_utils.h b/libdexfile/dex/dex_instruction_utils.h
index 49179be..53beb9f 100644
--- a/libdexfile/dex/dex_instruction_utils.h
+++ b/libdexfile/dex/dex_instruction_utils.h
@@ -68,11 +68,6 @@
       opcode != Instruction::RETURN_VOID_NO_BARRIER;
 }
 
-constexpr bool IsInstructionQuickInvoke(Instruction::Code opcode) {
-  return opcode == Instruction::INVOKE_VIRTUAL_QUICK ||
-      opcode == Instruction::INVOKE_VIRTUAL_RANGE_QUICK;
-}
-
 constexpr bool IsInstructionInvokeStatic(Instruction::Code opcode) {
   return opcode == Instruction::INVOKE_STATIC || opcode == Instruction::INVOKE_STATIC_RANGE;
 }
@@ -117,11 +112,6 @@
   return Instruction::IGET <= code && code <= Instruction::IPUT_SHORT;
 }
 
-constexpr bool IsInstructionIGetQuickOrIPutQuick(Instruction::Code code) {
-  return (code >= Instruction::IGET_QUICK && code <= Instruction::IPUT_OBJECT_QUICK) ||
-      (code >= Instruction::IPUT_BOOLEAN_QUICK && code <= Instruction::IGET_SHORT_QUICK);
-}
-
 constexpr bool IsInstructionSGetOrSPut(Instruction::Code code) {
   return Instruction::SGET <= code && code <= Instruction::SPUT_SHORT;
 }
@@ -181,29 +171,6 @@
   return (code >= Instruction::IPUT) ? IPutMemAccessType(code) : IGetMemAccessType(code);
 }
 
-inline DexMemAccessType IGetQuickOrIPutQuickMemAccessType(Instruction::Code code) {
-  DCHECK(IsInstructionIGetQuickOrIPutQuick(code));
-  switch (code) {
-    case Instruction::IGET_QUICK: case Instruction::IPUT_QUICK:
-      return kDexMemAccessWord;
-    case Instruction::IGET_WIDE_QUICK: case Instruction::IPUT_WIDE_QUICK:
-      return kDexMemAccessWide;
-    case Instruction::IGET_OBJECT_QUICK: case Instruction::IPUT_OBJECT_QUICK:
-      return kDexMemAccessObject;
-    case Instruction::IGET_BOOLEAN_QUICK: case Instruction::IPUT_BOOLEAN_QUICK:
-      return kDexMemAccessBoolean;
-    case Instruction::IGET_BYTE_QUICK: case Instruction::IPUT_BYTE_QUICK:
-      return kDexMemAccessByte;
-    case Instruction::IGET_CHAR_QUICK: case Instruction::IPUT_CHAR_QUICK:
-      return kDexMemAccessChar;
-    case Instruction::IGET_SHORT_QUICK: case Instruction::IPUT_SHORT_QUICK:
-      return kDexMemAccessShort;
-    default:
-      LOG(FATAL) << code;
-      UNREACHABLE();
-  }
-}
-
 constexpr DexMemAccessType SGetOrSPutMemAccessType(Instruction::Code code) {
   DCHECK(IsInstructionSGetOrSPut(code));
   return (code >= Instruction::SPUT) ? SPutMemAccessType(code) : SGetMemAccessType(code);
diff --git a/runtime/dex_to_dex_decompiler.cc b/runtime/dex_to_dex_decompiler.cc
index d078d6f..eac2709 100644
--- a/runtime/dex_to_dex_decompiler.cc
+++ b/runtime/dex_to_dex_decompiler.cc
@@ -110,70 +110,6 @@
         }
         break;
 
-      case Instruction::IGET_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET);
-        break;
-
-      case Instruction::IGET_WIDE_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET_WIDE);
-        break;
-
-      case Instruction::IGET_OBJECT_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET_OBJECT);
-        break;
-
-      case Instruction::IGET_BOOLEAN_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET_BOOLEAN);
-        break;
-
-      case Instruction::IGET_BYTE_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET_BYTE);
-        break;
-
-      case Instruction::IGET_CHAR_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET_CHAR);
-        break;
-
-      case Instruction::IGET_SHORT_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IGET_SHORT);
-        break;
-
-      case Instruction::IPUT_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT);
-        break;
-
-      case Instruction::IPUT_BOOLEAN_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT_BOOLEAN);
-        break;
-
-      case Instruction::IPUT_BYTE_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT_BYTE);
-        break;
-
-      case Instruction::IPUT_CHAR_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT_CHAR);
-        break;
-
-      case Instruction::IPUT_SHORT_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT_SHORT);
-        break;
-
-      case Instruction::IPUT_WIDE_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT_WIDE);
-        break;
-
-      case Instruction::IPUT_OBJECT_QUICK:
-        DecompileInstanceFieldAccess(inst, Instruction::IPUT_OBJECT);
-        break;
-
-      case Instruction::INVOKE_VIRTUAL_QUICK:
-        DecompileInvokeVirtual(inst, Instruction::INVOKE_VIRTUAL, false);
-        break;
-
-      case Instruction::INVOKE_VIRTUAL_RANGE_QUICK:
-        DecompileInvokeVirtual(inst, Instruction::INVOKE_VIRTUAL_RANGE, true);
-        break;
-
       default:
         break;
     }
diff --git a/runtime/interpreter/interpreter_switch_impl-inl.h b/runtime/interpreter/interpreter_switch_impl-inl.h
index 4b3f8c6..538ac12 100644
--- a/runtime/interpreter/interpreter_switch_impl-inl.h
+++ b/runtime/interpreter/interpreter_switch_impl-inl.h
@@ -917,34 +917,6 @@
     return HandleGet<InstanceObjectRead, Primitive::kPrimNot>();
   }
 
-  HANDLER_ATTRIBUTES bool IGET_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IGET_WIDE_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IGET_OBJECT_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IGET_BOOLEAN_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IGET_BYTE_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IGET_CHAR_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IGET_SHORT_QUICK() {
-    return HandleUnused();
-  }
-
   HANDLER_ATTRIBUTES bool SGET_BOOLEAN() {
     return HandleGet<StaticPrimitiveRead, Primitive::kPrimBoolean>();
   }
@@ -1001,34 +973,6 @@
     return HandlePut<InstanceObjectWrite, Primitive::kPrimNot>();
   }
 
-  HANDLER_ATTRIBUTES bool IPUT_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IPUT_BOOLEAN_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IPUT_BYTE_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IPUT_CHAR_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IPUT_SHORT_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IPUT_WIDE_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool IPUT_OBJECT_QUICK() {
-    return HandleUnused();
-  }
-
   HANDLER_ATTRIBUTES bool SPUT_BOOLEAN() {
     return HandlePut<StaticPrimitiveWrite, Primitive::kPrimBoolean>();
   }
@@ -1097,14 +1041,6 @@
     return HandleInvoke<kStatic, /*is_range=*/ true>();
   }
 
-  HANDLER_ATTRIBUTES bool INVOKE_VIRTUAL_QUICK() {
-    return HandleUnused();
-  }
-
-  HANDLER_ATTRIBUTES bool INVOKE_VIRTUAL_RANGE_QUICK() {
-    return HandleUnused();
-  }
-
   HANDLER_ATTRIBUTES bool INVOKE_POLYMORPHIC() {
     DCHECK(Runtime::Current()->IsMethodHandlesEnabled());
     bool success = DoInvokePolymorphic</* is_range= */ false>(
@@ -1673,6 +1609,70 @@
     return HandleUnused();
   }
 
+  HANDLER_ATTRIBUTES bool UNUSED_E3() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_E4() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_E5() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_E6() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_E7() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_E8() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_E9() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_EA() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_EB() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_EC() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_ED() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_EE() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_EF() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_F0() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_F1() {
+    return HandleUnused();
+  }
+
+  HANDLER_ATTRIBUTES bool UNUSED_F2() {
+    return HandleUnused();
+  }
+
   HANDLER_ATTRIBUTES bool UNUSED_F3() {
     return HandleUnused();
   }
diff --git a/runtime/interpreter/mterp/arm/invoke.S b/runtime/interpreter/mterp/arm/invoke.S
index 8e5ecd0..376c93b 100644
--- a/runtime/interpreter/mterp/arm/invoke.S
+++ b/runtime/interpreter/mterp/arm/invoke.S
@@ -111,11 +111,5 @@
     /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */
     /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */
 
-%def op_invoke_virtual_quick():
-%  unused()
-
 %def op_invoke_virtual_range():
 %  invoke(helper="MterpInvokeVirtualRange")
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/arm/object.S b/runtime/interpreter/mterp/arm/object.S
index adbd405..8414a1f 100644
--- a/runtime/interpreter/mterp/arm/object.S
+++ b/runtime/interpreter/mterp/arm/object.S
@@ -87,42 +87,21 @@
 %def op_iget_boolean():
 %  op_iget(load="ldrb", helper="MterpIGetU8")
 
-%def op_iget_boolean_quick():
-%  unused()
-
 %def op_iget_byte():
 %  op_iget(load="ldrsb", helper="MterpIGetI8")
 
-%def op_iget_byte_quick():
-%  unused()
-
 %def op_iget_char():
 %  op_iget(load="ldrh", helper="MterpIGetU16")
 
-%def op_iget_char_quick():
-%  unused()
-
 %def op_iget_object():
 %  op_iget(is_object=True, helper="MterpIGetObj")
 
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="ldr"):
-%  unused()
-
 %def op_iget_short():
 %  op_iget(load="ldrsh", helper="MterpIGetI16")
 
-%def op_iget_short_quick():
-%  unused()
-
 %def op_iget_wide():
 %  op_iget(is_wide=True, helper="MterpIGetU64")
 
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_instance_of():
     /*
      * Check to see if an object reference is an instance of a class.
@@ -154,42 +133,21 @@
 %def op_iput_boolean():
 %  op_iput(helper="MterpIPutU8")
 
-%def op_iput_boolean_quick():
-%  unused()
-
 %def op_iput_byte():
 %  op_iput(helper="MterpIPutI8")
 
-%def op_iput_byte_quick():
-%  unused()
-
 %def op_iput_char():
 %  op_iput(helper="MterpIPutU16")
 
-%def op_iput_char_quick():
-%  unused()
-
 %def op_iput_object():
 %  op_iput(helper="MterpIPutObj")
 
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_quick(store="str"):
-%  unused()
-
 %def op_iput_short():
 %  op_iput(helper="MterpIPutI16")
 
-%def op_iput_short_quick():
-%  unused()
-
 %def op_iput_wide():
 %  op_iput(helper="MterpIPutU64")
 
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_new_instance():
     /*
      * Create a new instance of a class.
diff --git a/runtime/interpreter/mterp/arm/other.S b/runtime/interpreter/mterp/arm/other.S
index 31b9354..20f1acf 100644
--- a/runtime/interpreter/mterp/arm/other.S
+++ b/runtime/interpreter/mterp/arm/other.S
@@ -357,6 +357,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/interpreter/mterp/arm64/invoke.S b/runtime/interpreter/mterp/arm64/invoke.S
index 2348608..4d75af6 100644
--- a/runtime/interpreter/mterp/arm64/invoke.S
+++ b/runtime/interpreter/mterp/arm64/invoke.S
@@ -100,11 +100,5 @@
     /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */
     /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */
 
-%def op_invoke_virtual_quick():
-%  unused()
-
 %def op_invoke_virtual_range():
 %  invoke(helper="MterpInvokeVirtualRange")
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/arm64/object.S b/runtime/interpreter/mterp/arm64/object.S
index 73ce5e0..fb1dac9 100644
--- a/runtime/interpreter/mterp/arm64/object.S
+++ b/runtime/interpreter/mterp/arm64/object.S
@@ -83,42 +83,21 @@
 %def op_iget_boolean():
 %  op_iget(load="ldrb", helper="MterpIGetU8")
 
-%def op_iget_boolean_quick():
-%  unused()
-
 %def op_iget_byte():
 %  op_iget(load="ldrsb", helper="MterpIGetI8")
 
-%def op_iget_byte_quick():
-%  unused()
-
 %def op_iget_char():
 %  op_iget(load="ldrh", helper="MterpIGetU16")
 
-%def op_iget_char_quick():
-%  unused()
-
 %def op_iget_object():
 %  op_iget(is_object=True, helper="MterpIGetObj")
 
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="ldr", extend=""):
-%  unused()
-
 %def op_iget_short():
 %  op_iget(load="ldrsh", helper="MterpIGetI16")
 
-%def op_iget_short_quick():
-%  unused()
-
 %def op_iget_wide():
 %  op_iget(is_wide=True, helper="MterpIGetU64")
 
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_instance_of():
     /*
      * Check to see if an object reference is an instance of a class.
@@ -149,42 +128,21 @@
 %def op_iput_boolean():
 %  op_iput(helper="MterpIPutU8")
 
-%def op_iput_boolean_quick():
-%  unused()
-
 %def op_iput_byte():
 %  op_iput(helper="MterpIPutI8")
 
-%def op_iput_byte_quick():
-%  unused()
-
 %def op_iput_char():
 %  op_iput(helper="MterpIPutU16")
 
-%def op_iput_char_quick():
-%  unused()
-
 %def op_iput_object():
 %  op_iput(helper="MterpIPutObj")
 
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_quick(store="str"):
-%  unused()
-
 %def op_iput_short():
 %  op_iput(helper="MterpIPutI16")
 
-%def op_iput_short_quick():
-%  unused()
-
 %def op_iput_wide():
 %  op_iput(helper="MterpIPutU64")
 
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_new_instance():
     /*
      * Create a new instance of a class.
diff --git a/runtime/interpreter/mterp/arm64/other.S b/runtime/interpreter/mterp/arm64/other.S
index eccd521..a8cf62e 100644
--- a/runtime/interpreter/mterp/arm64/other.S
+++ b/runtime/interpreter/mterp/arm64/other.S
@@ -331,6 +331,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/interpreter/mterp/arm64ng/invoke.S b/runtime/interpreter/mterp/arm64ng/invoke.S
index 4983201..39f2ea0 100644
--- a/runtime/interpreter/mterp/arm64ng/invoke.S
+++ b/runtime/interpreter/mterp/arm64ng/invoke.S
@@ -171,9 +171,3 @@
 
 %def op_invoke_virtual_range():
 %  invoke_virtual(helper="NterpCommonInvokeInstanceRange", range="1")
-
-%def op_invoke_virtual_quick():
-%  unused()
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/arm64ng/object.S b/runtime/interpreter/mterp/arm64ng/object.S
index fafc2d2..00490a7 100644
--- a/runtime/interpreter/mterp/arm64ng/object.S
+++ b/runtime/interpreter/mterp/arm64ng/object.S
@@ -129,27 +129,6 @@
 %def op_iget_object():
 %  op_iget(load="ldr", volatile_load="ldar", maybe_extend="", wide="0", is_object="1")
 
-%def op_iget_boolean_quick():
-%  unused()
-
-%def op_iget_byte_quick():
-%  unused()
-
-%def op_iget_char_quick():
-%  unused()
-
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="ldr", wide="0"):
-%  unused()
-
-%def op_iget_short_quick():
-%  unused()
-
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_iput_boolean():
 %  op_iput(store="strb", volatile_store="stlrb", wide="0", is_object="0")
 
@@ -227,27 +206,6 @@
 %def op_iput_object():
 %  op_iput(store="str", volatile_store="stlr", wide="0", is_object="1")
 
-%def op_iput_boolean_quick():
-%  unused()
-
-%def op_iput_byte_quick():
-%  unused()
-
-%def op_iput_char_quick():
-%  unused()
-
-%def op_iput_quick(store="str", wide="0", is_object="0"):
-%  unused()
-
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_short_quick():
-%  unused()
-
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_sget_boolean():
 %  op_sget(load="ldrb", volatile_load="ldarb", maybe_extend="", wide="0", is_object="0")
 
diff --git a/runtime/interpreter/mterp/arm64ng/other.S b/runtime/interpreter/mterp/arm64ng/other.S
index 56a8086..ace1b09 100644
--- a/runtime/interpreter/mterp/arm64ng/other.S
+++ b/runtime/interpreter/mterp/arm64ng/other.S
@@ -308,6 +308,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/interpreter/mterp/armng/invoke.S b/runtime/interpreter/mterp/armng/invoke.S
index 6163322..d373147 100644
--- a/runtime/interpreter/mterp/armng/invoke.S
+++ b/runtime/interpreter/mterp/armng/invoke.S
@@ -178,9 +178,3 @@
 
 %def op_invoke_virtual_range():
 %  invoke_virtual(helper="NterpCommonInvokeInstanceRange", range="1")
-
-%def op_invoke_virtual_quick():
-%  unused()
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/armng/object.S b/runtime/interpreter/mterp/armng/object.S
index 992feeb..c56ec05 100644
--- a/runtime/interpreter/mterp/armng/object.S
+++ b/runtime/interpreter/mterp/armng/object.S
@@ -145,27 +145,6 @@
 %def op_iget_object():
 %  op_iget(load="ldr", wide="0", is_object="1")
 
-%def op_iget_boolean_quick():
-%  unused()
-
-%def op_iget_byte_quick():
-%  unused()
-
-%def op_iget_char_quick():
-%  unused()
-
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="ldr", wide="0"):
-%  unused()
-
-%def op_iget_short_quick():
-%  unused()
-
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_iput_boolean():
 %  op_iput(store="strb", wide="0", is_object="0")
 
@@ -259,27 +238,6 @@
 %def op_iput_object():
 %  op_iput(store="str", wide="0", is_object="1")
 
-%def op_iput_boolean_quick():
-%  unused()
-
-%def op_iput_byte_quick():
-%  unused()
-
-%def op_iput_char_quick():
-%  unused()
-
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_quick(store="str", wide="0", is_object="0"):
-%  unused()
-
-%def op_iput_short_quick():
-%  unused()
-
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_sget_boolean():
 %  op_sget(load="ldrb", wide="0", is_object="0")
 
diff --git a/runtime/interpreter/mterp/armng/other.S b/runtime/interpreter/mterp/armng/other.S
index 9100ed7..063be34 100644
--- a/runtime/interpreter/mterp/armng/other.S
+++ b/runtime/interpreter/mterp/armng/other.S
@@ -333,6 +333,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/interpreter/mterp/x86/invoke.S b/runtime/interpreter/mterp/x86/invoke.S
index ec4f8f9..7f51880 100644
--- a/runtime/interpreter/mterp/x86/invoke.S
+++ b/runtime/interpreter/mterp/x86/invoke.S
@@ -111,11 +111,5 @@
     /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */
     /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */
 
-%def op_invoke_virtual_quick():
-%  unused()
-
 %def op_invoke_virtual_range():
 %  invoke(helper="MterpInvokeVirtualRange")
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/x86/object.S b/runtime/interpreter/mterp/x86/object.S
index e8f1dba..6ab1931 100644
--- a/runtime/interpreter/mterp/x86/object.S
+++ b/runtime/interpreter/mterp/x86/object.S
@@ -42,42 +42,21 @@
 %def op_iget_boolean():
 %  op_iget(helper="MterpIGetU8")
 
-%def op_iget_boolean_quick():
-%  unused()
-
 %def op_iget_byte():
 %  op_iget(helper="MterpIGetI8")
 
-%def op_iget_byte_quick():
-%  unused()
-
 %def op_iget_char():
 %  op_iget(helper="MterpIGetU16")
 
-%def op_iget_char_quick():
-%  unused()
-
 %def op_iget_object():
 %  op_iget(is_object="1", helper="MterpIGetObj")
 
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="movl"):
-%  unused()
-
 %def op_iget_short():
 %  op_iget(helper="MterpIGetI16")
 
-%def op_iget_short_quick():
-%  unused()
-
 %def op_iget_wide():
 %  op_iget(helper="MterpIGetU64")
 
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_instance_of():
 /*
  * Check to see if an object reference is an instance of a class.
@@ -112,42 +91,21 @@
 %def op_iput_boolean():
 %  op_iput(helper="MterpIPutU8")
 
-%def op_iput_boolean_quick():
-%  unused()
-
 %def op_iput_byte():
 %  op_iput(helper="MterpIPutI8")
 
-%def op_iput_byte_quick():
-%  unused()
-
 %def op_iput_char():
 %  op_iput(helper="MterpIPutU16")
 
-%def op_iput_char_quick():
-%  unused()
-
 %def op_iput_object():
 %  op_iput(is_object="1", helper="MterpIPutObj")
 
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_quick(reg="rINST", store="movl"):
-%  unused()
-
 %def op_iput_short():
 %  op_iput(helper="MterpIPutI16")
 
-%def op_iput_short_quick():
-%  unused()
-
 %def op_iput_wide():
 %  op_iput(helper="MterpIPutU64")
 
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_new_instance():
 /*
  * Create a new instance of a class.
diff --git a/runtime/interpreter/mterp/x86/other.S b/runtime/interpreter/mterp/x86/other.S
index 270ccb6..ec556b8 100644
--- a/runtime/interpreter/mterp/x86/other.S
+++ b/runtime/interpreter/mterp/x86/other.S
@@ -300,6 +300,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/interpreter/mterp/x86_64/invoke.S b/runtime/interpreter/mterp/x86_64/invoke.S
index 35fdbcd..a723096 100644
--- a/runtime/interpreter/mterp/x86_64/invoke.S
+++ b/runtime/interpreter/mterp/x86_64/invoke.S
@@ -105,11 +105,5 @@
     /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */
     /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */
 
-%def op_invoke_virtual_quick():
-%  unused()
-
 %def op_invoke_virtual_range():
 %  invoke(helper="MterpInvokeVirtualRange")
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/x86_64/object.S b/runtime/interpreter/mterp/x86_64/object.S
index afbcb50..643c6da 100644
--- a/runtime/interpreter/mterp/x86_64/object.S
+++ b/runtime/interpreter/mterp/x86_64/object.S
@@ -34,42 +34,21 @@
 %def op_iget_boolean():
 %  op_iget(helper="MterpIGetU8")
 
-%def op_iget_boolean_quick():
-%  unused()
-
 %def op_iget_byte():
 %  op_iget(helper="MterpIGetI8")
 
-%def op_iget_byte_quick():
-%  unused()
-
 %def op_iget_char():
 %  op_iget(helper="MterpIGetU16")
 
-%def op_iget_char_quick():
-%  unused()
-
 %def op_iget_object():
 %  op_iget(is_object="1", helper="MterpIGetObj")
 
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="movl", wide="0"):
-%  unused()
-
 %def op_iget_short():
 %  op_iget(helper="MterpIGetI16")
 
-%def op_iget_short_quick():
-%  unused()
-
 %def op_iget_wide():
 %  op_iget(helper="MterpIGetU64")
 
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_instance_of():
 /*
  * Check to see if an object reference is an instance of a class.
@@ -100,42 +79,21 @@
 %def op_iput_boolean():
 %  op_iput(helper="MterpIPutU8")
 
-%def op_iput_boolean_quick():
-%  unused()
-
 %def op_iput_byte():
 %  op_iput(helper="MterpIPutI8")
 
-%def op_iput_byte_quick():
-%  unused()
-
 %def op_iput_char():
 %  op_iput(helper="MterpIPutU16")
 
-%def op_iput_char_quick():
-%  unused()
-
 %def op_iput_object():
 %  op_iput(is_object="1", helper="MterpIPutObj")
 
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_quick(reg="rINST", store="movl"):
-%  unused()
-
 %def op_iput_short():
 %  op_iput(helper="MterpIPutI16")
 
-%def op_iput_short_quick():
-%  unused()
-
 %def op_iput_wide():
 %  op_iput(helper="MterpIPutU64")
 
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_new_instance():
 /*
  * Create a new instance of a class.
diff --git a/runtime/interpreter/mterp/x86_64/other.S b/runtime/interpreter/mterp/x86_64/other.S
index 412389f..ec76b83 100644
--- a/runtime/interpreter/mterp/x86_64/other.S
+++ b/runtime/interpreter/mterp/x86_64/other.S
@@ -269,6 +269,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/interpreter/mterp/x86_64ng/invoke.S b/runtime/interpreter/mterp/x86_64ng/invoke.S
index 6ae43c9..2e3d297 100644
--- a/runtime/interpreter/mterp/x86_64ng/invoke.S
+++ b/runtime/interpreter/mterp/x86_64ng/invoke.S
@@ -171,11 +171,5 @@
 %def op_invoke_virtual():
 %  invoke_virtual(helper="NterpCommonInvokeInstance", range="0")
 
-%def op_invoke_virtual_quick():
-%  unused()
-
 %def op_invoke_virtual_range():
 %  invoke_virtual(helper="NterpCommonInvokeInstanceRange", range="1")
-
-%def op_invoke_virtual_range_quick():
-%  unused()
diff --git a/runtime/interpreter/mterp/x86_64ng/object.S b/runtime/interpreter/mterp/x86_64ng/object.S
index cb81a91..2b4e12c 100644
--- a/runtime/interpreter/mterp/x86_64ng/object.S
+++ b/runtime/interpreter/mterp/x86_64ng/object.S
@@ -4,42 +4,21 @@
 %def op_iget_boolean():
    jmp NterpGetBooleanInstanceField
 
-%def op_iget_boolean_quick():
-%  unused()
-
 %def op_iget_byte():
    jmp NterpGetByteInstanceField
 
-%def op_iget_byte_quick():
-%  unused()
-
 %def op_iget_char():
    jmp NterpGetCharInstanceField
 
-%def op_iget_char_quick():
-%  unused()
-
 %def op_iget_object():
     jmp NterpGetObjectInstanceField
 
-%def op_iget_object_quick():
-%  unused()
-
-%def op_iget_quick(load="movl", wide="0"):
-%  unused()
-
 %def op_iget_short():
    jmp NterpGetShortInstanceField
 
-%def op_iget_short_quick():
-%  unused()
-
 %def op_iget_wide():
    jmp NterpGetWideInstanceField
 
-%def op_iget_wide_quick():
-%  unused()
-
 %def op_instance_of():
    jmp NterpInstanceOf
 
@@ -52,42 +31,21 @@
 %def op_iput_boolean():
    jmp NterpPutBooleanInstanceField
 
-%def op_iput_boolean_quick():
-%  unused()
-
 %def op_iput_byte():
    jmp NterpPutByteInstanceField
 
-%def op_iput_byte_quick():
-%  unused()
-
 %def op_iput_char():
    jmp NterpPutCharInstanceField
 
-%def op_iput_char_quick():
-%  unused()
-
 %def op_iput_object():
     jmp NterpPutObjectInstanceField
 
-%def op_iput_object_quick():
-%  unused()
-
-%def op_iput_quick(reg="rINST", store="movl"):
-%  unused()
-
 %def op_iput_short():
    jmp NterpPutShortInstanceField
 
-%def op_iput_short_quick():
-%  unused()
-
 %def op_iput_wide():
    jmp NterpPutWideInstanceField
 
-%def op_iput_wide_quick():
-%  unused()
-
 %def op_sget(load="movl", wide="0"):
    jmp NterpGetIntStaticField
 
diff --git a/runtime/interpreter/mterp/x86_64ng/other.S b/runtime/interpreter/mterp/x86_64ng/other.S
index 7d82c3b..bbbf663 100644
--- a/runtime/interpreter/mterp/x86_64ng/other.S
+++ b/runtime/interpreter/mterp/x86_64ng/other.S
@@ -245,6 +245,54 @@
 %def op_unused_7a():
 %  unused()
 
+%def op_unused_e3():
+%  unused()
+
+%def op_unused_e4():
+%  unused()
+
+%def op_unused_e5():
+%  unused()
+
+%def op_unused_e6():
+%  unused()
+
+%def op_unused_e7():
+%  unused()
+
+%def op_unused_e8():
+%  unused()
+
+%def op_unused_e9():
+%  unused()
+
+%def op_unused_ea():
+%  unused()
+
+%def op_unused_eb():
+%  unused()
+
+%def op_unused_ec():
+%  unused()
+
+%def op_unused_ed():
+%  unused()
+
+%def op_unused_ee():
+%  unused()
+
+%def op_unused_ef():
+%  unused()
+
+%def op_unused_f0():
+%  unused()
+
+%def op_unused_f1():
+%  unused()
+
+%def op_unused_f2():
+%  unused()
+
 %def op_unused_f3():
 %  unused()
 
diff --git a/runtime/jit/profiling_info.cc b/runtime/jit/profiling_info.cc
index d4b16b4..e101f9a 100644
--- a/runtime/jit/profiling_info.cc
+++ b/runtime/jit/profiling_info.cc
@@ -46,8 +46,6 @@
     switch (inst->Opcode()) {
       case Instruction::INVOKE_VIRTUAL:
       case Instruction::INVOKE_VIRTUAL_RANGE:
-      case Instruction::INVOKE_VIRTUAL_QUICK:
-      case Instruction::INVOKE_VIRTUAL_RANGE_QUICK:
       case Instruction::INVOKE_INTERFACE:
       case Instruction::INVOKE_INTERFACE_RANGE:
         entries.push_back(inst.DexPc());
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index f7d0f28..ae71ad3 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -2844,61 +2844,47 @@
       break;
 
     case Instruction::IGET_BOOLEAN:
-    case Instruction::IGET_BOOLEAN_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Boolean(), true, false);
       break;
     case Instruction::IGET_BYTE:
-    case Instruction::IGET_BYTE_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Byte(), true, false);
       break;
     case Instruction::IGET_CHAR:
-    case Instruction::IGET_CHAR_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Char(), true, false);
       break;
     case Instruction::IGET_SHORT:
-    case Instruction::IGET_SHORT_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Short(), true, false);
       break;
     case Instruction::IGET:
-    case Instruction::IGET_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Integer(), true, false);
       break;
     case Instruction::IGET_WIDE:
-    case Instruction::IGET_WIDE_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.LongLo(), true, false);
       break;
     case Instruction::IGET_OBJECT:
-    case Instruction::IGET_OBJECT_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.JavaLangObject(false), false,
                                                     false);
       break;
 
     case Instruction::IPUT_BOOLEAN:
-    case Instruction::IPUT_BOOLEAN_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Boolean(), true, false);
       break;
     case Instruction::IPUT_BYTE:
-    case Instruction::IPUT_BYTE_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Byte(), true, false);
       break;
     case Instruction::IPUT_CHAR:
-    case Instruction::IPUT_CHAR_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Char(), true, false);
       break;
     case Instruction::IPUT_SHORT:
-    case Instruction::IPUT_SHORT_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Short(), true, false);
       break;
     case Instruction::IPUT:
-    case Instruction::IPUT_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Integer(), true, false);
       break;
     case Instruction::IPUT_WIDE:
-    case Instruction::IPUT_WIDE_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.LongLo(), true, false);
       break;
     case Instruction::IPUT_OBJECT:
-    case Instruction::IPUT_OBJECT_QUICK:
       VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.JavaLangObject(false), false,
                                                     false);
       break;
@@ -2952,12 +2938,9 @@
     case Instruction::INVOKE_VIRTUAL:
     case Instruction::INVOKE_VIRTUAL_RANGE:
     case Instruction::INVOKE_SUPER:
-    case Instruction::INVOKE_SUPER_RANGE:
-    case Instruction::INVOKE_VIRTUAL_QUICK:
-    case Instruction::INVOKE_VIRTUAL_RANGE_QUICK: {
+    case Instruction::INVOKE_SUPER_RANGE: {
       bool is_range = (inst->Opcode() == Instruction::INVOKE_VIRTUAL_RANGE ||
-                       inst->Opcode() == Instruction::INVOKE_SUPER_RANGE ||
-                       inst->Opcode() == Instruction::INVOKE_VIRTUAL_RANGE_QUICK);
+                       inst->Opcode() == Instruction::INVOKE_SUPER_RANGE);
       bool is_super = (inst->Opcode() == Instruction::INVOKE_SUPER ||
                        inst->Opcode() == Instruction::INVOKE_SUPER_RANGE);
       MethodType type = is_super ? METHOD_SUPER : METHOD_VIRTUAL;
@@ -3469,7 +3452,7 @@
 
     /* These should never appear during verification. */
     case Instruction::UNUSED_3E ... Instruction::UNUSED_43:
-    case Instruction::UNUSED_F3 ... Instruction::UNUSED_F9:
+    case Instruction::UNUSED_E3 ... Instruction::UNUSED_F9:
     case Instruction::UNUSED_79:
     case Instruction::UNUSED_7A:
       Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "Unexpected opcode " << inst->DumpString(dex_file_);
diff --git a/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java b/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java
index ff43c7c..dfc57ac 100644
--- a/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java
+++ b/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java
@@ -133,14 +133,10 @@
       if (Opcode.isBetween(newOpcode, Opcode.FILLED_NEW_ARRAY, Opcode.FILL_ARRAY_DATA)
           || Opcode.isBetween(newOpcode, Opcode.PACKED_SWITCH, Opcode.SPARSE_SWITCH)
           || Opcode.isBetween(newOpcode, Opcode.INVOKE_VIRTUAL, Opcode.INVOKE_INTERFACE)
-          || Opcode.isBetween(newOpcode,
-              Opcode.INVOKE_VIRTUAL_RANGE, Opcode.INVOKE_INTERFACE_RANGE)
-              // Can never accept these instructions at compile time.
-              || Opcode.isBetween(newOpcode, Opcode.IGET_QUICK, Opcode.IPUT_SHORT_QUICK)
-              // Unused opcodes...
-              || Opcode.isBetween(newOpcode, Opcode.UNUSED_3E, Opcode.UNUSED_43)
-              || Opcode.isBetween(newOpcode, Opcode.UNUSED_79, Opcode.UNUSED_7A)
-              || Opcode.isBetween(newOpcode, Opcode.UNUSED_EF, Opcode.UNUSED_FF)) {
+          || Opcode.isBetween(newOpcode, Opcode.INVOKE_VIRTUAL_RANGE, Opcode.INVOKE_INTERFACE_RANGE)
+          || Opcode.isBetween(newOpcode, Opcode.UNUSED_3E, Opcode.UNUSED_43)
+          || Opcode.isBetween(newOpcode, Opcode.UNUSED_79, Opcode.UNUSED_7A)
+          || Opcode.isBetween(newOpcode, Opcode.UNUSED_E3, Opcode.UNUSED_FF)) {
         foundOpcode = false;
       }
     }
diff --git a/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java b/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java
index adafa62..620ea85 100644
--- a/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java
+++ b/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java
@@ -547,19 +547,18 @@
     addOpcodeInfo(Opcode.SHL_INT_LIT8, "shl-int/lit8", 0xe0, new Format22b());
     addOpcodeInfo(Opcode.SHR_INT_LIT8, "shr-int/lit8", 0xe1, new Format22b());
     addOpcodeInfo(Opcode.USHR_INT_LIT8, "ushr-int/lit8", 0xe2, new Format22b());
-    addOpcodeInfo(Opcode.IGET_QUICK, "+iget-quick", 0xe3, new Format22c());
-    addOpcodeInfo(Opcode.IGET_WIDE_QUICK, "+iget-wide-quick", 0xe4, new Format22c());
-    addOpcodeInfo(Opcode.IGET_OBJECT_QUICK, "+iget-object-quick", 0xe5, new Format22c());
-    addOpcodeInfo(Opcode.IPUT_QUICK, "+iput-quick", 0xe6, new Format22c());
-    addOpcodeInfo(Opcode.IPUT_WIDE_QUICK, "+iput-wide-quick", 0xe7, new Format22c());
-    addOpcodeInfo(Opcode.IPUT_OBJECT_QUICK, "+iput-object-quick", 0xe8, new Format22c());
-    addOpcodeInfo(Opcode.INVOKE_VIRTUAL_QUICK, "+invoke-virtual-quick", 0xe9, new Format35c());
-    addOpcodeInfo(Opcode.INVOKE_VIRTUAL_QUICK_RANGE, "+invoke-virtual-quick/range",
-        0xea, new Format3rc());
-    addOpcodeInfo(Opcode.IPUT_BOOLEAN_QUICK, "+iput-boolean-quick", 0xeb, new Format22c());
-    addOpcodeInfo(Opcode.IPUT_BYTE_QUICK, "+iput-byte-quick", 0xec, new Format22c());
-    addOpcodeInfo(Opcode.IPUT_CHAR_QUICK, "+iput-char-quick", 0xed, new Format22c());
-    addOpcodeInfo(Opcode.IPUT_SHORT_QUICK, "+iput-short-quick", 0xee, new Format22c());
+    addOpcodeInfo(Opcode.UNUSED_E3, "unused-e3", 0xe3, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_E4, "unused-e4", 0xe4, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_E5, "unused-e5", 0xe5, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_E6, "unused-e6", 0xe6, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_E7, "unused-e7", 0xe7, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_E8, "unused-e8", 0xe8, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_E9, "unused-e9", 0xe9, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_EA, "unused-ea", 0xea, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_EB, "unused-eb", 0xeb, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_EC, "unused-ec", 0xec, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_ED, "unused-ed", 0xed, new Format10x());
+    addOpcodeInfo(Opcode.UNUSED_EE, "unused-ee", 0xee, new Format10x());
     addOpcodeInfo(Opcode.UNUSED_EF, "unused-ef", 0xef, new Format10x());
     addOpcodeInfo(Opcode.UNUSED_F0, "unused-f0", 0xf0, new Format10x());
     addOpcodeInfo(Opcode.UNUSED_F1, "unused-f1", 0xf1, new Format10x());
diff --git a/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java b/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java
index f7c7788..5c2f081 100644
--- a/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java
+++ b/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java
@@ -244,18 +244,18 @@
   SHL_INT_LIT8,
   SHR_INT_LIT8,
   USHR_INT_LIT8,
-  IGET_QUICK,
-  IGET_WIDE_QUICK,
-  IGET_OBJECT_QUICK,
-  IPUT_QUICK,
-  IPUT_WIDE_QUICK,
-  IPUT_OBJECT_QUICK,
-  INVOKE_VIRTUAL_QUICK,
-  INVOKE_VIRTUAL_QUICK_RANGE,
-  IPUT_BOOLEAN_QUICK,
-  IPUT_BYTE_QUICK,
-  IPUT_CHAR_QUICK,
-  IPUT_SHORT_QUICK,
+  UNUSED_E3,
+  UNUSED_E4,
+  UNUSED_E5,
+  UNUSED_E6,
+  UNUSED_E7,
+  UNUSED_E8,
+  UNUSED_E9,
+  UNUSED_EA,
+  UNUSED_EB,
+  UNUSED_EC,
+  UNUSED_ED,
+  UNUSED_EE,
   UNUSED_EF,
   UNUSED_F0,
   UNUSED_F1,