Update to SPARC Version 9 Draft 1.0.4.
authorJim Wilson <wilson@tuliptree.org>
Mon, 31 Aug 1992 17:14:50 +0000 (17:14 +0000)
committerJim Wilson <wilson@tuliptree.org>
Mon, 31 Aug 1992 17:14:50 +0000 (17:14 +0000)
bfd/ChangeLog
bfd/sparc-opc.c
gas/config/tc-sparc.c

index a9fa6e7e2ae02b5aa0b079fadb063190e66c1af6..9cceefaf3469c2d52c2f121badcf43581ac99a2e 100644 (file)
@@ -1,3 +1,7 @@
+Mon Aug 31 10:11:37 1992  Jim Wilson  (wilson@sphagnum.cygnus.com)
+
+       * sparc-opc.c: Rigorously updated to match architecture manual.
+
 Mon Aug 31 08:07:58 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
 
        * aoutx.h (aout<n>swap_ext_reloc_out), bout.c
index a0c54ab3c6660819b663d0948681f3bf619fa77f..ad8bd39f34ddc160ada055cb20369017f469f072 100644 (file)
@@ -37,6 +37,7 @@ const char *architecture_pname[] = {
        NULL,
 };
 
+/* v9: This file is correct for SPARC Version 9 Draft 1.0.4.  */
 
 #define COND(x)                (((x)&0xf)<<25)
 #define MCOND(x,i_or_f)        ((((i_or_f)&1)<<18)|(((x)>>11)&(0xf<<14)))      /* v9 */
@@ -111,18 +112,22 @@ struct sparc_opcode sparc_opcodes[] = {
 { "ld",        F3(3, 0x20, 1), F3(~3, ~0x20, ~1),              "[i+1],g", 0, v6 },
 { "ld",        F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|RS1_G0,       "[i],g", 0, v6 },
 { "ld",        F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|SIMM13(~0),   "[1],g", 0, v6 }, /* ld [rs1+0],d */
-{ "ld",        F3(3, 0x21, 0), F3(~3, ~0x21, ~0),              "[1+2],F", 0, v6 },
-{ "ld",        F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0,       "[1],F", 0, v6 }, /* ld [rs1+%g0],d */
-{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1),              "[1+i],F", 0, v6 },
-{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1),              "[i+1],F", 0, v6 },
-{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0,       "[i],F", 0, v6 },
-{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0),   "[1],F", 0, v6 }, /* ld [rs1+0],d */
-{ "ld",        F3(3, 0x30, 0), F3(~3, ~0x30, ~0),              "[1+2],D", 0, v6 },
-{ "ld",        F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0,       "[1],D", 0, v6 }, /* ld [rs1+%g0],d */
-{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[1+i],D", 0, v6 },
-{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[i+1],D", 0, v6 },
-{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0,       "[i],D", 0, v6 },
-{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0),   "[1],D", 0, v6 }, /* ld [rs1+0],d */
+
+{ "ld",        F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RD(~0),       "[1+2],F", 0, v6 },
+{ "ld",        F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+%g0],d */
+{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0),       "[1+i],F", 0, v6 },
+{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0),       "[i+1],F", 0, v6 },
+{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~0),"[i],F", 0, v6 },
+{ "ld",        F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+0],d */
+
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "ld",        F3(3, 0x30, 0), F3(~3, ~0x30, ~0),              "[1+2],D", F_ALIAS, v6 },
+{ "ld",        F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0,       "[1],D", F_ALIAS, v6 }, /* ld [rs1+%g0],d */
+{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[1+i],D", F_ALIAS, v6 },
+{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[i+1],D", F_ALIAS, v6 },
+{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0,       "[i],D", F_ALIAS, v6 },
+{ "ld",        F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0),   "[1],D", F_ALIAS, v6 }, /* ld [rs1+0],d */
 { "ld",        F3(3, 0x31, 0), F3(~3, ~0x31, ~0),              "[1+2],C", 0, v6 },
 { "ld",        F3(3, 0x31, 0), F3(~3, ~0x31, ~0)|RS2_G0,       "[1],C", 0, v6 }, /* ld [rs1+%g0],d */
 { "ld",        F3(3, 0x31, 1), F3(~3, ~0x31, ~1),              "[1+i],C", 0, v6 },
@@ -130,71 +135,14 @@ struct sparc_opcode sparc_opcodes[] = {
 { "ld",        F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|RS1_G0,       "[i],C", 0, v6 },
 { "ld",        F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|SIMM13(~0),   "[1],C", 0, v6 }, /* ld [rs1+0],d */
 
- /* FIXME-v9: combine ld, lduw, & ldw in macros. */
-{ "ldw",       F3(3, 0x00, 0), F3(~3, ~0x00, ~0),              "[1+2],d", F_ALIAS, v9 }, /* ldw === ld */
-{ "ldw",       F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0,       "[1],d", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "ldw",       F3(3, 0x00, 1), F3(~3, ~0x00, ~1),              "[1+i],d", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x00, 1), F3(~3, ~0x00, ~1),              "[i+1],d", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0,       "[i],d", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0),   "[1],d", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "ldw",       F3(3, 0x20, 0), F3(~3, ~0x20, ~0),              "[1+2],g", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x20, 0), F3(~3, ~0x20, ~0)|RS2_G0,       "[1],g", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "ldw",       F3(3, 0x20, 1), F3(~3, ~0x20, ~1),              "[1+i],g", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x20, 1), F3(~3, ~0x20, ~1),              "[i+1],g", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|RS1_G0,       "[i],g", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|SIMM13(~0),   "[1],g", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "ldw",       F3(3, 0x21, 0), F3(~3, ~0x21, ~0),              "[1+2],F", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0,       "[1],F", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "ldw",       F3(3, 0x21, 1), F3(~3, ~0x21, ~1),              "[1+i],F", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x21, 1), F3(~3, ~0x21, ~1),              "[i+1],F", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0,       "[i],F", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0),   "[1],F", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "ldw",       F3(3, 0x30, 0), F3(~3, ~0x30, ~0),              "[1+2],D", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0,       "[1],D", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "ldw",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[1+i],D", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[i+1],D", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0,       "[i],D", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0),   "[1],D", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "ldw",       F3(3, 0x31, 0), F3(~3, ~0x31, ~0),              "[1+2],C", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x31, 0), F3(~3, ~0x31, ~0)|RS2_G0,       "[1],C", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "ldw",       F3(3, 0x31, 1), F3(~3, ~0x31, ~1),              "[1+i],C", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x31, 1), F3(~3, ~0x31, ~1),              "[i+1],C", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|RS1_G0,       "[i],C", F_ALIAS, v9 },
-{ "ldw",       F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|SIMM13(~0),   "[1],C", F_ALIAS, v9 }, /* ld [rs1+0],d */
-
-{ "lduw",      F3(3, 0x00, 0), F3(~3, ~0x00, ~0),              "[1+2],d", F_ALIAS, v9 }, /* lduw === ld */
+/* The v9 LDUW is the same as the old 'ld' opcode, it is not the same as the
+   'ld' pseudo-op in v9.  */
+{ "lduw",      F3(3, 0x00, 0), F3(~3, ~0x00, ~0),              "[1+2],d", F_ALIAS, v9 },
 { "lduw",      F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0,       "[1],d", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
 { "lduw",      F3(3, 0x00, 1), F3(~3, ~0x00, ~1),              "[1+i],d", F_ALIAS, v9 },
 { "lduw",      F3(3, 0x00, 1), F3(~3, ~0x00, ~1),              "[i+1],d", F_ALIAS, v9 },
 { "lduw",      F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0,       "[i],d", F_ALIAS, v9 },
 { "lduw",      F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0),   "[1],d", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "lduw",      F3(3, 0x20, 0), F3(~3, ~0x20, ~0),              "[1+2],g", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x20, 0), F3(~3, ~0x20, ~0)|RS2_G0,       "[1],g", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "lduw",      F3(3, 0x20, 1), F3(~3, ~0x20, ~1),              "[1+i],g", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x20, 1), F3(~3, ~0x20, ~1),              "[i+1],g", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|RS1_G0,       "[i],g", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|SIMM13(~0),   "[1],g", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "lduw",      F3(3, 0x21, 0), F3(~3, ~0x21, ~0),              "[1+2],F", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0,       "[1],F", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "lduw",      F3(3, 0x21, 1), F3(~3, ~0x21, ~1),              "[1+i],F", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x21, 1), F3(~3, ~0x21, ~1),              "[i+1],F", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0,       "[i],F", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0),   "[1],F", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "lduw",      F3(3, 0x30, 0), F3(~3, ~0x30, ~0),              "[1+2],D", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0,       "[1],D", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "lduw",      F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[1+i],D", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[i+1],D", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0,       "[i],D", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0),   "[1],D", F_ALIAS, v9 }, /* ld [rs1+0],d */
-{ "lduw",      F3(3, 0x31, 0), F3(~3, ~0x31, ~0),              "[1+2],C", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x31, 0), F3(~3, ~0x31, ~0)|RS2_G0,       "[1],C", F_ALIAS, v9 }, /* ld [rs1+%g0],d */
-{ "lduw",      F3(3, 0x31, 1), F3(~3, ~0x31, ~1),              "[1+i],C", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x31, 1), F3(~3, ~0x31, ~1),              "[i+1],C", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|RS1_G0,       "[i],C", F_ALIAS, v9 },
-{ "lduw",      F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|SIMM13(~0),   "[1],C", F_ALIAS, v9 }, /* ld [rs1+0],d */
-
-{ "lda",       F3(3, 0x10, 0), F3(~3, ~0x10, ~0),              "[1+2]A,d", 0, v6 },
-{ "lda",       F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* lda [rs1+%g0],d */
 
 { "ldd",       F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI(~0),      "[1+2],d", 0, v6 },
 { "ldd",       F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI_RS2(~0),  "[1],d", 0, v6 }, /* ldd [rs1+%g0],d */
@@ -202,47 +150,63 @@ struct sparc_opcode sparc_opcodes[] = {
 { "ldd",       F3(3, 0x03, 1), F3(~3, ~0x03, ~1),              "[i+1],d", 0, v6 },
 { "ldd",       F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|RS1_G0,       "[i],d", 0, v6 },
 { "ldd",       F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|SIMM13(~0),   "[1],d", 0, v6 }, /* ldd [rs1+0],d */
-{ "ldd",       F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI(~0),      "[1+2],g", 0, v6 },
-{ "ldd",       F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI_RS2(~0),  "[1],g", 0, v6 }, /* ldd [rs1+%g0],d */
-{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1),              "[1+i],g", 0, v6 },
-{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1),              "[i+1],g", 0, v6 },
-{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|RS1_G0,       "[i],g", 0, v6 },
-{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|SIMM13(~0),   "[1],g", 0, v6 }, /* ldd [rs1+0],d */
-{ "ldd",       F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI(~0),      "[1+2],D", 0, v6 },
-{ "ldd",       F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI_RS2(~0),  "[1],D", 0, v6 }, /* ldd [rs1+%g0],d */
-{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1),              "[1+i],D", 0, v6 },
-{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1),              "[i+1],D", 0, v6 },
-{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0,       "[i],D", 0, v6 },
-{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0),   "[1],D", 0, v6 }, /* ldd [rs1+0],d */
+{ "ldd",       F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI(~0),      "[1+2],H", 0, v6 },
+{ "ldd",       F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI_RS2(~0),  "[1],H", 0, v6 }, /* ldd [rs1+%g0],d */
+{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1),              "[1+i],H", 0, v6 },
+{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1),              "[i+1],H", 0, v6 },
+{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|RS1_G0,       "[i],H", 0, v6 },
+{ "ldd",       F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|SIMM13(~0),   "[1],H", 0, v6 }, /* ldd [rs1+0],d */
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "ldd",       F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI(~0),      "[1+2],D", F_ALIAS, v6 },
+{ "ldd",       F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI_RS2(~0),  "[1],D", F_ALIAS, v6 }, /* ldd [rs1+%g0],d */
+{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1),              "[1+i],D", F_ALIAS, v6 },
+{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1),              "[i+1],D", F_ALIAS, v6 },
+{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0,       "[i],D", F_ALIAS, v6 },
+{ "ldd",       F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0),   "[1],D", F_ALIAS, v6 }, /* ldd [rs1+0],d */
+
+{ "ldq",       F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI(~0),      "[1+2],J", 0, v9 },
+{ "ldq",       F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI_RS2(~0),  "[1],J", 0, v9 }, /* ldd [rs1+%g0],d */
+{ "ldq",       F3(3, 0x22, 1), F3(~3, ~0x22, ~1),              "[1+i],J", 0, v9 },
+{ "ldq",       F3(3, 0x22, 1), F3(~3, ~0x22, ~1),              "[i+1],J", 0, v9 },
+{ "ldq",       F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|RS1_G0,       "[i],J", 0, v9 },
+{ "ldq",       F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|SIMM13(~0),   "[1],J", 0, v9 }, /* ldd [rs1+0],d */
+
 { "ldsb",      F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI(~0),      "[1+2],d", 0, v6 },
 { "ldsb",      F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI_RS2(~0),  "[1],d", 0, v6 }, /* ldsb [rs1+%g0],d */
 { "ldsb",      F3(3, 0x09, 1), F3(~3, ~0x09, ~1),              "[1+i],d", 0, v6 },
 { "ldsb",      F3(3, 0x09, 1), F3(~3, ~0x09, ~1),              "[i+1],d", 0, v6 },
 { "ldsb",      F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|RS1_G0,       "[i],d", 0, v6 },
 { "ldsb",      F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|SIMM13(~0),   "[1],d", 0, v6 }, /* ldsb [rs1+0],d */
+
 { "ldsh",      F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI_RS2(~0),  "[1],d", 0, v6 }, /* ldsh [rs1+%g0],d */
 { "ldsh",      F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI(~0),      "[1+2],d", 0, v6 },
 { "ldsh",      F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1),              "[1+i],d", 0, v6 },
 { "ldsh",      F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1),              "[i+1],d", 0, v6 },
 { "ldsh",      F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|RS1_G0,       "[i],d", 0, v6 },
 { "ldsh",      F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|SIMM13(~0),   "[1],d", 0, v6 }, /* ldsh [rs1+0],d */
+
 { "ldstub",    F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI(~0),      "[1+2],d", 0, v6 },
 { "ldstub",    F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI_RS2(~0),  "[1],d", 0, v6 }, /* ldstub [rs1+%g0],d */
 { "ldstub",    F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1),              "[1+i],d", 0, v6 },
 { "ldstub",    F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1),              "[i+1],d", 0, v6 },
 { "ldstub",    F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|RS1_G0,       "[i],d", 0, v6 },
+{ "ldstub",    F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|SIMM13(~0),   "[1],d", 0, v6 }, /* ldstub [rs1+0],d */
+
 { "ldsw",      F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI(~0),      "[1+2],d", 0, v9 },
 { "ldsw",      F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI_RS2(~0),  "[1],d", 0, v9 }, /* ldsw [rs1+%g0],d */
 { "ldsw",      F3(3, 0x08, 1), F3(~3, ~0x08, ~1),              "[1+i],d", 0, v9 },
 { "ldsw",      F3(3, 0x08, 1), F3(~3, ~0x08, ~1),              "[i+1],d", 0, v9 },
 { "ldsw",      F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|RS1_G0,       "[i],d", 0, v9 },
 { "ldsw",      F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|SIMM13(~0),   "[1],d", 0, v9 }, /* ldsw [rs1+0],d */
+
 { "ldub",      F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI(~0),      "[1+2],d", 0, v6 },
 { "ldub",      F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI_RS2(~0),  "[1],d", 0, v6 }, /* ldub [rs1+%g0],d */
 { "ldub",      F3(3, 0x01, 1), F3(~3, ~0x01, ~1),              "[1+i],d", 0, v6 },
 { "ldub",      F3(3, 0x01, 1), F3(~3, ~0x01, ~1),              "[i+1],d", 0, v6 },
 { "ldub",      F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|RS1_G0,       "[i],d", 0, v6 },
 { "ldub",      F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|SIMM13(~0),   "[1],d", 0, v6 }, /* ldub [rs1+0],d */
+
 { "lduh",      F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI(~0),      "[1+2],d", 0, v6 },
 { "lduh",      F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI_RS2(~0),  "[1],d", 0, v6 }, /* lduh [rs1+%g0],d */
 { "lduh",      F3(3, 0x02, 1), F3(~3, ~0x02, ~1),              "[1+i],d", 0, v6 },
@@ -256,31 +220,103 @@ struct sparc_opcode sparc_opcodes[] = {
 { "ldx",       F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1),              "[i+1],d", 0, v9 },
 { "ldx",       F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|RS1_G0,       "[i],d", 0, v9 },
 { "ldx",       F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|SIMM13(~0),   "[1],d", 0, v9 }, /* ldx [rs1+0],d */
