diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index e5c1c1a..a377fc8 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -184,17 +184,17 @@
    three.
 
 
-.. opcode:: ROT_FOUR
-
-   Lifts second, third and forth stack item one position up, moves top down to
-   position four.
-
-
 .. opcode:: DUP_TOP
 
    Duplicates the reference on top of the stack.
 
 
+.. opcode:: DUP_TOP_TWO
+
+   Duplicates the two references on top of the stack, leaving them in the
+   same order.
+
+
 **Unary operations**
 
 Unary operations take the top of the stack, apply the operation, and push the
@@ -531,12 +531,6 @@
    are put onto the stack right-to-left.
 
 
-.. opcode:: DUP_TOPX (count)
-
-   Duplicate *count* items, keeping them in the same order. Due to implementation
-   limits, *count* should be between 1 and 5 inclusive.
-
-
 .. opcode:: STORE_ATTR (namei)
 
    Implements ``TOS.name = TOS1``, where *namei* is the index of name in
diff --git a/Include/opcode.h b/Include/opcode.h
index 7ffa359..1114c93 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -12,7 +12,7 @@
 #define ROT_TWO		2
 #define ROT_THREE	3
 #define DUP_TOP		4
-#define ROT_FOUR	5
+#define DUP_TOP_TWO     5
 #define NOP		9
 
 #define UNARY_POSITIVE	10
@@ -83,7 +83,7 @@
 #define DELETE_ATTR	96	/* "" */
 #define STORE_GLOBAL	97	/* "" */
 #define DELETE_GLOBAL	98	/* "" */
-#define DUP_TOPX	99	/* number of items to duplicate */
+
 #define LOAD_CONST	100	/* Index in const list */
 #define LOAD_NAME	101	/* Index in name list */
 #define BUILD_TUPLE	102	/* Number of tuple items */
diff --git a/Lib/opcode.py b/Lib/opcode.py
index e8cccc3..9833b6c 100644
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -48,7 +48,7 @@
 def_op('ROT_TWO', 2)
 def_op('ROT_THREE', 3)
 def_op('DUP_TOP', 4)
-def_op('ROT_FOUR', 5)
+def_op('DUP_TOP_TWO', 5)
 
 def_op('NOP', 9)
 def_op('UNARY_POSITIVE', 10)
@@ -116,7 +116,6 @@
 name_op('DELETE_ATTR', 96)      # ""
 name_op('STORE_GLOBAL', 97)     # ""
 name_op('DELETE_GLOBAL', 98)    # ""
-def_op('DUP_TOPX', 99)          # number of items to duplicate
 def_op('LOAD_CONST', 100)       # Index in const list
 hasconst.append(100)
 name_op('LOAD_NAME', 101)       # Index in name list
diff --git a/Misc/ACKS b/Misc/ACKS
index dc0a634..2c24d2f 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -700,6 +700,7 @@
 Clinton Roy
 Paul Rubin
 Sam Ruby
+Demur Rumed
 Audun S. Runde
 Rauli Ruohonen
 Jeff Rush
diff --git a/Misc/NEWS b/Misc/NEWS
index d7976bc..77e9dd5 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and Builtins
 -----------------
 
+- Issue #9225: Remove the ROT_FOUR and DUP_TOPX opcode, the latter replaced
+  by the new (and simpler) DUP_TOP_TWO.  Performance isn't changed, but
+  our bytecode is a bit simplified.  Patch by Demur Rumed.
+
 - Issue #9766: Rename poorly named variables exposed by _warnings to prevent
   confusion with the proper variables names from 'warnings' itself.
 
diff --git a/Python/ceval.c b/Python/ceval.c
index 4d583a5..1f78f95 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1420,50 +1420,21 @@
             SET_THIRD(v);
             FAST_DISPATCH();
 
-        TARGET(ROT_FOUR)
-            u = TOP();
-            v = SECOND();
-            w = THIRD();
-            x = FOURTH();
-            SET_TOP(v);
-            SET_SECOND(w);
-            SET_THIRD(x);
-            SET_FOURTH(u);
-            FAST_DISPATCH();
-
         TARGET(DUP_TOP)
             v = TOP();
             Py_INCREF(v);
             PUSH(v);
             FAST_DISPATCH();
 