-{ "ldx",       F3(3, 0x29, 0), F3(~3, ~0x29, ~0),              "[1+2],F", 0, v9 },
-{ "ldx",       F3(3, 0x29, 0), F3(~3, ~0x29, ~0)|RS2_G0,       "[1],F", 0, v9 }, /* ld [rs1+%g0],d */
-{ "ldx",       F3(3, 0x29, 1), F3(~3, ~0x29, ~1),              "[1+i],F", 0, v9 },
-{ "ldx",       F3(3, 0x29, 1), F3(~3, ~0x29, ~1),              "[i+1],F", 0, v9 },
-{ "ldx",       F3(3, 0x29, 1), F3(~3, ~0x29, ~1)|RS1_G0,       "[i],F", 0, v9 },
-{ "ldx",       F3(3, 0x29, 1), F3(~3, ~0x29, ~1)|SIMM13(~0),   "[1],F", 0, v9 }, /* ld [rs1+0],d */
+
+{ "ldx",       F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RD(~1), "[1+2],F", 0, v9 },
+{ "ldx",       F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RS2_G0|RD(~1),  "[1],F", 0, v9 }, /* ld [rs1+%g0],d */
+{ "ldx",       F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[1+i],F", 0, v9 },
+{ "ldx",       F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[i+1],F", 0, v9 },
+{ "ldx",       F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~1),  "[i],F", 0, v9 },
+{ "ldx",       F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~1),"[1],F", 0, v9 }, /* ld [rs1+0],d */
+
+{ "lda",       F3(3, 0x10, 0), F3(~3, ~0x10, ~0),              "[1+2]A,d", 0, v6 },
+{ "lda",       F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* lda [rs1+%g0],d */
+{ "lda",       F3(3, 0x10, 1), F3(~3, ~0x10, ~1),              "[1+i]o,d", 0, v9 },
+{ "lda",       F3(3, 0x10, 1), F3(~3, ~0x10, ~1),              "[i+1]o,d", 0, v9 },
+{ "lda",       F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "lda",       F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+{ "lda",       F3(3, 0x30, 0), F3(~3, ~0x30, ~0),              "[1+2]A,g", 0, v9 },
+{ "lda",       F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0,       "[1]A,g", 0, v9 }, /* lda [rs1+%g0],d */
+{ "lda",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[1+i]o,g", 0, v9 },
+{ "lda",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1),              "[i+1]o,g", 0, v9 },
+{ "lda",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0,       "[i]o,g", 0, v9 },
+{ "lda",       F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0),   "[1]o,g", 0, v9 }, /* ld [rs1+0],d */
 
 { "ldda",      F3(3, 0x13, 0), F3(~3, ~0x13, ~0),              "[1+2]A,d", 0, v6 },
 { "ldda",      F3(3, 0x13, 0), F3(~3, ~0x13, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* ldda [rs1+%g0],d */
+{ "ldda",      F3(3, 0x13, 1), F3(~3, ~0x13, ~1),              "[1+i]o,d", 0, v9 },
+{ "ldda",      F3(3, 0x13, 1), F3(~3, ~0x13, ~1),              "[i+1]o,d", 0, v9 },
+{ "ldda",      F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "ldda",      F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
+{ "ldda",      F3(3, 0x33, 0), F3(~3, ~0x33, ~0),              "[1+2]A,H", 0, v9 },
+{ "ldda",      F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|RS2_G0,       "[1]A,H", 0, v9 }, /* ldda [rs1+%g0],d */
+{ "ldda",      F3(3, 0x33, 1), F3(~3, ~0x33, ~1),              "[1+i]o,H", 0, v9 },
+{ "ldda",      F3(3, 0x33, 1), F3(~3, ~0x33, ~1),              "[i+1]o,H", 0, v9 },
+{ "ldda",      F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0,       "[i]o,H", 0, v9 },
+{ "ldda",      F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0),   "[1]o,H", 0, v9 }, /* ld [rs1+0],d */
+
+{ "ldqa",      F3(3, 0x32, 0), F3(~3, ~0x32, ~0),              "[1+2]A,J", 0, v9 },
+{ "ldqa",      F3(3, 0x32, 0), F3(~3, ~0x32, ~0)|RS2_G0,       "[1]A,J", 0, v9 }, /* ldd [rs1+%g0],d */
+{ "ldqa",      F3(3, 0x32, 1), F3(~3, ~0x32, ~1),              "[1+i]o,J", 0, v9 },
+{ "ldqa",      F3(3, 0x32, 1), F3(~3, ~0x32, ~1),              "[i+1]o,J", 0, v9 },
+{ "ldqa",      F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|RS1_G0,       "[i]o,J", 0, v9 },
+{ "ldqa",      F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|SIMM13(~0),   "[1]o,J", 0, v9 }, /* ldd [rs1+0],d */
+
 { "ldsba",     F3(3, 0x19, 0), F3(~3, ~0x19, ~0),              "[1+2]A,d", 0, v6 },
 { "ldsba",     F3(3, 0x19, 0), F3(~3, ~0x19, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* ldsba [rs1+%g0],d */
+{ "ldsba",     F3(3, 0x19, 1), F3(~3, ~0x19, ~1),              "[1+i]o,d", 0, v9 },
+{ "ldsba",     F3(3, 0x19, 1), F3(~3, ~0x19, ~1),              "[i+1]o,d", 0, v9 },
+{ "ldsba",     F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "ldsba",     F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
 { "ldsha",     F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0),              "[1+2]A,d", 0, v6 },
 { "ldsha",     F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* ldsha [rs1+%g0],d */
+{ "ldsha",     F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1),              "[1+i]o,d", 0, v9 },
+{ "ldsha",     F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1),              "[i+1]o,d", 0, v9 },
+{ "ldsha",     F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "ldsha",     F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
 { "ldstuba",   F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0),              "[1+2]A,d", 0, v6 },
 { "ldstuba",   F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* ldstuba [rs1+%g0],d */
-{ "ldswa",     F3(3, 0x18, 0), F3(~3, ~0x18, ~0),              "[1+2]A,d", 0, v9 }, /* lduwa === lda */
+{ "ldstuba",   F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1),              "[1+i]o,d", 0, v9 },
+{ "ldstuba",   F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1),              "[i+1]o,d", 0, v9 },
+{ "ldstuba",   F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "ldstuba",   F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
+{ "ldswa",     F3(3, 0x18, 0), F3(~3, ~0x18, ~0),              "[1+2]A,d", 0, v9 },
 { "ldswa",     F3(3, 0x18, 0), F3(~3, ~0x18, ~0)|RS2_G0,       "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */
+{ "ldswa",     F3(3, 0x18, 1), F3(~3, ~0x18, ~1),              "[1+i]o,d", 0, v9 },
+{ "ldswa",     F3(3, 0x18, 1), F3(~3, ~0x18, ~1),              "[i+1]o,d", 0, v9 },
+{ "ldswa",     F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "ldswa",     F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
 { "lduba",     F3(3, 0x11, 0), F3(~3, ~0x11, ~0),              "[1+2]A,d", 0, v6 },
 { "lduba",     F3(3, 0x11, 0), F3(~3, ~0x11, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* lduba [rs1+%g0],d */
+{ "lduba",     F3(3, 0x11, 1), F3(~3, ~0x11, ~1),              "[1+i]o,d", 0, v9 },
+{ "lduba",     F3(3, 0x11, 1), F3(~3, ~0x11, ~1),              "[i+1]o,d", 0, v9 },
+{ "lduba",     F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "lduba",     F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
 { "lduha",     F3(3, 0x12, 0), F3(~3, ~0x12, ~0),              "[1+2]A,d", 0, v6 },
 { "lduha",     F3(3, 0x12, 0), F3(~3, ~0x12, ~0)|RS2_G0,       "[1]A,d", 0, v6 }, /* lduha [rs1+%g0],d */
+{ "lduha",     F3(3, 0x12, 1), F3(~3, ~0x12, ~1),              "[1+i]o,d", 0, v9 },
+{ "lduha",     F3(3, 0x12, 1), F3(~3, ~0x12, ~1),              "[i+1]o,d", 0, v9 },
+{ "lduha",     F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "lduha",     F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
+
 { "lduwa",     F3(3, 0x10, 0), F3(~3, ~0x10, ~0),              "[1+2]A,d", F_ALIAS, v9 }, /* lduwa === lda */
 { "lduwa",     F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0,       "[1]A,d", F_ALIAS, v9 }, /* lda [rs1+%g0],d */
+{ "lduwa",     F3(3, 0x10, 1), F3(~3, ~0x10, ~1),              "[1+i]o,d", F_ALIAS, v9 },
+{ "lduwa",     F3(3, 0x10, 1), F3(~3, ~0x10, ~1),              "[i+1]o,d", F_ALIAS, v9 },
+{ "lduwa",     F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0,       "[i]o,d", F_ALIAS, v9 },
+{ "lduwa",     F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0),   "[1]o,d", F_ALIAS, v9 }, /* ld [rs1+0],d */
+
 { "ldxa",      F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0),              "[1+2]A,d", 0, v9 }, /* lduwa === lda */
 { "ldxa",      F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0)|RS2_G0,       "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */
+{ "ldxa",      F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1),              "[1+i]o,d", 0, v9 },
+{ "ldxa",      F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1),              "[i+1]o,d", 0, v9 },
+{ "ldxa",      F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "ldxa",      F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* ld [rs1+0],d */
 
 { "st",        F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),              "d,[1+2]", 0, v6 },
 { "st",        F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),          "d,[1]", 0, v6 }, /* st d,[rs1+%g0] */
@@ -294,12 +330,14 @@ struct sparc_opcode sparc_opcodes[] = {
 { "st",        F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[i+1]", 0, v6 },
 { "st",        F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0,               "g,[i]", 0, v6 },
 { "st",        F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0),           "g,[1]", 0, v6 }, /* st d,[rs1+0] */
-{ "st",        F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0),              "D,[1+2]", 0, v6 },
-{ "st",        F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0),          "D,[1]", 0, v6 }, /* st d,[rs1+%g0] */
-{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[1+i]", 0, v6 },
-{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[i+1]", 0, v6 },
-{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0,               "D,[i]", 0, v6 },
-{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0),           "D,[1]", 0, v6 }, /* st d,[rs1+0] */
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "st",        F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0),              "D,[1+2]", F_ALIAS, v6 },
+{ "st",        F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0),          "D,[1]", F_ALIAS, v6 }, /* st d,[rs1+%g0] */
+{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[1+i]", F_ALIAS, v6 },
+{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[i+1]", F_ALIAS, v6 },
+{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0,               "D,[i]", F_ALIAS, v6 },
+{ "st",        F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0),           "D,[1]", F_ALIAS, v6 }, /* st d,[rs1+0] */
 { "st",        F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0),              "C,[1+2]", 0, v6 },
 { "st",        F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0),          "C,[1]", 0, v6 }, /* st d,[rs1+%g0] */
 { "st",        F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[1+i]", 0, v6 },
@@ -312,113 +350,65 @@ struct sparc_opcode sparc_opcodes[] = {
 { "st",        F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[1+i]", 0, v6 },
 { "st",        F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[i+1]", 0, v6 },
 { "st",        F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0,         "F,[i]", 0, v6 },
-{ "st",        F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|SIMM13(~0),           "F,[1]", 0, v6 }, /* st d,[rs1+0] */
-
- /* FIXME-v9: combine st, stw, stuw, stsw, in macros. */
-{ "stw",       F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),              "d,[1+2]", F_ALIAS, v9 }, /* stw === st */
-{ "stw",       F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),          "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1),                      "d,[1+i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1),                      "d,[i+1]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0,               "d,[i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0),           "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stw",       F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI(~0),              "g,[1+2]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI_RS2(~0),          "g,[1]", F_ALIAS, v9 }, /* st d[rs1+%g0] */
-{ "stw",       F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[1+i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[i+1]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0,               "g,[i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0),           "g,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stw",       F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0),              "D,[1+2]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0),          "D,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stw",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[1+i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[i+1]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0,               "D,[i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0),           "D,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stw",       F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0),              "C,[1+2]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0),          "C,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stw",       F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[1+i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[i+1]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|RS1_G0,               "C,[i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|SIMM13(~0),           "C,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stw",       F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI(~0),        "F,[1+2]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI_RS2(~0),    "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stw",       F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[1+i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[i+1]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0, "F,[i]", F_ALIAS, v9 },
-{ "stw",       F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|SIMM13(~0),           "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-
-{ "stuw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),              "d,[1+2]", F_ALIAS, v9 }, /* stuw === st */
-{ "stuw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),          "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),                      "d,[1+i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),                      "d,[i+1]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0,               "d,[i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0),           "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stuw",      F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI(~0),              "g,[1+2]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI_RS2(~0),          "g,[1]", F_ALIAS, v9 }, /* st d[rs1+%g0] */
-{ "stuw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[1+i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[i+1]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0,               "g,[i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0),           "g,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stuw",      F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0),              "D,[1+2]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0),          "D,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stuw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[1+i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[i+1]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0,               "D,[i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0),           "D,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stuw",      F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0),              "C,[1+2]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0),          "C,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stuw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[1+i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[i+1]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|RS1_G0,               "C,[i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|SIMM13(~0),           "C,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stuw",      F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI(~0),        "F,[1+2]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI_RS2(~0),    "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stuw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[1+i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[i+1]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0, "F,[i]", F_ALIAS, v9 },
-{ "stuw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|SIMM13(~0),           "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-
-{ "stsw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),              "d,[1+2]", F_ALIAS, v9 }, /* stsw === st */
-{ "stsw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),          "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),                      "d,[1+i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),                      "d,[i+1]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0,               "d,[i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0),           "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stsw",      F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI(~0),              "g,[1+2]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI_RS2(~0),          "g,[1]", F_ALIAS, v9 }, /* st d[rs1+%g0] */
-{ "stsw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[1+i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1),                      "g,[i+1]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0,               "g,[i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0),           "g,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stsw",      F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0),              "D,[1+2]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0),          "D,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stsw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[1+i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1),                      "D,[i+1]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0,               "D,[i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0),           "D,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stsw",      F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0),              "C,[1+2]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0),          "C,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stsw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[1+i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1),                      "C,[i+1]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|RS1_G0,               "C,[i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|SIMM13(~0),           "C,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
-{ "stsw",      F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI(~0),        "F,[1+2]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI_RS2(~0),    "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stsw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[1+i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0,                "F,[i+1]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0, "F,[i]", F_ALIAS, v9 },
-{ "stsw",      F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|SIMM13(~0),           "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
+{ "st",        F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|SIMM13(~0),     "F,[1]", 0, v6 }, /* st d,[rs1+0] */
+
+  /* The v9 STW/STUW/STSW are the same as the old 'st' opcode, they are not
+     the same as the 'st' psuedo-op in v9.  */
+{ "stw",       F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),      "d,[1+2]", F_ALIAS, v9 },
+{ "stw",       F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),  "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
+{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1),              "d,[1+i]", F_ALIAS, v9 },
+{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1),              "d,[i+1]", F_ALIAS, v9 },
+{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0,       "d,[i]", F_ALIAS, v9 },
+{ "stw",       F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0),   "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
+
+{ "stuw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),      "d,[1+2]", F_ALIAS, v9 },
+{ "stuw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),  "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
+{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),              "d,[1+i]", F_ALIAS, v9 },
+{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),              "d,[i+1]", F_ALIAS, v9 },
+{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0,       "d,[i]", F_ALIAS, v9 },
+{ "stuw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0),   "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
+
+{ "stsw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0),      "d,[1+2]", F_ALIAS, v9 }, /* stsw === st */
+{ "stsw",      F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0),  "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
+{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),              "d,[1+i]", F_ALIAS, v9 },
+{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1),              "d,[i+1]", F_ALIAS, v9 },
+{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0,       "d,[i]", F_ALIAS, v9 },
+{ "stsw",      F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0),   "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
 
 { "sta",       F3(3, 0x14, 0), F3(~3, ~0x14, ~0),              "d,[1+2]A", 0, v6 },
 { "sta",       F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0),      "d,[1]A", 0, v6 }, /* sta d,[rs1+%g0] */
+{ "sta",       F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[1+i]o", 0, v9 },
+{ "sta",       F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[i+1]o", 0, v9 },
+{ "sta",       F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0,       "d,[i]o", 0, v9 },
+{ "sta",       F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0),   "d,[1]o", 0, v9 }, /* st d,[rs1+0] */
+
+{ "sta",       F3(3, 0x34, 0), F3(~3, ~0x34, ~0),              "g,[1+2]A", 0, v9 },
+{ "sta",       F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|RS2(~0),      "g,[1]A", 0, v9 }, /* sta d,[rs1+%g0] */
+{ "sta",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1),              "g,[1+i]o", 0, v9 },
+{ "sta",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1),              "g,[i+1]o", 0, v9 },
+{ "sta",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0,       "g,[i]o", 0, v9 },
+{ "sta",       F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0),   "g,[1]o", 0, v9 }, /* st d,[rs1+0] */
 
 { "stwa",      F3(3, 0x14, 0), F3(~3, ~0x14, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stwa",      F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */
+{ "stwa",      F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stwa",      F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stwa",      F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stwa",      F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */
 
 { "stswa",     F3(3, 0x14, 0), F3(~3, ~0x14, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stswa",     F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */
+{ "stswa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stswa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stswa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stswa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */
 
 { "stuwa",     F3(3, 0x14, 0), F3(~3, ~0x14, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stuwa",     F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */
+{ "stuwa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stuwa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stuwa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stuwa",     F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */
 
 { "stb",       F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0),      "d,[1+2]", 0, v6 },
 { "stb",       F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0),  "d,[1]", 0, v6 }, /* stb d,[rs1+%g0] */
@@ -443,12 +433,24 @@ struct sparc_opcode sparc_opcodes[] = {
 
 { "stba",      F3(3, 0x15, 0), F3(~3, ~0x15, ~0),              "d,[1+2]A", 0, v6 },
 { "stba",      F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0),      "d,[1]A", 0, v6 }, /* stba d,[rs1+%g0] */
+{ "stba",      F3(3, 0x15, 1), F3(~3, ~0x15, ~1),              "d,[1+i]o", 0, v9 },
+{ "stba",      F3(3, 0x15, 1), F3(~3, ~0x15, ~1),              "d,[i+1]o", 0, v9 },
+{ "stba",      F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0,       "d,[i]o", 0, v9 },
+{ "stba",      F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0),   "d,[1]o", 0, v9 }, /* stb d,[rs1+0] */
 
 { "stsba",     F3(3, 0x15, 0), F3(~3, ~0x15, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stsba",     F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* stba d,[rs1+%g0] */
+{ "stsba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stsba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stsba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stsba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */
 
 { "stuba",     F3(3, 0x15, 0), F3(~3, ~0x15, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stuba",     F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* stba d,[rs1+%g0] */
+{ "stuba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stuba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stuba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stuba",     F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */
 
 { "std",       F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0),      "d,[1+2]", 0, v6 },
 { "std",       F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0),  "d,[1]", 0, v6 }, /* std d,[rs1+%g0] */
@@ -456,33 +458,49 @@ struct sparc_opcode sparc_opcodes[] = {
 { "std",       F3(3, 0x07, 1), F3(~3, ~0x07, ~1),              "d,[i+1]", 0, v6 },
 { "std",       F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0,       "d,[i]", 0, v6 },
 { "std",       F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0),   "d,[1]", 0, v6 }, /* std d,[rs1+0] */
-{ "std",       F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0),      "q,[1+2]", 0, v6 },
-{ "std",       F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0),  "q,[1]", 0, v6 }, /* std d,[rs1+%g0] */
-{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1),              "q,[1+i]", 0, v6 },
-{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1),              "q,[i+1]", 0, v6 },
-{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0,       "q,[i]", 0, v6 },
-{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0),   "q,[1]", 0, v6 }, /* std d,[rs1+0] */
-{ "std",       F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI(~0),      "g,[1+2]", 0, v6 },
-{ "std",       F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI_RS2(~0),  "g,[1]", 0, v6 }, /* std d,[rs1+%g0] */
-{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1),              "g,[1+i]", 0, v6 },
-{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1),              "g,[i+1]", 0, v6 },
-{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|RS1_G0,       "g,[i]", 0, v6 },
-{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|SIMM13(~0),   "g,[1]", 0, v6 }, /* std d,[rs1+0] */
-{ "std",       F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0),      "Q,[1+2]", 0, v6 },
-{ "std",       F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0),  "Q,[1]", 0, v6 }, /* std d,[rs1+%g0] */
-{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1),              "Q,[1+i]", 0, v6 },
-{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1),              "Q,[i+1]", 0, v6 },
-{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0,       "Q,[i]", 0, v6 },
-{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0),   "Q,[1]", 0, v6 }, /* std d,[rs1+0] */
-{ "std",       F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI(~0),      "D,[1+2]", 0, v6 },
-{ "std",       F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI_RS2(~0),  "D,[1]", 0, v6 }, /* std d,[rs1+%g0] */
-{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1),              "D,[1+i]", 0, v6 },
-{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1),              "D,[i+1]", 0, v6 },
-{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0,       "D,[i]", 0, v6 },
-{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0),   "D,[1]", 0, v6 }, /* std d,[rs1+0] */
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "std",       F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0),      "q,[1+2]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0),  "q,[1]", F_ALIAS, v6 }, /* std d,[rs1+%g0] */
+{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1),              "q,[1+i]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1),              "q,[i+1]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0,       "q,[i]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0),   "q,[1]", F_ALIAS, v6 }, /* std d,[rs1+0] */
+{ "std",       F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI(~0),      "H,[1+2]", 0, v6 },
+{ "std",       F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI_RS2(~0),  "H,[1]", 0, v6 }, /* std d,[rs1+%g0] */
+{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1),              "H,[1+i]", 0, v6 },
+{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1),              "H,[i+1]", 0, v6 },
+{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|RS1_G0,       "H,[i]", 0, v6 },
+{ "std",       F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|SIMM13(~0),   "H,[1]", 0, v6 }, /* std d,[rs1+0] */
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "std",       F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0),      "Q,[1+2]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0),  "Q,[1]", F_ALIAS, v6 }, /* std d,[rs1+%g0] */
+{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1),              "Q,[1+i]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1),              "Q,[i+1]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0,       "Q,[i]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0),   "Q,[1]", F_ALIAS, v6 }, /* std d,[rs1+0] */
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "std",       F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI(~0),      "D,[1+2]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI_RS2(~0),  "D,[1]", F_ALIAS, v6 }, /* std d,[rs1+%g0] */
+{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1),              "D,[1+i]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1),              "D,[i+1]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0,       "D,[i]", F_ALIAS, v6 },
+{ "std",       F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0),   "D,[1]", F_ALIAS, v6 }, /* std d,[rs1+0] */
 
 { "stda",      F3(3, 0x17, 0), F3(~3, ~0x17, ~0),              "d,[1+2]A", 0, v6 },
 { "stda",      F3(3, 0x17, 0), F3(~3, ~0x17, ~0)|RS2(~0),      "d,[1]A", 0, v6 }, /* stda d,[rs1+%g0] */
+{ "stda",      F3(3, 0x17, 1), F3(~3, ~0x17, ~1),              "d,[1+i]o", 0, v9 },
+{ "stda",      F3(3, 0x17, 1), F3(~3, ~0x17, ~1),              "d,[i+1]o", 0, v9 },
+{ "stda",      F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|RS1_G0,       "d,[i]o", 0, v9 },
+{ "stda",      F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|SIMM13(~0),   "d,[1]o", 0, v9 }, /* std d,[rs1+0] */
+{ "stda",      F3(3, 0x37, 0), F3(~3, ~0x37, ~0),              "H,[1+2]A", 0, v9 },
+{ "stda",      F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|RS2(~0),      "H,[1]A", 0, v9 }, /* stda d,[rs1+%g0] */
+{ "stda",      F3(3, 0x37, 1), F3(~3, ~0x37, ~1),              "H,[1+i]o", 0, v9 },
+{ "stda",      F3(3, 0x37, 1), F3(~3, ~0x37, ~1),              "H,[i+1]o", 0, v9 },
+{ "stda",      F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0,       "H,[i]o", 0, v9 },
+{ "stda",      F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0),   "H,[1]o", 0, v9 }, /* std d,[rs1+0] */
 
 { "sth",       F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0),      "d,[1+2]", 0, v6 },
 { "sth",       F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0),  "d,[1]", 0, v6 }, /* sth d,[rs1+%g0] */
@@ -507,28 +525,59 @@ struct sparc_opcode sparc_opcodes[] = {
 
 { "stha",      F3(3, 0x16, 0), F3(~3, ~0x16, ~0),              "d,[1+2]A", 0, v6 },
 { "stha",      F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0),      "d,[1]A", 0, v6 }, /* stha ,[+%] */
+{ "stha",      F3(3, 0x16, 1), F3(~3, ~0x16, ~1),              "d,[1+i]o", 0, v9 },
+{ "stha",      F3(3, 0x16, 1), F3(~3, ~0x16, ~1),              "d,[i+1]o", 0, v9 },
+{ "stha",      F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0,       "d,[i]o", 0, v9 },
+{ "stha",      F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0),   "d,[1]o", 0, v9 }, /* sth d,[+] */
 
 { "stsha",     F3(3, 0x16, 0), F3(~3, ~0x16, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stsha",     F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* stha d,[rs1+%g0] */
+{ "stsha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stsha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stsha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stsha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* sth d,[+] */
 
 { "stuha",     F3(3, 0x16, 0), F3(~3, ~0x16, ~0),              "d,[1+2]A", F_ALIAS, v9 },
 { "stuha",     F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0),      "d,[1]A", F_ALIAS, v9 }, /* stha d,[rs1+%g0] */
-
-{ "stx",       F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI(~0),              "d,[1+2]", 0, v9 },
-{ "stx",       F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI_RS2(~0),          "d,[1]", 0, v9 }, /* stx d,[rs1+%g0] */
-{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1),                      "d,[1+i]", 0, v9 },
-{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1),                      "d,[i+1]", 0, v9 },
-{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RS1_G0,               "d,[i]", 0, v9 },
-{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|SIMM13(~0),           "d,[1]", 0, v9 }, /* stx d,[rs1+0] */
-{ "stx",       F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0)|RD_G0|ASI(~0),        "F,[1+2]", F_ALIAS, v9 },
-{ "stx",       F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0)|RD_G0|ASI_RS2(~0),    "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */
-{ "stx",       F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|RD_G0,                "F,[1+i]", F_ALIAS, v9 },
-{ "stx",       F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|RD_G0,                "F,[i+1]", F_ALIAS, v9 },
-{ "stx",       F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|RD_G0|RS1_G0,         "F,[i]", F_ALIAS, v9 },
-{ "stx",       F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|SIMM13(~0),           "F,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */
+{ "stuha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1),              "d,[1+i]o", F_ALIAS, v9 },
+{ "stuha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1),              "d,[i+1]o", F_ALIAS, v9 },
+{ "stuha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0,       "d,[i]o", F_ALIAS, v9 },
+{ "stuha",     F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0),   "d,[1]o", F_ALIAS, v9 }, /* sth d,[+] */
+
+{ "stx",       F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI(~0),      "d,[1+2]", 0, v9 },
+{ "stx",       F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI_RS2(~0),  "d,[1]", 0, v9 }, /* stx d,[rs1+%g0] */
+{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1),              "d,[1+i]", 0, v9 },
+{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1),              "d,[i+1]", 0, v9 },
+{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RS1_G0,       "d,[i]", 0, v9 },
+{ "stx",       F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|SIMM13(~0),   "d,[1]", 0, v9 }, /* stx d,[rs1+0] */
+
+{ "stx",       F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI(~0)|RD(~1), "F,[1+2]", 0, v9 },
+{ "stx",       F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI_RS2(~0)|RD(~1),"F,[1]", 0, v9 }, /* st d,[rs1+%g0] */
+{ "stx",       F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1),         "F,[1+i]", 0, v9 },
+{ "stx",       F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1),         "F,[i+1]", 0, v9 },
+{ "stx",       F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RS1_G0|RD(~1),  "F,[i]", 0, v9 },
+{ "stx",       F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|SIMM13(~0)|RD(~1),"F,[1]", 0, v9 }, /* st d,[rs1+0] */
 
 { "stxa",      F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0),              "d,[1+2]A", 0, v9 },
 { "stxa",      F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0)|RS2(~0),      "d,[1]A", 0, v9 }, /* stha d,[rs1+%g0] */
+{ "stxa",      F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1),              "d,[1+i]o", 0, v9 },
+{ "stxa",      F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1),              "d,[i+1]o", 0, v9 },
+{ "stxa",      F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|RS1_G0,       "d,[i]o", 0, v9 },
+{ "stxa",      F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|SIMM13(~0),   "d,[1]o", 0, v9 }, /* stx d,[rs1+0] */
+
+{ "stq",       F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0),      "J,[1+2]", 0, v9 },
+{ "stq",       F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0),  "J,[1]", 0, v9 }, /* st d[rs1+%g0] */
+{ "stq",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1),              "J,[1+i]", 0, v9 },
+{ "stq",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1),              "J,[i+1]", 0, v9 },
+{ "stq",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0,       "J,[i]", 0, v9 },
+{ "stq",       F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0),   "J,[1]", 0, v9 }, /* st d,[rs1+0] */
+
+{ "stqa",      F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0),      "J,[1+2]A", 0, v9 },
+{ "stqa",      F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0),  "J,[1]A", 0, v9 }, /* st d[rs1+%g0] */
+{ "stqa",      F3(3, 0x36, 1), F3(~3, ~0x36, ~1),              "J,[1+i]o", 0, v9 },
+{ "stqa",      F3(3, 0x36, 1), F3(~3, ~0x36, ~1),              "J,[i+1]o", 0, v9 },
+{ "stqa",      F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0,       "J,[i]o", 0, v9 },
+{ "stqa",      F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0),   "J,[1]o", 0, v9 }, /* st d,[rs1+0] */
 
 { "swap",      F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI(~0),      "[1+2],d", 0, v7 },
 { "swap",      F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI_RS2(~0),  "[1],d", 0, v7 }, /* swap [rs1+%g0],d */
@@ -539,6 +588,10 @@ struct sparc_opcode sparc_opcodes[] = {
 
 { "swapa",     F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0),              "[1+2]A,d", 0, v7 },
 { "swapa",     F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0)|RS2(~0),      "[1]A,d", 0, v7 }, /* swapa [rs1+%g0],d */
+{ "swapa",     F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1),              "[1+i]o,d", 0, v9 },
+{ "swapa",     F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1),              "[i+1]o,d", 0, v9 },
+{ "swapa",     F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "swapa",     F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* swap [rs1+0],d */
 
 { "restore",   F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|ASI(~0),                      "1,2,d", 0, v6 },
 { "restore",   F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|RD_G0|RS1_G0|ASI_RS2(~0),     "", 0, v6 }, /* restore %g0,%g0,%g0 */
@@ -573,12 +626,20 @@ struct sparc_opcode sparc_opcodes[] = {
 { "restored",  F3(2, 0x31, 1)|RD(1), F3(~2, ~0x31, ~1)|RD(~1)|RS1_G0|SIMM13(~0),       "", 0, v9 },
 { "sigm",      F3(2, 0x30, 0)|RD(0xf), F3(~2, ~0x30, ~0)|RD(~0xf)|RS1_G0|SIMM13(~0),   "", 0, v9 },
 
-{ "flush",     F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0),      "1+2", F_ALIAS, v9 },
-{ "flush",     F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0),  "1", 0, v9 }, /* flush rs1+%g0 */
-{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0),   "1", 0, v9 }, /* flush rs1+0 */
-{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0,       "i", F_ALIAS, v9 }, /* flush %g0+i */
-{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "1+i", F_ALIAS, v9 },
-{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "i+1", F_ALIAS, v9 },
+{ "flush",     F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0),      "1+2", 0, v8 },
+{ "flush",     F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0),  "1", 0, v8 }, /* flush rs1+%g0 */
+{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0),   "1", 0, v8 }, /* flush rs1+0 */
+{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0,       "i", 0, v8 }, /* flush %g0+i */
+{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "1+i", 0, v8 },
+{ "flush",     F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "i+1", 0, v8 },
+
+/* IFLUSH was renamed to FLUSH in v8.  */
+{ "iflush",    F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0),      "1+2", F_ALIAS, v6 },
+{ "iflush",    F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0),  "1", F_ALIAS, v6 }, /* flush rs1+%g0 */
+{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0),   "1", F_ALIAS, v6 }, /* flush rs1+0 */
+{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0,       "i", F_ALIAS, v6 },
+{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "1+i", F_ALIAS, v6 },
+{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "i+1", F_ALIAS, v6 },
 
 { "return",    F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI(~0),      "1+2", 0, v9 },
 { "return",    F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI_RS2(~0),  "1", 0, v9 }, /* return rs1+%g0 */
@@ -590,7 +651,7 @@ struct sparc_opcode sparc_opcodes[] = {
 { "flushw",    F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RD_G0|RS1_G0|ASI_RS2(~0),     "", 0, v9 },
 
 { "membar",    F3(2, 0x28, 1)|RS1(0xf), F3(~2, ~0x28, ~1)|RD_G0|RS1(~0xf)|ASI(~0), "K", 0, v9 },
-{ "stbar",     F3(2, 0x28, 0)|RS1(0xf), F3(~2, ~0x28, ~0)|RD_G0|RS1(~0xf)|SIMM13(~0),  "", 0, v9 }, /* maybe v8?  */
+{ "stbar",     F3(2, 0x28, 0)|RS1(0xf), F3(~2, ~0x28, ~0)|RD_G0|RS1(~0xf)|SIMM13(~0),  "", 0, v8 },
 
 { "prefetch",  F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0),              "[1+2],*", 0, v9 },
 { "prefetch",  F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0)|RS2_G0,       "[1],*", 0, v9 }, /* prefetch [rs1+%g0],prefetch_fcn */
@@ -600,6 +661,10 @@ struct sparc_opcode sparc_opcodes[] = {
 { "prefetch",  F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|SIMM13(~0),   "[1],*", 0, v9 }, /* prefetch [rs1+0],prefetch_fcn */
 { "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0),              "[1+2]A,*", 0, v9 },
 { "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0)|RS2_G0,       "[1]A,*", 0, v9 }, /* prefetcha [rs1+%g0],prefetch_fcn */
+{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1),              "[1+i]o,d", 0, v9 },
+{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1),              "[i+1]o,d", 0, v9 },
+{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|RS1_G0,       "[i]o,d", 0, v9 },
+{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|SIMM13(~0),   "[1]o,d", 0, v9 }, /* prefetcha [rs1+0],d */
 
  /* The 1<<12 is a long story.  It is necessary.  For more info, please contact rich@cygnus.com */
 { "sll",       F3(2, 0x25, 0), F3(~2, ~0x25, ~0)|(1<<12)|ASI(~0),      "1,2,d", 0, v6 },
@@ -609,13 +674,6 @@ struct sparc_opcode sparc_opcodes[] = {
 { "srl",       F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0),      "1,2,d", 0, v6 },
 { "srl",       F3(2, 0x26, 1), F3(~2, ~0x26, ~1)|(1<<12),              "1,i,d", 0, v6 },
 
-{ "sllw",      F3(2, 0x25, 0), F3(~2, ~0x25, ~0)|(1<<12)|ASI(~0),      "1,2,d", F_ALIAS, v9 }, /* sllw === sll */
-{ "sllw",      F3(2, 0x25, 1), F3(~2, ~0x25, ~1)|(1<<12),              "1,i,d", F_ALIAS, v9 },
-{ "sraw",      F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0),      "1,2,d", F_ALIAS, v9 }, /* sraw === sra */
-{ "sraw",      F3(2, 0x27, 1), F3(~2, ~0x27, ~1)|(1<<12),              "1,i,d", F_ALIAS, v9 },
-{ "srlw",      F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0),      "1,2,d", F_ALIAS, v9 }, /* srlw === srl */
-{ "srlw",      F3(2, 0x26, 1), F3(~2, ~0x26, ~1)|(1<<12),              "1,i,d", F_ALIAS, v9 },
-
 { "sllx",      F3(2, 0x25, 0)|(1<<12), F3(~2, ~0x25, ~0)|(ASI(~0)^(1<<12)),    "1,2,d", 0, v9 },
 { "sllx",      F3(2, 0x25, 1)|(1<<12), F3(~2, ~0x25, ~1),              "1,i,d", 0, v9 },
 { "srax",      F3(2, 0x27, 0)|(1<<12), F3(~2, ~0x27, ~0)|(ASI(~0)^(1<<12)),    "1,2,d", 0, v9 },
@@ -632,6 +690,9 @@ struct sparc_opcode sparc_opcodes[] = {
 { "scan",      F3(2, 0x2c, 0), F3(~2, ~0x2c, ~0)|ASI(~0),      "1,2,d", 0, sparclite },
 { "scan",      F3(2, 0x2c, 1), F3(~2, ~0x2c, ~1),              "1,i,d", 0, sparclite },
 
+{ "popc",      F3(2, 0x2e, 0), F3(~2, ~0x2e, ~0)|RS2_G0|ASI(~0),"2,d", 0, v9 },
+{ "popc",      F3(2, 0x2e, 1), F3(~2, ~0x2e, ~1)|RS2_G0,       "i,d", 0, v9 },
+
 { "clr",       F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RD_G0|RS1_G0|ASI_RS2(~0),     "d", F_ALIAS, v6 }, /* or %g0,%g0,d */
 { "clr",       F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0|SIMM13(~0),            "d", F_ALIAS, v6 }, /* or %g0,0,d       */
 { "clr",       F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI(~0),                "[1+2]", F_ALIAS, v6 },
@@ -646,24 +707,26 @@ struct sparc_opcode sparc_opcodes[] = {
 { "clrb",      F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0,                "[1+i]", F_ALIAS, v6 },
 { "clrb",      F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0,                "[i+1]", F_ALIAS, v6 },
 { "clrb",      F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 },
+{ "clrb",      F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|SIMM13(~0),     "[1]", F_ALIAS, v6 }, /* clrb [rs1+0],d */
 
 { "clrh",      F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI(~0),        "[1+2]", F_ALIAS, v6 },
 { "clrh",      F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI_RS2(~0),    "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+%g0] */
 { "clrh",      F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0,                "[1+i]", F_ALIAS, v6 },
 { "clrh",      F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0,                "[i+1]", F_ALIAS, v6 },
 { "clrh",      F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 },
+{ "clrh",      F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|SIMM13(~0),     "[1]", F_ALIAS, v6 }, /* clrb [rs1+0],d */
 
 { "orcc",      F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "orcc",      F3(2, 0x12, 1), F3(~2, ~0x12, ~1),              "1,i,d", 0, v6 },
 { "orcc",      F3(2, 0x12, 1), F3(~2, ~0x12, ~1),              "i,1,d", 0, v6 },
 
+/* This is not a commutative instruction.  */
 { "orncc",     F3(2, 0x16, 0), F3(~2, ~0x16, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "orncc",     F3(2, 0x16, 1), F3(~2, ~0x16, ~1),              "1,i,d", 0, v6 },
-{ "orncc",     F3(2, 0x16, 1), F3(~2, ~0x16, ~1),              "i,1,d", 0, v6 },
 
+/* This is not a commutative instruction.  */
 { "orn",       F3(2, 0x06, 0), F3(~2, ~0x06, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "orn",       F3(2, 0x06, 1), F3(~2, ~0x06, ~1),              "1,i,d", 0, v6 },
-{ "orn",       F3(2, 0x06, 1), F3(~2, ~0x06, ~1),              "i,1,d", 0, v6 },
 
 { "tst",       F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|ASI_RS2(~0),    "1", 0, v6 }, /* orcc rs1, %g0, %g0 */
 { "tst",       F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|RS1_G0|ASI(~0), "2", 0, v6 }, /* orcc %g0, rs2, %g0 */
@@ -678,37 +741,30 @@ struct sparc_opcode sparc_opcodes[] = {
 { "wr",        F3(2, 0x32, 0),         F3(~2, ~0x32, ~0)|RD_G0|ASI(~0),        "1,2,w", 0, v6 }, /* wr r,r,%wim */
 { "wr",        F3(2, 0x32, 1),         F3(~2, ~0x32, ~1)|RD_G0,                "1,i,w", 0, v6 }, /* wr r,i,%wim */
 { "wr",        F3(2, 0x33, 0),         F3(~2, ~0x33, ~0)|RD_G0|ASI(~0),        "1,2,t", 0, v6 }, /* wr r,r,%tbr */
-{ "wr",        F3(2, 0x33, 0),         F3(~2, ~0x33, ~0)|RD_G0|ASI(~0),        "1,2,s", 0, v9 }, /* wr r,r,%usr */
 { "wr",        F3(2, 0x33, 0),         F3(~2, ~0x33, ~0)|RD_G0|ASI(~0),        "1,2,o", 0, v9 }, /* wr r,r,%asi */
 { "wr",        F3(2, 0x33, 1),         F3(~2, ~0x33, ~1)|RD_G0,                "1,i,t", 0, v6 }, /* wr r,i,%tbr */
-{ "wr",        F3(2, 0x33, 1),         F3(~2, ~0x33, ~1)|RD_G0,                "1,i,s", 0, v9 }, /* wr r,i,%usr */
 { "wr",        F3(2, 0x33, 1),         F3(~2, ~0x33, ~1)|RD_G0,                "1,i,o", 0, v9 }, /* wr r,i,%asi */
 
 { "wr", F3(2, 0x30, 0)|RD(0), F3(~2, ~0x30, ~0)|RD(~0)|ASI(~0), "1,2,y", 0, v9 },
 { "wr", F3(2, 0x30, 1)|RD(0), F3(~2, ~0x30, ~1)|RD(~0),                "1,i,y", 0, v9 },
-{ "wr", F3(2, 0x30, 0)|RD(1), F3(~2, ~0x30, ~0)|RD(~1)|ASI(~0), "1,2,E", 0, v9 },
-{ "wr", F3(2, 0x30, 1)|RD(1), F3(~2, ~0x30, ~1)|RD(~1),                "1,i,E", 0, v9 },
-{ "wr", F3(2, 0x30, 0)|RD(3), F3(~2, ~0x30, ~0)|RD(~3)|ASI(~0), "1,2,W", 0, v9 },
-{ "wr", F3(2, 0x30, 1)|RD(3), F3(~2, ~0x30, ~1)|RD(~3),                "1,i,W", 0, v9 },
-{ "wr", F3(2, 0x30, 0)|RD(4), F3(~2, ~0x30, ~0)|RD(~4)|ASI(~0), "1,2,p", 0, v9 },
-{ "wr", F3(2, 0x30, 1)|RD(4), F3(~2, ~0x30, ~1)|RD(~4),                "1,i,p", 0, v9 },
-{ "wr", F3(2, 0x30, 0)|RD(5), F3(~2, ~0x30, ~0)|RD(~5)|ASI(~0), "1,2,w", 0, v9 },
-{ "wr", F3(2, 0x30, 1)|RD(5), F3(~2, ~0x30, ~1)|RD(~5),                "1,i,w", 0, v9 },
+{ "wr", F3(2, 0x30, 0)|RD(2), F3(~2, ~0x30, ~0)|RD(~2)|ASI(~0), "1,2,E", 0, v9 },
+{ "wr", F3(2, 0x30, 1)|RD(2), F3(~2, ~0x30, ~1)|RD(~2),                "1,i,E", 0, v9 },
+{ "wr", F3(2, 0x30, 0)|RD(3), F3(~2, ~0x30, ~0)|RD(~3)|ASI(~0), "1,2,o", 0, v9 },
+{ "wr", F3(2, 0x30, 1)|RD(3), F3(~2, ~0x30, ~1)|RD(~3),                "1,i,o", 0, v9 },
+{ "wr", F3(2, 0x30, 0)|RD(6), F3(~2, ~0x30, ~0)|RD(~6)|ASI(~0), "1,2,s", 0, v9 },
+{ "wr", F3(2, 0x30, 1)|RD(6), F3(~2, ~0x30, ~1)|RD(~6),                "1,i,s", 0, v9 },
 
 { "rd",        F3(2, 0x28, 0),                 F3(~2, ~0x28, ~0)|SIMM13(~0),           "M,d", 0, v8 }, /* rd %asr1,r */
 { "rd",        F3(2, 0x28, 0),                 F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0),    "y,d", 0, v6 }, /* rd %y,r */
-{ "rd",        F3(2, 0x28, 0)|RS1(1),          F3(~2, ~0x28, ~0)|RS1(~1)|SIMM13(~0),   "E,d", 0, v9 }, /* rd %modes,r */
-{ "rd",        F3(2, 0x28, 0)|RS1(2),          F3(~2, ~0x28, ~0)|RS1(~2)|SIMM13(~0),   "P,d", 0, v9 }, /* rd %pc,r */
-{ "rd",        F3(2, 0x28, 0)|RS1(3),          F3(~2, ~0x28, ~0)|RS1(~3)|SIMM13(~0),   "W,d", 0, v9 }, /* rd %tick,r */
-{ "rd",        F3(2, 0x28, 0)|RS1(4),          F3(~2, ~0x28, ~0)|RS1(~4)|SIMM13(~0),   "p,d", 0, v9 }, /* rd %psr,r */
-{ "rd",        F3(2, 0x28, 0)|RS1(5),          F3(~2, ~0x28, ~0)|RS1(~5)|SIMM13(~0),   "w,d", 0, v9 }, /* rd %wim,r */
-{ "rd",        F3(2, 0x2b, 0),                 F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0),    "t,d", 0, v6 }, /* rd %tbr,r */
-{ "rd",        F3(2, 0x2b, 0),                 F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0),    "s,d", 0, v9 }, /* rd %usr,r */
-{ "rd",        F3(2, 0x2b, 0),                 F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0),    "o,d", 0, v9 }, /* rd %asi,r */
-
- /* FIXME-now: the v9 (ie, 0.5) definitions of these conflict with the older ones.  These are the older ones. */
 { "rd",        F3(2, 0x29, 0),                 F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0),    "p,d", 0, v6 }, /* rd %psr,r */
 { "rd",        F3(2, 0x2a, 0),                 F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0),    "w,d", 0, v6 }, /* rd %wim,r */
+{ "rd",        F3(2, 0x2b, 0),                 F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0),    "t,d", 0, v6 }, /* rd %tbr,r */
+
+{ "rd",        F3(2, 0x28, 0)|RS1(2),          F3(~2, ~0x28, ~0)|RS1(~2)|SIMM13(~0),   "E,d", 0, v9 }, /* rd %ccr,r */
+{ "rd",        F3(2, 0x28, 0)|RS1(3),          F3(~2, ~0x28, ~0)|RS1(~3)|SIMM13(~0),   "o,d", 0, v9 }, /* rd %asi,r */
+{ "rd",        F3(2, 0x28, 0)|RS1(4),          F3(~2, ~0x28, ~0)|RS1(~4)|SIMM13(~0),   "W,d", 0, v9 }, /* rd %tick,r */
+{ "rd",        F3(2, 0x28, 0)|RS1(5),          F3(~2, ~0x28, ~0)|RS1(~5)|SIMM13(~0),   "P,d", 0, v9 }, /* rd %pc,r */
+{ "rd",        F3(2, 0x2b, 0)|RS1(6),          F3(~2, ~0x2b, ~0)|RS1(~6)|SIMM13(~0),   "s,d", 0, v9 }, /* rd %fprs,r */
 
 { "rdpr",      F3(2, 0x2a, 0),         F3(~2, ~0x2a, ~0)|SIMM13(~0),   "?,d", 0, v9 }, /* rdpr %priv_reg,r */
 { "wrpr",      F3(2, 0x32, 0),         F3(~2, ~0x32, ~0)|SIMM13(~0),   "1,2,!", 0, v9 },
@@ -720,10 +776,8 @@ struct sparc_opcode sparc_opcodes[] = {
 
 { "mov",       F3(2, 0x30, 0),         F3(~2, ~0x30, ~0)|ASI(~0),              "1,2,m", F_ALIAS, v8 }, /* wr r,r,%asrX */
 { "mov",       F3(2, 0x30, 0),         F3(~2, ~0x30, ~0)|RD_G0|ASI(~0),        "1,2,y", F_ALIAS, v6 }, /* wr r,r,%y */
-{ "mov",       F3(2, 0x30, 0)|RD(0xe), F3(~2, ~0x30, ~0)|RD(~0xe)|ASI(~0),     "1,2,Y", F_ALIAS, v9 }, /* wr r,r,%amr */
 { "mov",       F3(2, 0x30, 1),         F3(~2, ~0x30, ~1),                      "1,i,m", F_ALIAS, v8 }, /* wr r,i,%asrX */
 { "mov",       F3(2, 0x30, 1),         F3(~2, ~0x30, ~1)|RD_G0,                "1,i,y", F_ALIAS, v6 }, /* wr r,i,%y */
-{ "mov",       F3(2, 0x30, 1)|RD(0xe), F3(~2, ~0x30, ~1)|RD(~0xe),             "1,i,Y", F_ALIAS, v9 }, /* wr r,i,%amr */
 { "mov",       F3(2, 0x31, 0),         F3(~2, ~0x31, ~0)|RD_G0|ASI(~0),        "1,2,p", F_ALIAS, v6 }, /* wr r,r,%psr */
 { "mov",       F3(2, 0x31, 1),         F3(~2, ~0x31, ~1)|RD_G0,                "1,i,p", F_ALIAS, v6 }, /* wr r,i,%psr */
 { "mov",       F3(2, 0x32, 0),         F3(~2, ~0x32, ~0)|RD_G0|ASI(~0),        "1,2,w", F_ALIAS, v6 }, /* wr r,r,%wim */
@@ -733,7 +787,6 @@ struct sparc_opcode sparc_opcodes[] = {
 
 { "mov",       F3(2, 0x28, 0),          F3(~2, ~0x28, ~0)|SIMM13(~0),                  "M,d", F_ALIAS, v8 }, /* rd %asr1,r */
 { "mov",       F3(2, 0x28, 0),          F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0),           "y,d", F_ALIAS, v6 }, /* rd %y,r */
-{ "mov",       F3(2, 0x28, 0)|RS1(0xe), F3(~2, ~0x28, ~0)|RS1(~0xe)|SIMM13(~0),        "Y,d", F_ALIAS, v9 }, /* rd %amr,r */
 { "mov",       F3(2, 0x29, 0),          F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0),           "p,d", F_ALIAS, v6 }, /* rd %psr,r */
 { "mov",       F3(2, 0x2a, 0),          F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0),           "w,d", F_ALIAS, v6 }, /* rd %wim,r */
 { "mov",       F3(2, 0x2b, 0),          F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0),           "t,d", F_ALIAS, v6 }, /* rd %tbr,r */
@@ -763,13 +816,13 @@ struct sparc_opcode sparc_opcodes[] = {
 { "bset",      F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0),      "2,r", F_ALIAS, v6 },   /* or rd,rs2,rd */
 { "bset",      F3(2, 0x02, 1), F3(~2, ~0x02, ~1),              "i,r", F_ALIAS, v6 },   /* or rd,i,rd */
 
+/* This is not a commutative instruction.  */
 { "andn",      F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "andn",      F3(2, 0x05, 1), F3(~2, ~0x05, ~1),              "1,i,d", 0, v6 },
-{ "andn",      F3(2, 0x05, 1), F3(~2, ~0x05, ~1),              "i,1,d", 0, v6 },
 
+/* This is not a commutative instruction.  */
 { "andncc",    F3(2, 0x15, 0), F3(~2, ~0x15, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "andncc",    F3(2, 0x15, 1), F3(~2, ~0x15, ~1),              "1,i,d", 0, v6 },
-{ "andncc",    F3(2, 0x15, 1), F3(~2, ~0x15, ~1),              "i,1,d", 0, v6 },
 
 { "bclr",      F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0),      "2,r", F_ALIAS, v6 },   /* andn rd,rs2,rd */
 { "bclr",      F3(2, 0x05, 1), F3(~2, ~0x05, ~1),              "i,r", F_ALIAS, v6 },   /* andn rd,i,rd */
@@ -783,11 +836,19 @@ struct sparc_opcode sparc_opcodes[] = {
 { "subcc",     F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "subcc",     F3(2, 0x14, 1), F3(~2, ~0x14, ~1),              "1,i,d", 0, v6 },
 
-{ "subx",      F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0),      "1,2,d", 0, v6 },
-{ "subx",      F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1),              "1,i,d", 0, v6 },
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "subx",      F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0),      "1,2,d", F_ALIAS, v6 },
+{ "subx",      F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1),              "1,i,d", F_ALIAS, v6 },
+{ "subc",      F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0),      "1,2,d", 0, v9 },
+{ "subc",      F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1),              "1,i,d", 0, v9 },
 