-        TARGET(DUP_TOPX)
-            if (oparg == 2) {
-                x = TOP();
-                Py_INCREF(x);
-                w = SECOND();
-                Py_INCREF(w);
-                STACKADJ(2);
-                SET_TOP(x);
-                SET_SECOND(w);
-                FAST_DISPATCH();
-            } else if (oparg == 3) {
-                x = TOP();
-                Py_INCREF(x);
-                w = SECOND();
-                Py_INCREF(w);
-                v = THIRD();
-                Py_INCREF(v);
-                STACKADJ(3);
-                SET_TOP(x);
-                SET_SECOND(w);
-                SET_THIRD(v);
-                FAST_DISPATCH();
-            }
-            Py_FatalError("invalid argument to DUP_TOPX"
-                          " (bytecode corruption?)");
-            /* Never returns, so don't bother to set why. */
-            break;
+        TARGET(DUP_TOP_TWO)
+            x = TOP();
+            Py_INCREF(x);
+            w = SECOND();
+            Py_INCREF(w);
+            STACKADJ(2);
+            SET_TOP(x);
+            SET_SECOND(w);
+            FAST_DISPATCH();
 
         TARGET(UNARY_POSITIVE)
             v = TOP();
diff --git a/Python/compile.c b/Python/compile.c
index aae0339..6963a15 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -680,8 +680,8 @@
             return 0;
         case DUP_TOP:
             return 1;
-        case ROT_FOUR:
-            return 0;
+        case DUP_TOP_TWO:
+            return 2;
 
         case UNARY_POSITIVE:
         case UNARY_NEGATIVE:
@@ -782,8 +782,6 @@
             return -1;
         case DELETE_GLOBAL:
             return 0;
-        case DUP_TOPX:
-            return oparg;
         case LOAD_CONST:
             return 1;
         case LOAD_NAME:
@@ -3404,7 +3402,7 @@
             return 0;
     }
     if (ctx == AugLoad) {
-        ADDOP_I(c, DUP_TOPX, 2);
+        ADDOP(c, DUP_TOP_TWO);
     }
     else if (ctx == AugStore) {
         ADDOP(c, ROT_THREE);
diff --git a/Python/import.c b/Python/import.c
index a5277af..d6b19e8 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -101,12 +101,14 @@
                introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE)
        Python 3.2a0: 3160 (add SETUP_WITH)
                      tag: cpython-32
+       Python 3.2a1: 3170 (add DUP_TOP_TWO, remove DUP_TOPX and ROT_FOUR)
+                     tag: cpython-32
 */
 
 /* If you change MAGIC, you must change TAG and you must insert the old value
    into _PyMagicNumberTags below.
 */
-#define MAGIC (3160 | ((long)'\r'<<16) | ((long)'\n'<<24))
+#define MAGIC (3170 | ((long)'\r'<<16) | ((long)'\n'<<24))
 #define TAG "cpython-32"
 #define CACHEDIR "__pycache__"
 /* Current magic word and string tag as globals. */
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index 20c9f25..8b59c2d 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -4,7 +4,7 @@
     &&TARGET_ROT_TWO,
     &&TARGET_ROT_THREE,
     &&TARGET_DUP_TOP,
-    &&TARGET_ROT_FOUR,
+    &&TARGET_DUP_TOP_TWO,
     &&_unknown_opcode,
     &&_unknown_opcode,
     &&_unknown_opcode,
@@ -98,7 +98,7 @@
     &&TARGET_DELETE_ATTR,
     &&TARGET_STORE_GLOBAL,
     &&TARGET_DELETE_GLOBAL,
-    &&TARGET_DUP_TOPX,
+    &&_unknown_opcode,
     &&TARGET_LOAD_CONST,
     &&TARGET_LOAD_NAME,
     &&TARGET_BUILD_TUPLE,