-{ "subxcc",    F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0),      "1,2,d", 0, v6 },
-{ "subxcc",    F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1),              "1,i,d", 0, v6 },
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "subxcc",    F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0),      "1,2,d", F_ALIAS, v6 },
+{ "subxcc",    F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1),              "1,i,d", F_ALIAS, v6 },
+{ "subccc",    F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0),      "1,2,d", 0, v9 },
+{ "subccc",    F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1),              "1,i,d", 0, v9 },
 
 { "and",       F3(2, 0x01, 0), F3(~2, ~0x01, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "and",       F3(2, 0x01, 1), F3(~2, ~0x01, ~1),              "1,i,d", 0, v6 },
@@ -818,12 +879,22 @@ struct sparc_opcode sparc_opcodes[] = {
 { "addcc",     F3(2, 0x10, 0), F3(~2, ~0x10, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "addcc",     F3(2, 0x10, 1), F3(~2, ~0x10, ~1),              "1,i,d", 0, v6 },
 { "addcc",     F3(2, 0x10, 1), F3(~2, ~0x10, ~1),              "i,1,d", 0, v6 },
-{ "addx",      F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0),      "1,2,d", 0, v6 },
-{ "addx",      F3(2, 0x08, 1), F3(~2, ~0x08, ~1),              "1,i,d", 0, v6 },
-{ "addx",      F3(2, 0x08, 1), F3(~2, ~0x08, ~1),              "i,1,d", 0, v6 },
-{ "addxcc",    F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0),      "1,2,d", 0, v6 },
-{ "addxcc",    F3(2, 0x18, 1), F3(~2, ~0x18, ~1),              "1,i,d", 0, v6 },
-{ "addxcc",    F3(2, 0x18, 1), F3(~2, ~0x18, ~1),              "i,1,d", 0, v6 },
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "addx",      F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0),      "1,2,d", F_ALIAS, v6 },
+{ "addx",      F3(2, 0x08, 1), F3(~2, ~0x08, ~1),              "1,i,d", F_ALIAS, v6 },
+{ "addx",      F3(2, 0x08, 1), F3(~2, ~0x08, ~1),              "i,1,d", F_ALIAS, v6 },
+{ "addc",      F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0),      "1,2,d", 0, v9 },
+{ "addc",      F3(2, 0x08, 1), F3(~2, ~0x08, ~1),              "1,i,d", 0, v9 },
+{ "addc",      F3(2, 0x08, 1), F3(~2, ~0x08, ~1),              "i,1,d", 0, v9 },
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "addxcc",    F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0),      "1,2,d", F_ALIAS, v6 },
+{ "addxcc",    F3(2, 0x18, 1), F3(~2, ~0x18, ~1),              "1,i,d", F_ALIAS, v6 },
+{ "addxcc",    F3(2, 0x18, 1), F3(~2, ~0x18, ~1),              "i,1,d", F_ALIAS, v6 },
+{ "addccc",    F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0),      "1,2,d", 0, v9 },
+{ "addccc",    F3(2, 0x18, 1), F3(~2, ~0x18, ~1),              "1,i,d", 0, v9 },
+{ "addccc",    F3(2, 0x18, 1), F3(~2, ~0x18, ~1),              "i,1,d", 0, v9 },
 
 { "smul",      F3(2, 0x0b, 0), F3(~2, ~0x0b, ~0)|ASI(~0),      "1,2,d", 0, v8 },
 { "smul",      F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1),              "1,i,d", 0, v8 },
@@ -852,10 +923,8 @@ struct sparc_opcode sparc_opcodes[] = {
 
 { "mulx",      F3(2, 0x09, 0), F3(~2, ~0x09, ~0)|ASI(~0),      "1,2,d", 0, v9 },
 { "mulx",      F3(2, 0x09, 1), F3(~2, ~0x09, ~1),              "1,i,d", 0, v9 },
-{ "umulxcc",   F3(2, 0x19, 0), F3(~2, ~0x19, ~0)|ASI(~0),      "1,2,d", 0, v9 },
-{ "umulxcc",   F3(2, 0x19, 1), F3(~2, ~0x19, ~1),              "1,i,d", 0, v9 },
-{ "sdivxcc",   F3(2, 0x1d, 0), F3(~2, ~0x1d, ~0)|ASI(~0),      "1,2,d", 0, v9 },
-{ "sdivxcc",   F3(2, 0x1d, 1), F3(~2, ~0x1d, ~1),              "1,i,d", 0, v9 },
+{ "sdivx",     F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0),      "1,2,d", 0, v9 },
+{ "sdivx",     F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1),              "1,i,d", 0, v9 },
 { "udivx",     F3(2, 0x0d, 0), F3(~2, ~0x0d, ~0)|ASI(~0),      "1,2,d", 0, v9 },
 { "udivx",     F3(2, 0x0d, 1), F3(~2, ~0x0d, ~1),              "1,i,d", 0, v9 },
 
@@ -891,9 +960,6 @@ struct sparc_opcode sparc_opcodes[] = {
 
 /* Define four traps: reg+reg, reg + immediate, immediate alone, reg alone. */
 #define tr(opcode, mask, lose, flags) \
- { opcode, (mask)|IMMED, (lose)|RS1_G0,                "i",     (flags), v6 }, /* %g0 + imm */ \
- { opcode, (mask)|IMMED, (lose),               "1+i",   (flags), v6 }, /* rs1 + imm */ \
- { opcode, (mask), IMMED|(lose),               "1+2",   (flags), v6 }, /* rs1 + rs2 */ \
  { opcode, (mask)|(2<<11)|IMMED, (lose)|RS1_G0,        "Z,i",   (flags), v9 }, /* %g0 + imm */ \
  { opcode, (mask)|(2<<11)|IMMED, (lose),       "Z,1+i", (flags), v9 }, /* rs1 + imm */ \
  { opcode, (mask)|(2<<11), IMMED|(lose),       "Z,1+2", (flags), v9 }, /* rs1 + rs2 */ \
@@ -902,6 +968,9 @@ struct sparc_opcode sparc_opcodes[] = {
  { opcode, (mask)|IMMED, (lose),       "z,1+i", (flags)|F_ALIAS, v9 }, /* rs1 + imm */ \
  { opcode, (mask), IMMED|(lose),       "z,1+2", (flags)|F_ALIAS, v9 }, /* rs1 + rs2 */ \
  { opcode, (mask), IMMED|(lose)|RS2_G0,        "z,1",   (flags)|F_ALIAS, v9 }, /* rs1 + %g0 */ \
+ { opcode, (mask)|IMMED, (lose)|RS1_G0,                "i",     (flags), v6 }, /* %g0 + imm */ \
+ { opcode, (mask)|IMMED, (lose),               "1+i",   (flags), v6 }, /* rs1 + imm */ \
+ { opcode, (mask), IMMED|(lose),               "1+2",   (flags), v6 }, /* rs1 + rs2 */ \
  { opcode, (mask), IMMED|(lose)|RS2_G0,                "1",     (flags), v6 } /* rs1 + %g0 */
 
 /* Define both branches and traps based on condition mask */
@@ -938,6 +1007,7 @@ cond ("bz",        "tz",   CONDZ, F_ALIAS), /* for e */
 
 #undef cond
 #undef br
+#undef brr /* v9 */
 #undef tr
 
 #define brr(opcode, mask, lose, flags) /* v9 */ \
@@ -951,25 +1021,19 @@ cond ("bz",      "tz",   CONDZ, F_ALIAS), /* for e */
 #define condr(bop, mask, flags) /* v9 */ \
   brr(bop, F2(0, 3)|COND(mask), F2(~0, ~3)|COND(~(mask)), (flags)) /* v9 */ \
 
-/* v9 */ condr("bre", 0x1, 0),
-/* v9 */ condr("brne", 0x5, 0),
-/* v9 */ condr("brneg", 0x3, 0),
-/* v9 */ condr("brnegz", 0x2, 0),
-/* v9 */ condr("brposnz", 0x6, 0),
-/* v9 */ condr("brnz", 0x5, F_ALIAS),
-/* v9 */ condr("brpos", 0x7, 0),
-/* v9 */ condr("brz", 0x1, F_ALIAS),
+/* v9 */ condr("brnz", 0x5, 0),
+/* v9 */ condr("brz", 0x1, 0),
+/* v9 */ condr("brgez", 0x7, 0),
+/* v9 */ condr("brlz", 0x3, 0),
+/* v9 */ condr("brlez", 0x2, 0),
+/* v9 */ condr("brgz", 0x6, 0),
 
 #undef condr /* v9 */
 #undef brr /* v9 */
 
-#define mrr(opcode, mask, lose, flags) /* v9 */ \
- { opcode, (mask), (lose), "1,2,d", (flags), v9 }, \
- { opcode, (mask), (lose), "1,i,d", (flags), v9 }
-
-#define movr(mop, mask, flags) /* v9 */ \
-  mrr(mop, F3(2, 0x2f, 0)|COND(mask), F3(~2, ~0x2f, ~0)|COND(~(mask)), (flags)), /* v9 */ \
-  mrr(mop, F3(2, 0x2f, 1)|COND(mask), F3(~2, ~0x2f, ~1)|COND(~(mask)), (flags)) /* v9 */
+#define movr(opcode, mask, flags) /* v9 */ \
+ { opcode, F3(2, 0x2f, 0)|COND(mask), F3(~2, ~0x2f, ~0)|COND(~(mask)), "1,2,d", (flags), v9 }, \
+ { opcode, F3(2, 0x2f, 1)|COND(mask), F3(~2, ~0x2f, ~1)|COND(~(mask)), "1,j,d", (flags), v9 }
 
 #define fmrrs(opcode, mask, lose, flags) /* v9 */ \
  { opcode, (mask), (lose), "1,f,g", (flags), v9 }
@@ -979,50 +1043,49 @@ cond ("bz",      "tz",   CONDZ, F_ALIAS), /* for e */
  { opcode, (mask), (lose), "1,R,J", (flags), v9 }
 
 #define fmovrs(mop, mask, flags) /* v9 */ \
-  fmrrs(mop, F3(2, 0x25, 0)|OPF_LOW(5)|COND(mask), F3(~2, ~0x25, 0)|OPF_LOW(~5)|COND(~(mask)), (flags)) /* v9 */
+  fmrrs(mop, F3(2, 0x35, 0)|OPF_LOW5(5)|COND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~5)|COND(~(mask)), (flags)) /* v9 */
 #define fmovrd(mop, mask, flags) /* v9 */ \
-  fmrrd(mop, F3(2, 0x25, 0)|OPF_LOW(6)|COND(mask), F3(~2, ~0x25, 0)|OPF_LOW(~6)|COND(~(mask)), (flags)) /* v9 */
+  fmrrd(mop, F3(2, 0x35, 0)|OPF_LOW5(6)|COND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~6)|COND(~(mask)), (flags)) /* v9 */
 #define fmovrq(mop, mask, flags) /* v9 */ \
-  fmrrq(mop, F3(2, 0x25, 0)|OPF_LOW(7)|COND(mask), F3(~2, ~0x25, 0)|OPF_LOW(~7)|COND(~(mask)), (flags)) /* v9 */
+  fmrrq(mop, F3(2, 0x35, 0)|OPF_LOW5(7)|COND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~7)|COND(~(mask)), (flags)) /* v9 */
 
 /* v9 */ movr("movrne", 0x5, 0),
 /* v9 */ movr("movre", 0x1, 0),
-/* v9 */ movr("movrpos", 0x7, 0),
-/* v9 */ movr("movrneg", 0x3, 0),
-/* v9 */ movr("movrnegz", 0x2, 0),
-/* v9 */ movr("movrposnz", 0x6, 0),
+/* v9 */ movr("movrgez", 0x7, 0),
+/* v9 */ movr("movrlz", 0x3, 0),
+/* v9 */ movr("movrlez", 0x2, 0),
+/* v9 */ movr("movrgz", 0x6, 0),
 /* v9 */ movr("movrnz", 0x5, F_ALIAS),
 /* v9 */ movr("movrz", 0x1, F_ALIAS),
 
-/* v9 */ fmovrs("fmovrnes", 0x5, 0),
-/* v9 */ fmovrs("fmovres", 0x1, 0),
-/* v9 */ fmovrs("fmovrposs", 0x7, 0),
-/* v9 */ fmovrs("fmovrnegs", 0x3, 0),
-/* v9 */ fmovrs("fmovrnegzs", 0x2, 0),
-/* v9 */ fmovrs("fmovrposnzs", 0x6, 0),
-/* v9 */ fmovrs("fmovrnzs", 0x5, F_ALIAS),
-/* v9 */ fmovrs("fmovrzs", 0x1, F_ALIAS),
-
-/* v9 */ fmovrd("fmovrned", 0x5, 0),
-/* v9 */ fmovrd("fmovred", 0x1, 0),
-/* v9 */ fmovrd("fmovrposd", 0x7, 0),
-/* v9 */ fmovrd("fmovrnegd", 0x3, 0),
-/* v9 */ fmovrd("fmovrnegzd", 0x2, 0),
-/* v9 */ fmovrd("fmovrposnzd", 0x6, 0),
-/* v9 */ fmovrd("fmovrnzd", 0x5, F_ALIAS),
-/* v9 */ fmovrd("fmovrzd", 0x1, F_ALIAS),
-
-/* v9 */ fmovrq("fmovrneq", 0x5, 0),
-/* v9 */ fmovrq("fmovreq", 0x1, 0),
-/* v9 */ fmovrq("fmovrposq", 0x7, 0),
-/* v9 */ fmovrq("fmovrnegq", 0x3, 0),
-/* v9 */ fmovrq("fmovrnegzq", 0x2, 0),
-/* v9 */ fmovrq("fmovrposnzq", 0x6, 0),
-/* v9 */ fmovrq("fmovrnzq", 0x5, F_ALIAS),
-/* v9 */ fmovrq("fmovrzq", 0x1, F_ALIAS),
+/* v9 */ fmovrs("fmovrsne", 0x5, 0),
+/* v9 */ fmovrs("fmovrse", 0x1, 0),
+/* v9 */ fmovrs("fmovrsgez", 0x7, 0),
+/* v9 */ fmovrs("fmovrslz", 0x3, 0),
+/* v9 */ fmovrs("fmovrslez", 0x2, 0),
+/* v9 */ fmovrs("fmovrsgz", 0x6, 0),
+/* v9 */ fmovrs("fmovrsnz", 0x5, F_ALIAS),
+/* v9 */ fmovrs("fmovrsz", 0x1, F_ALIAS),
+
+/* v9 */ fmovrd("fmovrdne", 0x5, 0),
+/* v9 */ fmovrd("fmovrde", 0x1, 0),
+/* v9 */ fmovrd("fmovrdgez", 0x7, 0),
+/* v9 */ fmovrd("fmovrdlz", 0x3, 0),
+/* v9 */ fmovrd("fmovrdlez", 0x2, 0),
+/* v9 */ fmovrd("fmovrdgz", 0x6, 0),
+/* v9 */ fmovrd("fmovrdnz", 0x5, F_ALIAS),
+/* v9 */ fmovrd("fmovrdz", 0x1, F_ALIAS),
+
+/* v9 */ fmovrq("fmovrqne", 0x5, 0),
+/* v9 */ fmovrq("fmovrqe", 0x1, 0),
+/* v9 */ fmovrq("fmovrqgez", 0x7, 0),
+/* v9 */ fmovrq("fmovrqlz", 0x3, 0),
+/* v9 */ fmovrq("fmovrqlez", 0x2, 0),
+/* v9 */ fmovrq("fmovrqgz", 0x6, 0),
+/* v9 */ fmovrq("fmovrqnz", 0x5, F_ALIAS),
+/* v9 */ fmovrq("fmovrqz", 0x1, F_ALIAS),
 
 #undef movr /* v9 */
-#undef mrr /* v9 */
 #undef fmovr /* v9 */
 #undef fmrr /* v9 */
 
@@ -1166,6 +1229,10 @@ cond ("bz",      "tz",   CONDZ, F_ALIAS), /* for e */
 { "movnz",     F3(2, 0x2c, 1)|FCC(2)|MCOND(FCONDNZ,0), MCOND(~FCONDNZ,~0)|FCC(~2)|F3(~2, ~0x2c, ~1), "8,I,d", F_ALIAS, v9 },
 { "movnz",     F3(2, 0x2c, 0)|FCC(3)|MCOND(FCONDNZ,0), MCOND(~FCONDNZ,~0)|FCC(~3)|F3(~2, ~0x2c, ~0), "9,2,d", F_ALIAS, v9 },
 { "movnz",     F3(2, 0x2c, 1)|FCC(3)|MCOND(FCONDNZ,0), MCOND(~FCONDNZ,~0)|FCC(~3)|F3(~2, ~0x2c, ~1), "9,I,d", F_ALIAS, v9 },
+{ "movnz",     F3(2, 0x2c, 0)|MCOND(CONDNZ,1)|ICC, F3(~2, ~0x2c, ~0)|MCOND(~CONDNZ,~1)|XCC|(1<<12), "z,2,d", F_ALIAS, v9 },
+{ "movnz",     F3(2, 0x2c, 1)|MCOND(CONDNZ,1)|ICC, F3(~2, ~0x2c, ~1)|MCOND(~CONDNZ,~1)|XCC|(1<<12), "z,I,d", F_ALIAS, v9 },
+{ "movnz",     F3(2, 0x2c, 0)|MCOND(CONDNZ,1)|XCC, F3(~2, ~0x2c, ~0)|MCOND(~CONDNZ,~1)|(1<<12), "Z,2,d", F_ALIAS, v9 },
+{ "movnz",     F3(2, 0x2c, 1)|MCOND(CONDNZ,1)|XCC, F3(~2, ~0x2c, ~1)|MCOND(~CONDNZ,~1)|(1<<12), "Z,I,d", F_ALIAS, v9 },
 { "movo",      F3(2, 0x2c, 0)|FCC(0)|MCOND(FCONDO,0), MCOND(~FCONDO,~0)|FCC(~0)|F3(~2, ~0x2c, ~0), "6,2,d", 0, v9 },
 { "movo",      F3(2, 0x2c, 1)|FCC(0)|MCOND(FCONDO,0), MCOND(~FCONDO,~0)|FCC(~0)|F3(~2, ~0x2c, ~1), "6,I,d", 0, v9 },
 { "movo",      F3(2, 0x2c, 0)|FCC(1)|MCOND(FCONDO,0), MCOND(~FCONDO,~0)|FCC(~1)|F3(~2, ~0x2c, ~0), "7,2,d", 0, v9 },
@@ -1242,343 +1309,347 @@ cond ("bz",   "tz",   CONDZ, F_ALIAS), /* for e */
 { "movz",      F3(2, 0x2c, 1)|FCC(2)|MCOND(FCONDZ,0), MCOND(~FCONDZ,~0)|FCC(~2)|F3(~2, ~0x2c, ~1), "8,I,d", F_ALIAS, v9 },
 { "movz",      F3(2, 0x2c, 0)|FCC(3)|MCOND(FCONDZ,0), MCOND(~FCONDZ,~0)|FCC(~3)|F3(~2, ~0x2c, ~0), "9,2,d", F_ALIAS, v9 },
 { "movz",      F3(2, 0x2c, 1)|FCC(3)|MCOND(FCONDZ,0), MCOND(~FCONDZ,~0)|FCC(~3)|F3(~2, ~0x2c, ~1), "9,I,d", F_ALIAS, v9 },
-
-{ "fmovad",    F3F(2, 0x35, 0x102)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDA,~0),   "z,f,g", 0, v9 },
-{ "fmovad",    F3F(2, 0x35, 0x082)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDA,~0),  "6,f,g", 0, v9 },
-{ "fmovad",    F3F(2, 0x35, 0x182)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDA,~0),   "Z,f,g", 0, v9 },
-{ "fmovad",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDA,~0),  "7,f,g", 0, v9 },
-{ "fmovad",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDA,~0),  "8,f,g", 0, v9 },
-{ "fmovad",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDA,~0),  "9,f,g", 0, v9 },
-{ "fmovaq",    F3F(2, 0x35, 0x103)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDA,~0),   "z,f,g", 0, v9 },
-{ "fmovaq",    F3F(2, 0x35, 0x083)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDA,~0),  "6,f,g", 0, v9 },
-{ "fmovaq",    F3F(2, 0x35, 0x183)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDA,~0),   "Z,f,g", 0, v9 },
-{ "fmovaq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDA,~0),  "7,f,g", 0, v9 },
-{ "fmovaq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDA,~0),  "8,f,g", 0, v9 },
-{ "fmovaq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDA,~0),  "9,f,g", 0, v9 },
-{ "fmovas",    F3F(2, 0x35, 0x101)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDA,~0),   "z,f,g", 0, v9 },
-{ "fmovas",    F3F(2, 0x35, 0x081)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDA,~0),  "6,f,g", 0, v9 },
-{ "fmovas",    F3F(2, 0x35, 0x181)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDA,~0),   "Z,f,g", 0, v9 },
-{ "fmovas",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDA,~0),  "7,f,g", 0, v9 },
-{ "fmovas",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDA,~0),  "8,f,g", 0, v9 },
-{ "fmovas",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDA,~0),  "9,f,g", 0, v9 },
-{ "fmovccd",   F3F(2, 0x35, 0x102)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDCC,~0),  "z,f,g", 0, v9 },
-{ "fmovccd",   F3F(2, 0x35, 0x182)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDCC,~0),  "Z,f,g", 0, v9 },
-{ "fmovccq",   F3F(2, 0x35, 0x103)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDCC,~0),  "z,f,g", 0, v9 },
-{ "fmovccq",   F3F(2, 0x35, 0x183)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDCC,~0),  "Z,f,g", 0, v9 },
-{ "fmovccs",   F3F(2, 0x35, 0x101)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDCC,~0),  "z,f,g", 0, v9 },
-{ "fmovccs",   F3F(2, 0x35, 0x181)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDCC,~0),  "Z,f,g", 0, v9 },
-{ "fmovcsd",   F3F(2, 0x35, 0x102)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDCS,~0),  "z,f,g", 0, v9 },
-{ "fmovcsd",   F3F(2, 0x35, 0x182)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDCS,~0),  "Z,f,g", 0, v9 },
-{ "fmovcsq",   F3F(2, 0x35, 0x103)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDCS,~0),  "z,f,g", 0, v9 },
-{ "fmovcsq",   F3F(2, 0x35, 0x183)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDCS,~0),  "Z,f,g", 0, v9 },
-{ "fmovcss",   F3F(2, 0x35, 0x101)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDCS,~0),  "z,f,g", 0, v9 },
-{ "fmovcss",   F3F(2, 0x35, 0x181)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDCS,~0),  "Z,f,g", 0, v9 },
-{ "fmoved",    F3F(2, 0x35, 0x102)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDE,~0),   "z,f,g", 0, v9 },
-{ "fmoved",    F3F(2, 0x35, 0x082)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDE,~0),  "6,f,g", 0, v9 },
-{ "fmoved",    F3F(2, 0x35, 0x182)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDE,~0),   "Z,f,g", 0, v9 },
-{ "fmoved",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDE,~0),  "7,f,g", 0, v9 },
-{ "fmoved",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDE,~0),  "8,f,g", 0, v9 },
-{ "fmoved",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDE,~0),  "9,f,g", 0, v9 },
-{ "fmoveq",    F3F(2, 0x35, 0x103)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDE,~0),   "z,f,g", 0, v9 },
-{ "fmoveq",    F3F(2, 0x35, 0x083)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDE,~0),  "6,f,g", 0, v9 },
-{ "fmoveq",    F3F(2, 0x35, 0x183)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDE,~0),   "Z,f,g", 0, v9 },
-{ "fmoveq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDE,~0),  "7,f,g", 0, v9 },
-{ "fmoveq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDE,~0),  "8,f,g", 0, v9 },
-{ "fmoveq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDE,~0),  "9,f,g", 0, v9 },
-{ "fmoves",    F3F(2, 0x35, 0x101)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDE,~0),   "z,f,g", 0, v9 },
-{ "fmoves",    F3F(2, 0x35, 0x081)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDE,~0),  "6,f,g", 0, v9 },
-{ "fmoves",    F3F(2, 0x35, 0x181)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDE,~0),   "Z,f,g", 0, v9 },
-{ "fmoves",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDE,~0),  "7,f,g", 0, v9 },
-{ "fmoves",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDE,~0),  "8,f,g", 0, v9 },
-{ "fmoves",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDE,~0),  "9,f,g", 0, v9 },
-{ "fmovgd",    F3F(2, 0x35, 0x102)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDG,~0),   "z,f,g", 0, v9 },
-{ "fmovgd",    F3F(2, 0x35, 0x082)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDG,~0),  "6,f,g", 0, v9 },
-{ "fmovgd",    F3F(2, 0x35, 0x182)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDG,~0),   "Z,f,g", 0, v9 },
-{ "fmovgd",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDG,~0),  "7,f,g", 0, v9 },
-{ "fmovgd",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDG,~0),  "8,f,g", 0, v9 },
-{ "fmovgd",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDG,~0),  "9,f,g", 0, v9 },
-{ "fmovged",   F3F(2, 0x35, 0x102)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDGE,~0),  "z,f,g", 0, v9 },
-{ "fmovged",   F3F(2, 0x35, 0x082)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDGE,~0),        "6,f,g", 0, v9 },
-{ "fmovged",   F3F(2, 0x35, 0x182)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDGE,~0),  "Z,f,g", 0, v9 },
-{ "fmovged",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDGE,~0),        "7,f,g", 0, v9 },
-{ "fmovged",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDGE,~0),        "8,f,g", 0, v9 },
-{ "fmovged",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDGE,~0),        "9,f,g", 0, v9 },
-{ "fmovgeq",   F3F(2, 0x35, 0x103)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDGE,~0),  "z,f,g", 0, v9 },
-{ "fmovgeq",   F3F(2, 0x35, 0x083)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDGE,~0),        "6,f,g", 0, v9 },
-{ "fmovgeq",   F3F(2, 0x35, 0x183)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDGE,~0),  "Z,f,g", 0, v9 },
-{ "fmovgeq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDGE,~0),        "7,f,g", 0, v9 },
-{ "fmovgeq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDGE,~0),        "8,f,g", 0, v9 },
-{ "fmovgeq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDGE,~0),        "9,f,g", 0, v9 },
-{ "fmovges",   F3F(2, 0x35, 0x101)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDGE,~0),  "z,f,g", 0, v9 },
-{ "fmovges",   F3F(2, 0x35, 0x081)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDGE,~0),        "6,f,g", 0, v9 },
-{ "fmovges",   F3F(2, 0x35, 0x181)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDGE,~0),  "Z,f,g", 0, v9 },
-{ "fmovges",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDGE,~0),        "7,f,g", 0, v9 },
-{ "fmovges",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDGE,~0),        "8,f,g", 0, v9 },
-{ "fmovges",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDGE,~0),        "9,f,g", 0, v9 },
-{ "fmovgeud",  F3F(2, 0x35, 0x102)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDGEU,~0),        "z,f,g", F_ALIAS, v9 },
-{ "fmovgeud",  F3F(2, 0x35, 0x182)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDGEU,~0),        "Z,f,g", F_ALIAS, v9 },
-{ "fmovgeuq",  F3F(2, 0x35, 0x103)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDGEU,~0),        "z,f,g", F_ALIAS, v9 },
-{ "fmovgeuq",  F3F(2, 0x35, 0x183)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDGEU,~0),        "Z,f,g", F_ALIAS, v9 },
-{ "fmovgeus",  F3F(2, 0x35, 0x101)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDGEU,~0),        "z,f,g", F_ALIAS, v9 },
-{ "fmovgeus",  F3F(2, 0x35, 0x181)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDGEU,~0),        "Z,f,g", F_ALIAS, v9 },
-{ "fmovgq",    F3F(2, 0x35, 0x103)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDG,~0),   "z,f,g", 0, v9 },
-{ "fmovgq",    F3F(2, 0x35, 0x083)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDG,~0),  "6,f,g", 0, v9 },
-{ "fmovgq",    F3F(2, 0x35, 0x183)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDG,~0),   "Z,f,g", 0, v9 },
-{ "fmovgq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDG,~0),  "7,f,g", 0, v9 },
-{ "fmovgq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDG,~0),  "8,f,g", 0, v9 },
-{ "fmovgq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDG,~0),  "9,f,g", 0, v9 },
-{ "fmovgs",    F3F(2, 0x35, 0x101)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDG,~0),   "z,f,g", 0, v9 },
-{ "fmovgs",    F3F(2, 0x35, 0x081)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDG,~0),  "6,f,g", 0, v9 },
-{ "fmovgs",    F3F(2, 0x35, 0x181)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDG,~0),   "Z,f,g", 0, v9 },
-{ "fmovgs",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDG,~0),  "7,f,g", 0, v9 },
-{ "fmovgs",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDG,~0),  "8,f,g", 0, v9 },
-{ "fmovgs",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDG,~0),  "9,f,g", 0, v9 },
-{ "fmovgud",   F3F(2, 0x35, 0x102)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDGU,~0),  "z,f,g", 0, v9 },
-{ "fmovgud",   F3F(2, 0x35, 0x182)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDGU,~0),  "Z,f,g", 0, v9 },
-{ "fmovguq",   F3F(2, 0x35, 0x103)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDGU,~0),  "z,f,g", 0, v9 },
-{ "fmovguq",   F3F(2, 0x35, 0x183)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDGU,~0),  "Z,f,g", 0, v9 },
-{ "fmovgus",   F3F(2, 0x35, 0x101)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDGU,~0),  "z,f,g", 0, v9 },
-{ "fmovgus",   F3F(2, 0x35, 0x181)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDGU,~0),  "Z,f,g", 0, v9 },
-{ "fmovld",    F3F(2, 0x35, 0x102)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDL,~0),   "z,f,g", 0, v9 },
-{ "fmovld",    F3F(2, 0x35, 0x082)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDL,~0),  "6,f,g", 0, v9 },
-{ "fmovld",    F3F(2, 0x35, 0x182)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDL,~0),   "Z,f,g", 0, v9 },
-{ "fmovld",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDL,~0),  "7,f,g", 0, v9 },
-{ "fmovld",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDL,~0),  "8,f,g", 0, v9 },
-{ "fmovld",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDL,~0),  "9,f,g", 0, v9 },
-{ "fmovled",   F3F(2, 0x35, 0x102)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDLE,~0),  "z,f,g", 0, v9 },
-{ "fmovled",   F3F(2, 0x35, 0x082)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDLE,~0),        "6,f,g", 0, v9 },
-{ "fmovled",   F3F(2, 0x35, 0x182)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDLE,~0),  "Z,f,g", 0, v9 },
-{ "fmovled",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDLE,~0),        "7,f,g", 0, v9 },
-{ "fmovled",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDLE,~0),        "8,f,g", 0, v9 },
-{ "fmovled",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDLE,~0),        "9,f,g", 0, v9 },
-{ "fmovleq",   F3F(2, 0x35, 0x103)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDLE,~0),  "z,f,g", 0, v9 },
-{ "fmovleq",   F3F(2, 0x35, 0x083)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDLE,~0),        "6,f,g", 0, v9 },
-{ "fmovleq",   F3F(2, 0x35, 0x183)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDLE,~0),  "Z,f,g", 0, v9 },
-{ "fmovleq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDLE,~0),        "7,f,g", 0, v9 },
-{ "fmovleq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDLE,~0),        "8,f,g", 0, v9 },
-{ "fmovleq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDLE,~0),        "9,f,g", 0, v9 },
-{ "fmovles",   F3F(2, 0x35, 0x101)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDLE,~0),  "z,f,g", 0, v9 },
-{ "fmovles",   F3F(2, 0x35, 0x081)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDLE,~0),        "6,f,g", 0, v9 },
-{ "fmovles",   F3F(2, 0x35, 0x181)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDLE,~0),  "Z,f,g", 0, v9 },
-{ "fmovles",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDLE,~0),        "7,f,g", 0, v9 },
-{ "fmovles",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDLE,~0),        "8,f,g", 0, v9 },
-{ "fmovles",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDLE,~0),        "9,f,g", 0, v9 },
-{ "fmovleud",  F3F(2, 0x35, 0x102)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDLEU,~0),        "z,f,g", 0, v9 },
-{ "fmovleud",  F3F(2, 0x35, 0x182)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDLEU,~0),        "Z,f,g", 0, v9 },
-{ "fmovleuq",  F3F(2, 0x35, 0x103)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDLEU,~0),        "z,f,g", 0, v9 },
-{ "fmovleuq",  F3F(2, 0x35, 0x183)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDLEU,~0),        "Z,f,g", 0, v9 },
-{ "fmovleus",  F3F(2, 0x35, 0x101)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDLEU,~0),        "z,f,g", 0, v9 },
-{ "fmovleus",  F3F(2, 0x35, 0x181)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDLEU,~0),        "Z,f,g", 0, v9 },
-{ "fmovlgd",   F3F(2, 0x35, 0x082)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDLG,~0),        "6,f,g", 0, v9 },
-{ "fmovlgd",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDLG,~0),        "7,f,g", 0, v9 },
-{ "fmovlgd",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDLG,~0),        "8,f,g", 0, v9 },
-{ "fmovlgd",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDLG,~0),        "9,f,g", 0, v9 },
-{ "fmovlgq",   F3F(2, 0x35, 0x083)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDLG,~0),        "6,f,g", 0, v9 },
-{ "fmovlgq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDLG,~0),        "7,f,g", 0, v9 },
-{ "fmovlgq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDLG,~0),        "8,f,g", 0, v9 },
-{ "fmovlgq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDLG,~0),        "9,f,g", 0, v9 },
-{ "fmovlgs",   F3F(2, 0x35, 0x081)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDLG,~0),        "6,f,g", 0, v9 },
-{ "fmovlgs",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDLG,~0),        "7,f,g", 0, v9 },
-{ "fmovlgs",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDLG,~0),        "8,f,g", 0, v9 },
-{ "fmovlgs",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDLG,~0),        "9,f,g", 0, v9 },
-{ "fmovlq",    F3F(2, 0x35, 0x103)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDL,~0),   "z,f,g", 0, v9 },
-{ "fmovlq",    F3F(2, 0x35, 0x083)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDL,~0),  "6,f,g", 0, v9 },
-{ "fmovlq",    F3F(2, 0x35, 0x183)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDL,~0),   "Z,f,g", 0, v9 },
-{ "fmovlq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDL,~0),  "7,f,g", 0, v9 },
-{ "fmovlq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDL,~0),  "8,f,g", 0, v9 },
-{ "fmovlq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDL,~0),  "9,f,g", 0, v9 },
-{ "fmovls",    F3F(2, 0x35, 0x101)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDL,~0),   "z,f,g", 0, v9 },
-{ "fmovls",    F3F(2, 0x35, 0x081)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDL,~0),  "6,f,g", 0, v9 },
-{ "fmovls",    F3F(2, 0x35, 0x181)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDL,~0),   "Z,f,g", 0, v9 },
-{ "fmovls",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDL,~0),  "7,f,g", 0, v9 },
-{ "fmovls",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDL,~0),  "8,f,g", 0, v9 },
-{ "fmovls",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDL,~0),  "9,f,g", 0, v9 },
-{ "fmovlud",   F3F(2, 0x35, 0x102)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDLU,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovlud",   F3F(2, 0x35, 0x182)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDLU,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovluq",   F3F(2, 0x35, 0x103)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDLU,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovluq",   F3F(2, 0x35, 0x183)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDLU,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovlus",   F3F(2, 0x35, 0x101)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDLU,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovlus",   F3F(2, 0x35, 0x181)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDLU,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovnd",    F3F(2, 0x35, 0x102)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDN,~0),   "z,f,g", 0, v9 },
-{ "fmovnd",    F3F(2, 0x35, 0x082)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDN,~0),  "6,f,g", 0, v9 },
-{ "fmovnd",    F3F(2, 0x35, 0x182)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDN,~0),   "Z,f,g", 0, v9 },
-{ "fmovnd",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDN,~0),  "7,f,g", 0, v9 },
-{ "fmovnd",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDN,~0),  "8,f,g", 0, v9 },
-{ "fmovnd",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDN,~0),  "9,f,g", 0, v9 },
-{ "fmovned",   F3F(2, 0x35, 0x102)|MCOND(CONDNE,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDNE,~0),  "z,f,g", 0, v9 },
-{ "fmovned",   F3F(2, 0x35, 0x082)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDNE,~0),        "6,f,g", 0, v9 },
-{ "fmovned",   F3F(2, 0x35, 0x182)|MCOND(CONDNE,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDNE,~0),  "Z,f,g", 0, v9 },
-{ "fmovned",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDNE,~0),        "7,f,g", 0, v9 },
-{ "fmovned",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDNE,~0),        "8,f,g", 0, v9 },
-{ "fmovned",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDNE,~0),        "9,f,g", 0, v9 },
-{ "fmovnegd",  F3F(2, 0x35, 0x102)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDNEG,~0),        "z,f,g", 0, v9 },
-{ "fmovnegd",  F3F(2, 0x35, 0x182)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDNEG,~0),        "Z,f,g", 0, v9 },
-{ "fmovnegq",  F3F(2, 0x35, 0x103)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDNEG,~0),        "z,f,g", 0, v9 },
-{ "fmovnegq",  F3F(2, 0x35, 0x183)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDNEG,~0),        "Z,f,g", 0, v9 },
-{ "fmovnegs",  F3F(2, 0x35, 0x101)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDNEG,~0),        "z,f,g", 0, v9 },
-{ "fmovnegs",  F3F(2, 0x35, 0x181)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDNEG,~0),        "Z,f,g", 0, v9 },
-{ "fmovneq",   F3F(2, 0x35, 0x103)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDNE,~0), "z,f,g", 0, v9 },
-{ "fmovneq",   F3F(2, 0x35, 0x083)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDNE,~0),        "6,f,g", 0, v9 },
-{ "fmovneq",   F3F(2, 0x35, 0x183)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDNE,~0), "Z,f,g", 0, v9 },
-{ "fmovneq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDNE,~0),        "7,f,g", 0, v9 },
-{ "fmovneq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDNE,~0),        "8,f,g", 0, v9 },
-{ "fmovneq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDNE,~0),        "9,f,g", 0, v9 },
-{ "fmovnes",   F3F(2, 0x35, 0x101)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDNE,~0), "z,f,g", 0, v9 },
-{ "fmovnes",   F3F(2, 0x35, 0x081)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDNE,~0),        "6,f,g", 0, v9 },
-{ "fmovnes",   F3F(2, 0x35, 0x181)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDNE,~0), "Z,f,g", 0, v9 },
-{ "fmovnes",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDNE,~0),        "7,f,g", 0, v9 },
-{ "fmovnes",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDNE,~0),        "8,f,g", 0, v9 },
-{ "fmovnes",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDNE,~0),        "9,f,g", 0, v9 },
-{ "fmovnq",    F3F(2, 0x35, 0x103)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDN,~0),   "z,f,g", 0, v9 },
-{ "fmovnq",    F3F(2, 0x35, 0x083)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDN,~0),  "6,f,g", 0, v9 },
-{ "fmovnq",    F3F(2, 0x35, 0x183)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDN,~0),   "Z,f,g", 0, v9 },
-{ "fmovnq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDN,~0),  "7,f,g", 0, v9 },
-{ "fmovnq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDN,~0),  "8,f,g", 0, v9 },
-{ "fmovnq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDN,~0),  "9,f,g", 0, v9 },
-{ "fmovns",    F3F(2, 0x35, 0x101)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDN,~0),   "z,f,g", 0, v9 },
-{ "fmovns",    F3F(2, 0x35, 0x081)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDN,~0),  "6,f,g", 0, v9 },
-{ "fmovns",    F3F(2, 0x35, 0x181)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDN,~0),   "Z,f,g", 0, v9 },
-{ "fmovns",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDN,~0),  "7,f,g", 0, v9 },
-{ "fmovns",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDN,~0),  "8,f,g", 0, v9 },
-{ "fmovns",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDN,~0),  "9,f,g", 0, v9 },
-{ "fmovnzd",   F3F(2, 0x35, 0x102)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDNZ,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovnzd",   F3F(2, 0x35, 0x082)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDNZ,~0),        "6,f,g", F_ALIAS, v9 },
-{ "fmovnzd",   F3F(2, 0x35, 0x182)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDNZ,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovnzd",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDNZ,~0),        "7,f,g", F_ALIAS, v9 },
-{ "fmovnzd",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDNZ,~0),        "8,f,g", F_ALIAS, v9 },
-{ "fmovnzd",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDNZ,~0),        "9,f,g", F_ALIAS, v9 },
-{ "fmovnzq",   F3F(2, 0x35, 0x103)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDNZ,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovnzq",   F3F(2, 0x35, 0x083)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDNZ,~0),        "6,f,g", F_ALIAS, v9 },
-{ "fmovnzq",   F3F(2, 0x35, 0x183)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDNZ,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovnzq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDNZ,~0),        "7,f,g", F_ALIAS, v9 },
-{ "fmovnzq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDNZ,~0),        "8,f,g", F_ALIAS, v9 },
-{ "fmovnzq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDNZ,~0),        "9,f,g", F_ALIAS, v9 },
-{ "fmovnzs",   F3F(2, 0x35, 0x101)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDNZ,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovnzs",   F3F(2, 0x35, 0x081)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDNZ,~0),        "6,f,g", F_ALIAS, v9 },
-{ "fmovnzs",   F3F(2, 0x35, 0x181)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDNZ,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovnzs",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDNZ,~0),        "7,f,g", F_ALIAS, v9 },
-{ "fmovnzs",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDNZ,~0),        "8,f,g", F_ALIAS, v9 },
-{ "fmovnzs",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDNZ,~0),        "9,f,g", F_ALIAS, v9 },
-{ "fmovod",    F3F(2, 0x35, 0x082)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDO,~0),  "6,f,g", 0, v9 },
-{ "fmovod",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDO,~0),  "7,f,g", 0, v9 },
-{ "fmovod",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDO,~0),  "8,f,g", 0, v9 },
-{ "fmovod",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDO,~0),  "9,f,g", 0, v9 },
-{ "fmovoq",    F3F(2, 0x35, 0x083)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDO,~0),  "6,f,g", 0, v9 },
-{ "fmovoq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDO,~0),  "7,f,g", 0, v9 },
-{ "fmovoq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDO,~0),  "8,f,g", 0, v9 },
-{ "fmovoq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDO,~0),  "9,f,g", 0, v9 },
-{ "fmovos",    F3F(2, 0x35, 0x081)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDO,~0),  "6,f,g", 0, v9 },
-{ "fmovos",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDO,~0),  "7,f,g", 0, v9 },
-{ "fmovos",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDO,~0),  "8,f,g", 0, v9 },
-{ "fmovos",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDO,~0),  "9,f,g", 0, v9 },
-{ "fmovposd",  F3F(2, 0x35, 0x102)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDPOS,~0),        "z,f,g", 0, v9 },
-{ "fmovposd",  F3F(2, 0x35, 0x182)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDPOS,~0),        "Z,f,g", 0, v9 },
-{ "fmovposq",  F3F(2, 0x35, 0x103)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDPOS,~0),        "z,f,g", 0, v9 },
-{ "fmovposq",  F3F(2, 0x35, 0x183)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDPOS,~0),        "Z,f,g", 0, v9 },
-{ "fmovposs",  F3F(2, 0x35, 0x101)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDPOS,~0),        "z,f,g", 0, v9 },
-{ "fmovposs",  F3F(2, 0x35, 0x181)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDPOS,~0),        "Z,f,g", 0, v9 },
-{ "fmovud",    F3F(2, 0x35, 0x082)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDU,~0),  "6,f,g", 0, v9 },
-{ "fmovud",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDU,~0),  "7,f,g", 0, v9 },
-{ "fmovud",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDU,~0),  "8,f,g", 0, v9 },
-{ "fmovud",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDU,~0),  "9,f,g", 0, v9 },
-{ "fmovued",   F3F(2, 0x35, 0x082)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUE,~0),        "6,f,g", 0, v9 },
-{ "fmovued",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUE,~0),        "7,f,g", 0, v9 },
-{ "fmovued",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUE,~0),        "8,f,g", 0, v9 },
-{ "fmovued",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUE,~0),        "9,f,g", 0, v9 },
-{ "fmovueq",   F3F(2, 0x35, 0x083)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUE,~0),        "6,f,g", 0, v9 },
-{ "fmovueq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUE,~0),        "7,f,g", 0, v9 },
-{ "fmovueq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUE,~0),        "8,f,g", 0, v9 },
-{ "fmovueq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUE,~0),        "9,f,g", 0, v9 },
-{ "fmovues",   F3F(2, 0x35, 0x081)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUE,~0),        "6,f,g", 0, v9 },
-{ "fmovues",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUE,~0),        "7,f,g", 0, v9 },
-{ "fmovues",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUE,~0),        "8,f,g", 0, v9 },
-{ "fmovues",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUE,~0),        "9,f,g", 0, v9 },
-{ "fmovugd",   F3F(2, 0x35, 0x082)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUG,~0),        "6,f,g", 0, v9 },
-{ "fmovugd",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUG,~0),        "7,f,g", 0, v9 },
-{ "fmovugd",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUG,~0),        "8,f,g", 0, v9 },
-{ "fmovugd",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUG,~0),        "9,f,g", 0, v9 },
-{ "fmovuged",  F3F(2, 0x35, 0x082)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUGE,~0),      "6,f,g", 0, v9 },
-{ "fmovuged",  F3F(2, 0x35, 0x0a2)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUGE,~0),      "7,f,g", 0, v9 },
-{ "fmovuged",  F3F(2, 0x35, 0x0c2)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUGE,~0),      "8,f,g", 0, v9 },
-{ "fmovuged",  F3F(2, 0x35, 0x0e2)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUGE,~0),      "9,f,g", 0, v9 },
-{ "fmovugeq",  F3F(2, 0x35, 0x083)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUGE,~0),      "6,f,g", 0, v9 },
-{ "fmovugeq",  F3F(2, 0x35, 0x0a3)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUGE,~0),      "7,f,g", 0, v9 },
-{ "fmovugeq",  F3F(2, 0x35, 0x0c3)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUGE,~0),      "8,f,g", 0, v9 },
-{ "fmovugeq",  F3F(2, 0x35, 0x0e3)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUGE,~0),      "9,f,g", 0, v9 },
-{ "fmovuges",  F3F(2, 0x35, 0x081)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUGE,~0),      "6,f,g", 0, v9 },
-{ "fmovuges",  F3F(2, 0x35, 0x0a1)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUGE,~0),      "7,f,g", 0, v9 },
-{ "fmovuges",  F3F(2, 0x35, 0x0c1)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUGE,~0),      "8,f,g", 0, v9 },
-{ "fmovuges",  F3F(2, 0x35, 0x0e1)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUGE,~0),      "9,f,g", 0, v9 },
-{ "fmovugq",   F3F(2, 0x35, 0x083)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUG,~0),        "6,f,g", 0, v9 },
-{ "fmovugq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUG,~0),        "7,f,g", 0, v9 },
-{ "fmovugq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUG,~0),        "8,f,g", 0, v9 },
-{ "fmovugq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUG,~0),        "9,f,g", 0, v9 },
-{ "fmovugs",   F3F(2, 0x35, 0x081)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUG,~0),        "6,f,g", 0, v9 },
-{ "fmovugs",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUG,~0),        "7,f,g", 0, v9 },
-{ "fmovugs",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUG,~0),        "8,f,g", 0, v9 },
-{ "fmovugs",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUG,~0),        "9,f,g", 0, v9 },
-{ "fmovuld",   F3F(2, 0x35, 0x082)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUL,~0),        "6,f,g", 0, v9 },
-{ "fmovuld",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUL,~0),        "7,f,g", 0, v9 },
-{ "fmovuld",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUL,~0),        "8,f,g", 0, v9 },
-{ "fmovuld",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUL,~0),        "9,f,g", 0, v9 },
-{ "fmovuled",  F3F(2, 0x35, 0x082)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDULE,~0),      "6,f,g", 0, v9 },
-{ "fmovuled",  F3F(2, 0x35, 0x0a2)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDULE,~0),      "7,f,g", 0, v9 },
-{ "fmovuled",  F3F(2, 0x35, 0x0c2)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDULE,~0),      "8,f,g", 0, v9 },
-{ "fmovuled",  F3F(2, 0x35, 0x0e2)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDULE,~0),      "9,f,g", 0, v9 },
-{ "fmovuleq",  F3F(2, 0x35, 0x083)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDULE,~0),      "6,f,g", 0, v9 },
-{ "fmovuleq",  F3F(2, 0x35, 0x0a3)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDULE,~0),      "7,f,g", 0, v9 },
-{ "fmovuleq",  F3F(2, 0x35, 0x0c3)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDULE,~0),      "8,f,g", 0, v9 },
-{ "fmovuleq",  F3F(2, 0x35, 0x0e3)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDULE,~0),      "9,f,g", 0, v9 },
-{ "fmovules",  F3F(2, 0x35, 0x081)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDULE,~0),      "6,f,g", 0, v9 },
-{ "fmovules",  F3F(2, 0x35, 0x0a1)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDULE,~0),      "7,f,g", 0, v9 },
-{ "fmovules",  F3F(2, 0x35, 0x0c1)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDULE,~0),      "8,f,g", 0, v9 },
-{ "fmovules",  F3F(2, 0x35, 0x0e1)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDULE,~0),      "9,f,g", 0, v9 },
-{ "fmovulq",   F3F(2, 0x35, 0x083)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUL,~0),        "6,f,g", 0, v9 },
-{ "fmovulq",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUL,~0),        "7,f,g", 0, v9 },
-{ "fmovulq",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUL,~0),        "8,f,g", 0, v9 },
-{ "fmovulq",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUL,~0),        "9,f,g", 0, v9 },
-{ "fmovuls",   F3F(2, 0x35, 0x081)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUL,~0),        "6,f,g", 0, v9 },
-{ "fmovuls",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUL,~0),        "7,f,g", 0, v9 },
-{ "fmovuls",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUL,~0),        "8,f,g", 0, v9 },
-{ "fmovuls",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUL,~0),        "9,f,g", 0, v9 },
-{ "fmovuq",    F3F(2, 0x35, 0x083)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDU,~0),  "6,f,g", 0, v9 },
-{ "fmovuq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDU,~0),  "7,f,g", 0, v9 },
-{ "fmovuq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDU,~0),  "8,f,g", 0, v9 },
-{ "fmovuq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDU,~0),  "9,f,g", 0, v9 },
-{ "fmovus",    F3F(2, 0x35, 0x081)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDU,~0),  "6,f,g", 0, v9 },
-{ "fmovus",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDU,~0),  "7,f,g", 0, v9 },
-{ "fmovus",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDU,~0),  "8,f,g", 0, v9 },
-{ "fmovus",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDU,~0),  "9,f,g", 0, v9 },
-{ "fmovvcd",   F3F(2, 0x35, 0x102)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDVC,~0),  "z,f,g", 0, v9 },
-{ "fmovvcd",   F3F(2, 0x35, 0x182)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDVC,~0),  "Z,f,g", 0, v9 },
-{ "fmovvcq",   F3F(2, 0x35, 0x103)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDVC,~0),  "z,f,g", 0, v9 },
-{ "fmovvcq",   F3F(2, 0x35, 0x183)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDVC,~0),  "Z,f,g", 0, v9 },
-{ "fmovvcs",   F3F(2, 0x35, 0x101)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDVC,~0),  "z,f,g", 0, v9 },
-{ "fmovvcs",   F3F(2, 0x35, 0x181)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDVC,~0),  "Z,f,g", 0, v9 },
-{ "fmovvsd",   F3F(2, 0x35, 0x102)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDVS,~0),  "z,f,g", 0, v9 },
-{ "fmovvsd",   F3F(2, 0x35, 0x182)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDVS,~0),  "Z,f,g", 0, v9 },
-{ "fmovvsq",   F3F(2, 0x35, 0x103)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDVS,~0),  "z,f,g", 0, v9 },
-{ "fmovvsq",   F3F(2, 0x35, 0x183)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDVS,~0),  "Z,f,g", 0, v9 },
-{ "fmovvss",   F3F(2, 0x35, 0x101)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDVS,~0),  "z,f,g", 0, v9 },
-{ "fmovvss",   F3F(2, 0x35, 0x181)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDVS,~0),  "Z,f,g", 0, v9 },
-{ "fmovzd",    F3F(2, 0x35, 0x102)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x102)|MCOND(~CONDZ,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovzd",    F3F(2, 0x35, 0x082)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDZ,~0),  "6,f,g", F_ALIAS, v9 },
-{ "fmovzd",    F3F(2, 0x35, 0x182)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x182)|MCOND(~CONDZ,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovzd",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDZ,~0),  "7,f,g", F_ALIAS, v9 },
-{ "fmovzd",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDZ,~0),  "8,f,g", F_ALIAS, v9 },
-{ "fmovzd",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDZ,~0),  "9,f,g", F_ALIAS, v9 },
-{ "fmovzq",    F3F(2, 0x35, 0x103)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x103)|MCOND(~CONDZ,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovzq",    F3F(2, 0x35, 0x083)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDZ,~0),  "6,f,g", F_ALIAS, v9 },
-{ "fmovzq",    F3F(2, 0x35, 0x183)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x183)|MCOND(~CONDZ,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovzq",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDZ,~0),  "7,f,g", F_ALIAS, v9 },
-{ "fmovzq",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDZ,~0),  "8,f,g", F_ALIAS, v9 },
-{ "fmovzq",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDZ,~0),  "9,f,g", F_ALIAS, v9 },
-{ "fmovzs",    F3F(2, 0x35, 0x101)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x101)|MCOND(~CONDZ,~0),  "z,f,g", F_ALIAS, v9 },
-{ "fmovzs",    F3F(2, 0x35, 0x081)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDZ,~0),  "6,f,g", F_ALIAS, v9 },
-{ "fmovzs",    F3F(2, 0x35, 0x181)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x181)|MCOND(~CONDZ,~0),  "Z,f,g", F_ALIAS, v9 },
-{ "fmovzs",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDZ,~0),  "7,f,g", F_ALIAS, v9 },
-{ "fmovzs",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDZ,~0),  "8,f,g", F_ALIAS, v9 },
-{ "fmovzs",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDZ,~0),  "9,f,g", F_ALIAS, v9 },
+{ "movz",      F3(2, 0x2c, 0)|MCOND(CONDZ,1)|ICC, F3(~2, ~0x2c, ~0)|MCOND(~CONDZ,~1)|XCC|(1<<12), "z,2,d", F_ALIAS, v9 },
+{ "movz",      F3(2, 0x2c, 1)|MCOND(CONDZ,1)|ICC, F3(~2, ~0x2c, ~1)|MCOND(~CONDZ,~1)|XCC|(1<<12), "z,I,d", F_ALIAS, v9 },
+{ "movz",      F3(2, 0x2c, 0)|MCOND(CONDZ,1)|XCC, F3(~2, ~0x2c, ~0)|MCOND(~CONDZ,~1)|(1<<12), "Z,2,d", F_ALIAS, v9 },
+{ "movz",      F3(2, 0x2c, 1)|MCOND(CONDZ,1)|XCC, F3(~2, ~0x2c, ~1)|MCOND(~CONDZ,~1)|(1<<12), "Z,I,d", F_ALIAS, v9 },
+
+{ "fmovda",    F3F(2, 0x35, 0x102)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDA,~0),   "z,f,g", 0, v9 },
+{ "fmovda",    F3F(2, 0x35, 0x082)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDA,~0),  "6,f,g", 0, v9 },
+{ "fmovda",    F3F(2, 0x35, 0x182)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDA,~0),   "Z,f,g", 0, v9 },
+{ "fmovda",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDA,~0),  "7,f,g", 0, v9 },
+{ "fmovda",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDA,~0),  "8,f,g", 0, v9 },
+{ "fmovda",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDA,~0),  "9,f,g", 0, v9 },
+{ "fmovqa",    F3F(2, 0x35, 0x103)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDA,~0),   "z,f,g", 0, v9 },
+{ "fmovqa",    F3F(2, 0x35, 0x083)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDA,~0),  "6,f,g", 0, v9 },
+{ "fmovqa",    F3F(2, 0x35, 0x183)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDA,~0),   "Z,f,g", 0, v9 },
+{ "fmovqa",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDA,~0),  "7,f,g", 0, v9 },
+{ "fmovqa",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDA,~0),  "8,f,g", 0, v9 },
+{ "fmovqa",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDA,~0),  "9,f,g", 0, v9 },
+{ "fmovsa",    F3F(2, 0x35, 0x101)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDA,~0),   "z,f,g", 0, v9 },
+{ "fmovsa",    F3F(2, 0x35, 0x081)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDA,~0),  "6,f,g", 0, v9 },
+{ "fmovsa",    F3F(2, 0x35, 0x181)|MCOND(CONDA,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDA,~0),   "Z,f,g", 0, v9 },
+{ "fmovsa",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDA,~0),  "7,f,g", 0, v9 },
+{ "fmovsa",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDA,~0),  "8,f,g", 0, v9 },
+{ "fmovsa",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDA,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDA,~0),  "9,f,g", 0, v9 },
+{ "fmovdcc",   F3F(2, 0x35, 0x102)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDCC,~0),  "z,f,g", 0, v9 },
+{ "fmovdcc",   F3F(2, 0x35, 0x182)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDCC,~0),  "Z,f,g", 0, v9 },
+{ "fmovqcc",   F3F(2, 0x35, 0x103)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDCC,~0),  "z,f,g", 0, v9 },
+{ "fmovqcc",   F3F(2, 0x35, 0x183)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDCC,~0),  "Z,f,g", 0, v9 },
+{ "fmovscc",   F3F(2, 0x35, 0x101)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDCC,~0),  "z,f,g", 0, v9 },
+{ "fmovscc",   F3F(2, 0x35, 0x181)|MCOND(CONDCC,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDCC,~0),  "Z,f,g", 0, v9 },
+{ "fmovdcs",   F3F(2, 0x35, 0x102)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDCS,~0),  "z,f,g", 0, v9 },
+{ "fmovdcs",   F3F(2, 0x35, 0x182)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDCS,~0),  "Z,f,g", 0, v9 },
+{ "fmovqcs",   F3F(2, 0x35, 0x103)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDCS,~0),  "z,f,g", 0, v9 },
+{ "fmovqcs",   F3F(2, 0x35, 0x183)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDCS,~0),  "Z,f,g", 0, v9 },
+{ "fmovscs",   F3F(2, 0x35, 0x101)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDCS,~0),  "z,f,g", 0, v9 },
+{ "fmovscs",   F3F(2, 0x35, 0x181)|MCOND(CONDCS,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDCS,~0),  "Z,f,g", 0, v9 },
+{ "fmovde",    F3F(2, 0x35, 0x102)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDE,~0),   "z,f,g", 0, v9 },
+{ "fmovde",    F3F(2, 0x35, 0x082)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDE,~0),  "6,f,g", 0, v9 },
+{ "fmovde",    F3F(2, 0x35, 0x182)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDE,~0),   "Z,f,g", 0, v9 },
+{ "fmovde",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDE,~0),  "7,f,g", 0, v9 },
+{ "fmovde",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDE,~0),  "8,f,g", 0, v9 },
+{ "fmovde",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDE,~0),  "9,f,g", 0, v9 },
+{ "fmovqe",    F3F(2, 0x35, 0x103)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDE,~0),   "z,f,g", 0, v9 },
+{ "fmovqe",    F3F(2, 0x35, 0x083)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDE,~0),  "6,f,g", 0, v9 },
+{ "fmovqe",    F3F(2, 0x35, 0x183)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDE,~0),   "Z,f,g", 0, v9 },
+{ "fmovqe",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDE,~0),  "7,f,g", 0, v9 },
+{ "fmovqe",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDE,~0),  "8,f,g", 0, v9 },
+{ "fmovqe",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDE,~0),  "9,f,g", 0, v9 },
+{ "fmovse",    F3F(2, 0x35, 0x101)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDE,~0),   "z,f,g", 0, v9 },
+{ "fmovse",    F3F(2, 0x35, 0x081)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDE,~0),  "6,f,g", 0, v9 },
+{ "fmovse",    F3F(2, 0x35, 0x181)|MCOND(CONDE,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDE,~0),   "Z,f,g", 0, v9 },
+{ "fmovse",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDE,~0),  "7,f,g", 0, v9 },
+{ "fmovse",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDE,~0),  "8,f,g", 0, v9 },
+{ "fmovse",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDE,~0),  "9,f,g", 0, v9 },
+{ "fmovdg",    F3F(2, 0x35, 0x102)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDG,~0),   "z,f,g", 0, v9 },
+{ "fmovdg",    F3F(2, 0x35, 0x082)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDG,~0),  "6,f,g", 0, v9 },
+{ "fmovdg",    F3F(2, 0x35, 0x182)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDG,~0),   "Z,f,g", 0, v9 },
+{ "fmovdg",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDG,~0),  "7,f,g", 0, v9 },
+{ "fmovdg",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDG,~0),  "8,f,g", 0, v9 },
+{ "fmovdg",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDG,~0),  "9,f,g", 0, v9 },
+{ "fmovqg",    F3F(2, 0x35, 0x103)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDG,~0),   "z,f,g", 0, v9 },
+{ "fmovqg",    F3F(2, 0x35, 0x083)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDG,~0),  "6,f,g", 0, v9 },
+{ "fmovqg",    F3F(2, 0x35, 0x183)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDG,~0),   "Z,f,g", 0, v9 },
+{ "fmovqg",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDG,~0),  "7,f,g", 0, v9 },
+{ "fmovqg",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDG,~0),  "8,f,g", 0, v9 },
+{ "fmovqg",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDG,~0),  "9,f,g", 0, v9 },
+{ "fmovsg",    F3F(2, 0x35, 0x101)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDG,~0),   "z,f,g", 0, v9 },
+{ "fmovsg",    F3F(2, 0x35, 0x081)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDG,~0),  "6,f,g", 0, v9 },
+{ "fmovsg",    F3F(2, 0x35, 0x181)|MCOND(CONDG,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDG,~0),   "Z,f,g", 0, v9 },
+{ "fmovsg",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDG,~0),  "7,f,g", 0, v9 },
+{ "fmovsg",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDG,~0),  "8,f,g", 0, v9 },
+{ "fmovsg",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDG,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDG,~0),  "9,f,g", 0, v9 },
+{ "fmovdge",   F3F(2, 0x35, 0x102)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDGE,~0),  "z,f,g", 0, v9 },
+{ "fmovdge",   F3F(2, 0x35, 0x082)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDGE,~0),        "6,f,g", 0, v9 },
+{ "fmovdge",   F3F(2, 0x35, 0x182)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDGE,~0),  "Z,f,g", 0, v9 },
+{ "fmovdge",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDGE,~0),        "7,f,g", 0, v9 },
+{ "fmovdge",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDGE,~0),        "8,f,g", 0, v9 },
+{ "fmovdge",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDGE,~0),        "9,f,g", 0, v9 },
+{ "fmovqge",   F3F(2, 0x35, 0x103)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDGE,~0),  "z,f,g", 0, v9 },
+{ "fmovqge",   F3F(2, 0x35, 0x083)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDGE,~0),        "6,f,g", 0, v9 },
+{ "fmovqge",   F3F(2, 0x35, 0x183)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDGE,~0),  "Z,f,g", 0, v9 },
+{ "fmovqge",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDGE,~0),        "7,f,g", 0, v9 },
+{ "fmovqge",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDGE,~0),        "8,f,g", 0, v9 },
+{ "fmovqge",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDGE,~0),        "9,f,g", 0, v9 },
+{ "fmovsge",   F3F(2, 0x35, 0x101)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDGE,~0),  "z,f,g", 0, v9 },
+{ "fmovsge",   F3F(2, 0x35, 0x081)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDGE,~0),        "6,f,g", 0, v9 },
+{ "fmovsge",   F3F(2, 0x35, 0x181)|MCOND(CONDGE,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDGE,~0),  "Z,f,g", 0, v9 },
+{ "fmovsge",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDGE,~0),        "7,f,g", 0, v9 },
+{ "fmovsge",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDGE,~0),        "8,f,g", 0, v9 },
+{ "fmovsge",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDGE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDGE,~0),        "9,f,g", 0, v9 },
+{ "fmovdgeu",  F3F(2, 0x35, 0x102)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDGEU,~0),        "z,f,g", F_ALIAS, v9 },
+{ "fmovdgeu",  F3F(2, 0x35, 0x182)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDGEU,~0),        "Z,f,g", F_ALIAS, v9 },
+{ "fmovqgeu",  F3F(2, 0x35, 0x103)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDGEU,~0),        "z,f,g", F_ALIAS, v9 },
+{ "fmovqgeu",  F3F(2, 0x35, 0x183)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDGEU,~0),        "Z,f,g", F_ALIAS, v9 },
+{ "fmovsgeu",  F3F(2, 0x35, 0x101)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDGEU,~0),        "z,f,g", F_ALIAS, v9 },
+{ "fmovsgeu",  F3F(2, 0x35, 0x181)|MCOND(CONDGEU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDGEU,~0),        "Z,f,g", F_ALIAS, v9 },
+{ "fmovdgu",   F3F(2, 0x35, 0x102)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDGU,~0),  "z,f,g", 0, v9 },
+{ "fmovdgu",   F3F(2, 0x35, 0x182)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDGU,~0),  "Z,f,g", 0, v9 },
+{ "fmovqgu",   F3F(2, 0x35, 0x103)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDGU,~0),  "z,f,g", 0, v9 },
+{ "fmovqgu",   F3F(2, 0x35, 0x183)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDGU,~0),  "Z,f,g", 0, v9 },
+{ "fmovsgu",   F3F(2, 0x35, 0x101)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDGU,~0),  "z,f,g", 0, v9 },
+{ "fmovsgu",   F3F(2, 0x35, 0x181)|MCOND(CONDGU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDGU,~0),  "Z,f,g", 0, v9 },
+{ "fmovdl",    F3F(2, 0x35, 0x102)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDL,~0),   "z,f,g", 0, v9 },
+{ "fmovdl",    F3F(2, 0x35, 0x082)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDL,~0),  "6,f,g", 0, v9 },
+{ "fmovdl",    F3F(2, 0x35, 0x182)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDL,~0),   "Z,f,g", 0, v9 },
+{ "fmovdl",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDL,~0),  "7,f,g", 0, v9 },
+{ "fmovdl",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDL,~0),  "8,f,g", 0, v9 },
+{ "fmovdl",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDL,~0),  "9,f,g", 0, v9 },
+{ "fmovql",    F3F(2, 0x35, 0x103)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDL,~0),   "z,f,g", 0, v9 },
+{ "fmovql",    F3F(2, 0x35, 0x083)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDL,~0),  "6,f,g", 0, v9 },
+{ "fmovql",    F3F(2, 0x35, 0x183)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDL,~0),   "Z,f,g", 0, v9 },
+{ "fmovql",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDL,~0),  "7,f,g", 0, v9 },
+{ "fmovql",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDL,~0),  "8,f,g", 0, v9 },
+{ "fmovql",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDL,~0),  "9,f,g", 0, v9 },
+{ "fmovsl",    F3F(2, 0x35, 0x101)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDL,~0),   "z,f,g", 0, v9 },
+{ "fmovsl",    F3F(2, 0x35, 0x081)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDL,~0),  "6,f,g", 0, v9 },
+{ "fmovsl",    F3F(2, 0x35, 0x181)|MCOND(CONDL,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDL,~0),   "Z,f,g", 0, v9 },
+{ "fmovsl",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDL,~0),  "7,f,g", 0, v9 },
+{ "fmovsl",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDL,~0),  "8,f,g", 0, v9 },
+{ "fmovsl",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDL,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDL,~0),  "9,f,g", 0, v9 },
+{ "fmovdle",   F3F(2, 0x35, 0x102)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDLE,~0),  "z,f,g", 0, v9 },
+{ "fmovdle",   F3F(2, 0x35, 0x082)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDLE,~0),        "6,f,g", 0, v9 },
+{ "fmovdle",   F3F(2, 0x35, 0x182)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDLE,~0),  "Z,f,g", 0, v9 },
+{ "fmovdle",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDLE,~0),        "7,f,g", 0, v9 },
+{ "fmovdle",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDLE,~0),        "8,f,g", 0, v9 },
+{ "fmovdle",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDLE,~0),        "9,f,g", 0, v9 },
+{ "fmovqle",   F3F(2, 0x35, 0x103)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDLE,~0),  "z,f,g", 0, v9 },
+{ "fmovqle",   F3F(2, 0x35, 0x083)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDLE,~0),        "6,f,g", 0, v9 },
+{ "fmovqle",   F3F(2, 0x35, 0x183)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDLE,~0),  "Z,f,g", 0, v9 },
+{ "fmovqle",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDLE,~0),        "7,f,g", 0, v9 },
+{ "fmovqle",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDLE,~0),        "8,f,g", 0, v9 },
+{ "fmovqle",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDLE,~0),        "9,f,g", 0, v9 },
+{ "fmovsle",   F3F(2, 0x35, 0x101)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDLE,~0),  "z,f,g", 0, v9 },
+{ "fmovsle",   F3F(2, 0x35, 0x081)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDLE,~0),        "6,f,g", 0, v9 },
+{ "fmovsle",   F3F(2, 0x35, 0x181)|MCOND(CONDLE,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDLE,~0),  "Z,f,g", 0, v9 },
+{ "fmovsle",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDLE,~0),        "7,f,g", 0, v9 },
+{ "fmovsle",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDLE,~0),        "8,f,g", 0, v9 },
+{ "fmovsle",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDLE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDLE,~0),        "9,f,g", 0, v9 },
+{ "fmovdleu",  F3F(2, 0x35, 0x102)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDLEU,~0),        "z,f,g", 0, v9 },
+{ "fmovdleu",  F3F(2, 0x35, 0x182)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDLEU,~0),        "Z,f,g", 0, v9 },
+{ "fmovqleu",  F3F(2, 0x35, 0x103)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDLEU,~0),        "z,f,g", 0, v9 },
+{ "fmovqleu",  F3F(2, 0x35, 0x183)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDLEU,~0),        "Z,f,g", 0, v9 },
+{ "fmovsleu",  F3F(2, 0x35, 0x101)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDLEU,~0),        "z,f,g", 0, v9 },
+{ "fmovsleu",  F3F(2, 0x35, 0x181)|MCOND(CONDLEU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDLEU,~0),        "Z,f,g", 0, v9 },
+{ "fmovdlg",   F3F(2, 0x35, 0x082)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDLG,~0),        "6,f,g", 0, v9 },
+{ "fmovdlg",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDLG,~0),        "7,f,g", 0, v9 },
+{ "fmovdlg",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDLG,~0),        "8,f,g", 0, v9 },
+{ "fmovdlg",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDLG,~0),        "9,f,g", 0, v9 },
+{ "fmovqlg",   F3F(2, 0x35, 0x083)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDLG,~0),        "6,f,g", 0, v9 },
+{ "fmovqlg",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDLG,~0),        "7,f,g", 0, v9 },
+{ "fmovqlg",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDLG,~0),        "8,f,g", 0, v9 },
+{ "fmovqlg",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDLG,~0),        "9,f,g", 0, v9 },
+{ "fmovslg",   F3F(2, 0x35, 0x081)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDLG,~0),        "6,f,g", 0, v9 },
+{ "fmovslg",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDLG,~0),        "7,f,g", 0, v9 },
+{ "fmovslg",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDLG,~0),        "8,f,g", 0, v9 },
+{ "fmovslg",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDLG,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDLG,~0),        "9,f,g", 0, v9 },
+{ "fmovdlu",   F3F(2, 0x35, 0x102)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDLU,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovdlu",   F3F(2, 0x35, 0x182)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDLU,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovqlu",   F3F(2, 0x35, 0x103)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDLU,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovqlu",   F3F(2, 0x35, 0x183)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDLU,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovslu",   F3F(2, 0x35, 0x101)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDLU,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovslu",   F3F(2, 0x35, 0x181)|MCOND(CONDLU,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDLU,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovdn",    F3F(2, 0x35, 0x102)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x102)|MCOND(~CONDN,~0),   "z,f,g", 0, v9 },
+{ "fmovdn",    F3F(2, 0x35, 0x082)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDN,~0),  "6,f,g", 0, v9 },
+{ "fmovdn",    F3F(2, 0x35, 0x182)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x182)|MCOND(~CONDN,~0),   "Z,f,g", 0, v9 },
+{ "fmovdn",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDN,~0),  "7,f,g", 0, v9 },
+{ "fmovdn",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDN,~0),  "8,f,g", 0, v9 },
+{ "fmovdn",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDN,~0),  "9,f,g", 0, v9 },
+{ "fmovqn",    F3F(2, 0x35, 0x103)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDN,~0),   "z,f,g", 0, v9 },
+{ "fmovqn",    F3F(2, 0x35, 0x083)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDN,~0),  "6,f,g", 0, v9 },
+{ "fmovqn",    F3F(2, 0x35, 0x183)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDN,~0),   "Z,f,g", 0, v9 },
+{ "fmovqn",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDN,~0),  "7,f,g", 0, v9 },
+{ "fmovqn",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDN,~0),  "8,f,g", 0, v9 },
+{ "fmovqn",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDN,~0),  "9,f,g", 0, v9 },
+{ "fmovsn",    F3F(2, 0x35, 0x101)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDN,~0),   "z,f,g", 0, v9 },
+{ "fmovsn",    F3F(2, 0x35, 0x081)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDN,~0),  "6,f,g", 0, v9 },
+{ "fmovsn",    F3F(2, 0x35, 0x181)|MCOND(CONDN,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDN,~0),   "Z,f,g", 0, v9 },
+{ "fmovsn",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDN,~0),  "7,f,g", 0, v9 },
+{ "fmovsn",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDN,~0),  "8,f,g", 0, v9 },
+{ "fmovsn",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDN,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDN,~0),  "9,f,g", 0, v9 },
+{ "fmovdne",   F3F(2, 0x35, 0x102)|MCOND(CONDNE,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDNE,~0),  "z,f,g", 0, v9 },
+{ "fmovdne",   F3F(2, 0x35, 0x082)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDNE,~0),        "6,f,g", 0, v9 },
+{ "fmovdne",   F3F(2, 0x35, 0x182)|MCOND(CONDNE,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDNE,~0),  "Z,f,g", 0, v9 },
+{ "fmovdne",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDNE,~0),        "7,f,g", 0, v9 },
+{ "fmovdne",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDNE,~0),        "8,f,g", 0, v9 },
+{ "fmovdne",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDNE,~0),        "9,f,g", 0, v9 },
+{ "fmovqne",   F3F(2, 0x35, 0x103)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x103)|MCOND(~CONDNE,~0), "z,f,g", 0, v9 },
+{ "fmovqne",   F3F(2, 0x35, 0x083)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDNE,~0),        "6,f,g", 0, v9 },
+{ "fmovqne",   F3F(2, 0x35, 0x183)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x183)|MCOND(~CONDNE,~0), "Z,f,g", 0, v9 },
+{ "fmovqne",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDNE,~0),        "7,f,g", 0, v9 },
+{ "fmovqne",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDNE,~0),        "8,f,g", 0, v9 },
+{ "fmovqne",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDNE,~0),        "9,f,g", 0, v9 },
+{ "fmovsne",   F3F(2, 0x35, 0x101)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x101)|MCOND(~CONDNE,~0), "z,f,g", 0, v9 },
+{ "fmovsne",   F3F(2, 0x35, 0x081)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDNE,~0),        "6,f,g", 0, v9 },
+{ "fmovsne",   F3F(2, 0x35, 0x181)|MCOND(CONDNE,0),  F3F(~2, ~0x35, ~0x181)|MCOND(~CONDNE,~0), "Z,f,g", 0, v9 },
+{ "fmovsne",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDNE,~0),        "7,f,g", 0, v9 },
+{ "fmovsne",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDNE,~0),        "8,f,g", 0, v9 },
+{ "fmovsne",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDNE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDNE,~0),        "9,f,g", 0, v9 },
+{ "fmovdneg",  F3F(2, 0x35, 0x102)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDNEG,~0),        "z,f,g", 0, v9 },
+{ "fmovdneg",  F3F(2, 0x35, 0x182)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDNEG,~0),        "Z,f,g", 0, v9 },
+{ "fmovqneg",  F3F(2, 0x35, 0x103)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDNEG,~0),        "z,f,g", 0, v9 },
+{ "fmovqneg",  F3F(2, 0x35, 0x183)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDNEG,~0),        "Z,f,g", 0, v9 },
+{ "fmovsneg",  F3F(2, 0x35, 0x101)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDNEG,~0),        "z,f,g", 0, v9 },
+{ "fmovsneg",  F3F(2, 0x35, 0x181)|MCOND(CONDNEG,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDNEG,~0),        "Z,f,g", 0, v9 },
+{ "fmovdnz",   F3F(2, 0x35, 0x102)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDNZ,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovdnz",   F3F(2, 0x35, 0x082)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDNZ,~0),        "6,f,g", F_ALIAS, v9 },
+{ "fmovdnz",   F3F(2, 0x35, 0x182)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDNZ,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovdnz",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDNZ,~0),        "7,f,g", F_ALIAS, v9 },
+{ "fmovdnz",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDNZ,~0),        "8,f,g", F_ALIAS, v9 },
+{ "fmovdnz",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDNZ,~0),        "9,f,g", F_ALIAS, v9 },
+{ "fmovqnz",   F3F(2, 0x35, 0x103)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDNZ,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovqnz",   F3F(2, 0x35, 0x083)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDNZ,~0),        "6,f,g", F_ALIAS, v9 },
+{ "fmovqnz",   F3F(2, 0x35, 0x183)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDNZ,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovqnz",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDNZ,~0),        "7,f,g", F_ALIAS, v9 },
+{ "fmovqnz",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDNZ,~0),        "8,f,g", F_ALIAS, v9 },
+{ "fmovqnz",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDNZ,~0),        "9,f,g", F_ALIAS, v9 },
+{ "fmovsnz",   F3F(2, 0x35, 0x101)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDNZ,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovsnz",   F3F(2, 0x35, 0x081)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDNZ,~0),        "6,f,g", F_ALIAS, v9 },
+{ "fmovsnz",   F3F(2, 0x35, 0x181)|MCOND(CONDNZ,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDNZ,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovsnz",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDNZ,~0),        "7,f,g", F_ALIAS, v9 },
+{ "fmovsnz",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDNZ,~0),        "8,f,g", F_ALIAS, v9 },
+{ "fmovsnz",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDNZ,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDNZ,~0),        "9,f,g", F_ALIAS, v9 },
+{ "fmovdo",    F3F(2, 0x35, 0x082)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDO,~0),  "6,f,g", 0, v9 },
+{ "fmovdo",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDO,~0),  "7,f,g", 0, v9 },
+{ "fmovdo",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDO,~0),  "8,f,g", 0, v9 },
+{ "fmovdo",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDO,~0),  "9,f,g", 0, v9 },
+{ "fmovqo",    F3F(2, 0x35, 0x083)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDO,~0),  "6,f,g", 0, v9 },
+{ "fmovqo",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDO,~0),  "7,f,g", 0, v9 },
+{ "fmovqo",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDO,~0),  "8,f,g", 0, v9 },
+{ "fmovqo",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDO,~0),  "9,f,g", 0, v9 },
+{ "fmovso",    F3F(2, 0x35, 0x081)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDO,~0),  "6,f,g", 0, v9 },
+{ "fmovso",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDO,~0),  "7,f,g", 0, v9 },
+{ "fmovso",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDO,~0),  "8,f,g", 0, v9 },
+{ "fmovso",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDO,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDO,~0),  "9,f,g", 0, v9 },
+{ "fmovdpos",  F3F(2, 0x35, 0x102)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDPOS,~0),        "z,f,g", 0, v9 },
+{ "fmovdpos",  F3F(2, 0x35, 0x182)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDPOS,~0),        "Z,f,g", 0, v9 },
+{ "fmovqpos",  F3F(2, 0x35, 0x103)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDPOS,~0),        "z,f,g", 0, v9 },
+{ "fmovqpos",  F3F(2, 0x35, 0x183)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDPOS,~0),        "Z,f,g", 0, v9 },
+{ "fmovspos",  F3F(2, 0x35, 0x101)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDPOS,~0),        "z,f,g", 0, v9 },
+{ "fmovspos",  F3F(2, 0x35, 0x181)|MCOND(CONDPOS,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDPOS,~0),        "Z,f,g", 0, v9 },
+{ "fmovdu",    F3F(2, 0x35, 0x082)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDU,~0),  "6,f,g", 0, v9 },
+{ "fmovdu",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDU,~0),  "7,f,g", 0, v9 },
+{ "fmovdu",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDU,~0),  "8,f,g", 0, v9 },
+{ "fmovdu",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDU,~0),  "9,f,g", 0, v9 },
+{ "fmovqu",    F3F(2, 0x35, 0x083)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDU,~0),  "6,f,g", 0, v9 },
+{ "fmovqu",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDU,~0),  "7,f,g", 0, v9 },
+{ "fmovqu",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDU,~0),  "8,f,g", 0, v9 },
+{ "fmovqu",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDU,~0),  "9,f,g", 0, v9 },
+{ "fmovsu",    F3F(2, 0x35, 0x081)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDU,~0),  "6,f,g", 0, v9 },
+{ "fmovsu",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDU,~0),  "7,f,g", 0, v9 },
+{ "fmovsu",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDU,~0),  "8,f,g", 0, v9 },
+{ "fmovsu",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDU,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDU,~0),  "9,f,g", 0, v9 },
+{ "fmovdue",   F3F(2, 0x35, 0x082)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUE,~0),        "6,f,g", 0, v9 },
+{ "fmovdue",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUE,~0),        "7,f,g", 0, v9 },
+{ "fmovdue",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUE,~0),        "8,f,g", 0, v9 },
+{ "fmovdue",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUE,~0),        "9,f,g", 0, v9 },
+{ "fmovque",   F3F(2, 0x35, 0x083)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUE,~0),        "6,f,g", 0, v9 },
+{ "fmovque",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUE,~0),        "7,f,g", 0, v9 },
+{ "fmovque",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUE,~0),        "8,f,g", 0, v9 },
+{ "fmovque",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUE,~0),        "9,f,g", 0, v9 },
+{ "fmovsue",   F3F(2, 0x35, 0x081)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUE,~0),        "6,f,g", 0, v9 },
+{ "fmovsue",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUE,~0),        "7,f,g", 0, v9 },
+{ "fmovsue",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUE,~0),        "8,f,g", 0, v9 },
+{ "fmovsue",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDUE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUE,~0),        "9,f,g", 0, v9 },
+{ "fmovdug",   F3F(2, 0x35, 0x082)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUG,~0),        "6,f,g", 0, v9 },
+{ "fmovdug",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUG,~0),        "7,f,g", 0, v9 },
+{ "fmovdug",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUG,~0),        "8,f,g", 0, v9 },
+{ "fmovdug",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUG,~0),        "9,f,g", 0, v9 },
+{ "fmovqug",   F3F(2, 0x35, 0x083)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUG,~0),        "6,f,g", 0, v9 },
+{ "fmovqug",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUG,~0),        "7,f,g", 0, v9 },
+{ "fmovqug",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUG,~0),        "8,f,g", 0, v9 },
+{ "fmovqug",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUG,~0),        "9,f,g", 0, v9 },
+{ "fmovsug",   F3F(2, 0x35, 0x081)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUG,~0),        "6,f,g", 0, v9 },
+{ "fmovsug",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUG,~0),        "7,f,g", 0, v9 },
+{ "fmovsug",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUG,~0),        "8,f,g", 0, v9 },
+{ "fmovsug",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDUG,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUG,~0),        "9,f,g", 0, v9 },
+{ "fmovduge",  F3F(2, 0x35, 0x082)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUGE,~0),      "6,f,g", 0, v9 },
+{ "fmovduge",  F3F(2, 0x35, 0x0a2)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUGE,~0),      "7,f,g", 0, v9 },
+{ "fmovduge",  F3F(2, 0x35, 0x0c2)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUGE,~0),      "8,f,g", 0, v9 },
+{ "fmovduge",  F3F(2, 0x35, 0x0e2)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUGE,~0),      "9,f,g", 0, v9 },
+{ "fmovquge",  F3F(2, 0x35, 0x083)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUGE,~0),      "6,f,g", 0, v9 },
+{ "fmovquge",  F3F(2, 0x35, 0x0a3)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUGE,~0),      "7,f,g", 0, v9 },
+{ "fmovquge",  F3F(2, 0x35, 0x0c3)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUGE,~0),      "8,f,g", 0, v9 },
+{ "fmovquge",  F3F(2, 0x35, 0x0e3)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUGE,~0),      "9,f,g", 0, v9 },
+{ "fmovsuge",  F3F(2, 0x35, 0x081)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUGE,~0),      "6,f,g", 0, v9 },
+{ "fmovsuge",  F3F(2, 0x35, 0x0a1)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUGE,~0),      "7,f,g", 0, v9 },
+{ "fmovsuge",  F3F(2, 0x35, 0x0c1)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUGE,~0),      "8,f,g", 0, v9 },
+{ "fmovsuge",  F3F(2, 0x35, 0x0e1)|MCOND(FCONDUGE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUGE,~0),      "9,f,g", 0, v9 },
+{ "fmovdul",   F3F(2, 0x35, 0x082)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDUL,~0),        "6,f,g", 0, v9 },
+{ "fmovdul",   F3F(2, 0x35, 0x0a2)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDUL,~0),        "7,f,g", 0, v9 },
+{ "fmovdul",   F3F(2, 0x35, 0x0c2)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDUL,~0),        "8,f,g", 0, v9 },
+{ "fmovdul",   F3F(2, 0x35, 0x0e2)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDUL,~0),        "9,f,g", 0, v9 },
+{ "fmovqul",   F3F(2, 0x35, 0x083)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDUL,~0),        "6,f,g", 0, v9 },
+{ "fmovqul",   F3F(2, 0x35, 0x0a3)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDUL,~0),        "7,f,g", 0, v9 },
+{ "fmovqul",   F3F(2, 0x35, 0x0c3)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDUL,~0),        "8,f,g", 0, v9 },
+{ "fmovqul",   F3F(2, 0x35, 0x0e3)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDUL,~0),        "9,f,g", 0, v9 },
+{ "fmovsul",   F3F(2, 0x35, 0x081)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDUL,~0),        "6,f,g", 0, v9 },
+{ "fmovsul",   F3F(2, 0x35, 0x0a1)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDUL,~0),        "7,f,g", 0, v9 },
+{ "fmovsul",   F3F(2, 0x35, 0x0c1)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDUL,~0),        "8,f,g", 0, v9 },
+{ "fmovsul",   F3F(2, 0x35, 0x0e1)|MCOND(FCONDUL,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDUL,~0),        "9,f,g", 0, v9 },
+{ "fmovdule",  F3F(2, 0x35, 0x082)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDULE,~0),      "6,f,g", 0, v9 },
+{ "fmovdule",  F3F(2, 0x35, 0x0a2)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDULE,~0),      "7,f,g", 0, v9 },
+{ "fmovdule",  F3F(2, 0x35, 0x0c2)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDULE,~0),      "8,f,g", 0, v9 },
+{ "fmovdule",  F3F(2, 0x35, 0x0e2)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDULE,~0),      "9,f,g", 0, v9 },
+{ "fmovqule",  F3F(2, 0x35, 0x083)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDULE,~0),      "6,f,g", 0, v9 },
+{ "fmovqule",  F3F(2, 0x35, 0x0a3)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDULE,~0),      "7,f,g", 0, v9 },
+{ "fmovqule",  F3F(2, 0x35, 0x0c3)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDULE,~0),      "8,f,g", 0, v9 },
+{ "fmovqule",  F3F(2, 0x35, 0x0e3)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDULE,~0),      "9,f,g", 0, v9 },
+{ "fmovsule",  F3F(2, 0x35, 0x081)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDULE,~0),      "6,f,g", 0, v9 },
+{ "fmovsule",  F3F(2, 0x35, 0x0a1)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDULE,~0),      "7,f,g", 0, v9 },
+{ "fmovsule",  F3F(2, 0x35, 0x0c1)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDULE,~0),      "8,f,g", 0, v9 },
+{ "fmovsule",  F3F(2, 0x35, 0x0e1)|MCOND(FCONDULE,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDULE,~0),      "9,f,g", 0, v9 },
+{ "fmovdvc",   F3F(2, 0x35, 0x102)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDVC,~0),  "z,f,g", 0, v9 },
+{ "fmovdvc",   F3F(2, 0x35, 0x182)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDVC,~0),  "Z,f,g", 0, v9 },
+{ "fmovqvc",   F3F(2, 0x35, 0x103)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDVC,~0),  "z,f,g", 0, v9 },
+{ "fmovqvc",   F3F(2, 0x35, 0x183)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDVC,~0),  "Z,f,g", 0, v9 },
+{ "fmovsvc",   F3F(2, 0x35, 0x101)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDVC,~0),  "z,f,g", 0, v9 },
+{ "fmovsvc",   F3F(2, 0x35, 0x181)|MCOND(CONDVC,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDVC,~0),  "Z,f,g", 0, v9 },
+{ "fmovdvs",   F3F(2, 0x35, 0x102)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x102)|MCOND(~CONDVS,~0),  "z,f,g", 0, v9 },
+{ "fmovdvs",   F3F(2, 0x35, 0x182)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x182)|MCOND(~CONDVS,~0),  "Z,f,g", 0, v9 },
+{ "fmovqvs",   F3F(2, 0x35, 0x103)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x103)|MCOND(~CONDVS,~0),  "z,f,g", 0, v9 },
+{ "fmovqvs",   F3F(2, 0x35, 0x183)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x183)|MCOND(~CONDVS,~0),  "Z,f,g", 0, v9 },
+{ "fmovsvs",   F3F(2, 0x35, 0x101)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x101)|MCOND(~CONDVS,~0),  "z,f,g", 0, v9 },
+{ "fmovsvs",   F3F(2, 0x35, 0x181)|MCOND(CONDVS,0), F3F(~2, ~0x35, ~0x181)|MCOND(~CONDVS,~0),  "Z,f,g", 0, v9 },
+{ "fmovdz",    F3F(2, 0x35, 0x102)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x102)|MCOND(~CONDZ,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovdz",    F3F(2, 0x35, 0x082)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x082)|MCOND(~FCONDZ,~0),  "6,f,g", F_ALIAS, v9 },
+{ "fmovdz",    F3F(2, 0x35, 0x182)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x182)|MCOND(~CONDZ,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovdz",    F3F(2, 0x35, 0x0a2)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0a2)|MCOND(~FCONDZ,~0),  "7,f,g", F_ALIAS, v9 },
+{ "fmovdz",    F3F(2, 0x35, 0x0c2)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0c2)|MCOND(~FCONDZ,~0),  "8,f,g", F_ALIAS, v9 },
+{ "fmovdz",    F3F(2, 0x35, 0x0e2)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0e2)|MCOND(~FCONDZ,~0),  "9,f,g", F_ALIAS, v9 },
+{ "fmovqz",    F3F(2, 0x35, 0x103)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x103)|MCOND(~CONDZ,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovqz",    F3F(2, 0x35, 0x083)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x083)|MCOND(~FCONDZ,~0),  "6,f,g", F_ALIAS, v9 },
+{ "fmovqz",    F3F(2, 0x35, 0x183)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x183)|MCOND(~CONDZ,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovqz",    F3F(2, 0x35, 0x0a3)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0a3)|MCOND(~FCONDZ,~0),  "7,f,g", F_ALIAS, v9 },
+{ "fmovqz",    F3F(2, 0x35, 0x0c3)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0c3)|MCOND(~FCONDZ,~0),  "8,f,g", F_ALIAS, v9 },
+{ "fmovqz",    F3F(2, 0x35, 0x0e3)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0e3)|MCOND(~FCONDZ,~0),  "9,f,g", F_ALIAS, v9 },
+{ "fmovsz",    F3F(2, 0x35, 0x101)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x101)|MCOND(~CONDZ,~0),  "z,f,g", F_ALIAS, v9 },
+{ "fmovsz",    F3F(2, 0x35, 0x081)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x081)|MCOND(~FCONDZ,~0),  "6,f,g", F_ALIAS, v9 },
+{ "fmovsz",    F3F(2, 0x35, 0x181)|MCOND(CONDZ,0),   F3F(~2, ~0x35, ~0x181)|MCOND(~CONDZ,~0),  "Z,f,g", F_ALIAS, v9 },
+{ "fmovsz",    F3F(2, 0x35, 0x0a1)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0a1)|MCOND(~FCONDZ,~0),  "7,f,g", F_ALIAS, v9 },
+{ "fmovsz",    F3F(2, 0x35, 0x0c1)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0c1)|MCOND(~FCONDZ,~0),  "8,f,g", F_ALIAS, v9 },
+{ "fmovsz",    F3F(2, 0x35, 0x0e1)|MCOND(FCONDZ,0), F3F(~2, ~0x35, ~0x0e1)|MCOND(~FCONDZ,~0),  "9,f,g", F_ALIAS, v9 },
 
 #define brfc(opcode, mask, lose, flags) \
  { opcode, (mask), ANNUL|(lose), "l",    flags|F_DELAYED, v6 }, \
@@ -1615,9 +1686,14 @@ cond ("bz",      "tz",   CONDZ, F_ALIAS), /* for e */
   brfcx(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
   brfc(cop, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask)), flags) \
 
+#define condf(fop, mask, flags) \
+  brfcx(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
+  brfc(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags)
+
 condfc("fb",   "cb",    0x8, 0),
 condfc("fba",  "cba",   0x8, F_ALIAS),
 condfc("fbe",  "cb0",   0x9, 0),
+condf("fbz",            0x9, F_ALIAS),
 condfc("fbg",  "cb2",   0x6, 0),
 condfc("fbge", "cb02",  0xb, 0),
 condfc("fbl",  "cb1",   0x4, 0),
@@ -1625,6 +1701,7 @@ condfc("fble",    "cb01",  0xd, 0),
 condfc("fblg", "cb12",  0x2, 0),
 condfc("fbn",  "cbn",   0x0, 0),
 condfc("fbne", "cb123", 0x1, 0),
+condf("fbnz",           0x1, F_ALIAS),
 condfc("fbo",  "cb012", 0xf, 0),
 condfc("fbu",  "cb3",   0x7, 0),
 condfc("fbue", "cb03",  0xa, 0),
@@ -1635,6 +1712,7 @@ condfc("fbule",   "cb013", 0xe, 0),
 
 #undef condfc
 #undef brfc
+#undef brfcx   /* v9 */
 
 { "jmp",       F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI(~0),        "1+2", F_DELAYED, v6 }, /* jmpl rs1+rs2,%g0 */
 { "jmp",       F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI_RS2(~0),    "1", F_DELAYED, v6 }, /* jmpl rs1+%g0,%g0 */
@@ -1660,18 +1738,16 @@ condfc("fbule", "cb013", 0xe, 0),
 { "tsubcctv",  F3(2, 0x23, 0), F3(~2, ~0x23, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "tsubcctv",  F3(2, 0x23, 1), F3(~2, ~0x23, ~1),              "1,i,d", 0, v6 },
 
-/* These two are identical, except in name (v9).  */
-{ "unimp",     F2(0x0, 0x0), 0xffc00000, "n", 0, v6 },
-{ "illegal",   F2(0, 0), F2(~0, ~0), "n", 0, v9 },
-
-{ "iflush",    F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0),      "1+2", 0, v6 },
-{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "1+i", 0, v6 },
-{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1),              "i+1", 0, v6 },
-{ "iflush",    F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0,       "i", 0, v6 },
+/* FIXME Thise is marked F_ALIAS, so that it won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "unimp",     F2(0x0, 0x0), 0xffc00000, "n", F_ALIAS, v6 },
+{ "illtrap",   F2(0, 0), F2(~0, ~0)|RD_G0, "n", 0, v9 },
 
+/* This *is* a commutative instruction.  */
 { "xnor",      F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "xnor",      F3(2, 0x07, 1), F3(~2, ~0x07, ~1),              "1,i,d", 0, v6 },
 { "xnor",      F3(2, 0x07, 1), F3(~2, ~0x07, ~1),              "i,1,d", 0, v6 },
+/* This *is* a commutative instruction.  */
 { "xnorcc",    F3(2, 0x17, 0), F3(~2, ~0x17, ~0)|ASI(~0),      "1,2,d", 0, v6 },
 { "xnorcc",    F3(2, 0x17, 1), F3(~2, ~0x17, ~1),              "1,i,d", 0, v6 },
 { "xnorcc",    F3(2, 0x17, 1), F3(~2, ~0x17, ~1),              "i,1,d", 0, v6 },
@@ -1688,19 +1764,22 @@ condfc("fbule", "cb013", 0xe, 0),
 { "btog",      F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0),      "2,r", F_ALIAS, v6 }, /* xor rd,rs2,rd */
 { "btog",      F3(2, 0x03, 1), F3(~2, ~0x03, ~1),              "i,r", F_ALIAS, v6 }, /* xor rd,i,rd */
 
-{ "fpop1",     F3F(2, 0x34, 0), F3F(~2, ~0x34, ~1), "[1+2],d", 0, v6 },
-{ "fpop2",     F3F(2, 0x35, 0), F3F(~2, ~0x35, ~1), "[1+2],d", 0, v6 },
+/* FPop1 and FPop2 are not instructions.  Don't accept them.  */
 
-/* float-start */
 { "fdtoi",     F3F(2, 0x34, 0x0d2), F3F(~2, ~0x34, ~0x0d2)|RS1_G0, "B,g", 0, v6 },
 { "fstoi",     F3F(2, 0x34, 0x0d1), F3F(~2, ~0x34, ~0x0d1)|RS1_G0, "f,g", 0, v6 },
+{ "fqtoi",     F3F(2, 0x34, 0x0d3), F3F(~2, ~0x34, ~0x0d3)|RS1_G0, "R,g", 0, v8 },
+
+{ "fdtox",     F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,g", 0, v9 },
+{ "fstox",     F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,g", 0, v9 },
+{ "fqtox",     F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,g", 0, v9 },
 
- /* all of these conversions are confused and probably wrong. */
 { "fitod",     F3F(2, 0x34, 0x0c8), F3F(~2, ~0x34, ~0x0c8)|RS1_G0, "f,H", 0, v6 },
 { "fitos",     F3F(2, 0x34, 0x0c4), F3F(~2, ~0x34, ~0x0c4)|RS1_G0, "f,g", 0, v6 },
-
 { "fitoq",     F3F(2, 0x34, 0x0cc), F3F(~2, ~0x34, ~0x0cc)|RS1_G0, "f,J", 0, v8 },
 
+{ "fxtod",     F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "f,H", 0, v9 },
+{ "fxtos",     F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "f,g", 0, v9 },
 { "fxtoq",     F3F(2, 0x34, 0x08c), F3F(~2, ~0x34, ~0x08c)|RS1_G0, "f,J", 0, v9 },
 
 { "fdtoq",     F3F(2, 0x34, 0x0ce), F3F(~2, ~0x34, ~0x0ce)|RS1_G0, "B,J", 0, v8 },
@@ -1710,18 +1789,6 @@ condfc("fbule",  "cb013", 0xe, 0),
 { "fstod",     F3F(2, 0x34, 0x0c9), F3F(~2, ~0x34, ~0x0c9)|RS1_G0, "f,H", 0, v6 },
 { "fstoq",     F3F(2, 0x34, 0x0cd), F3F(~2, ~0x34, ~0x0cd)|RS1_G0, "f,J", 0, v8 },
 
-{ "fqtox",     F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,g", 0, v9 },
-
-{ "fxtos",     F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "f,g", 0, v9 },
-
-{ "fdtox",     F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,g", 0, v9 },
-
-{ "fstox",     F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,g", 0, v9 },
-
-{ "fqtoi",     F3F(2, 0x34, 0x0d3), F3F(~2, ~0x34, ~0x0d3)|RS1_G0, "R,g", 0, v8 },
-
-{ "fxtod",     F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "f,H", 0, v9 },
-
 { "fdivd",     F3F(2, 0x34, 0x04e), F3F(~2, ~0x34, ~0x04e), "v,B,H", 0, v6 },
 { "fdivq",     F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", 0, v8 },
 { "fdivs",     F3F(2, 0x34, 0x04d), F3F(~2, ~0x34, ~0x04d), "e,f,g", 0, v6 },
@@ -1737,17 +1804,15 @@ condfc("fbule", "cb013", 0xe, 0),
 { "fsqrts",    F3F(2, 0x34, 0x029), F3F(~2, ~0x34, ~0x029)|RS1_G0, "f,g", 0, v7 },
 
 { "fabsd",     F3F(2, 0x34, 0x00a), F3F(~2, ~0x34, ~0x00a)|RS1_G0, "B,H", 0, v9 },
-{ "fabsq",     F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", 0, v6 },
+{ "fabsq",     F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", 0, v9 },
 { "fabss",     F3F(2, 0x34, 0x009), F3F(~2, ~0x34, ~0x009)|RS1_G0, "f,g", 0, v6 },
 { "fmovd",     F3F(2, 0x34, 0x002), F3F(~2, ~0x34, ~0x002)|RS1_G0, "B,H", 0, v9 },
-{ "fmovq",     F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", 0, v6 },
+{ "fmovq",     F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", 0, v9 },
 { "fmovs",     F3F(2, 0x34, 0x001), F3F(~2, ~0x34, ~0x001)|RS1_G0, "f,g", 0, v6 },
 { "fnegd",     F3F(2, 0x34, 0x006), F3F(~2, ~0x34, ~0x006)|RS1_G0, "B,H", 0, v9 },
-{ "fnegq",     F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", 0, v6 },
+{ "fnegq",     F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", 0, v9 },
 { "fnegs",     F3F(2, 0x34, 0x005), F3F(~2, ~0x34, ~0x005)|RS1_G0, "f,g", 0, v6 },
 
-{ "popc",      F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|(0x3fff<<5),  "2,d", 0, v9 },
-
 { "faddd",     F3F(2, 0x34, 0x042), F3F(~2, ~0x34, ~0x042), "v,B,H", 0, v6 },
 { "faddq",     F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", 0, v8 },
 { "fadds",     F3F(2, 0x34, 0x041), F3F(~2, ~0x34, ~0x041), "e,f,g", 0, v6 },
@@ -1757,54 +1822,48 @@ condfc("fbule", "cb013", 0xe, 0),
 
 #define CMPFCC(x)      (((x)&0x3)<<25)
 
-{ "fcmpd",               F3F(2, 0x35, 0x052),            F3F(~2, ~0x35, ~0x052)|RS1_G0, "v,B",   0, v6 },
+{ "fcmpd",               F3F(2, 0x35, 0x052),            F3F(~2, ~0x35, ~0x052)|RD_G0,  "v,B",   0, v6 },
 { "fcmpd",     CMPFCC(0)|F3F(2, 0x35, 0x052), CMPFCC(~0)|F3F(~2, ~0x35, ~0x052),        "6,v,B", 0, v9 },
 { "fcmpd",     CMPFCC(1)|F3F(2, 0x35, 0x052), CMPFCC(~1)|F3F(~2, ~0x35, ~0x052),        "7,v,B", 0, v9 },
 { "fcmpd",     CMPFCC(2)|F3F(2, 0x35, 0x052), CMPFCC(~2)|F3F(~2, ~0x35, ~0x052),        "8,v,B", 0, v9 },
 { "fcmpd",     CMPFCC(3)|F3F(2, 0x35, 0x052), CMPFCC(~3)|F3F(~2, ~0x35, ~0x052),        "9,v,B", 0, v9 },
-{ "fcmped",              F3F(2, 0x35, 0x056),            F3F(~2, ~0x35, ~0x056)|RS1_G0, "v,B",   0, v6 },
+{ "fcmped",              F3F(2, 0x35, 0x056),            F3F(~2, ~0x35, ~0x056)|RD_G0,  "v,B",   0, v6 },
 { "fcmped",    CMPFCC(0)|F3F(2, 0x35, 0x056), CMPFCC(~0)|F3F(~2, ~0x35, ~0x056),        "6,v,B", 0, v9 },
 { "fcmped",    CMPFCC(1)|F3F(2, 0x35, 0x056), CMPFCC(~1)|F3F(~2, ~0x35, ~0x056),        "7,v,B", 0, v9 },
 { "fcmped",    CMPFCC(2)|F3F(2, 0x35, 0x056), CMPFCC(~2)|F3F(~2, ~0x35, ~0x056),        "8,v,B", 0, v9 },
 { "fcmped",    CMPFCC(3)|F3F(2, 0x35, 0x056), CMPFCC(~3)|F3F(~2, ~0x35, ~0x056),        "9,v,B", 0, v9 },
-{ "fcmpeq",              F3F(2, 0x34, 0x057),            F3F(~2, ~0x34, ~0x057),        "V,R", 0, v8 },
-{ "fcmpeq",    CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057),        "6,V,R", 0, v9 },
-{ "fcmpeq",    CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057),        "7,V,R", 0, v9 },
-{ "fcmpeq",    CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057),        "8,V,R", 0, v9 },
-{ "fcmpeq",    CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057),        "9,V,R", 0, v9 },
-{ "fcmpes",              F3F(2, 0x35, 0x055),            F3F(~2, ~0x35, ~0x055)|RS1_G0, "e,f",   0, v6 },
-{ "fcmpes",    CMPFCC(0)|F3F(2, 0x35, 0x055), CMPFCC(~0)|F3F(~2, ~0x35, ~0x055),        "6,e,f", 0, v9 },
-{ "fcmpes",    CMPFCC(1)|F3F(2, 0x35, 0x055), CMPFCC(~1)|F3F(~2, ~0x35, ~0x055),        "7,e,f", 0, v9 },
-{ "fcmpes",    CMPFCC(2)|F3F(2, 0x35, 0x055), CMPFCC(~2)|F3F(~2, ~0x35, ~0x055),        "8,e,f", 0, v9 },
-{ "fcmpes",    CMPFCC(3)|F3F(2, 0x35, 0x055), CMPFCC(~3)|F3F(~2, ~0x35, ~0x055),        "9,e,f", 0, v9 },
-{ "fcmpq",               F3F(2, 0x34, 0x053),            F3F(~2, ~0x34, ~0x053),        "V,R", 0, v8 },
+{ "fcmpq",               F3F(2, 0x34, 0x053),            F3F(~2, ~0x34, ~0x053)|RD_G0,  "V,R", 0, v8 },
 { "fcmpq",     CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053),        "6,V,R", 0, v9 },
 { "fcmpq",     CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053),        "7,V,R", 0, v9 },
 { "fcmpq",     CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053),        "8,V,R", 0, v9 },
 { "fcmpq",     CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053),        "9,V,R", 0, v9 },
-{ "fcmps",               F3F(2, 0x35, 0x051),            F3F(~2, ~0x35, ~0x051)|RS1_G0, "e,f",   0, v6 },
+{ "fcmpeq",              F3F(2, 0x34, 0x057),            F3F(~2, ~0x34, ~0x057)|RD_G0,  "V,R", 0, v8 },
+{ "fcmpeq",    CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057),        "6,V,R", 0, v9 },
+{ "fcmpeq",    CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057),        "7,V,R", 0, v9 },
+{ "fcmpeq",    CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057),        "8,V,R", 0, v9 },
+{ "fcmpeq",    CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057),        "9,V,R", 0, v9 },
+{ "fcmps",               F3F(2, 0x35, 0x051),            F3F(~2, ~0x35, ~0x051)|RD_G0, "e,f",   0, v6 },
 { "fcmps",     CMPFCC(0)|F3F(2, 0x35, 0x051), CMPFCC(~0)|F3F(~2, ~0x35, ~0x051),        "6,e,f", 0, v9 },
 { "fcmps",     CMPFCC(1)|F3F(2, 0x35, 0x051), CMPFCC(~1)|F3F(~2, ~0x35, ~0x051),        "7,e,f", 0, v9 },
 { "fcmps",     CMPFCC(2)|F3F(2, 0x35, 0x051), CMPFCC(~2)|F3F(~2, ~0x35, ~0x051),        "8,e,f", 0, v9 },
 { "fcmps",     CMPFCC(3)|F3F(2, 0x35, 0x051), CMPFCC(~3)|F3F(~2, ~0x35, ~0x051),        "9,e,f", 0, v9 },
+{ "fcmpes",              F3F(2, 0x35, 0x055),            F3F(~2, ~0x35, ~0x055)|RD_G0, "e,f",   0, v6 },
+{ "fcmpes",    CMPFCC(0)|F3F(2, 0x35, 0x055), CMPFCC(~0)|F3F(~2, ~0x35, ~0x055),        "6,e,f", 0, v9 },
+{ "fcmpes",    CMPFCC(1)|F3F(2, 0x35, 0x055), CMPFCC(~1)|F3F(~2, ~0x35, ~0x055),        "7,e,f", 0, v9 },
+{ "fcmpes",    CMPFCC(2)|F3F(2, 0x35, 0x055), CMPFCC(~2)|F3F(~2, ~0x35, ~0x055),        "8,e,f", 0, v9 },
+{ "fcmpes",    CMPFCC(3)|F3F(2, 0x35, 0x055), CMPFCC(~3)|F3F(~2, ~0x35, ~0x055),        "9,e,f", 0, v9 },
 
-/* IMPDEP* is a v9 replacement for cpop*.  */
-{ "cpop1",     F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", 0, v6 },
-{ "cpop2",     F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", 0, v6 },
-{ "impdep1",   F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", F_ALIAS, v9 },
-{ "impdep2",   F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", F_ALIAS, v9 },
+/* FIXME These are marked F_ALIAS, so that they won't conflict with new v9
+   insns when v9 is present.  Otherwise, the F_ALIAS flag is ignored.  */
+{ "cpop1",     F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", F_ALIAS, v6 },
+{ "cpop2",     F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", F_ALIAS, v6 },
+{ "impdep1",   F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", 0, v9 },
+{ "impdep2",   F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", 0, v9 },
     
-{ "casx",      F3(3, 0x0c, 1), F3(~3, ~0x0c, ~1), "[1],2,d", 0, v9 },
-{ "casxa",     F3(3, 0x1c, 1), F3(~3, ~0x1c, ~1), "[1]A,2,d", 0, v9 },
-{ "cas",       F3(3, 0x0c, 0), F3(~3, ~0x0c, ~0), "[1],2,d", 0, v9 },
-{ "casa",      F3(3, 0x1c, 0), F3(~3, ~0x1c, ~0), "[1]A,2,d", 0, v9 },
-
-{ "fmaddd",    F3(2, 0x35, 0)|OPF_LOW(0xa), F3(~2, ~0x35, ~0)|OPF_LOW(~0xa), "v,B,u,H", 0, v9 },
-{ "fmaddq",    F3(2, 0x35, 0)|OPF_LOW(0xb), F3(~2, ~0x35, ~0)|OPF_LOW(~0xb), "V,R,U,J", 0, v9 },
-{ "fmadds",    F3(2, 0x35, 0)|OPF_LOW(0x9), F3(~2, ~0x35, ~0)|OPF_LOW(~0x9), "e,f,j,g", 0, v9 },
-{ "fmsubd",    F3(2, 0x35, 0)|OPF_LOW(0xe), F3(~2, ~0x35, ~0)|OPF_LOW(~0xe), "v,B,u,H", 0, v9 },
-{ "fmsubq",    F3(2, 0x35, 0)|OPF_LOW(0xf), F3(~2, ~0x35, ~0)|OPF_LOW(~0xf), "V,R,U,J", 0, v9 },
-{ "fmsubs",    F3(2, 0x35, 0)|OPF_LOW(0xd), F3(~2, ~0x35, ~0)|OPF_LOW(~0xd), "e,f,j,g", 0, v9 },
+{ "casa",      F3(3, 0x3c, 0), F3(~3, ~0x3c, ~0), "[1]A,2,d", 0, v9 },
+{ "casa",      F3(3, 0x3c, 1), F3(~3, ~0x3c, ~1), "[1]o,2,d", 0, v9 },
+{ "casxa",     F3(3, 0x3e, 0), F3(~3, ~0x3e, ~0), "[1]A,2,d", 0, v9 },
+{ "casxa",     F3(3, 0x3e, 1), F3(~3, ~0x3e, ~1), "[1]o,2,d", 0, v9 },
 
 };
 
index afde1686052a5121d382ae6b68ebde6451e5f550..1f6a67eb4fd6423e90b6f0f8a580d16f19cd8d07 100644 (file)
@@ -709,6 +709,10 @@ char *str;
                                the_insn.reloc = RELOC_11;
                                goto immediate;
                                
+                       case 'j':
+                               the_insn.reloc = RELOC_10;
+                               goto immediate;
+
                        case 'k':
                                the_insn.reloc = RELOC_WDISP2_14;
                                the_insn.pcrel = 1;
@@ -733,13 +737,6 @@ char *str;
                                }
                                break;
                                
-                       case 'Y':
-                               if (strncmp(s, "%amr", 4) == 0) {
-                                       s += 4;
-                                       continue;
-                               }
-                               break;
-                               
                        case 'z':
                                if (*s == ' ') {
                                        ++s;
@@ -807,13 +804,6 @@ char *str;
                                }
                                break;
                                
-                       case 'E':
-                               if (strncmp(s, "%modes", 6) == 0) {
-                                       s += 6;
-                                       continue;
-                               }
-                               break;
-                               
                        case 'W':
                                if (strncmp(s, "%tick", 5) == 0) {
                                        s += 5;
@@ -987,13 +977,6 @@ char *str;
                                }
                                break;
                                
-                               /* start-sanitize-v9 */
-#ifndef NO_V9
-                       case 'j':
-                       case 'u':
-                       case 'U':
-#endif /* NO_V9 */
-                               /* end-sanitize-v9 */
                        case 'e': /* next operand is a floating point register */
                        case 'v':
                        case 'V':
@@ -1029,16 +1012,14 @@ char *str;
                                                mask = 10 * mask + (*s - '0');
                                        } /* read the number */
                                        
-                                       if ((*args == 'u'
-                                            || *args == 'v'
+                                       if ((*args == 'v'
                                             || *args == 'B'
                                             || *args == 'H')
                                            && (mask & 1)) {
                                                break;
                                        } /* register must be even numbered */
                                        
-                                       if ((*args == 'U'
-                                            || *args == 'V'
+                                       if ((*args == 'V'
                                             || *args == 'R'
                                             || *args == 'J')
                                            && (mask & 3)) {
@@ -1085,15 +1066,6 @@ char *str;
                                } /* on error */
                                
                                switch (*args) {
-                                       /* start-sanitize-v9 */
-#ifndef NO_V9
-                               case 'j':
-                               case 'u':
-                               case 'U':
-                                       opcode |= (mask & 0x1f) << 9;
-                                       continue;
-#endif /* NO_V9 */
-                                       /* end-sanitize-v9 */
                                        
                                case 'v':
                                case 'V':
@@ -1271,16 +1243,22 @@ char *str;
                                
 /* start-sanitize-v9 */
 #ifndef NO_V9
-                       case 's':
-                         if (strncmp (s, "%usr", 4) != 0)
+                       case 'o':
+                         if (strncmp (s, "%asi", 4) != 0)
                            break;
                          s += 4;
                          continue;
 
-                       case 'o':
-                         if (strncmp (s, "%asi", 4) != 0)
+                       case 's':
+                         if (strncmp (s, "%fprs", 5) != 0)
                            break;
-                         s += 4;
+                         s+= 5;
+                         continue;
+
+                       case 'E':
+                         if (strncmp (s, "%ccr", 4) != 0)
+                           break;
+                         s+= 4;
                          continue;
 #endif /* NO_V9 */
                /* end-sanitize-v9 */
@@ -1540,6 +1518,16 @@ long val;
                buf[3] = val & 0xff;
                break;
                
+       case RELOC_10:
+               if (((val > 0) && (val & ~0x3ff))
+                   || ((val < 0) && (~(val - 1) & ~0x3ff))) {
+                       as_bad("relocation overflow.");
+               } /* on overflow */
+               
+               buf[2] = (val >> 8) & 0x3;
+               buf[3] = val & 0xff;
+               break;
+
        case RELOC_WDISP2_14:
                if (((val > 0) && (val & ~0x3fffc))
                    || ((val < 0) && (~(val - 1) & ~0x3fffc))) {